/* Generated by Cython 3.2.4 */

#ifndef PY_SSIZE_T_CLEAN
#define PY_SSIZE_T_CLEAN
#endif /* PY_SSIZE_T_CLEAN */
/* InitLimitedAPI */
#if defined(Py_LIMITED_API)
  #if !defined(CYTHON_LIMITED_API)
  #define CYTHON_LIMITED_API 1
  #endif
#elif defined(CYTHON_LIMITED_API)
  #ifdef _MSC_VER
  #pragma message ("Limited API usage is enabled with 'CYTHON_LIMITED_API' but 'Py_LIMITED_API' does not define a Python target version. Consider setting 'Py_LIMITED_API' instead.")
  #else
  #warning Limited API usage is enabled with 'CYTHON_LIMITED_API' but 'Py_LIMITED_API' does not define a Python target version. Consider setting 'Py_LIMITED_API' instead.
  #endif
#endif

#include "Python.h"
#ifndef Py_PYTHON_H
    #error Python headers needed to compile C extensions, please install development version of Python.
#elif PY_VERSION_HEX < 0x03080000
    #error Cython requires Python 3.8+.
#else
#define __PYX_ABI_VERSION "3_2_4"
#define CYTHON_HEX_VERSION 0x030204F0
#define CYTHON_FUTURE_DIVISION 1
/* CModulePreamble */
#include <stddef.h>
#ifndef offsetof
  #define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
#endif
#if !defined(_WIN32) && !defined(WIN32) && !defined(MS_WINDOWS)
  #ifndef __stdcall
    #define __stdcall
  #endif
  #ifndef __cdecl
    #define __cdecl
  #endif
  #ifndef __fastcall
    #define __fastcall
  #endif
#endif
#ifndef DL_IMPORT
  #define DL_IMPORT(t) t
#endif
#ifndef DL_EXPORT
  #define DL_EXPORT(t) t
#endif
#define __PYX_COMMA ,
#ifndef PY_LONG_LONG
  #define PY_LONG_LONG LONG_LONG
#endif
#ifndef Py_HUGE_VAL
  #define Py_HUGE_VAL HUGE_VAL
#endif
#define __PYX_LIMITED_VERSION_HEX PY_VERSION_HEX
#if defined(GRAALVM_PYTHON)
  /* For very preliminary testing purposes. Most variables are set the same as PyPy.
     The existence of this section does not imply that anything works or is even tested */
  #define CYTHON_COMPILING_IN_PYPY 0
  #define CYTHON_COMPILING_IN_CPYTHON 0
  #define CYTHON_COMPILING_IN_LIMITED_API 0
  #define CYTHON_COMPILING_IN_GRAAL 1
  #define CYTHON_COMPILING_IN_CPYTHON_FREETHREADING 0
  #undef CYTHON_USE_TYPE_SLOTS
  #define CYTHON_USE_TYPE_SLOTS 0
  #undef CYTHON_USE_TYPE_SPECS
  #define CYTHON_USE_TYPE_SPECS 0
  #undef CYTHON_USE_PYTYPE_LOOKUP
  #define CYTHON_USE_PYTYPE_LOOKUP 0
  #undef CYTHON_USE_PYLIST_INTERNALS
  #define CYTHON_USE_PYLIST_INTERNALS 0
  #undef CYTHON_USE_UNICODE_INTERNALS
  #define CYTHON_USE_UNICODE_INTERNALS 0
  #undef CYTHON_USE_UNICODE_WRITER
  #define CYTHON_USE_UNICODE_WRITER 0
  #undef CYTHON_USE_PYLONG_INTERNALS
  #define CYTHON_USE_PYLONG_INTERNALS 0
  #undef CYTHON_AVOID_BORROWED_REFS
  #define CYTHON_AVOID_BORROWED_REFS 1
  #undef CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS
  #define CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS 0
  #undef CYTHON_ASSUME_SAFE_MACROS
  #define CYTHON_ASSUME_SAFE_MACROS 0
  #undef CYTHON_ASSUME_SAFE_SIZE
  #define CYTHON_ASSUME_SAFE_SIZE 0
  #undef CYTHON_UNPACK_METHODS
  #define CYTHON_UNPACK_METHODS 0
  #undef CYTHON_FAST_THREAD_STATE
  #define CYTHON_FAST_THREAD_STATE 0
  #undef CYTHON_FAST_GIL
  #define CYTHON_FAST_GIL 0
  #undef CYTHON_METH_FASTCALL
  #define CYTHON_METH_FASTCALL 0
  #undef CYTHON_FAST_PYCALL
  #define CYTHON_FAST_PYCALL 0
  #ifndef CYTHON_PEP487_INIT_SUBCLASS
    #define CYTHON_PEP487_INIT_SUBCLASS 1
  #endif
  #undef CYTHON_PEP489_MULTI_PHASE_INIT
  #define CYTHON_PEP489_MULTI_PHASE_INIT 1
  #undef CYTHON_USE_MODULE_STATE
  #define CYTHON_USE_MODULE_STATE 0
  #undef CYTHON_USE_SYS_MONITORING
  #define CYTHON_USE_SYS_MONITORING 0
  #undef CYTHON_USE_TP_FINALIZE
  #define CYTHON_USE_TP_FINALIZE 0
  #undef CYTHON_USE_AM_SEND
  #define CYTHON_USE_AM_SEND 0
  #undef CYTHON_USE_DICT_VERSIONS
  #define CYTHON_USE_DICT_VERSIONS 0
  #undef CYTHON_USE_EXC_INFO_STACK
  #define CYTHON_USE_EXC_INFO_STACK 1
  #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
    #define CYTHON_UPDATE_DESCRIPTOR_DOC 0
  #endif
  #undef CYTHON_USE_FREELISTS
  #define CYTHON_USE_FREELISTS 0
  #undef CYTHON_IMMORTAL_CONSTANTS
  #define CYTHON_IMMORTAL_CONSTANTS 0
#elif defined(PYPY_VERSION)
  #define CYTHON_COMPILING_IN_PYPY 1
  #define CYTHON_COMPILING_IN_CPYTHON 0
  #define CYTHON_COMPILING_IN_LIMITED_API 0
  #define CYTHON_COMPILING_IN_GRAAL 0
  #define CYTHON_COMPILING_IN_CPYTHON_FREETHREADING 0
  #undef CYTHON_USE_TYPE_SLOTS
  #define CYTHON_USE_TYPE_SLOTS 1
  #ifndef CYTHON_USE_TYPE_SPECS
    #define CYTHON_USE_TYPE_SPECS 0
  #endif
  #undef CYTHON_USE_PYTYPE_LOOKUP
  #define CYTHON_USE_PYTYPE_LOOKUP 0
  #undef CYTHON_USE_PYLIST_INTERNALS
  #define CYTHON_USE_PYLIST_INTERNALS 0
  #undef CYTHON_USE_UNICODE_INTERNALS
  #define CYTHON_USE_UNICODE_INTERNALS 0
  #undef CYTHON_USE_UNICODE_WRITER
  #define CYTHON_USE_UNICODE_WRITER 0
  #undef CYTHON_USE_PYLONG_INTERNALS
  #define CYTHON_USE_PYLONG_INTERNALS 0
  #undef CYTHON_AVOID_BORROWED_REFS
  #define CYTHON_AVOID_BORROWED_REFS 1
  #undef CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS
  #define CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS 1
  #undef CYTHON_ASSUME_SAFE_MACROS
  #define CYTHON_ASSUME_SAFE_MACROS 0
  #ifndef CYTHON_ASSUME_SAFE_SIZE
    #define CYTHON_ASSUME_SAFE_SIZE 1
  #endif
  #undef CYTHON_UNPACK_METHODS
  #define CYTHON_UNPACK_METHODS 0
  #undef CYTHON_FAST_THREAD_STATE
  #define CYTHON_FAST_THREAD_STATE 0
  #undef CYTHON_FAST_GIL
  #define CYTHON_FAST_GIL 0
  #undef CYTHON_METH_FASTCALL
  #define CYTHON_METH_FASTCALL 0
  #undef CYTHON_FAST_PYCALL
  #define CYTHON_FAST_PYCALL 0
  #ifndef CYTHON_PEP487_INIT_SUBCLASS
    #define CYTHON_PEP487_INIT_SUBCLASS 1
  #endif
  #if PY_VERSION_HEX < 0x03090000
    #undef CYTHON_PEP489_MULTI_PHASE_INIT
    #define CYTHON_PEP489_MULTI_PHASE_INIT 0
  #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT)
    #define CYTHON_PEP489_MULTI_PHASE_INIT 1
  #endif
  #undef CYTHON_USE_MODULE_STATE
  #define CYTHON_USE_MODULE_STATE 0
  #undef CYTHON_USE_SYS_MONITORING
  #define CYTHON_USE_SYS_MONITORING 0
  #ifndef CYTHON_USE_TP_FINALIZE
    #define CYTHON_USE_TP_FINALIZE (PYPY_VERSION_NUM >= 0x07030C00)
  #endif
  #undef CYTHON_USE_AM_SEND
  #define CYTHON_USE_AM_SEND 0
  #undef CYTHON_USE_DICT_VERSIONS
  #define CYTHON_USE_DICT_VERSIONS 0
  #undef CYTHON_USE_EXC_INFO_STACK
  #define CYTHON_USE_EXC_INFO_STACK 0
  #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
    #define CYTHON_UPDATE_DESCRIPTOR_DOC (PYPY_VERSION_NUM >= 0x07031100)
  #endif
  #undef CYTHON_USE_FREELISTS
  #define CYTHON_USE_FREELISTS 0
  #undef CYTHON_IMMORTAL_CONSTANTS
  #define CYTHON_IMMORTAL_CONSTANTS 0
#elif defined(CYTHON_LIMITED_API)
  #ifdef Py_LIMITED_API
    #undef __PYX_LIMITED_VERSION_HEX
    #define __PYX_LIMITED_VERSION_HEX Py_LIMITED_API
  #endif
  #define CYTHON_COMPILING_IN_PYPY 0
  #define CYTHON_COMPILING_IN_CPYTHON 0
  #define CYTHON_COMPILING_IN_LIMITED_API 1
  #define CYTHON_COMPILING_IN_GRAAL 0
  #define CYTHON_COMPILING_IN_CPYTHON_FREETHREADING 0
  #undef CYTHON_USE_TYPE_SLOTS
  #define CYTHON_USE_TYPE_SLOTS 0
  #undef CYTHON_USE_TYPE_SPECS
  #define CYTHON_USE_TYPE_SPECS 1
  #undef CYTHON_USE_PYTYPE_LOOKUP
  #define CYTHON_USE_PYTYPE_LOOKUP 0
  #undef CYTHON_USE_PYLIST_INTERNALS
  #define CYTHON_USE_PYLIST_INTERNALS 0
  #undef CYTHON_USE_UNICODE_INTERNALS
  #define CYTHON_USE_UNICODE_INTERNALS 0
  #ifndef CYTHON_USE_UNICODE_WRITER
    #define CYTHON_USE_UNICODE_WRITER 0
  #endif
  #undef CYTHON_USE_PYLONG_INTERNALS
  #define CYTHON_USE_PYLONG_INTERNALS 0
  #ifndef CYTHON_AVOID_BORROWED_REFS
    #define CYTHON_AVOID_BORROWED_REFS 0
  #endif
  #ifndef CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS
    #define CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS 0
  #endif
  #undef CYTHON_ASSUME_SAFE_MACROS
  #define CYTHON_ASSUME_SAFE_MACROS 0
  #undef CYTHON_ASSUME_SAFE_SIZE
  #define CYTHON_ASSUME_SAFE_SIZE 0
  #undef CYTHON_UNPACK_METHODS
  #define CYTHON_UNPACK_METHODS 0
  #undef CYTHON_FAST_THREAD_STATE
  #define CYTHON_FAST_THREAD_STATE 0
  #undef CYTHON_FAST_GIL
  #define CYTHON_FAST_GIL 0
  #undef CYTHON_METH_FASTCALL
  #define CYTHON_METH_FASTCALL (__PYX_LIMITED_VERSION_HEX >= 0x030C0000)
  #undef CYTHON_FAST_PYCALL
  #define CYTHON_FAST_PYCALL 0
  #ifndef CYTHON_PEP487_INIT_SUBCLASS
    #define CYTHON_PEP487_INIT_SUBCLASS 1
  #endif
  #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
    #define CYTHON_PEP489_MULTI_PHASE_INIT 1
  #endif
  #ifndef CYTHON_USE_MODULE_STATE
    #define CYTHON_USE_MODULE_STATE 0
  #endif
  #undef CYTHON_USE_SYS_MONITORING
  #define CYTHON_USE_SYS_MONITORING 0
  #ifndef CYTHON_USE_TP_FINALIZE
    #define CYTHON_USE_TP_FINALIZE 0
  #endif
  #ifndef CYTHON_USE_AM_SEND
    #define CYTHON_USE_AM_SEND (__PYX_LIMITED_VERSION_HEX >= 0x030A0000)
  #endif
  #undef CYTHON_USE_DICT_VERSIONS
  #define CYTHON_USE_DICT_VERSIONS 0
  #undef CYTHON_USE_EXC_INFO_STACK
  #define CYTHON_USE_EXC_INFO_STACK 0
  #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
    #define CYTHON_UPDATE_DESCRIPTOR_DOC 0
  #endif
  #ifndef CYTHON_USE_FREELISTS
  #define CYTHON_USE_FREELISTS 1
  #endif
  #undef CYTHON_IMMORTAL_CONSTANTS
  #define CYTHON_IMMORTAL_CONSTANTS 0
#else
  #define CYTHON_COMPILING_IN_PYPY 0
  #define CYTHON_COMPILING_IN_CPYTHON 1
  #define CYTHON_COMPILING_IN_LIMITED_API 0
  #define CYTHON_COMPILING_IN_GRAAL 0
  #ifdef Py_GIL_DISABLED
    #define CYTHON_COMPILING_IN_CPYTHON_FREETHREADING 1
  #else
    #define CYTHON_COMPILING_IN_CPYTHON_FREETHREADING 0
  #endif
  #if PY_VERSION_HEX < 0x030A0000
    #undef CYTHON_USE_TYPE_SLOTS
    #define CYTHON_USE_TYPE_SLOTS 1
  #elif !defined(CYTHON_USE_TYPE_SLOTS)
    #define CYTHON_USE_TYPE_SLOTS 1
  #endif
  #ifndef CYTHON_USE_TYPE_SPECS
    #define CYTHON_USE_TYPE_SPECS 0
  #endif
  #ifndef CYTHON_USE_PYTYPE_LOOKUP
    #define CYTHON_USE_PYTYPE_LOOKUP 1
  #endif
  #ifndef CYTHON_USE_PYLONG_INTERNALS
    #define CYTHON_USE_PYLONG_INTERNALS 1
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
    #undef CYTHON_USE_PYLIST_INTERNALS
    #define CYTHON_USE_PYLIST_INTERNALS 0
  #elif !defined(CYTHON_USE_PYLIST_INTERNALS)
    #define CYTHON_USE_PYLIST_INTERNALS 1
  #endif
  #ifndef CYTHON_USE_UNICODE_INTERNALS
    #define CYTHON_USE_UNICODE_INTERNALS 1
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING || PY_VERSION_HEX >= 0x030B00A2
    #undef CYTHON_USE_UNICODE_WRITER
    #define CYTHON_USE_UNICODE_WRITER 0
  #elif !defined(CYTHON_USE_UNICODE_WRITER)
    #define CYTHON_USE_UNICODE_WRITER 1
  #endif
  #ifndef CYTHON_AVOID_BORROWED_REFS
    #define CYTHON_AVOID_BORROWED_REFS 0
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
    #undef CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS
    #define CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS 1
  #elif !defined(CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS)
    #define CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS 0
  #endif
  #ifndef CYTHON_ASSUME_SAFE_MACROS
    #define CYTHON_ASSUME_SAFE_MACROS 1
  #endif
  #ifndef CYTHON_ASSUME_SAFE_SIZE
    #define CYTHON_ASSUME_SAFE_SIZE 1
  #endif
  #ifndef CYTHON_UNPACK_METHODS
    #define CYTHON_UNPACK_METHODS 1
  #endif
  #ifndef CYTHON_FAST_THREAD_STATE
    #define CYTHON_FAST_THREAD_STATE 1
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
    #undef CYTHON_FAST_GIL
    #define CYTHON_FAST_GIL 0
  #elif !defined(CYTHON_FAST_GIL)
    #define CYTHON_FAST_GIL (PY_VERSION_HEX < 0x030C00A6)
  #endif
  #ifndef CYTHON_METH_FASTCALL
    #define CYTHON_METH_FASTCALL 1
  #endif
  #ifndef CYTHON_FAST_PYCALL
    #define CYTHON_FAST_PYCALL 1
  #endif
  #ifndef CYTHON_PEP487_INIT_SUBCLASS
    #define CYTHON_PEP487_INIT_SUBCLASS 1
  #endif
  #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
    #define CYTHON_PEP489_MULTI_PHASE_INIT 1
  #endif
  #ifndef CYTHON_USE_MODULE_STATE
    #define CYTHON_USE_MODULE_STATE 0
  #endif
  #ifndef CYTHON_USE_SYS_MONITORING
    #define CYTHON_USE_SYS_MONITORING (PY_VERSION_HEX >= 0x030d00B1)
  #endif
  #ifndef CYTHON_USE_TP_FINALIZE
    #define CYTHON_USE_TP_FINALIZE 1
  #endif
  #ifndef CYTHON_USE_AM_SEND
    #define CYTHON_USE_AM_SEND 1
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
    #undef CYTHON_USE_DICT_VERSIONS
    #define CYTHON_USE_DICT_VERSIONS 0
  #elif !defined(CYTHON_USE_DICT_VERSIONS)
    #define CYTHON_USE_DICT_VERSIONS  (PY_VERSION_HEX < 0x030C00A5 && !CYTHON_USE_MODULE_STATE)
  #endif
  #ifndef CYTHON_USE_EXC_INFO_STACK
    #define CYTHON_USE_EXC_INFO_STACK 1
  #endif
  #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
    #define CYTHON_UPDATE_DESCRIPTOR_DOC 1
  #endif
  #ifndef CYTHON_USE_FREELISTS
    #define CYTHON_USE_FREELISTS (!CYTHON_COMPILING_IN_CPYTHON_FREETHREADING)
  #endif
  #if defined(CYTHON_IMMORTAL_CONSTANTS) && PY_VERSION_HEX < 0x030C0000
    #undef CYTHON_IMMORTAL_CONSTANTS
    #define CYTHON_IMMORTAL_CONSTANTS 0  // definitely won't work
  #elif !defined(CYTHON_IMMORTAL_CONSTANTS)
    #define CYTHON_IMMORTAL_CONSTANTS (PY_VERSION_HEX >= 0x030C0000 && !CYTHON_USE_MODULE_STATE && CYTHON_COMPILING_IN_CPYTHON_FREETHREADING)
  #endif
#endif
#ifndef CYTHON_COMPRESS_STRINGS
  #define CYTHON_COMPRESS_STRINGS 1
#endif
#ifndef CYTHON_FAST_PYCCALL
#define CYTHON_FAST_PYCCALL  CYTHON_FAST_PYCALL
#endif
#ifndef CYTHON_VECTORCALL
#if CYTHON_COMPILING_IN_LIMITED_API
#define CYTHON_VECTORCALL  (__PYX_LIMITED_VERSION_HEX >= 0x030C0000)
#else
#define CYTHON_VECTORCALL  (CYTHON_FAST_PYCCALL)
#endif
#endif
#if CYTHON_USE_PYLONG_INTERNALS
  #undef SHIFT
  #undef BASE
  #undef MASK
  #ifdef SIZEOF_VOID_P
    enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) };
  #endif
#endif
#ifndef __has_attribute
  #define __has_attribute(x) 0
#endif
#ifndef __has_cpp_attribute
  #define __has_cpp_attribute(x) 0
#endif
#ifndef CYTHON_RESTRICT
  #if defined(__GNUC__)
    #define CYTHON_RESTRICT __restrict__
  #elif defined(_MSC_VER) && _MSC_VER >= 1400
    #define CYTHON_RESTRICT __restrict
  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
    #define CYTHON_RESTRICT restrict
  #else
    #define CYTHON_RESTRICT
  #endif
#endif
#ifndef CYTHON_UNUSED
  #if defined(__cplusplus)
    /* for clang __has_cpp_attribute(maybe_unused) is true even before C++17
     * but leads to warnings with -pedantic, since it is a C++17 feature */
    #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L)
      #if __has_cpp_attribute(maybe_unused)
        #define CYTHON_UNUSED [[maybe_unused]]
      #endif
    #endif
  #endif
#endif
#ifndef CYTHON_UNUSED
# if defined(__GNUC__)
#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
#     define CYTHON_UNUSED __attribute__ ((__unused__))
#   else
#     define CYTHON_UNUSED
#   endif
# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
#   define CYTHON_UNUSED __attribute__ ((__unused__))
# else
#   define CYTHON_UNUSED
# endif
#endif
#ifndef CYTHON_UNUSED_VAR
#  if defined(__cplusplus)
     template<class T> void CYTHON_UNUSED_VAR( const T& ) { }
#  else
#    define CYTHON_UNUSED_VAR(x) (void)(x)
#  endif
#endif
#ifndef CYTHON_MAYBE_UNUSED_VAR
  #define CYTHON_MAYBE_UNUSED_VAR(x) CYTHON_UNUSED_VAR(x)
#endif
#ifndef CYTHON_NCP_UNUSED
# if CYTHON_COMPILING_IN_CPYTHON && !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
#  define CYTHON_NCP_UNUSED
# else
#  define CYTHON_NCP_UNUSED CYTHON_UNUSED
# endif
#endif
#ifndef CYTHON_USE_CPP_STD_MOVE
  #if defined(__cplusplus) && (\
    __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600))
    #define CYTHON_USE_CPP_STD_MOVE 1
  #else
    #define CYTHON_USE_CPP_STD_MOVE 0
  #endif
#endif
#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None)
#include <stdint.h>
typedef uintptr_t  __pyx_uintptr_t;
#ifndef CYTHON_FALLTHROUGH
  #if defined(__cplusplus)
    /* for clang __has_cpp_attribute(fallthrough) is true even before C++17
     * but leads to warnings with -pedantic, since it is a C++17 feature */
    #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L)
      #if __has_cpp_attribute(fallthrough)
        #define CYTHON_FALLTHROUGH [[fallthrough]]
      #endif
    #endif
    #ifndef CYTHON_FALLTHROUGH
      #if __has_cpp_attribute(clang::fallthrough)
        #define CYTHON_FALLTHROUGH [[clang::fallthrough]]
      #elif __has_cpp_attribute(gnu::fallthrough)
        #define CYTHON_FALLTHROUGH [[gnu::fallthrough]]
      #endif
    #endif
  #endif
  #ifndef CYTHON_FALLTHROUGH
    #if __has_attribute(fallthrough)
      #define CYTHON_FALLTHROUGH __attribute__((fallthrough))
    #else
      #define CYTHON_FALLTHROUGH
    #endif
  #endif
  #if defined(__clang__) && defined(__apple_build_version__)
    #if __apple_build_version__ < 7000000
      #undef  CYTHON_FALLTHROUGH
      #define CYTHON_FALLTHROUGH
    #endif
  #endif
#endif
#ifndef Py_UNREACHABLE
  #define Py_UNREACHABLE()  assert(0); abort()
#endif
#ifdef __cplusplus
  template <typename T>
  struct __PYX_IS_UNSIGNED_IMPL {static const bool value = T(0) < T(-1);};
  #define __PYX_IS_UNSIGNED(type) (__PYX_IS_UNSIGNED_IMPL<type>::value)
#else
  #define __PYX_IS_UNSIGNED(type) (((type)-1) > 0)
#endif
#if CYTHON_COMPILING_IN_PYPY == 1
  #define __PYX_NEED_TP_PRINT_SLOT  (PY_VERSION_HEX < 0x030A0000)
#else
  #define __PYX_NEED_TP_PRINT_SLOT  (PY_VERSION_HEX < 0x03090000)
#endif
#define __PYX_REINTERPRET_FUNCION(func_pointer, other_pointer) ((func_pointer)(void(*)(void))(other_pointer))

/* CInitCode */
#ifndef CYTHON_INLINE
  #if defined(__clang__)
    #define CYTHON_INLINE __inline__ __attribute__ ((__unused__))
  #elif defined(__GNUC__)
    #define CYTHON_INLINE __inline__
  #elif defined(_MSC_VER)
    #define CYTHON_INLINE __inline
  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
    #define CYTHON_INLINE inline
  #else
    #define CYTHON_INLINE
  #endif
#endif

/* PythonCompatibility */
#define __PYX_BUILD_PY_SSIZE_T "n"
#define CYTHON_FORMAT_SSIZE_T "z"
#define __Pyx_BUILTIN_MODULE_NAME "builtins"
#define __Pyx_DefaultClassType PyType_Type
#if CYTHON_COMPILING_IN_LIMITED_API
    #ifndef CO_OPTIMIZED
    static int CO_OPTIMIZED;
    #endif
    #ifndef CO_NEWLOCALS
    static int CO_NEWLOCALS;
    #endif
    #ifndef CO_VARARGS
    static int CO_VARARGS;
    #endif
    #ifndef CO_VARKEYWORDS
    static int CO_VARKEYWORDS;
    #endif
    #ifndef CO_ASYNC_GENERATOR
    static int CO_ASYNC_GENERATOR;
    #endif
    #ifndef CO_GENERATOR
    static int CO_GENERATOR;
    #endif
    #ifndef CO_COROUTINE
    static int CO_COROUTINE;
    #endif
#else
    #ifndef CO_COROUTINE
      #define CO_COROUTINE 0x80
    #endif
    #ifndef CO_ASYNC_GENERATOR
      #define CO_ASYNC_GENERATOR 0x200
    #endif
#endif
static int __Pyx_init_co_variables(void);
#if PY_VERSION_HEX >= 0x030900A4 || defined(Py_IS_TYPE)
  #define __Pyx_IS_TYPE(ob, type) Py_IS_TYPE(ob, type)
#else
  #define __Pyx_IS_TYPE(ob, type) (((const PyObject*)ob)->ob_type == (type))
#endif
#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_Is)
  #define __Pyx_Py_Is(x, y)  Py_Is(x, y)
#else
  #define __Pyx_Py_Is(x, y) ((x) == (y))
#endif
#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsNone)
  #define __Pyx_Py_IsNone(ob) Py_IsNone(ob)
#else
  #define __Pyx_Py_IsNone(ob) __Pyx_Py_Is((ob), Py_None)
#endif
#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsTrue)
  #define __Pyx_Py_IsTrue(ob) Py_IsTrue(ob)
#else
  #define __Pyx_Py_IsTrue(ob) __Pyx_Py_Is((ob), Py_True)
#endif
#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsFalse)
  #define __Pyx_Py_IsFalse(ob) Py_IsFalse(ob)
#else
  #define __Pyx_Py_IsFalse(ob) __Pyx_Py_Is((ob), Py_False)
#endif
#define __Pyx_NoneAsNull(obj)  (__Pyx_Py_IsNone(obj) ? NULL : (obj))
#if PY_VERSION_HEX >= 0x030900F0 && !CYTHON_COMPILING_IN_PYPY
  #define __Pyx_PyObject_GC_IsFinalized(o) PyObject_GC_IsFinalized(o)
#else
  #define __Pyx_PyObject_GC_IsFinalized(o) _PyGC_FINALIZED(o)
#endif
#ifndef Py_TPFLAGS_CHECKTYPES
  #define Py_TPFLAGS_CHECKTYPES 0
#endif
#ifndef Py_TPFLAGS_HAVE_INDEX
  #define Py_TPFLAGS_HAVE_INDEX 0
#endif
#ifndef Py_TPFLAGS_HAVE_NEWBUFFER
  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
#endif
#ifndef Py_TPFLAGS_HAVE_FINALIZE
  #define Py_TPFLAGS_HAVE_FINALIZE 0
#endif
#ifndef Py_TPFLAGS_SEQUENCE
  #define Py_TPFLAGS_SEQUENCE 0
#endif
#ifndef Py_TPFLAGS_MAPPING
  #define Py_TPFLAGS_MAPPING 0
#endif
#ifndef Py_TPFLAGS_IMMUTABLETYPE
  #define Py_TPFLAGS_IMMUTABLETYPE (1UL << 8)
#endif
#ifndef Py_TPFLAGS_DISALLOW_INSTANTIATION
  #define Py_TPFLAGS_DISALLOW_INSTANTIATION (1UL << 7)
#endif
#ifndef METH_STACKLESS
  #define METH_STACKLESS 0
#endif
#ifndef METH_FASTCALL
  #ifndef METH_FASTCALL
     #define METH_FASTCALL 0x80
  #endif
  typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs);
  typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args,
                                                          Py_ssize_t nargs, PyObject *kwnames);
#else
  #if PY_VERSION_HEX >= 0x030d00A4
  #  define __Pyx_PyCFunctionFast PyCFunctionFast
  #  define __Pyx_PyCFunctionFastWithKeywords PyCFunctionFastWithKeywords
  #else
  #  define __Pyx_PyCFunctionFast _PyCFunctionFast
  #  define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords
  #endif
#endif
#if CYTHON_METH_FASTCALL
  #define __Pyx_METH_FASTCALL METH_FASTCALL
  #define __Pyx_PyCFunction_FastCall __Pyx_PyCFunctionFast
  #define __Pyx_PyCFunction_FastCallWithKeywords __Pyx_PyCFunctionFastWithKeywords
#else
  #define __Pyx_METH_FASTCALL METH_VARARGS
  #define __Pyx_PyCFunction_FastCall PyCFunction
  #define __Pyx_PyCFunction_FastCallWithKeywords PyCFunctionWithKeywords
#endif
#if CYTHON_VECTORCALL
  #define __pyx_vectorcallfunc vectorcallfunc
  #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET  PY_VECTORCALL_ARGUMENTS_OFFSET
  #define __Pyx_PyVectorcall_NARGS(n)  PyVectorcall_NARGS((size_t)(n))
#else
  #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET  0
  #define __Pyx_PyVectorcall_NARGS(n)  ((Py_ssize_t)(n))
#endif
#if PY_VERSION_HEX >= 0x030900B1
#define __Pyx_PyCFunction_CheckExact(func)  PyCFunction_CheckExact(func)
#else
#define __Pyx_PyCFunction_CheckExact(func)  PyCFunction_Check(func)
#endif
#define __Pyx_CyOrPyCFunction_Check(func)  PyCFunction_Check(func)
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func)  (((PyCFunctionObject*)(func))->m_ml->ml_meth)
#elif !CYTHON_COMPILING_IN_LIMITED_API
#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func)  PyCFunction_GET_FUNCTION(func)
#endif
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_CyOrPyCFunction_GET_FLAGS(func)  (((PyCFunctionObject*)(func))->m_ml->ml_flags)
static CYTHON_INLINE PyObject* __Pyx_CyOrPyCFunction_GET_SELF(PyObject *func) {
    return (__Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_STATIC) ? NULL : ((PyCFunctionObject*)func)->m_self;
}
#endif
static CYTHON_INLINE int __Pyx__IsSameCFunction(PyObject *func, void (*cfunc)(void)) {
#if CYTHON_COMPILING_IN_LIMITED_API
    return PyCFunction_Check(func) && PyCFunction_GetFunction(func) == (PyCFunction) cfunc;
#else
    return PyCFunction_Check(func) && PyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc;
#endif
}
#define __Pyx_IsSameCFunction(func, cfunc)   __Pyx__IsSameCFunction(func, cfunc)
#if PY_VERSION_HEX < 0x03090000 || (CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000)
  #define __Pyx_PyType_FromModuleAndSpec(m, s, b)  ((void)m, PyType_FromSpecWithBases(s, b))
  typedef PyObject *(*__Pyx_PyCMethod)(PyObject *, PyTypeObject *, PyObject *const *, size_t, PyObject *);
#else
  #define __Pyx_PyType_FromModuleAndSpec(m, s, b)  PyType_FromModuleAndSpec(m, s, b)
  #define __Pyx_PyCMethod  PyCMethod
#endif
#ifndef METH_METHOD
  #define METH_METHOD 0x200
#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
  #define PyObject_Malloc(s)   PyMem_Malloc(s)
  #define PyObject_Free(p)     PyMem_Free(p)
  #define PyObject_Realloc(p)  PyMem_Realloc(p)
#endif
#if CYTHON_COMPILING_IN_LIMITED_API
  #define __Pyx_PyFrame_SetLineNumber(frame, lineno)
#elif CYTHON_COMPILING_IN_GRAAL && defined(GRAALPY_VERSION_NUM) && GRAALPY_VERSION_NUM > 0x19000000
  #define __Pyx_PyCode_HasFreeVars(co)  (PyCode_GetNumFree(co) > 0)
  #define __Pyx_PyFrame_SetLineNumber(frame, lineno) GraalPyFrame_SetLineNumber((frame), (lineno))
#elif CYTHON_COMPILING_IN_GRAAL
  #define __Pyx_PyCode_HasFreeVars(co)  (PyCode_GetNumFree(co) > 0)
  #define __Pyx_PyFrame_SetLineNumber(frame, lineno) _PyFrame_SetLineNumber((frame), (lineno))
#else
  #define __Pyx_PyCode_HasFreeVars(co)  (PyCode_GetNumFree(co) > 0)
  #define __Pyx_PyFrame_SetLineNumber(frame, lineno)  (frame)->f_lineno = (lineno)
#endif
#if CYTHON_COMPILING_IN_LIMITED_API
  #define __Pyx_PyThreadState_Current PyThreadState_Get()
#elif !CYTHON_FAST_THREAD_STATE
  #define __Pyx_PyThreadState_Current PyThreadState_GET()
#elif PY_VERSION_HEX >= 0x030d00A1
  #define __Pyx_PyThreadState_Current PyThreadState_GetUnchecked()
#else
  #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet()
#endif
#if CYTHON_USE_MODULE_STATE
static CYTHON_INLINE void *__Pyx__PyModule_GetState(PyObject *op)
{
    void *result;
    result = PyModule_GetState(op);
    if (!result)
        Py_FatalError("Couldn't find the module state");
    return result;
}
#define __Pyx_PyModule_GetState(o) (__pyx_mstatetype *)__Pyx__PyModule_GetState(o)
#else
#define __Pyx_PyModule_GetState(op) ((void)op,__pyx_mstate_global)
#endif
#define __Pyx_PyObject_GetSlot(obj, name, func_ctype)  __Pyx_PyType_GetSlot(Py_TYPE((PyObject *) obj), name, func_ctype)
#define __Pyx_PyObject_TryGetSlot(obj, name, func_ctype) __Pyx_PyType_TryGetSlot(Py_TYPE(obj), name, func_ctype)
#define __Pyx_PyObject_GetSubSlot(obj, sub, name, func_ctype) __Pyx_PyType_GetSubSlot(Py_TYPE(obj), sub, name, func_ctype)
#define __Pyx_PyObject_TryGetSubSlot(obj, sub, name, func_ctype) __Pyx_PyType_TryGetSubSlot(Py_TYPE(obj), sub, name, func_ctype)
#if CYTHON_USE_TYPE_SLOTS
  #define __Pyx_PyType_GetSlot(type, name, func_ctype)  ((type)->name)
  #define __Pyx_PyType_TryGetSlot(type, name, func_ctype) __Pyx_PyType_GetSlot(type, name, func_ctype)
  #define __Pyx_PyType_GetSubSlot(type, sub, name, func_ctype) (((type)->sub) ? ((type)->sub->name) : NULL)
  #define __Pyx_PyType_TryGetSubSlot(type, sub, name, func_ctype) __Pyx_PyType_GetSubSlot(type, sub, name, func_ctype)
#else
  #define __Pyx_PyType_GetSlot(type, name, func_ctype)  ((func_ctype) PyType_GetSlot((type), Py_##name))
  #define __Pyx_PyType_TryGetSlot(type, name, func_ctype)\
    ((__PYX_LIMITED_VERSION_HEX >= 0x030A0000 ||\
     (PyType_GetFlags(type) & Py_TPFLAGS_HEAPTYPE) || __Pyx_get_runtime_version() >= 0x030A0000) ?\
     __Pyx_PyType_GetSlot(type, name, func_ctype) : NULL)
  #define __Pyx_PyType_GetSubSlot(obj, sub, name, func_ctype) __Pyx_PyType_GetSlot(obj, name, func_ctype)
  #define __Pyx_PyType_TryGetSubSlot(obj, sub, name, func_ctype) __Pyx_PyType_TryGetSlot(obj, name, func_ctype)
#endif
#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized)
#define __Pyx_PyDict_NewPresized(n)  ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n))
#else
#define __Pyx_PyDict_NewPresized(n)  PyDict_New()
#endif
#define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
#define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_UNICODE_INTERNALS
#define __Pyx_PyDict_GetItemStrWithError(dict, name)  _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash)
static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStr(PyObject *dict, PyObject *name) {
    PyObject *res = __Pyx_PyDict_GetItemStrWithError(dict, name);
    if (res == NULL) PyErr_Clear();
    return res;
}
#elif !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07020000
#define __Pyx_PyDict_GetItemStrWithError  PyDict_GetItemWithError
#define __Pyx_PyDict_GetItemStr           PyDict_GetItem
#else
static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict, PyObject *name) {
#if CYTHON_COMPILING_IN_PYPY
    return PyDict_GetItem(dict, name);
#else
    PyDictEntry *ep;
    PyDictObject *mp = (PyDictObject*) dict;
    long hash = ((PyStringObject *) name)->ob_shash;
    assert(hash != -1);
    ep = (mp->ma_lookup)(mp, name, hash);
    if (ep == NULL) {
        return NULL;
    }
    return ep->me_value;
#endif
}
#define __Pyx_PyDict_GetItemStr           PyDict_GetItem
#endif
#if CYTHON_USE_TYPE_SLOTS
  #define __Pyx_PyType_GetFlags(tp)   (((PyTypeObject *)tp)->tp_flags)
  #define __Pyx_PyType_HasFeature(type, feature)  ((__Pyx_PyType_GetFlags(type) & (feature)) != 0)
#else
  #define __Pyx_PyType_GetFlags(tp)   (PyType_GetFlags((PyTypeObject *)tp))
  #define __Pyx_PyType_HasFeature(type, feature)  PyType_HasFeature(type, feature)
#endif
#define __Pyx_PyObject_GetIterNextFunc(iterator)  __Pyx_PyObject_GetSlot(iterator, tp_iternext, iternextfunc)
#if CYTHON_USE_TYPE_SPECS
#define __Pyx_PyHeapTypeObject_GC_Del(obj)  {\
    PyTypeObject *type = Py_TYPE((PyObject*)obj);\
    assert(__Pyx_PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE));\
    PyObject_GC_Del(obj);\
    Py_DECREF(type);\
}
#else
#define __Pyx_PyHeapTypeObject_GC_Del(obj)  PyObject_GC_Del(obj)
#endif
#if CYTHON_COMPILING_IN_LIMITED_API
  #define __Pyx_PyUnicode_READY(op)       (0)
  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_ReadChar(u, i)
  #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u)   ((void)u, 1114111U)
  #define __Pyx_PyUnicode_KIND(u)         ((void)u, (0))
  #define __Pyx_PyUnicode_DATA(u)         ((void*)u)
  #define __Pyx_PyUnicode_READ(k, d, i)   ((void)k, PyUnicode_ReadChar((PyObject*)(d), i))
  #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != PyUnicode_GetLength(u))
#else
  #if PY_VERSION_HEX >= 0x030C0000
    #define __Pyx_PyUnicode_READY(op)       (0)
  #else
    #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ?\
                                                0 : _PyUnicode_Ready((PyObject *)(op)))
  #endif
  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
  #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u)   PyUnicode_MAX_CHAR_VALUE(u)
  #define __Pyx_PyUnicode_KIND(u)         ((int)PyUnicode_KIND(u))
  #define __Pyx_PyUnicode_DATA(u)         PyUnicode_DATA(u)
  #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
  #define __Pyx_PyUnicode_WRITE(k, d, i, ch)  PyUnicode_WRITE(k, d, i, (Py_UCS4) ch)
  #if PY_VERSION_HEX >= 0x030C0000
    #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != PyUnicode_GET_LENGTH(u))
  #else
    #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000
    #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length))
    #else
    #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
    #endif
  #endif
#endif
#if CYTHON_COMPILING_IN_PYPY
  #define __Pyx_PyUnicode_Concat(a, b)      PyNumber_Add(a, b)
  #define __Pyx_PyUnicode_ConcatSafe(a, b)  PyNumber_Add(a, b)
#else
  #define __Pyx_PyUnicode_Concat(a, b)      PyUnicode_Concat(a, b)
  #define __Pyx_PyUnicode_ConcatSafe(a, b)  ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\
      PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b))
#endif
#if CYTHON_COMPILING_IN_PYPY
  #if !defined(PyUnicode_DecodeUnicodeEscape)
    #define PyUnicode_DecodeUnicodeEscape(s, size, errors)  PyUnicode_Decode(s, size, "unicode_escape", errors)
  #endif
  #if !defined(PyUnicode_Contains)
    #define PyUnicode_Contains(u, s)  PySequence_Contains(u, s)
  #endif
  #if !defined(PyByteArray_Check)
    #define PyByteArray_Check(obj)  PyObject_TypeCheck(obj, &PyByteArray_Type)
  #endif
  #if !defined(PyObject_Format)
    #define PyObject_Format(obj, fmt)  PyObject_CallMethod(obj, "__format__", "O", fmt)
  #endif
#endif
#define __Pyx_PyUnicode_FormatSafe(a, b)  ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  #define __Pyx_PySequence_ListKeepNew(obj)\
    (likely(PyList_CheckExact(obj) && PyUnstable_Object_IsUniquelyReferenced(obj)) ? __Pyx_NewRef(obj) : PySequence_List(obj))
#elif CYTHON_COMPILING_IN_CPYTHON
  #define __Pyx_PySequence_ListKeepNew(obj)\
    (likely(PyList_CheckExact(obj) && Py_REFCNT(obj) == 1) ? __Pyx_NewRef(obj) : PySequence_List(obj))
#else
  #define __Pyx_PySequence_ListKeepNew(obj)  PySequence_List(obj)
#endif
#ifndef PySet_CheckExact
  #define PySet_CheckExact(obj)        __Pyx_IS_TYPE(obj, &PySet_Type)
#endif
#if PY_VERSION_HEX >= 0x030900A4
  #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt)
  #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size)
#else
  #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt)
  #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size)
#endif
enum __Pyx_ReferenceSharing {
  __Pyx_ReferenceSharing_DefinitelyUnique, // We created it so we know it's unshared - no need to check
  __Pyx_ReferenceSharing_OwnStrongReference,
  __Pyx_ReferenceSharing_FunctionArgument,
  __Pyx_ReferenceSharing_SharedReference, // Never trust it to be unshared because it's a global or similar
};
#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING && PY_VERSION_HEX >= 0x030E0000
#define __Pyx_IS_UNIQUELY_REFERENCED(o, sharing)\
    (sharing == __Pyx_ReferenceSharing_DefinitelyUnique ? 1 :\
      (sharing == __Pyx_ReferenceSharing_FunctionArgument ? PyUnstable_Object_IsUniqueReferencedTemporary(o) :\
      (sharing == __Pyx_ReferenceSharing_OwnStrongReference ? PyUnstable_Object_IsUniquelyReferenced(o) : 0)))
#elif (CYTHON_COMPILING_IN_CPYTHON && !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING) || CYTHON_COMPILING_IN_LIMITED_API
#define __Pyx_IS_UNIQUELY_REFERENCED(o, sharing) (((void)sharing), Py_REFCNT(o) == 1)
#else
#define __Pyx_IS_UNIQUELY_REFERENCED(o, sharing) (((void)o), ((void)sharing), 0)
#endif
#if CYTHON_AVOID_BORROWED_REFS || CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS
  #if __PYX_LIMITED_VERSION_HEX >= 0x030d0000
    #define __Pyx_PyList_GetItemRef(o, i) PyList_GetItemRef(o, i)
  #elif CYTHON_COMPILING_IN_LIMITED_API || !CYTHON_ASSUME_SAFE_MACROS
    #define __Pyx_PyList_GetItemRef(o, i) (likely((i) >= 0) ? PySequence_GetItem(o, i) : (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL))
  #else
    #define __Pyx_PyList_GetItemRef(o, i) PySequence_ITEM(o, i)
  #endif
#elif CYTHON_COMPILING_IN_LIMITED_API || !CYTHON_ASSUME_SAFE_MACROS
  #if __PYX_LIMITED_VERSION_HEX >= 0x030d0000
    #define __Pyx_PyList_GetItemRef(o, i) PyList_GetItemRef(o, i)
  #else
    #define __Pyx_PyList_GetItemRef(o, i) __Pyx_XNewRef(PyList_GetItem(o, i))
  #endif
#else
  #define __Pyx_PyList_GetItemRef(o, i) __Pyx_NewRef(PyList_GET_ITEM(o, i))
#endif
#if CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS && !CYTHON_COMPILING_IN_LIMITED_API && CYTHON_ASSUME_SAFE_MACROS
  #define __Pyx_PyList_GetItemRefFast(o, i, unsafe_shared) (__Pyx_IS_UNIQUELY_REFERENCED(o, unsafe_shared) ?\
    __Pyx_NewRef(PyList_GET_ITEM(o, i)) : __Pyx_PyList_GetItemRef(o, i))
#else
  #define __Pyx_PyList_GetItemRefFast(o, i, unsafe_shared) __Pyx_PyList_GetItemRef(o, i)
#endif
#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000
#define __Pyx_PyDict_GetItemRef(dict, key, result) PyDict_GetItemRef(dict, key, result)
#elif CYTHON_AVOID_BORROWED_REFS || CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS
static CYTHON_INLINE int __Pyx_PyDict_GetItemRef(PyObject *dict, PyObject *key, PyObject **result) {
  *result = PyObject_GetItem(dict, key);
  if (*result == NULL) {
    if (PyErr_ExceptionMatches(PyExc_KeyError)) {
      PyErr_Clear();
      return 0;
    }
    return -1;
  }
  return 1;
}
#else
static CYTHON_INLINE int __Pyx_PyDict_GetItemRef(PyObject *dict, PyObject *key, PyObject **result) {
  *result = PyDict_GetItemWithError(dict, key);
  if (*result == NULL) {
    return PyErr_Occurred() ? -1 : 0;
  }
  Py_INCREF(*result);
  return 1;
}
#endif
#if defined(CYTHON_DEBUG_VISIT_CONST) && CYTHON_DEBUG_VISIT_CONST
  #define __Pyx_VISIT_CONST(obj)  Py_VISIT(obj)
#else
  #define __Pyx_VISIT_CONST(obj)
#endif
#if CYTHON_ASSUME_SAFE_MACROS
  #define __Pyx_PySequence_ITEM(o, i) PySequence_ITEM(o, i)
  #define __Pyx_PySequence_SIZE(seq)  Py_SIZE(seq)
  #define __Pyx_PyTuple_SET_ITEM(o, i, v) (PyTuple_SET_ITEM(o, i, v), (0))
  #define __Pyx_PyTuple_GET_ITEM(o, i) PyTuple_GET_ITEM(o, i)
  #define __Pyx_PyList_SET_ITEM(o, i, v) (PyList_SET_ITEM(o, i, v), (0))
  #define __Pyx_PyList_GET_ITEM(o, i) PyList_GET_ITEM(o, i)
#else
  #define __Pyx_PySequence_ITEM(o, i) PySequence_GetItem(o, i)
  #define __Pyx_PySequence_SIZE(seq)  PySequence_Size(seq)
  #define __Pyx_PyTuple_SET_ITEM(o, i, v) PyTuple_SetItem(o, i, v)
  #define __Pyx_PyTuple_GET_ITEM(o, i) PyTuple_GetItem(o, i)
  #define __Pyx_PyList_SET_ITEM(o, i, v) PyList_SetItem(o, i, v)
  #define __Pyx_PyList_GET_ITEM(o, i) PyList_GetItem(o, i)
#endif
#if CYTHON_ASSUME_SAFE_SIZE
  #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_GET_SIZE(o)
  #define __Pyx_PyList_GET_SIZE(o) PyList_GET_SIZE(o)
  #define __Pyx_PySet_GET_SIZE(o) PySet_GET_SIZE(o)
  #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_GET_SIZE(o)
  #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_GET_SIZE(o)
  #define __Pyx_PyUnicode_GET_LENGTH(o) PyUnicode_GET_LENGTH(o)
#else
  #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_Size(o)
  #define __Pyx_PyList_GET_SIZE(o) PyList_Size(o)
  #define __Pyx_PySet_GET_SIZE(o) PySet_Size(o)
  #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_Size(o)
  #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_Size(o)
  #define __Pyx_PyUnicode_GET_LENGTH(o) PyUnicode_GetLength(o)
#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_InternFromString)
  #define PyUnicode_InternFromString(s) PyUnicode_FromString(s)
#endif
#define __Pyx_PyLong_FromHash_t PyLong_FromSsize_t
#define __Pyx_PyLong_AsHash_t   __Pyx_PyIndex_AsSsize_t
#if __PYX_LIMITED_VERSION_HEX >= 0x030A0000
    #define __Pyx_PySendResult PySendResult
#else
    typedef enum {
        PYGEN_RETURN = 0,
        PYGEN_ERROR = -1,
        PYGEN_NEXT = 1,
    } __Pyx_PySendResult;
#endif
#if CYTHON_COMPILING_IN_LIMITED_API || PY_VERSION_HEX < 0x030A00A3
  typedef __Pyx_PySendResult (*__Pyx_pyiter_sendfunc)(PyObject *iter, PyObject *value, PyObject **result);
#else
  #define __Pyx_pyiter_sendfunc sendfunc
#endif
#if !CYTHON_USE_AM_SEND
#define __PYX_HAS_PY_AM_SEND 0
#elif __PYX_LIMITED_VERSION_HEX >= 0x030A0000
#define __PYX_HAS_PY_AM_SEND 1
#else
#define __PYX_HAS_PY_AM_SEND 2  // our own backported implementation
#endif
#if __PYX_HAS_PY_AM_SEND < 2
    #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods
#else
    typedef struct {
        unaryfunc am_await;
        unaryfunc am_aiter;
        unaryfunc am_anext;
        __Pyx_pyiter_sendfunc am_send;
    } __Pyx_PyAsyncMethodsStruct;
    #define __Pyx_SlotTpAsAsync(s) ((PyAsyncMethods*)(s))
#endif
#if CYTHON_USE_AM_SEND && PY_VERSION_HEX < 0x030A00F0
    #define __Pyx_TPFLAGS_HAVE_AM_SEND (1UL << 21)
#else
    #define __Pyx_TPFLAGS_HAVE_AM_SEND (0)
#endif
#if PY_VERSION_HEX >= 0x03090000
#define __Pyx_PyInterpreterState_Get() PyInterpreterState_Get()
#else
#define __Pyx_PyInterpreterState_Get() PyThreadState_Get()->interp
#endif
#if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030A0000
#ifdef __cplusplus
extern "C"
#endif
PyAPI_FUNC(void *) PyMem_Calloc(size_t nelem, size_t elsize);
#endif
#if CYTHON_COMPILING_IN_LIMITED_API
static int __Pyx_init_co_variable(PyObject *inspect, const char* name, int *write_to) {
    int value;
    PyObject *py_value = PyObject_GetAttrString(inspect, name);
    if (!py_value) return 0;
    value = (int) PyLong_AsLong(py_value);
    Py_DECREF(py_value);
    *write_to = value;
    return value != -1 || !PyErr_Occurred();
}
static int __Pyx_init_co_variables(void) {
    PyObject *inspect;
    int result;
    inspect = PyImport_ImportModule("inspect");
    result =
#if !defined(CO_OPTIMIZED)
        __Pyx_init_co_variable(inspect, "CO_OPTIMIZED", &CO_OPTIMIZED) &&
#endif
#if !defined(CO_NEWLOCALS)
        __Pyx_init_co_variable(inspect, "CO_NEWLOCALS", &CO_NEWLOCALS) &&
#endif
#if !defined(CO_VARARGS)
        __Pyx_init_co_variable(inspect, "CO_VARARGS", &CO_VARARGS) &&
#endif
#if !defined(CO_VARKEYWORDS)
        __Pyx_init_co_variable(inspect, "CO_VARKEYWORDS", &CO_VARKEYWORDS) &&
#endif
#if !defined(CO_ASYNC_GENERATOR)
        __Pyx_init_co_variable(inspect, "CO_ASYNC_GENERATOR", &CO_ASYNC_GENERATOR) &&
#endif
#if !defined(CO_GENERATOR)
        __Pyx_init_co_variable(inspect, "CO_GENERATOR", &CO_GENERATOR) &&
#endif
#if !defined(CO_COROUTINE)
        __Pyx_init_co_variable(inspect, "CO_COROUTINE", &CO_COROUTINE) &&
#endif
        1;
    Py_DECREF(inspect);
    return result ? 0 : -1;
}
#else
static int __Pyx_init_co_variables(void) {
    return 0;  // It's a limited API-only feature
}
#endif

/* MathInitCode */
#if defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS)
  #ifndef _USE_MATH_DEFINES
    #define _USE_MATH_DEFINES
  #endif
#endif
#include <math.h>
#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL)
#define __Pyx_truncl trunc
#else
#define __Pyx_truncl truncl
#endif

#ifndef CYTHON_CLINE_IN_TRACEBACK_RUNTIME
#define CYTHON_CLINE_IN_TRACEBACK_RUNTIME 0
#endif
#ifndef CYTHON_CLINE_IN_TRACEBACK
#define CYTHON_CLINE_IN_TRACEBACK CYTHON_CLINE_IN_TRACEBACK_RUNTIME
#endif
#if CYTHON_CLINE_IN_TRACEBACK
#define __PYX_MARK_ERR_POS(f_index, lineno)  { __pyx_filename = __pyx_f[f_index]; (void) __pyx_filename; __pyx_lineno = lineno; (void) __pyx_lineno; __pyx_clineno = __LINE__; (void) __pyx_clineno; }
#else
#define __PYX_MARK_ERR_POS(f_index, lineno)  { __pyx_filename = __pyx_f[f_index]; (void) __pyx_filename; __pyx_lineno = lineno; (void) __pyx_lineno; (void) __pyx_clineno; }
#endif
#define __PYX_ERR(f_index, lineno, Ln_error) \
    { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; }

#ifdef CYTHON_EXTERN_C
    #undef __PYX_EXTERN_C
    #define __PYX_EXTERN_C CYTHON_EXTERN_C
#elif defined(__PYX_EXTERN_C)
    #ifdef _MSC_VER
    #pragma message ("Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.")
    #else
    #warning Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.
    #endif
#else
  #ifdef __cplusplus
    #define __PYX_EXTERN_C extern "C"
  #else
    #define __PYX_EXTERN_C extern
  #endif
#endif

#define __PYX_HAVE__pyverbs__providers__mlx5__mlx5dv
#define __PYX_HAVE_API__pyverbs__providers__mlx5__mlx5dv
/* Early includes */
#include <stdint.h>
#include <sys/types.h>
#include <string.h>
#include <stdio.h>
#include "infiniband/mlx5dv.h"
#include "infiniband/mlx5_user_ioctl_verbs.h"
#include "infiniband/mlx5_api.h"
#include <signal.h>
#include <sys/time.h>
#include <infiniband/verbs.h>
#include <infiniband/verbs_api.h>
#include <infiniband/driver.h>
#include <infiniband/tm_types.h>
#include "infiniband/verbs.h"
#include "infiniband/driver.h"
#include <stdlib.h>
#include <sys/mman.h>
#include <rdma/rdma_cma.h>
#include <infiniband/ib.h>
#include <rdma/rdma_verbs.h>
#include "endian.h"
#ifdef _OPENMP
#include <omp.h>
#endif /* _OPENMP */

#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS)
#define CYTHON_WITHOUT_ASSERTIONS
#endif

#ifdef CYTHON_FREETHREADING_COMPATIBLE
#if CYTHON_FREETHREADING_COMPATIBLE
#define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_NOT_USED
#else
#define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_USED
#endif
#else
#define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_USED
#endif
#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
#define __PYX_DEFAULT_STRING_ENCODING ""
#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString
#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
#define __Pyx_uchar_cast(c) ((unsigned char)c)
#define __Pyx_long_cast(x) ((long)x)
#define __Pyx_fits_Py_ssize_t(v, type, is_signed)  (\
    (sizeof(type) < sizeof(Py_ssize_t))  ||\
    (sizeof(type) > sizeof(Py_ssize_t) &&\
          likely(v < (type)PY_SSIZE_T_MAX ||\
                 v == (type)PY_SSIZE_T_MAX)  &&\
          (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\
                                v == (type)PY_SSIZE_T_MIN)))  ||\
    (sizeof(type) == sizeof(Py_ssize_t) &&\
          (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
                               v == (type)PY_SSIZE_T_MAX)))  )
static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) {
    return (size_t) i < (size_t) limit;
}
#if defined (__cplusplus) && __cplusplus >= 201103L
    #include <cstdlib>
    #define __Pyx_sst_abs(value) std::abs(value)
#elif SIZEOF_INT >= SIZEOF_SIZE_T
    #define __Pyx_sst_abs(value) abs(value)
#elif SIZEOF_LONG >= SIZEOF_SIZE_T
    #define __Pyx_sst_abs(value) labs(value)
#elif defined (_MSC_VER)
    #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value))
#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
    #define __Pyx_sst_abs(value) llabs(value)
#elif defined (__GNUC__)
    #define __Pyx_sst_abs(value) __builtin_llabs(value)
#else
    #define __Pyx_sst_abs(value) ((value<0) ? -value : value)
#endif
static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s);
static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*);
static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length);
static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char*);
#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l)
#define __Pyx_PyBytes_FromString        PyBytes_FromString
#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize
static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*);
#if CYTHON_ASSUME_SAFE_MACROS
    #define __Pyx_PyBytes_AsWritableString(s)     ((char*) PyBytes_AS_STRING(s))
    #define __Pyx_PyBytes_AsWritableSString(s)    ((signed char*) PyBytes_AS_STRING(s))
    #define __Pyx_PyBytes_AsWritableUString(s)    ((unsigned char*) PyBytes_AS_STRING(s))
    #define __Pyx_PyBytes_AsString(s)     ((const char*) PyBytes_AS_STRING(s))
    #define __Pyx_PyBytes_AsSString(s)    ((const signed char*) PyBytes_AS_STRING(s))
    #define __Pyx_PyBytes_AsUString(s)    ((const unsigned char*) PyBytes_AS_STRING(s))
    #define __Pyx_PyByteArray_AsString(s) PyByteArray_AS_STRING(s)
#else
    #define __Pyx_PyBytes_AsWritableString(s)     ((char*) PyBytes_AsString(s))
    #define __Pyx_PyBytes_AsWritableSString(s)    ((signed char*) PyBytes_AsString(s))
    #define __Pyx_PyBytes_AsWritableUString(s)    ((unsigned char*) PyBytes_AsString(s))
    #define __Pyx_PyBytes_AsString(s)     ((const char*) PyBytes_AsString(s))
    #define __Pyx_PyBytes_AsSString(s)    ((const signed char*) PyBytes_AsString(s))
    #define __Pyx_PyBytes_AsUString(s)    ((const unsigned char*) PyBytes_AsString(s))
    #define __Pyx_PyByteArray_AsString(s) PyByteArray_AsString(s)
#endif
#define __Pyx_PyObject_AsWritableString(s)    ((char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsWritableSString(s)    ((signed char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsWritableUString(s)    ((unsigned char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsSString(s)    ((const signed char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsUString(s)    ((const unsigned char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_FromCString(s)  __Pyx_PyObject_FromString((const char*)s)
#define __Pyx_PyBytes_FromCString(s)   __Pyx_PyBytes_FromString((const char*)s)
#define __Pyx_PyByteArray_FromCString(s)   __Pyx_PyByteArray_FromString((const char*)s)
#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s)
#define __Pyx_PyUnicode_FromOrdinal(o)       PyUnicode_FromOrdinal((int)o)
#define __Pyx_PyUnicode_AsUnicode            PyUnicode_AsUnicode
static CYTHON_INLINE PyObject *__Pyx_NewRef(PyObject *obj) {
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030a0000 || defined(Py_NewRef)
    return Py_NewRef(obj);
#else
    Py_INCREF(obj);
    return obj;
#endif
}
static CYTHON_INLINE PyObject *__Pyx_XNewRef(PyObject *obj) {
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030a0000 || defined(Py_XNewRef)
    return Py_XNewRef(obj);
#else
    Py_XINCREF(obj);
    return obj;
#endif
}
static CYTHON_INLINE PyObject *__Pyx_Owned_Py_None(int b);
static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*);
static CYTHON_INLINE PyObject* __Pyx_PyNumber_Long(PyObject* x);
#define __Pyx_PySequence_Tuple(obj)\
    (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
static CYTHON_INLINE PyObject * __Pyx_PyLong_FromSize_t(size_t);
static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*);
#if CYTHON_ASSUME_SAFE_MACROS
#define __Pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
#define __Pyx_PyFloat_AS_DOUBLE(x) PyFloat_AS_DOUBLE(x)
#else
#define __Pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
#define __Pyx_PyFloat_AS_DOUBLE(x) PyFloat_AsDouble(x)
#endif
#define __Pyx_PyFloat_AsFloat(x) ((float) __Pyx_PyFloat_AsDouble(x))
#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x))
#if CYTHON_USE_PYLONG_INTERNALS
  #if PY_VERSION_HEX >= 0x030C00A7
  #ifndef _PyLong_SIGN_MASK
    #define _PyLong_SIGN_MASK 3
  #endif
  #ifndef _PyLong_NON_SIZE_BITS
    #define _PyLong_NON_SIZE_BITS 3
  #endif
  #define __Pyx_PyLong_Sign(x)  (((PyLongObject*)x)->long_value.lv_tag & _PyLong_SIGN_MASK)
  #define __Pyx_PyLong_IsNeg(x)  ((__Pyx_PyLong_Sign(x) & 2) != 0)
  #define __Pyx_PyLong_IsNonNeg(x)  (!__Pyx_PyLong_IsNeg(x))
  #define __Pyx_PyLong_IsZero(x)  (__Pyx_PyLong_Sign(x) & 1)
  #define __Pyx_PyLong_IsPos(x)  (__Pyx_PyLong_Sign(x) == 0)
  #define __Pyx_PyLong_CompactValueUnsigned(x)  (__Pyx_PyLong_Digits(x)[0])
  #define __Pyx_PyLong_DigitCount(x)  ((Py_ssize_t) (((PyLongObject*)x)->long_value.lv_tag >> _PyLong_NON_SIZE_BITS))
  #define __Pyx_PyLong_SignedDigitCount(x)\
        ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * __Pyx_PyLong_DigitCount(x))
  #if defined(PyUnstable_Long_IsCompact) && defined(PyUnstable_Long_CompactValue)
    #define __Pyx_PyLong_IsCompact(x)     PyUnstable_Long_IsCompact((PyLongObject*) x)
    #define __Pyx_PyLong_CompactValue(x)  PyUnstable_Long_CompactValue((PyLongObject*) x)
  #else
    #define __Pyx_PyLong_IsCompact(x)     (((PyLongObject*)x)->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS))
    #define __Pyx_PyLong_CompactValue(x)  ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * (Py_ssize_t) __Pyx_PyLong_Digits(x)[0])
  #endif
  typedef Py_ssize_t  __Pyx_compact_pylong;
  typedef size_t  __Pyx_compact_upylong;
  #else
  #define __Pyx_PyLong_IsNeg(x)  (Py_SIZE(x) < 0)
  #define __Pyx_PyLong_IsNonNeg(x)  (Py_SIZE(x) >= 0)
  #define __Pyx_PyLong_IsZero(x)  (Py_SIZE(x) == 0)
  #define __Pyx_PyLong_IsPos(x)  (Py_SIZE(x) > 0)
  #define __Pyx_PyLong_CompactValueUnsigned(x)  ((Py_SIZE(x) == 0) ? 0 : __Pyx_PyLong_Digits(x)[0])
  #define __Pyx_PyLong_DigitCount(x)  __Pyx_sst_abs(Py_SIZE(x))
  #define __Pyx_PyLong_SignedDigitCount(x)  Py_SIZE(x)
  #define __Pyx_PyLong_IsCompact(x)  (Py_SIZE(x) == 0 || Py_SIZE(x) == 1 || Py_SIZE(x) == -1)
  #define __Pyx_PyLong_CompactValue(x)\
        ((Py_SIZE(x) == 0) ? (sdigit) 0 : ((Py_SIZE(x) < 0) ? -(sdigit)__Pyx_PyLong_Digits(x)[0] : (sdigit)__Pyx_PyLong_Digits(x)[0]))
  typedef sdigit  __Pyx_compact_pylong;
  typedef digit  __Pyx_compact_upylong;
  #endif
  #if PY_VERSION_HEX >= 0x030C00A5
  #define __Pyx_PyLong_Digits(x)  (((PyLongObject*)x)->long_value.ob_digit)
  #else
  #define __Pyx_PyLong_Digits(x)  (((PyLongObject*)x)->ob_digit)
  #endif
#endif
#if __PYX_DEFAULT_STRING_ENCODING_IS_UTF8
  #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL)
#elif __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
  #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeASCII(c_str, size, NULL)
#else
  #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL)
#endif


/* Test for GCC > 2.95 */
#if defined(__GNUC__)     && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))
  #define likely(x)   __builtin_expect(!!(x), 1)
  #define unlikely(x) __builtin_expect(!!(x), 0)
#else /* !__GNUC__ or GCC < 2.95 */
  #define likely(x)   (x)
  #define unlikely(x) (x)
#endif /* __GNUC__ */
/* PretendToInitialize */
#ifdef __cplusplus
#if __cplusplus > 201103L
#include <type_traits>
#endif
template <typename T>
static void __Pyx_pretend_to_initialize(T* ptr) {
#if __cplusplus > 201103L
    if ((std::is_trivially_default_constructible<T>::value))
#endif
        *ptr = T();
    (void)ptr;
}
#else
static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; }
#endif


#if !CYTHON_USE_MODULE_STATE
static PyObject *__pyx_m = NULL;
#endif
static int __pyx_lineno;
static int __pyx_clineno = 0;
static const char * const __pyx_cfilenm = __FILE__;
static const char *__pyx_filename;

/* #### Code section: filename_table ### */

static const char* const __pyx_f[] = {
  "pyverbs/providers/mlx5/mlx5dv.pyx",
  "EnumTypeToPy",
  "pyverbs/providers/mlx5/mlx5dv.pxd",
  "pyverbs/device.pxd",
  "pyverbs/qp.pxd",
  "pyverbs/cq.pxd",
  "pyverbs/pd.pxd",
  "pyverbs/providers/mlx5/mlx5dv_mkey.pxd",
  "pyverbs/providers/mlx5/mlx5dv_crypto.pxd",
  "pyverbs/providers/mlx5/dr_domain.pxd",
  "pyverbs/providers/mlx5/dr_table.pxd",
  "pyverbs/providers/mlx5/dr_action.pxd",
  "pyverbs/providers/mlx5/mlx5dv_sched.pxd",
  "pyverbs/wr.pxd",
  "cmid.pxd",
  "pyverbs/addr.pxd",
};
/* #### Code section: utility_code_proto_before_types ### */
/* Atomics.proto (used by UnpackUnboundCMethod) */
#include <pythread.h>
#ifndef CYTHON_ATOMICS
    #define CYTHON_ATOMICS 1
#endif
#define __PYX_CYTHON_ATOMICS_ENABLED() CYTHON_ATOMICS
#define __PYX_GET_CYTHON_COMPILING_IN_CPYTHON_FREETHREADING() CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
#define __pyx_atomic_int_type int
#define __pyx_nonatomic_int_type int
#if CYTHON_ATOMICS && (defined(__STDC_VERSION__) &&\
                        (__STDC_VERSION__ >= 201112L) &&\
                        !defined(__STDC_NO_ATOMICS__))
    #include <stdatomic.h>
#elif CYTHON_ATOMICS && (defined(__cplusplus) && (\
                    (__cplusplus >= 201103L) ||\
                    (defined(_MSC_VER) && _MSC_VER >= 1700)))
    #include <atomic>
#endif
#if CYTHON_ATOMICS && (defined(__STDC_VERSION__) &&\
                        (__STDC_VERSION__ >= 201112L) &&\
                        !defined(__STDC_NO_ATOMICS__) &&\
                       ATOMIC_INT_LOCK_FREE == 2)
    #undef __pyx_atomic_int_type
    #define __pyx_atomic_int_type atomic_int
    #define __pyx_atomic_ptr_type atomic_uintptr_t
    #define __pyx_nonatomic_ptr_type uintptr_t
    #define __pyx_atomic_incr_relaxed(value) atomic_fetch_add_explicit(value, 1, memory_order_relaxed)
    #define __pyx_atomic_incr_acq_rel(value) atomic_fetch_add_explicit(value, 1, memory_order_acq_rel)
    #define __pyx_atomic_decr_acq_rel(value) atomic_fetch_sub_explicit(value, 1, memory_order_acq_rel)
    #define __pyx_atomic_sub(value, arg) atomic_fetch_sub(value, arg)
    #define __pyx_atomic_int_cmp_exchange(value, expected, desired) atomic_compare_exchange_strong(value, expected, desired)
    #define __pyx_atomic_load(value) atomic_load(value)
    #define __pyx_atomic_store(value, new_value) atomic_store(value, new_value)
    #define __pyx_atomic_pointer_load_relaxed(value) atomic_load_explicit(value, memory_order_relaxed)
    #define __pyx_atomic_pointer_load_acquire(value) atomic_load_explicit(value, memory_order_acquire)
    #define __pyx_atomic_pointer_exchange(value, new_value) atomic_exchange(value, (__pyx_nonatomic_ptr_type)new_value)
    #define __pyx_atomic_pointer_cmp_exchange(value, expected, desired) atomic_compare_exchange_strong(value, expected, desired)
    #if defined(__PYX_DEBUG_ATOMICS) && defined(_MSC_VER)
        #pragma message ("Using standard C atomics")
    #elif defined(__PYX_DEBUG_ATOMICS)
        #warning "Using standard C atomics"
    #endif
#elif CYTHON_ATOMICS && (defined(__cplusplus) && (\
                    (__cplusplus >= 201103L) ||\
\
                    (defined(_MSC_VER) && _MSC_VER >= 1700)) &&\
                    ATOMIC_INT_LOCK_FREE == 2)
    #undef __pyx_atomic_int_type
    #define __pyx_atomic_int_type std::atomic_int
    #define __pyx_atomic_ptr_type std::atomic_uintptr_t
    #define __pyx_nonatomic_ptr_type uintptr_t
    #define __pyx_atomic_incr_relaxed(value) std::atomic_fetch_add_explicit(value, 1, std::memory_order_relaxed)
    #define __pyx_atomic_incr_acq_rel(value) std::atomic_fetch_add_explicit(value, 1, std::memory_order_acq_rel)
    #define __pyx_atomic_decr_acq_rel(value) std::atomic_fetch_sub_explicit(value, 1, std::memory_order_acq_rel)
    #define __pyx_atomic_sub(value, arg) std::atomic_fetch_sub(value, arg)
    #define __pyx_atomic_int_cmp_exchange(value, expected, desired) std::atomic_compare_exchange_strong(value, expected, desired)
    #define __pyx_atomic_load(value) std::atomic_load(value)
    #define __pyx_atomic_store(value, new_value) std::atomic_store(value, new_value)
    #define __pyx_atomic_pointer_load_relaxed(value) std::atomic_load_explicit(value, std::memory_order_relaxed)
    #define __pyx_atomic_pointer_load_acquire(value) std::atomic_load_explicit(value, std::memory_order_acquire)
    #define __pyx_atomic_pointer_exchange(value, new_value) std::atomic_exchange(value, (__pyx_nonatomic_ptr_type)new_value)
    #define __pyx_atomic_pointer_cmp_exchange(value, expected, desired) std::atomic_compare_exchange_strong(value, expected, desired)
    #if defined(__PYX_DEBUG_ATOMICS) && defined(_MSC_VER)
        #pragma message ("Using standard C++ atomics")
    #elif defined(__PYX_DEBUG_ATOMICS)
        #warning "Using standard C++ atomics"
    #endif
#elif CYTHON_ATOMICS && (__GNUC__ >= 5 || (__GNUC__ == 4 &&\
                    (__GNUC_MINOR__ > 1 ||\
                    (__GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ >= 2))))
    #define __pyx_atomic_ptr_type void*
    #define __pyx_nonatomic_ptr_type void*
    #define __pyx_atomic_incr_relaxed(value) __sync_fetch_and_add(value, 1)
    #define __pyx_atomic_incr_acq_rel(value) __sync_fetch_and_add(value, 1)
    #define __pyx_atomic_decr_acq_rel(value) __sync_fetch_and_sub(value, 1)
    #define __pyx_atomic_sub(value, arg) __sync_fetch_and_sub(value, arg)
    static CYTHON_INLINE int __pyx_atomic_int_cmp_exchange(__pyx_atomic_int_type* value, __pyx_nonatomic_int_type* expected, __pyx_nonatomic_int_type desired) {
        __pyx_nonatomic_int_type old = __sync_val_compare_and_swap(value, *expected, desired);
        int result = old == *expected;
        *expected = old;
        return result;
    }
    #define __pyx_atomic_load(value) __sync_fetch_and_add(value, 0)
    #define __pyx_atomic_store(value, new_value) __sync_lock_test_and_set(value, new_value)
    #define __pyx_atomic_pointer_load_relaxed(value) __sync_fetch_and_add(value, 0)
    #define __pyx_atomic_pointer_load_acquire(value) __sync_fetch_and_add(value, 0)
    #define __pyx_atomic_pointer_exchange(value, new_value) __sync_lock_test_and_set(value, (__pyx_atomic_ptr_type)new_value)
    static CYTHON_INLINE int __pyx_atomic_pointer_cmp_exchange(__pyx_atomic_ptr_type* value, __pyx_nonatomic_ptr_type* expected, __pyx_nonatomic_ptr_type desired) {
        __pyx_nonatomic_ptr_type old = __sync_val_compare_and_swap(value, *expected, desired);
        int result = old == *expected;
        *expected = old;
        return result;
    }
    #ifdef __PYX_DEBUG_ATOMICS
        #warning "Using GNU atomics"
    #endif
#elif CYTHON_ATOMICS && defined(_MSC_VER)
    #include <intrin.h>
    #undef __pyx_atomic_int_type
    #define __pyx_atomic_int_type long
    #define __pyx_atomic_ptr_type void*
    #undef __pyx_nonatomic_int_type
    #define __pyx_nonatomic_int_type long
    #define __pyx_nonatomic_ptr_type void*
    #pragma intrinsic (_InterlockedExchangeAdd, _InterlockedExchange, _InterlockedCompareExchange, _InterlockedCompareExchangePointer, _InterlockedExchangePointer)
    #define __pyx_atomic_incr_relaxed(value) _InterlockedExchangeAdd(value, 1)
    #define __pyx_atomic_incr_acq_rel(value) _InterlockedExchangeAdd(value, 1)
    #define __pyx_atomic_decr_acq_rel(value) _InterlockedExchangeAdd(value, -1)
    #define __pyx_atomic_sub(value, arg) _InterlockedExchangeAdd(value, -arg)
    static CYTHON_INLINE int __pyx_atomic_int_cmp_exchange(__pyx_atomic_int_type* value, __pyx_nonatomic_int_type* expected, __pyx_nonatomic_int_type desired) {
        __pyx_nonatomic_int_type old = _InterlockedCompareExchange(value, desired, *expected);
        int result = old == *expected;
        *expected = old;
        return result;
    }
    #define __pyx_atomic_load(value) _InterlockedExchangeAdd(value, 0)
    #define __pyx_atomic_store(value, new_value) _InterlockedExchange(value, new_value)
    #define __pyx_atomic_pointer_load_relaxed(value) *(void * volatile *)value
    #define __pyx_atomic_pointer_load_acquire(value) _InterlockedCompareExchangePointer(value, 0, 0)
    #define __pyx_atomic_pointer_exchange(value, new_value) _InterlockedExchangePointer(value, (__pyx_atomic_ptr_type)new_value)
    static CYTHON_INLINE int __pyx_atomic_pointer_cmp_exchange(__pyx_atomic_ptr_type* value, __pyx_nonatomic_ptr_type* expected, __pyx_nonatomic_ptr_type desired) {
        __pyx_atomic_ptr_type old = _InterlockedCompareExchangePointer(value, desired, *expected);
        int result = old == *expected;
        *expected = old;
        return result;
    }
    #ifdef __PYX_DEBUG_ATOMICS
        #pragma message ("Using MSVC atomics")
    #endif
#else
    #undef CYTHON_ATOMICS
    #define CYTHON_ATOMICS 0
    #ifdef __PYX_DEBUG_ATOMICS
        #warning "Not using atomics"
    #endif
#endif

/* CriticalSectionsDefinition.proto (used by CriticalSections) */
#if !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
#define __Pyx_PyCriticalSection void*
#define __Pyx_PyCriticalSection2 void*
#define __Pyx_PyCriticalSection_End(cs)
#define __Pyx_PyCriticalSection2_End(cs)
#else
#define __Pyx_PyCriticalSection PyCriticalSection
#define __Pyx_PyCriticalSection2 PyCriticalSection2
#define __Pyx_PyCriticalSection_End PyCriticalSection_End
#define __Pyx_PyCriticalSection2_End PyCriticalSection2_End
#endif

/* CriticalSections.proto (used by ParseKeywordsImpl) */
#if !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
#define __Pyx_PyCriticalSection_Begin(cs, arg) (void)(cs)
#define __Pyx_PyCriticalSection2_Begin(cs, arg1, arg2) (void)(cs)
#else
#define __Pyx_PyCriticalSection_Begin PyCriticalSection_Begin
#define __Pyx_PyCriticalSection2_Begin PyCriticalSection2_Begin
#endif
#if PY_VERSION_HEX < 0x030d0000 || CYTHON_COMPILING_IN_LIMITED_API
#define __Pyx_BEGIN_CRITICAL_SECTION(o) {
#define __Pyx_END_CRITICAL_SECTION() }
#else
#define __Pyx_BEGIN_CRITICAL_SECTION Py_BEGIN_CRITICAL_SECTION
#define __Pyx_END_CRITICAL_SECTION Py_END_CRITICAL_SECTION
#endif

/* IncludeStructmemberH.proto (used by FixUpExtensionType) */
#include <structmember.h>

/* #### Code section: numeric_typedefs ### */
/* #### Code section: complex_type_declarations ### */
/* #### Code section: type_declarations ### */

/*--- Type declarations ---*/
struct __pyx_obj_7pyverbs_4base_PyverbsObject;
struct __pyx_obj_7pyverbs_4base_PyverbsCM;
struct __pyx_obj_7pyverbs_6device_Context;
struct __pyx_obj_7pyverbs_6device_DeviceAttr;
struct __pyx_obj_7pyverbs_6device_QueryDeviceExInput;
struct __pyx_obj_7pyverbs_6device_ODPCaps;
struct __pyx_obj_7pyverbs_6device_RSSCaps;
struct __pyx_obj_7pyverbs_6device_PacketPacingCaps;
struct __pyx_obj_7pyverbs_6device_PCIAtomicCaps;
struct __pyx_obj_7pyverbs_6device_TMCaps;
struct __pyx_obj_7pyverbs_6device_CQModerationCaps;
struct __pyx_obj_7pyverbs_6device_TSOCaps;
struct __pyx_obj_7pyverbs_6device_DeviceAttrEx;
struct __pyx_obj_7pyverbs_6device_AllocDmAttr;
struct __pyx_obj_7pyverbs_6device_DM;
struct __pyx_obj_7pyverbs_6device_PortAttr;
struct __pyx_obj_7pyverbs_6device_GIDEntry;
struct __pyx_obj_7pyverbs_6device_AsyncEvent;
struct __pyx_obj_7pyverbs_6device_FdArr;
struct __pyx_obj_7pyverbs_2qp_QPCap;
struct __pyx_obj_7pyverbs_2qp_QPInitAttr;
struct __pyx_obj_7pyverbs_2qp_QPInitAttrEx;
struct __pyx_obj_7pyverbs_2qp_QPAttr;
struct __pyx_obj_7pyverbs_2qp_QP;
struct __pyx_obj_7pyverbs_2qp_DataBuffer;
struct __pyx_obj_7pyverbs_2qp_QPEx;
struct __pyx_obj_7pyverbs_2qp_ECE;
struct __pyx_obj_7pyverbs_2cq_CompChannel;
struct __pyx_obj_7pyverbs_2cq_CQ;
struct __pyx_obj_7pyverbs_2cq_CqInitAttrEx;
struct __pyx_obj_7pyverbs_2cq_CQEX;
struct __pyx_obj_7pyverbs_2cq_WC;
struct __pyx_obj_7pyverbs_2cq_PollCqAttr;
struct __pyx_obj_7pyverbs_2cq_WcTmInfo;
struct __pyx_obj_7pyverbs_2pd_PD;
struct __pyx_obj_7pyverbs_2pd_ParentDomainInitAttr;
struct __pyx_obj_7pyverbs_2pd_ParentDomain;
struct __pyx_obj_7pyverbs_2pd_ParentDomainContext;
struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MkeyConfAttr;
struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MrInterleaved;
struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5Mkey;
struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigCrc;
struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigT10Dif;
struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigBlockDomain;
struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigBlockAttr;
struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigErr;
struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MkeyErr;
struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoLoginAttr;
struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoExtLoginAttr;
struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEKInitAttr;
struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEKAttr;
struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoAttr;
struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEK;
struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoLogin;
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_domain_DrDomain;
struct __pyx_obj_7pyverbs_9providers_4mlx5_8dr_table_DrTable;
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrAction;
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionQp;
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionModify;
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowCounter;
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDrop;
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionTag;
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTable;
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionPushVLan;
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionPopVLan;
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestAttr;
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestArray;
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDefMiss;
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionVPort;
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionIBPort;
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTir;
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionPacketReformat;
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrFlowSamplerAttr;
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowSample;
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrFlowMeterAttr;
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowMeter;
struct __pyx_obj_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedAttr;
struct __pyx_obj_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedNode;
struct __pyx_obj_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedLeaf;
struct __pyx_obj_7pyverbs_2wr_SGE;
struct __pyx_obj_7pyverbs_2wr_RecvWR;
struct __pyx_obj_7pyverbs_2wr_SendWR;
struct __pyx_obj_7pyverbs_4cmid_CMID;
struct __pyx_obj_7pyverbs_4cmid_CMEventChannel;
struct __pyx_obj_7pyverbs_4cmid_CMEvent;
struct __pyx_obj_7pyverbs_4cmid_AddrInfo;
struct __pyx_obj_7pyverbs_4cmid_ConnParam;
struct __pyx_obj_7pyverbs_4cmid_UDParam;
struct __pyx_obj_7pyverbs_4cmid_JoinMCAttrEx;
struct __pyx_obj_7pyverbs_4addr_GID;
struct __pyx_obj_7pyverbs_4addr_GRH;
struct __pyx_obj_7pyverbs_4addr_GlobalRoute;
struct __pyx_obj_7pyverbs_4addr_AHAttr;
struct __pyx_obj_7pyverbs_4addr_AH;
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context;
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr;
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext;
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr;
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr;
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr;
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr;
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP;
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr;
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ;
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR;
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP;
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR;
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr;
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg;
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg;
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg;
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe;
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM;
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj;
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64;
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr;
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector;
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq;
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp;

/* "pyverbs/base.pxd":6
 * #cython: language_level=3
 * 
 * cdef class PyverbsObject(object):             # <<<<<<<<<<<<<<
 *     cdef object __weakref__
 *     cdef object logger
*/
struct __pyx_obj_7pyverbs_4base_PyverbsObject {
  PyObject_HEAD
  PyObject *__weakref__;
  PyObject *logger;
};


/* "pyverbs/base.pxd":10
 *     cdef object logger
 * 
 * cdef class PyverbsCM(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cpdef close(self)
 * 
*/
struct __pyx_obj_7pyverbs_4base_PyverbsCM {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM *__pyx_vtab;
};


/* "pyverbs/device.pxd":10
 * 
 * 
 * cdef class Context(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_context *context
 *     cdef v.ibv_device *device
*/
struct __pyx_obj_7pyverbs_6device_Context {
  struct __pyx_obj_7pyverbs_4base_PyverbsCM __pyx_base;
  struct ibv_context *context;
  struct ibv_device *device;
  PyObject *name;
  PyObject *pds;
  PyObject *dms;
  PyObject *ccs;
  PyObject *cqs;
  PyObject *qps;
  PyObject *xrcds;
  PyObject *vars;
  PyObject *uars;
  PyObject *pps;
  PyObject *sched_nodes;
  PyObject *sched_leafs;
  PyObject *dr_domains;
  PyObject *wqs;
  PyObject *rwq_ind_tbls;
  PyObject *crypto_logins;
  PyObject *event_channels;
  PyObject *dmahs;
};


/* "pyverbs/device.pxd":33
 *     cdef object dmahs
 * 
 * cdef class DeviceAttr(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_device_attr dev_attr
 * 
*/
struct __pyx_obj_7pyverbs_6device_DeviceAttr {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct ibv_device_attr dev_attr;
};


/* "pyverbs/device.pxd":36
 *     cdef v.ibv_device_attr dev_attr
 * 
 * cdef class QueryDeviceExInput(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_query_device_ex_input input
 * 
*/
struct __pyx_obj_7pyverbs_6device_QueryDeviceExInput {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct ibv_query_device_ex_input input;
};


/* "pyverbs/device.pxd":39
 *     cdef v.ibv_query_device_ex_input input
 * 
 * cdef class ODPCaps(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_odp_caps odp_caps
 *     cdef object xrc_odp_caps
*/
struct __pyx_obj_7pyverbs_6device_ODPCaps {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct ibv_odp_caps odp_caps;
  PyObject *xrc_odp_caps;
};


/* "pyverbs/device.pxd":43
 *     cdef object xrc_odp_caps
 * 
 * cdef class RSSCaps(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_rss_caps rss_caps
 * 
*/
struct __pyx_obj_7pyverbs_6device_RSSCaps {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct ibv_rss_caps rss_caps;
};


/* "pyverbs/device.pxd":46
 *     cdef v.ibv_rss_caps rss_caps
 * 
 * cdef class PacketPacingCaps(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_packet_pacing_caps packet_pacing_caps
 * 
*/
struct __pyx_obj_7pyverbs_6device_PacketPacingCaps {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct ibv_packet_pacing_caps packet_pacing_caps;
};


/* "pyverbs/device.pxd":49
 *     cdef v.ibv_packet_pacing_caps packet_pacing_caps
 * 
 * cdef class PCIAtomicCaps(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_pci_atomic_caps caps
 * 
*/
struct __pyx_obj_7pyverbs_6device_PCIAtomicCaps {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct ibv_pci_atomic_caps caps;
};


/* "pyverbs/device.pxd":52
 *     cdef v.ibv_pci_atomic_caps caps
 * 
 * cdef class TMCaps(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_tm_caps tm_caps
 * 
*/
struct __pyx_obj_7pyverbs_6device_TMCaps {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct ibv_tm_caps tm_caps;
};


/* "pyverbs/device.pxd":55
 *     cdef v.ibv_tm_caps tm_caps
 * 
 * cdef class CQModerationCaps(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_cq_moderation_caps cq_mod_caps
 * 
*/
struct __pyx_obj_7pyverbs_6device_CQModerationCaps {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct ibv_cq_moderation_caps cq_mod_caps;
};


/* "pyverbs/device.pxd":58
 *     cdef v.ibv_cq_moderation_caps cq_mod_caps
 * 
 * cdef class TSOCaps(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_tso_caps tso_caps
 * 
*/
struct __pyx_obj_7pyverbs_6device_TSOCaps {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct ibv_tso_caps tso_caps;
};


/* "pyverbs/device.pxd":61
 *     cdef v.ibv_tso_caps tso_caps
 * 
 * cdef class DeviceAttrEx(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_device_attr_ex dev_attr
 * 
*/
struct __pyx_obj_7pyverbs_6device_DeviceAttrEx {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct ibv_device_attr_ex dev_attr;
};


/* "pyverbs/device.pxd":64
 *     cdef v.ibv_device_attr_ex dev_attr
 * 
 * cdef class AllocDmAttr(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_alloc_dm_attr alloc_dm_attr
 * 
*/
struct __pyx_obj_7pyverbs_6device_AllocDmAttr {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct ibv_alloc_dm_attr alloc_dm_attr;
};


/* "pyverbs/device.pxd":67
 *     cdef v.ibv_alloc_dm_attr alloc_dm_attr
 * 
 * cdef class DM(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_dm *dm
 *     cdef object dm_mrs
*/
struct __pyx_obj_7pyverbs_6device_DM {
  struct __pyx_obj_7pyverbs_4base_PyverbsCM __pyx_base;
  struct ibv_dm *dm;
  PyObject *dm_mrs;
  PyObject *context;
  PyObject *_is_imported;
};


/* "pyverbs/device.pxd":74
 *     cdef add_ref(self, obj)
 * 
 * cdef class PortAttr(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_port_attr attr
 * 
*/
struct __pyx_obj_7pyverbs_6device_PortAttr {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct ibv_port_attr attr;
};


/* "pyverbs/device.pxd":77
 *     cdef v.ibv_port_attr attr
 * 
 * cdef class GIDEntry(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_gid_entry entry
 * 
*/
struct __pyx_obj_7pyverbs_6device_GIDEntry {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct ibv_gid_entry entry;
};


/* "pyverbs/device.pxd":80
 *     cdef v.ibv_gid_entry entry
 * 
 * cdef class AsyncEvent(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_async_event event
 * 
*/
struct __pyx_obj_7pyverbs_6device_AsyncEvent {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct ibv_async_event event;
};


/* "pyverbs/device.pxd":83
 *     cdef v.ibv_async_event event
 * 
 * cdef class FdArr(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_fd_arr attr
 *     cpdef close(self)
*/
struct __pyx_obj_7pyverbs_6device_FdArr {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct __pyx_vtabstruct_7pyverbs_6device_FdArr *__pyx_vtab;
  struct ibv_fd_arr attr;
};


/* "pyverbs/qp.pxd":9
 * cimport pyverbs.libibverbs as v
 * 
 * cdef class QPCap(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_qp_cap cap
 * 
*/
struct __pyx_obj_7pyverbs_2qp_QPCap {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct ibv_qp_cap cap;
};


/* "pyverbs/qp.pxd":12
 *     cdef v.ibv_qp_cap cap
 * 
 * cdef class QPInitAttr(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_qp_init_attr attr
 *     cdef object scq
*/
struct __pyx_obj_7pyverbs_2qp_QPInitAttr {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct ibv_qp_init_attr attr;
  PyObject *scq;
  PyObject *rcq;
  PyObject *srq;
};


/* "pyverbs/qp.pxd":18
 *     cdef object srq
 * 
 * cdef class QPInitAttrEx(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_qp_init_attr_ex attr
 *     cdef object scq
*/
struct __pyx_obj_7pyverbs_2qp_QPInitAttrEx {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct ibv_qp_init_attr_ex attr;
  PyObject *scq;
  PyObject *rcq;
  PyObject *_pd;
  PyObject *xrcd;
  PyObject *srq;
  PyObject *ind_table;
};


/* "pyverbs/qp.pxd":27
 *     cdef object ind_table
 * 
 * cdef class QPAttr(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_qp_attr attr
 * 
*/
struct __pyx_obj_7pyverbs_2qp_QPAttr {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct ibv_qp_attr attr;
};


/* "pyverbs/qp.pxd":30
 *     cdef v.ibv_qp_attr attr
 * 
 * cdef class QP(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_qp *qp
 *     cdef int type
*/
struct __pyx_obj_7pyverbs_2qp_QP {
  struct __pyx_obj_7pyverbs_4base_PyverbsCM __pyx_base;
  struct ibv_qp *qp;
  int type;
  int state;
  PyObject *pd;
  PyObject *context;
  PyObject *xrcd;
  PyObject *scq;
  PyObject *rcq;
  PyObject *mws;
  PyObject *srq;
  PyObject *flows;
  PyObject *dr_actions;
};


/* "pyverbs/qp.pxd":47
 *     cdef add_ref(self, obj)
 * 
 * cdef class DataBuffer(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_data_buf data
 * 
*/
struct __pyx_obj_7pyverbs_2qp_DataBuffer {
  struct __pyx_obj_7pyverbs_4base_PyverbsCM __pyx_base;
  struct ibv_data_buf data;
};


/* "pyverbs/qp.pxd":50
 *     cdef v.ibv_data_buf data
 * 
 * cdef class QPEx(QP):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_qp_ex *qp_ex
 *     cdef object ind_table
*/
struct __pyx_obj_7pyverbs_2qp_QPEx {
  struct __pyx_obj_7pyverbs_2qp_QP __pyx_base;
  struct ibv_qp_ex *qp_ex;
  PyObject *ind_table;
};


/* "pyverbs/qp.pxd":54
 *     cdef object ind_table
 * 
 * cdef class ECE(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_ece ece
*/
struct __pyx_obj_7pyverbs_2qp_ECE {
  struct __pyx_obj_7pyverbs_4base_PyverbsCM __pyx_base;
  struct ibv_ece ece;
};


/* "pyverbs/cq.pxd":9
 * cimport pyverbs.libibverbs as v
 * 
 * cdef class CompChannel(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_comp_channel *cc
 *     cpdef close(self)
*/
struct __pyx_obj_7pyverbs_2cq_CompChannel {
  struct __pyx_obj_7pyverbs_4base_PyverbsCM __pyx_base;
  struct ibv_comp_channel *cc;
  PyObject *context;
  PyObject *cqs;
};


/* "pyverbs/cq.pxd":16
 *     cdef object cqs
 * 
 * cdef class CQ(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_cq *cq
 *     cpdef close(self)
*/
struct __pyx_obj_7pyverbs_2cq_CQ {
  struct __pyx_obj_7pyverbs_4base_PyverbsCM __pyx_base;
  struct ibv_cq *cq;
  PyObject *context;
  PyObject *qps;
  PyObject *srqs;
  PyObject *channel;
  PyObject *num_events;
  PyObject *wqs;
};


/* "pyverbs/cq.pxd":27
 *     cdef object wqs
 * 
 * cdef class CqInitAttrEx(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_cq_init_attr_ex attr
 *     cdef object channel
*/
struct __pyx_obj_7pyverbs_2cq_CqInitAttrEx {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct ibv_cq_init_attr_ex attr;
  PyObject *channel;
  PyObject *parent_domain;
};


/* "pyverbs/cq.pxd":32
 *     cdef object parent_domain
 * 
 * cdef class CQEX(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_cq_ex *cq
 *     cdef v.ibv_cq *ibv_cq
*/
struct __pyx_obj_7pyverbs_2cq_CQEX {
  struct __pyx_obj_7pyverbs_4base_PyverbsCM __pyx_base;
  struct ibv_cq_ex *cq;
  struct ibv_cq *ibv_cq;
  PyObject *context;
  PyObject *qps;
  PyObject *srqs;
  PyObject *wqs;
};


/* "pyverbs/cq.pxd":42
 *     cdef object wqs
 * 
 * cdef class WC(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_wc wc
 * 
*/
struct __pyx_obj_7pyverbs_2cq_WC {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct ibv_wc wc;
};


/* "pyverbs/cq.pxd":45
 *     cdef v.ibv_wc wc
 * 
 * cdef class PollCqAttr(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_poll_cq_attr attr
 * 
*/
struct __pyx_obj_7pyverbs_2cq_PollCqAttr {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct ibv_poll_cq_attr attr;
};


/* "pyverbs/cq.pxd":48
 *     cdef v.ibv_poll_cq_attr attr
 * 
 * cdef class WcTmInfo(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_wc_tm_info info
*/
struct __pyx_obj_7pyverbs_2cq_WcTmInfo {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct ibv_wc_tm_info info;
};


/* "pyverbs/pd.pxd":12
 * 
 * 
 * cdef class PD(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_pd *pd
 *     cdef Context ctx
*/
struct __pyx_obj_7pyverbs_2pd_PD {
  struct __pyx_obj_7pyverbs_4base_PyverbsCM __pyx_base;
  struct ibv_pd *pd;
  struct __pyx_obj_7pyverbs_6device_Context *ctx;
  PyObject *srqs;
  PyObject *mrs;
  PyObject *mws;
  PyObject *ahs;
  PyObject *qps;
  PyObject *parent_domains;
  PyObject *wqs;
  PyObject *mkeys;
  PyObject *deks;
  PyObject *_is_imported;
};


/* "pyverbs/pd.pxd":28
 *     cdef object _is_imported
 * 
 * cdef class ParentDomainInitAttr(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_parent_domain_init_attr init_attr
 *     cdef object pd
*/
struct __pyx_obj_7pyverbs_2pd_ParentDomainInitAttr {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct ibv_parent_domain_init_attr init_attr;
  PyObject *pd;
  PyObject *alloc;
  PyObject *dealloc;
};


/* "pyverbs/pd.pxd":34
 *     cdef object dealloc
 * 
 * cdef class ParentDomain(PD):             # <<<<<<<<<<<<<<
 *     cdef add_ref(self, obj)
 *     cdef object protection_domain
*/
struct __pyx_obj_7pyverbs_2pd_ParentDomain {
  struct __pyx_obj_7pyverbs_2pd_PD __pyx_base;
  PyObject *protection_domain;
  PyObject *cqs;
};


/* "pyverbs/pd.pxd":39
 *     cdef object cqs
 * 
 * cdef class ParentDomainContext(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef object p_alloc
 *     cdef object p_free
*/
struct __pyx_obj_7pyverbs_2pd_ParentDomainContext {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  PyObject *p_alloc;
  PyObject *p_free;
  PyObject *pd;
  PyObject *user_data;
};


/* "pyverbs/providers/mlx5/mlx5dv_mkey.pxd":10
 * from pyverbs.pd cimport PD
 * 
 * cdef class Mlx5MkeyConfAttr(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_mkey_conf_attr mlx5dv_mkey_conf_attr
 * 
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MkeyConfAttr {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct mlx5dv_mkey_conf_attr mlx5dv_mkey_conf_attr;
};


/* "pyverbs/providers/mlx5/mlx5dv_mkey.pxd":13
 *     cdef dv.mlx5dv_mkey_conf_attr mlx5dv_mkey_conf_attr
 * 
 * cdef class Mlx5MrInterleaved(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_mr_interleaved mlx5dv_mr_interleaved
 * 
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MrInterleaved {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct mlx5dv_mr_interleaved mlx5dv_mr_interleaved;
};


/* "pyverbs/providers/mlx5/mlx5dv_mkey.pxd":16
 *     cdef dv.mlx5dv_mr_interleaved mlx5dv_mr_interleaved
 * 
 * cdef class Mlx5Mkey(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_mkey *mlx5dv_mkey
 *     cdef PD pd
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5Mkey {
  struct __pyx_obj_7pyverbs_4base_PyverbsCM __pyx_base;
  struct mlx5dv_mkey *mlx5dv_mkey;
  struct __pyx_obj_7pyverbs_2pd_PD *pd;
  PyObject *max_entries;
};


/* "pyverbs/providers/mlx5/mlx5dv_mkey.pxd":21
 *     cdef object max_entries
 * 
 * cdef class Mlx5SigCrc(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_sig_crc mlx5dv_sig_crc
 * 
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigCrc {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct mlx5dv_sig_crc mlx5dv_sig_crc;
};


/* "pyverbs/providers/mlx5/mlx5dv_mkey.pxd":24
 *     cdef dv.mlx5dv_sig_crc mlx5dv_sig_crc
 * 
 * cdef class Mlx5SigT10Dif(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_sig_t10dif mlx5dv_sig_t10dif
 * 
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigT10Dif {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct mlx5dv_sig_t10dif mlx5dv_sig_t10dif;
};


/* "pyverbs/providers/mlx5/mlx5dv_mkey.pxd":27
 *     cdef dv.mlx5dv_sig_t10dif mlx5dv_sig_t10dif
 * 
 * cdef class Mlx5SigBlockDomain(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_sig_block_domain mlx5dv_sig_block_domain
 * 
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigBlockDomain {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct mlx5dv_sig_block_domain mlx5dv_sig_block_domain;
};


/* "pyverbs/providers/mlx5/mlx5dv_mkey.pxd":30
 *     cdef dv.mlx5dv_sig_block_domain mlx5dv_sig_block_domain
 * 
 * cdef class Mlx5SigBlockAttr(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_sig_block_attr mlx5dv_sig_block_attr
 * 
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigBlockAttr {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct mlx5dv_sig_block_attr mlx5dv_sig_block_attr;
};


/* "pyverbs/providers/mlx5/mlx5dv_mkey.pxd":33
 *     cdef dv.mlx5dv_sig_block_attr mlx5dv_sig_block_attr
 * 
 * cdef class Mlx5SigErr(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_sig_err mlx5dv_sig_err
 * 
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigErr {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct mlx5dv_sig_err mlx5dv_sig_err;
};


/* "pyverbs/providers/mlx5/mlx5dv_mkey.pxd":36
 *     cdef dv.mlx5dv_sig_err mlx5dv_sig_err
 * 
 * cdef class Mlx5MkeyErr(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_mkey_err mlx5dv_mkey_err
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MkeyErr {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct mlx5dv_mkey_err mlx5dv_mkey_err;
};


/* "pyverbs/providers/mlx5/mlx5dv_crypto.pxd":12
 * 
 * 
 * cdef class Mlx5CryptoLoginAttr(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_crypto_login_attr mlx5dv_crypto_login_attr
 * 
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoLoginAttr {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct mlx5dv_crypto_login_attr mlx5dv_crypto_login_attr;
};


/* "pyverbs/providers/mlx5/mlx5dv_crypto.pxd":15
 *     cdef dv.mlx5dv_crypto_login_attr mlx5dv_crypto_login_attr
 * 
 * cdef class Mlx5CryptoExtLoginAttr(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_crypto_login_attr_ex mlx5dv_crypto_login_attr_ex
 *     cdef object credential
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoExtLoginAttr {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct mlx5dv_crypto_login_attr_ex mlx5dv_crypto_login_attr_ex;
  PyObject *credential;
};


/* "pyverbs/providers/mlx5/mlx5dv_crypto.pxd":19
 *     cdef object credential
 * 
 * cdef class Mlx5DEKInitAttr(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_dek_init_attr mlx5dv_dek_init_attr
 *     cdef PD pd
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEKInitAttr {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct mlx5dv_dek_init_attr mlx5dv_dek_init_attr;
  struct __pyx_obj_7pyverbs_2pd_PD *pd;
};


/* "pyverbs/providers/mlx5/mlx5dv_crypto.pxd":23
 *     cdef PD pd
 * 
 * cdef class Mlx5DEKAttr(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_dek_attr mlx5dv_dek_attr
 * 
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEKAttr {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct mlx5dv_dek_attr mlx5dv_dek_attr;
};


/* "pyverbs/providers/mlx5/mlx5dv_crypto.pxd":26
 *     cdef dv.mlx5dv_dek_attr mlx5dv_dek_attr
 * 
 * cdef class Mlx5CryptoAttr(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_crypto_attr mlx5dv_crypto_attr
 * 
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoAttr {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct mlx5dv_crypto_attr mlx5dv_crypto_attr;
};


/* "pyverbs/providers/mlx5/mlx5dv_crypto.pxd":29
 *     cdef dv.mlx5dv_crypto_attr mlx5dv_crypto_attr
 * 
 * cdef class Mlx5DEK(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_dek *mlx5dv_dek
 *     cdef PD pd
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEK {
  struct __pyx_obj_7pyverbs_4base_PyverbsCM __pyx_base;
  struct mlx5dv_dek *mlx5dv_dek;
  struct __pyx_obj_7pyverbs_2pd_PD *pd;
};


/* "pyverbs/providers/mlx5/mlx5dv_crypto.pxd":33
 *     cdef PD pd
 * 
 * cdef class Mlx5CryptoLogin(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_crypto_login_obj *crypto_login_obj
 *     cdef Context context
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoLogin {
  struct __pyx_obj_7pyverbs_4base_PyverbsCM __pyx_base;
  struct mlx5dv_crypto_login_obj *crypto_login_obj;
  struct __pyx_obj_7pyverbs_6device_Context *context;
};


/* "pyverbs/providers/mlx5/dr_domain.pxd":9
 * from pyverbs.base cimport PyverbsCM
 * 
 * cdef class DrDomain(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_dr_domain *domain
 *     cdef object dr_tables
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_domain_DrDomain {
  struct __pyx_obj_7pyverbs_4base_PyverbsCM __pyx_base;
  struct mlx5dv_dr_domain *domain;
  PyObject *dr_tables;
  PyObject *context;
  PyObject *dr_actions;
};


/* "pyverbs/providers/mlx5/dr_table.pxd":9
 * from pyverbs.base cimport PyverbsCM
 * 
 * cdef class DrTable(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_dr_table *table
 *     cdef object dr_domain
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_8dr_table_DrTable {
  struct __pyx_obj_7pyverbs_4base_PyverbsCM __pyx_base;
  struct mlx5dv_dr_table *table;
  PyObject *dr_domain;
  PyObject *dr_matchers;
  PyObject *dr_actions;
};


/* "pyverbs/providers/mlx5/dr_action.pxd":14
 * 
 * 
 * cdef class DrAction(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_dr_action *action
 *     cdef object dr_rules
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrAction {
  struct __pyx_obj_7pyverbs_4base_PyverbsCM __pyx_base;
  struct mlx5dv_dr_action *action;
  PyObject *dr_rules;
  PyObject *dr_used_actions;
};


/* "pyverbs/providers/mlx5/dr_action.pxd":20
 *     cdef add_ref(self, obj)
 * 
 * cdef class DrActionQp(DrAction):             # <<<<<<<<<<<<<<
 *     cdef QP qp
 * 
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionQp {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrAction __pyx_base;
  struct __pyx_obj_7pyverbs_2qp_QP *qp;
};


/* "pyverbs/providers/mlx5/dr_action.pxd":23
 *     cdef QP qp
 * 
 * cdef class DrActionModify(DrAction):             # <<<<<<<<<<<<<<
 *     cdef DrDomain domain
 * 
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionModify {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrAction __pyx_base;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_domain_DrDomain *domain;
};


/* "pyverbs/providers/mlx5/dr_action.pxd":26
 *     cdef DrDomain domain
 * 
 * cdef class DrActionFlowCounter(DrAction):             # <<<<<<<<<<<<<<
 *     cdef Mlx5DevxObj devx_obj
 * 
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowCounter {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrAction __pyx_base;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *devx_obj;
};


/* "pyverbs/providers/mlx5/dr_action.pxd":29
 *     cdef Mlx5DevxObj devx_obj
 * 
 * cdef class DrActionDrop(DrAction):             # <<<<<<<<<<<<<<
 *     pass
 * 
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDrop {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrAction __pyx_base;
};


/* "pyverbs/providers/mlx5/dr_action.pxd":32
 *     pass
 * 
 * cdef class DrActionTag(DrAction):             # <<<<<<<<<<<<<<
 *     pass
 * 
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionTag {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrAction __pyx_base;
};


/* "pyverbs/providers/mlx5/dr_action.pxd":35
 *     pass
 * 
 * cdef class DrActionDestTable(DrAction):             # <<<<<<<<<<<<<<
 *     cdef DrTable table
 * 
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTable {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrAction __pyx_base;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_8dr_table_DrTable *table;
};


/* "pyverbs/providers/mlx5/dr_action.pxd":38
 *     cdef DrTable table
 * 
 * cdef class DrActionPushVLan(DrAction):             # <<<<<<<<<<<<<<
 *     cdef DrDomain domain
 * 
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionPushVLan {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrAction __pyx_base;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_domain_DrDomain *domain;
};


/* "pyverbs/providers/mlx5/dr_action.pxd":41
 *     cdef DrDomain domain
 * 
 * cdef class DrActionPopVLan(DrAction):             # <<<<<<<<<<<<<<
 *     pass
 * 
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionPopVLan {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrAction __pyx_base;
};


/* "pyverbs/providers/mlx5/dr_action.pxd":44
 *     pass
 * 
 * cdef class DrActionDestAttr(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef DrAction dest
 *     cdef dv.mlx5dv_dr_action_dest_attr *action_dest_attr
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestAttr {
  struct __pyx_obj_7pyverbs_4base_PyverbsCM __pyx_base;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrAction *dest;
  struct mlx5dv_dr_action_dest_attr *action_dest_attr;
  struct mlx5dv_dr_action_dest_reformat *dest_reformat;
};


/* "pyverbs/providers/mlx5/dr_action.pxd":49
 *     cdef dv.mlx5dv_dr_action_dest_reformat *dest_reformat
 * 
 * cdef class DrActionDestArray(DrAction):             # <<<<<<<<<<<<<<
 *     cdef DrDomain domain
 *     cdef object dest_actions
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestArray {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrAction __pyx_base;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_domain_DrDomain *domain;
  PyObject *dest_actions;
};


/* "pyverbs/providers/mlx5/dr_action.pxd":53
 *     cdef object dest_actions
 * 
 * cdef class DrActionDefMiss(DrAction):             # <<<<<<<<<<<<<<
 *     pass
 * 
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDefMiss {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrAction __pyx_base;
};


/* "pyverbs/providers/mlx5/dr_action.pxd":56
 *     pass
 * 
 * cdef class DrActionVPort(DrAction):             # <<<<<<<<<<<<<<
 *     cdef DrDomain domain
 *     cdef int vport
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionVPort {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrAction __pyx_base;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_domain_DrDomain *domain;
  int vport;
};


/* "pyverbs/providers/mlx5/dr_action.pxd":60
 *     cdef int vport
 * 
 * cdef class DrActionIBPort(DrAction):             # <<<<<<<<<<<<<<
 *     cdef DrDomain domain
 *     cdef int ib_port
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionIBPort {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrAction __pyx_base;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_domain_DrDomain *domain;
  int ib_port;
};


/* "pyverbs/providers/mlx5/dr_action.pxd":64
 *     cdef int ib_port
 * 
 * cdef class DrActionDestTir(DrAction):             # <<<<<<<<<<<<<<
 *     cdef Mlx5DevxObj devx_obj
 * 
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTir {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrAction __pyx_base;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *devx_obj;
};


/* "pyverbs/providers/mlx5/dr_action.pxd":67
 *     cdef Mlx5DevxObj devx_obj
 * 
 * cdef class DrActionPacketReformat(DrAction):             # <<<<<<<<<<<<<<
 *     cdef DrDomain domain
 * 
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionPacketReformat {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrAction __pyx_base;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_domain_DrDomain *domain;
};


/* "pyverbs/providers/mlx5/dr_action.pxd":70
 *     cdef DrDomain domain
 * 
 * cdef class DrFlowSamplerAttr(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_dr_flow_sampler_attr *attr
 *     cdef object actions
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrFlowSamplerAttr {
  struct __pyx_obj_7pyverbs_4base_PyverbsCM __pyx_base;
  struct mlx5dv_dr_flow_sampler_attr *attr;
  PyObject *actions;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_8dr_table_DrTable *table;
};


/* "pyverbs/providers/mlx5/dr_action.pxd":75
 *     cdef DrTable table
 * 
 * cdef class DrActionFlowSample(DrAction):             # <<<<<<<<<<<<<<
 *     cdef DrFlowSamplerAttr attr
 *     cdef object dr_actions
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowSample {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrAction __pyx_base;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrFlowSamplerAttr *attr;
  PyObject *dr_actions;
  PyObject *dr_table;
};


/* "pyverbs/providers/mlx5/dr_action.pxd":80
 *     cdef object dr_table
 * 
 * cdef class DrFlowMeterAttr(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_dr_flow_meter_attr *attr
 *     cdef DrTable table
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrFlowMeterAttr {
  struct __pyx_obj_7pyverbs_4base_PyverbsCM __pyx_base;
  struct mlx5dv_dr_flow_meter_attr *attr;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_8dr_table_DrTable *table;
};


/* "pyverbs/providers/mlx5/dr_action.pxd":84
 *     cdef DrTable table
 * 
 * cdef class DrActionFlowMeter(DrAction):             # <<<<<<<<<<<<<<
 *     cdef DrFlowMeterAttr attr
 *     cdef DrTable dr_table
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowMeter {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrAction __pyx_base;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrFlowMeterAttr *attr;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_8dr_table_DrTable *dr_table;
};


/* "pyverbs/providers/mlx5/mlx5dv_sched.pxd":10
 * 
 * 
 * cdef class Mlx5dvSchedAttr(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_sched_attr sched_attr
 *     cdef object parent_sched_node
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedAttr {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct mlx5dv_sched_attr sched_attr;
  PyObject *parent_sched_node;
};


/* "pyverbs/providers/mlx5/mlx5dv_sched.pxd":14
 *     cdef object parent_sched_node
 * 
 * cdef class Mlx5dvSchedNode(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_sched_node *sched_node
 *     cdef object context
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedNode {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedNode *__pyx_vtab;
  struct mlx5dv_sched_node *sched_node;
  PyObject *context;
  PyObject *sched_attr;
};


/* "pyverbs/providers/mlx5/mlx5dv_sched.pxd":20
 *     cpdef close(self)
 * 
 * cdef class Mlx5dvSchedLeaf(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_sched_leaf *sched_leaf
 *     cdef object context
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedLeaf {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedLeaf *__pyx_vtab;
  struct mlx5dv_sched_leaf *sched_leaf;
  PyObject *context;
  PyObject *sched_attr;
};


/* "pyverbs/wr.pxd":10
 * 
 * 
 * cdef class SGE(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_sge *sge
 *     cpdef read(self, length, offset)
*/
struct __pyx_obj_7pyverbs_2wr_SGE {
  struct __pyx_obj_7pyverbs_4base_PyverbsCM __pyx_base;
  struct ibv_sge *sge;
};


/* "pyverbs/wr.pxd":14
 *     cpdef read(self, length, offset)
 * 
 * cdef class RecvWR(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_recv_wr recv_wr
 * 
*/
struct __pyx_obj_7pyverbs_2wr_RecvWR {
  struct __pyx_obj_7pyverbs_4base_PyverbsCM __pyx_base;
  struct ibv_recv_wr recv_wr;
};


/* "pyverbs/wr.pxd":17
 *     cdef v.ibv_recv_wr recv_wr
 * 
 * cdef class SendWR(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_send_wr send_wr
 *     cdef object ah
*/
struct __pyx_obj_7pyverbs_2wr_SendWR {
  struct __pyx_obj_7pyverbs_4base_PyverbsCM __pyx_base;
  struct ibv_send_wr send_wr;
  PyObject *ah;
};


/* "cmid.pxd":10
 * 
 * 
 * cdef class CMID(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef cm.rdma_cm_id *id
 *     cdef object event_channel
*/
struct __pyx_obj_7pyverbs_4cmid_CMID {
  struct __pyx_obj_7pyverbs_4base_PyverbsCM __pyx_base;
  struct rdma_cm_id *id;
  PyObject *event_channel;
  PyObject *ctx;
  PyObject *pd;
  PyObject *mrs;
};


/* "cmid.pxd":20
 * 
 * 
 * cdef class CMEventChannel(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef cm.rdma_event_channel *event_channel
 *     cpdef close(self)
*/
struct __pyx_obj_7pyverbs_4cmid_CMEventChannel {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct __pyx_vtabstruct_7pyverbs_4cmid_CMEventChannel *__pyx_vtab;
  struct rdma_event_channel *event_channel;
};


/* "cmid.pxd":25
 * 
 * 
 * cdef class CMEvent(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef cm.rdma_cm_event *event
 *     cpdef close(self)
*/
struct __pyx_obj_7pyverbs_4cmid_CMEvent {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct __pyx_vtabstruct_7pyverbs_4cmid_CMEvent *__pyx_vtab;
  struct rdma_cm_event *event;
};


/* "cmid.pxd":30
 * 
 * 
 * cdef class AddrInfo(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef cm.rdma_addrinfo *addr_info
 *     cpdef close(self)
*/
struct __pyx_obj_7pyverbs_4cmid_AddrInfo {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct __pyx_vtabstruct_7pyverbs_4cmid_AddrInfo *__pyx_vtab;
  struct rdma_addrinfo *addr_info;
};


/* "cmid.pxd":35
 * 
 * 
 * cdef class ConnParam(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef cm.rdma_conn_param conn_param
 *     cdef object data
*/
struct __pyx_obj_7pyverbs_4cmid_ConnParam {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct rdma_conn_param conn_param;
  PyObject *data;
};


/* "cmid.pxd":40
 * 
 * 
 * cdef class UDParam(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef cm.rdma_ud_param ud_param
 * 
*/
struct __pyx_obj_7pyverbs_4cmid_UDParam {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct rdma_ud_param ud_param;
};


/* "cmid.pxd":43
 *     cdef cm.rdma_ud_param ud_param
 * 
 * cdef class JoinMCAttrEx(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef cm.rdma_cm_join_mc_attr_ex join_mc_attr_ex
*/
struct __pyx_obj_7pyverbs_4cmid_JoinMCAttrEx {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct rdma_cm_join_mc_attr_ex join_mc_attr_ex;
};


/* "pyverbs/addr.pxd":11
 * 
 * 
 * cdef class GID(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_gid gid
 * 
*/
struct __pyx_obj_7pyverbs_4addr_GID {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  union ibv_gid gid;
};


/* "pyverbs/addr.pxd":14
 *     cdef v.ibv_gid gid
 * 
 * cdef class GRH(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_grh grh
 * 
*/
struct __pyx_obj_7pyverbs_4addr_GRH {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct ibv_grh grh;
};


/* "pyverbs/addr.pxd":17
 *     cdef v.ibv_grh grh
 * 
 * cdef class GlobalRoute(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_global_route gr
 * 
*/
struct __pyx_obj_7pyverbs_4addr_GlobalRoute {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct ibv_global_route gr;
};


/* "pyverbs/addr.pxd":20
 *     cdef v.ibv_global_route gr
 * 
 * cdef class AHAttr(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_ah_attr ah_attr
 *     cdef init_from_ud_param(self, UDParam udparam)
*/
struct __pyx_obj_7pyverbs_4addr_AHAttr {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct __pyx_vtabstruct_7pyverbs_4addr_AHAttr *__pyx_vtab;
  struct ibv_ah_attr ah_attr;
};


/* "pyverbs/addr.pxd":24
 *     cdef init_from_ud_param(self, UDParam udparam)
 * 
 * cdef class AH(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_ah *ah
 *     cdef object pd
*/
struct __pyx_obj_7pyverbs_4addr_AH {
  struct __pyx_obj_7pyverbs_4base_PyverbsCM __pyx_base;
  struct ibv_ah *ah;
  PyObject *pd;
};


/* "pyverbs/providers/mlx5/mlx5dv.pxd":14
 * 
 * 
 * cdef class Mlx5Context(Context):             # <<<<<<<<<<<<<<
 *     cdef object devx_umems
 *     cdef object devx_objs
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context {
  struct __pyx_obj_7pyverbs_6device_Context __pyx_base;
  PyObject *devx_umems;
  PyObject *devx_objs;
  PyObject *devx_eqs;
  PyObject *cmd_comps;
};


/* "pyverbs/providers/mlx5/mlx5dv.pxd":22
 *     cpdef close(self)
 * 
 * cdef class Mlx5DVContextAttr(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_context_attr attr
 *     cdef object fds
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct mlx5dv_context_attr attr;
  PyObject *fds;
};


/* "pyverbs/providers/mlx5/mlx5dv.pxd":26
 *     cdef object fds
 * 
 * cdef class Mlx5DVContext(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_context dv
 * 
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct mlx5dv_context dv;
};


/* "pyverbs/providers/mlx5/mlx5dv.pxd":29
 *     cdef dv.mlx5dv_context dv
 * 
 * cdef class Mlx5DVPortAttr(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_port attr
 * 
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct mlx5dv_port attr;
};


/* "pyverbs/providers/mlx5/mlx5dv.pxd":32
 *     cdef dv.mlx5dv_port attr
 * 
 * cdef class Mlx5DCIStreamInitAttr(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_dci_streams dci_streams
 * 
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct mlx5dv_dci_streams dci_streams;
};


/* "pyverbs/providers/mlx5/mlx5dv.pxd":35
 *     cdef dv.mlx5dv_dci_streams dci_streams
 * 
 * cdef class Mlx5DVDCInitAttr(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_dc_init_attr attr
 * 
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct mlx5dv_dc_init_attr attr;
};


/* "pyverbs/providers/mlx5/mlx5dv.pxd":38
 *     cdef dv.mlx5dv_dc_init_attr attr
 * 
 * cdef class Mlx5DVQPInitAttr(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_qp_init_attr attr
 * 
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct mlx5dv_qp_init_attr attr;
};


/* "pyverbs/providers/mlx5/mlx5dv.pxd":41
 *     cdef dv.mlx5dv_qp_init_attr attr
 * 
 * cdef class Mlx5QP(QPEx):             # <<<<<<<<<<<<<<
 *     cdef object dc_type
 * 
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP {
  struct __pyx_obj_7pyverbs_2qp_QPEx __pyx_base;
  PyObject *dc_type;
};


/* "pyverbs/providers/mlx5/mlx5dv.pxd":44
 *     cdef object dc_type
 * 
 * cdef class Mlx5DVCQInitAttr(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_cq_init_attr attr
 * 
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct mlx5dv_cq_init_attr attr;
};


/* "pyverbs/providers/mlx5/mlx5dv.pxd":47
 *     cdef dv.mlx5dv_cq_init_attr attr
 * 
 * cdef class Mlx5CQ(CQEX):             # <<<<<<<<<<<<<<
 *     pass
 * 
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ {
  struct __pyx_obj_7pyverbs_2cq_CQEX __pyx_base;
};


/* "pyverbs/providers/mlx5/mlx5dv.pxd":50
 *     pass
 * 
 * cdef class Mlx5VAR(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_var *var
 *     cdef object context
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *__pyx_vtab;
  struct mlx5dv_var *var;
  PyObject *context;
};


/* "pyverbs/providers/mlx5/mlx5dv.pxd":55
 *     cpdef close(self)
 * 
 * cdef class Mlx5PP(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_pp *pp
 *     cdef object context
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP *__pyx_vtab;
  struct mlx5dv_pp *pp;
  PyObject *context;
};


/* "pyverbs/providers/mlx5/mlx5dv.pxd":60
 *     cpdef close(self)
 * 
 * cdef class Mlx5UAR(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_devx_uar *uar
 *     cdef object context
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *__pyx_vtab;
  struct mlx5dv_devx_uar *uar;
  PyObject *context;
};


/* "pyverbs/providers/mlx5/mlx5dv.pxd":65
 *     cpdef close(self)
 * 
 * cdef class Mlx5DmOpAddr(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef void *addr
 *     @staticmethod
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr {
  struct __pyx_obj_7pyverbs_4base_PyverbsCM __pyx_base;
  void *addr;
};


/* "pyverbs/providers/mlx5/mlx5dv.pxd":70
 *     cdef void _cpy(void *dst, void *src, int length)
 * 
 * cdef class WqeSeg(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef void *segment
 *     cpdef _copy_to_buffer(self, addr)
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg {
  struct __pyx_obj_7pyverbs_4base_PyverbsCM __pyx_base;
  void *segment;
};


/* "pyverbs/providers/mlx5/mlx5dv.pxd":74
 *     cpdef _copy_to_buffer(self, addr)
 * 
 * cdef class WqeCtrlSeg(WqeSeg):             # <<<<<<<<<<<<<<
 *     pass
 * 
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg __pyx_base;
};


/* "pyverbs/providers/mlx5/mlx5dv.pxd":77
 *     pass
 * 
 * cdef class WqeDataSeg(WqeSeg):             # <<<<<<<<<<<<<<
 *     pass
 * 
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg __pyx_base;
};


/* "pyverbs/providers/mlx5/mlx5dv.pxd":80
 *     pass
 * 
 * cdef class Wqe(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef void *addr
 *     cdef int is_user_addr
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe {
  struct __pyx_obj_7pyverbs_4base_PyverbsCM __pyx_base;
  void *addr;
  int is_user_addr;
  PyObject *segments;
};


/* "pyverbs/providers/mlx5/mlx5dv.pxd":85
 *     cdef object segments
 * 
 * cdef class Mlx5UMEM(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_devx_umem *umem
 *     cdef Context context
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM {
  struct __pyx_obj_7pyverbs_4base_PyverbsCM __pyx_base;
  struct mlx5dv_devx_umem *umem;
  struct __pyx_obj_7pyverbs_6device_Context *context;
  void *addr;
  PyObject *is_user_addr;
};


/* "pyverbs/providers/mlx5/mlx5dv.pxd":91
 *     cdef object is_user_addr
 * 
 * cdef class Mlx5DevxObj(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_devx_obj *obj
 *     cdef Context context
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj {
  struct __pyx_obj_7pyverbs_4base_PyverbsCM __pyx_base;
  struct mlx5dv_devx_obj *obj;
  struct __pyx_obj_7pyverbs_6device_Context *context;
  PyObject *out_view;
  PyObject *flow_counter_actions;
  PyObject *dest_tir_actions;
};


/* "pyverbs/providers/mlx5/mlx5dv.pxd":99
 *     cdef add_ref(self, obj)
 * 
 * cdef class Mlx5Cqe64(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5_cqe64 *cqe
 * 
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct mlx5_cqe64 *cqe;
};


/* "pyverbs/providers/mlx5/mlx5dv.pxd":102
 *     cdef dv.mlx5_cqe64 *cqe
 * 
 * cdef class Mlx5VfioAttr(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_vfio_context_attr attr
 * 
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr {
  struct __pyx_obj_7pyverbs_4base_PyverbsObject __pyx_base;
  struct mlx5dv_vfio_context_attr attr;
};


/* "pyverbs/providers/mlx5/mlx5dv.pxd":105
 *     cdef dv.mlx5dv_vfio_context_attr attr
 * 
 * cdef class Mlx5DevxMsiVector(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_devx_msi_vector *msi_vector
 * 
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector {
  struct __pyx_obj_7pyverbs_4base_PyverbsCM __pyx_base;
  struct mlx5dv_devx_msi_vector *msi_vector;
};


/* "pyverbs/providers/mlx5/mlx5dv.pxd":108
 *     cdef dv.mlx5dv_devx_msi_vector *msi_vector
 * 
 * cdef class Mlx5DevxEq(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_devx_eq *eq
 *     cdef Context context
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq {
  struct __pyx_obj_7pyverbs_4base_PyverbsCM __pyx_base;
  struct mlx5dv_devx_eq *eq;
  struct __pyx_obj_7pyverbs_6device_Context *context;
  PyObject *out_view;
};


/* "pyverbs/providers/mlx5/mlx5dv.pxd":113
 *     cdef object out_view
 * 
 * cdef class Mlx5DevxCmdComp(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_devx_cmd_comp *cmd_comp
 *     cdef Context context
*/
struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp {
  struct __pyx_obj_7pyverbs_4base_PyverbsCM __pyx_base;
  struct mlx5dv_devx_cmd_comp *cmd_comp;
  struct __pyx_obj_7pyverbs_6device_Context *context;
};



/* "pyverbs/base.pxd":10
 *     cdef object logger
 * 
 * cdef class PyverbsCM(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cpdef close(self)
 * 
*/

struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM {
  PyObject *(*close)(struct __pyx_obj_7pyverbs_4base_PyverbsCM *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM *__pyx_vtabptr_7pyverbs_4base_PyverbsCM;


/* "pyverbs/device.pxd":10
 * 
 * 
 * cdef class Context(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_context *context
 *     cdef v.ibv_device *device
*/

struct __pyx_vtabstruct_7pyverbs_6device_Context {
  struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM __pyx_base;
  PyObject *(*add_ref)(struct __pyx_obj_7pyverbs_6device_Context *, PyObject *);
};
static struct __pyx_vtabstruct_7pyverbs_6device_Context *__pyx_vtabptr_7pyverbs_6device_Context;


/* "pyverbs/device.pxd":67
 *     cdef v.ibv_alloc_dm_attr alloc_dm_attr
 * 
 * cdef class DM(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_dm *dm
 *     cdef object dm_mrs
*/

struct __pyx_vtabstruct_7pyverbs_6device_DM {
  struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM __pyx_base;
  PyObject *(*add_ref)(struct __pyx_obj_7pyverbs_6device_DM *, PyObject *);
};
static struct __pyx_vtabstruct_7pyverbs_6device_DM *__pyx_vtabptr_7pyverbs_6device_DM;


/* "pyverbs/device.pxd":83
 *     cdef v.ibv_async_event event
 * 
 * cdef class FdArr(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_fd_arr attr
 *     cpdef close(self)
*/

struct __pyx_vtabstruct_7pyverbs_6device_FdArr {
  PyObject *(*close)(struct __pyx_obj_7pyverbs_6device_FdArr *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_7pyverbs_6device_FdArr *__pyx_vtabptr_7pyverbs_6device_FdArr;


/* "pyverbs/qp.pxd":30
 *     cdef v.ibv_qp_attr attr
 * 
 * cdef class QP(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_qp *qp
 *     cdef int type
*/

struct __pyx_vtabstruct_7pyverbs_2qp_QP {
  struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM __pyx_base;
  PyObject *(*update_cqs)(struct __pyx_obj_7pyverbs_2qp_QP *, PyObject *);
  PyObject *(*add_ref)(struct __pyx_obj_7pyverbs_2qp_QP *, PyObject *);
};
static struct __pyx_vtabstruct_7pyverbs_2qp_QP *__pyx_vtabptr_7pyverbs_2qp_QP;


/* "pyverbs/qp.pxd":47
 *     cdef add_ref(self, obj)
 * 
 * cdef class DataBuffer(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_data_buf data
 * 
*/

struct __pyx_vtabstruct_7pyverbs_2qp_DataBuffer {
  struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM __pyx_base;
};
static struct __pyx_vtabstruct_7pyverbs_2qp_DataBuffer *__pyx_vtabptr_7pyverbs_2qp_DataBuffer;


/* "pyverbs/qp.pxd":50
 *     cdef v.ibv_data_buf data
 * 
 * cdef class QPEx(QP):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_qp_ex *qp_ex
 *     cdef object ind_table
*/

struct __pyx_vtabstruct_7pyverbs_2qp_QPEx {
  struct __pyx_vtabstruct_7pyverbs_2qp_QP __pyx_base;
};
static struct __pyx_vtabstruct_7pyverbs_2qp_QPEx *__pyx_vtabptr_7pyverbs_2qp_QPEx;


/* "pyverbs/qp.pxd":54
 *     cdef object ind_table
 * 
 * cdef class ECE(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_ece ece
*/

struct __pyx_vtabstruct_7pyverbs_2qp_ECE {
  struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM __pyx_base;
};
static struct __pyx_vtabstruct_7pyverbs_2qp_ECE *__pyx_vtabptr_7pyverbs_2qp_ECE;


/* "pyverbs/cq.pxd":9
 * cimport pyverbs.libibverbs as v
 * 
 * cdef class CompChannel(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_comp_channel *cc
 *     cpdef close(self)
*/

struct __pyx_vtabstruct_7pyverbs_2cq_CompChannel {
  struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM __pyx_base;
  PyObject *(*add_ref)(struct __pyx_obj_7pyverbs_2cq_CompChannel *, PyObject *);
};
static struct __pyx_vtabstruct_7pyverbs_2cq_CompChannel *__pyx_vtabptr_7pyverbs_2cq_CompChannel;


/* "pyverbs/cq.pxd":16
 *     cdef object cqs
 * 
 * cdef class CQ(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_cq *cq
 *     cpdef close(self)
*/

struct __pyx_vtabstruct_7pyverbs_2cq_CQ {
  struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM __pyx_base;
  PyObject *(*add_ref)(struct __pyx_obj_7pyverbs_2cq_CQ *, PyObject *);
};
static struct __pyx_vtabstruct_7pyverbs_2cq_CQ *__pyx_vtabptr_7pyverbs_2cq_CQ;


/* "pyverbs/cq.pxd":32
 *     cdef object parent_domain
 * 
 * cdef class CQEX(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_cq_ex *cq
 *     cdef v.ibv_cq *ibv_cq
*/

struct __pyx_vtabstruct_7pyverbs_2cq_CQEX {
  struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM __pyx_base;
  PyObject *(*add_ref)(struct __pyx_obj_7pyverbs_2cq_CQEX *, PyObject *);
};
static struct __pyx_vtabstruct_7pyverbs_2cq_CQEX *__pyx_vtabptr_7pyverbs_2cq_CQEX;


/* "pyverbs/pd.pxd":12
 * 
 * 
 * cdef class PD(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_pd *pd
 *     cdef Context ctx
*/

struct __pyx_vtabstruct_7pyverbs_2pd_PD {
  struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM __pyx_base;
  PyObject *(*add_ref)(struct __pyx_obj_7pyverbs_2pd_PD *, PyObject *);
  PyObject *(*remove_ref)(struct __pyx_obj_7pyverbs_2pd_PD *, PyObject *);
};
static struct __pyx_vtabstruct_7pyverbs_2pd_PD *__pyx_vtabptr_7pyverbs_2pd_PD;


/* "pyverbs/pd.pxd":34
 *     cdef object dealloc
 * 
 * cdef class ParentDomain(PD):             # <<<<<<<<<<<<<<
 *     cdef add_ref(self, obj)
 *     cdef object protection_domain
*/

struct __pyx_vtabstruct_7pyverbs_2pd_ParentDomain {
  struct __pyx_vtabstruct_7pyverbs_2pd_PD __pyx_base;
};
static struct __pyx_vtabstruct_7pyverbs_2pd_ParentDomain *__pyx_vtabptr_7pyverbs_2pd_ParentDomain;


/* "pyverbs/providers/mlx5/mlx5dv_mkey.pxd":16
 *     cdef dv.mlx5dv_mr_interleaved mlx5dv_mr_interleaved
 * 
 * cdef class Mlx5Mkey(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_mkey *mlx5dv_mkey
 *     cdef PD pd
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5Mkey {
  struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM __pyx_base;
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5Mkey *__pyx_vtabptr_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5Mkey;


/* "pyverbs/providers/mlx5/mlx5dv_crypto.pxd":29
 *     cdef dv.mlx5dv_crypto_attr mlx5dv_crypto_attr
 * 
 * cdef class Mlx5DEK(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_dek *mlx5dv_dek
 *     cdef PD pd
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEK {
  struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM __pyx_base;
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEK *__pyx_vtabptr_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEK;


/* "pyverbs/providers/mlx5/mlx5dv_crypto.pxd":33
 *     cdef PD pd
 * 
 * cdef class Mlx5CryptoLogin(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_crypto_login_obj *crypto_login_obj
 *     cdef Context context
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoLogin {
  struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM __pyx_base;
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoLogin *__pyx_vtabptr_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoLogin;


/* "pyverbs/providers/mlx5/dr_domain.pxd":9
 * from pyverbs.base cimport PyverbsCM
 * 
 * cdef class DrDomain(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_dr_domain *domain
 *     cdef object dr_tables
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_domain_DrDomain {
  struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM __pyx_base;
  PyObject *(*add_ref)(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_domain_DrDomain *, PyObject *);
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_domain_DrDomain *__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_domain_DrDomain;


/* "pyverbs/providers/mlx5/dr_table.pxd":9
 * from pyverbs.base cimport PyverbsCM
 * 
 * cdef class DrTable(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_dr_table *table
 *     cdef object dr_domain
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_8dr_table_DrTable {
  struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM __pyx_base;
  PyObject *(*add_ref)(struct __pyx_obj_7pyverbs_9providers_4mlx5_8dr_table_DrTable *, PyObject *);
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_8dr_table_DrTable *__pyx_vtabptr_7pyverbs_9providers_4mlx5_8dr_table_DrTable;


/* "pyverbs/providers/mlx5/dr_action.pxd":14
 * 
 * 
 * cdef class DrAction(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_dr_action *action
 *     cdef object dr_rules
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrAction {
  struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM __pyx_base;
  PyObject *(*add_ref)(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrAction *, PyObject *);
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrAction *__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrAction;


/* "pyverbs/providers/mlx5/dr_action.pxd":20
 *     cdef add_ref(self, obj)
 * 
 * cdef class DrActionQp(DrAction):             # <<<<<<<<<<<<<<
 *     cdef QP qp
 * 
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionQp {
  struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrAction __pyx_base;
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionQp *__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionQp;


/* "pyverbs/providers/mlx5/dr_action.pxd":23
 *     cdef QP qp
 * 
 * cdef class DrActionModify(DrAction):             # <<<<<<<<<<<<<<
 *     cdef DrDomain domain
 * 
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionModify {
  struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrAction __pyx_base;
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionModify *__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionModify;


/* "pyverbs/providers/mlx5/dr_action.pxd":26
 *     cdef DrDomain domain
 * 
 * cdef class DrActionFlowCounter(DrAction):             # <<<<<<<<<<<<<<
 *     cdef Mlx5DevxObj devx_obj
 * 
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowCounter {
  struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrAction __pyx_base;
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowCounter *__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowCounter;


/* "pyverbs/providers/mlx5/dr_action.pxd":29
 *     cdef Mlx5DevxObj devx_obj
 * 
 * cdef class DrActionDrop(DrAction):             # <<<<<<<<<<<<<<
 *     pass
 * 
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionDrop {
  struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrAction __pyx_base;
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionDrop *__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionDrop;


/* "pyverbs/providers/mlx5/dr_action.pxd":32
 *     pass
 * 
 * cdef class DrActionTag(DrAction):             # <<<<<<<<<<<<<<
 *     pass
 * 
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionTag {
  struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrAction __pyx_base;
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionTag *__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionTag;


/* "pyverbs/providers/mlx5/dr_action.pxd":35
 *     pass
 * 
 * cdef class DrActionDestTable(DrAction):             # <<<<<<<<<<<<<<
 *     cdef DrTable table
 * 
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTable {
  struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrAction __pyx_base;
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTable *__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTable;


/* "pyverbs/providers/mlx5/dr_action.pxd":38
 *     cdef DrTable table
 * 
 * cdef class DrActionPushVLan(DrAction):             # <<<<<<<<<<<<<<
 *     cdef DrDomain domain
 * 
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionPushVLan {
  struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrAction __pyx_base;
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionPushVLan *__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionPushVLan;


/* "pyverbs/providers/mlx5/dr_action.pxd":41
 *     cdef DrDomain domain
 * 
 * cdef class DrActionPopVLan(DrAction):             # <<<<<<<<<<<<<<
 *     pass
 * 
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionPopVLan {
  struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrAction __pyx_base;
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionPopVLan *__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionPopVLan;


/* "pyverbs/providers/mlx5/dr_action.pxd":44
 *     pass
 * 
 * cdef class DrActionDestAttr(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef DrAction dest
 *     cdef dv.mlx5dv_dr_action_dest_attr *action_dest_attr
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestAttr {
  struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM __pyx_base;
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestAttr *__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestAttr;


/* "pyverbs/providers/mlx5/dr_action.pxd":49
 *     cdef dv.mlx5dv_dr_action_dest_reformat *dest_reformat
 * 
 * cdef class DrActionDestArray(DrAction):             # <<<<<<<<<<<<<<
 *     cdef DrDomain domain
 *     cdef object dest_actions
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestArray {
  struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrAction __pyx_base;
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestArray *__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestArray;


/* "pyverbs/providers/mlx5/dr_action.pxd":53
 *     cdef object dest_actions
 * 
 * cdef class DrActionDefMiss(DrAction):             # <<<<<<<<<<<<<<
 *     pass
 * 
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionDefMiss {
  struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrAction __pyx_base;
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionDefMiss *__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionDefMiss;


/* "pyverbs/providers/mlx5/dr_action.pxd":56
 *     pass
 * 
 * cdef class DrActionVPort(DrAction):             # <<<<<<<<<<<<<<
 *     cdef DrDomain domain
 *     cdef int vport
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionVPort {
  struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrAction __pyx_base;
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionVPort *__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionVPort;


/* "pyverbs/providers/mlx5/dr_action.pxd":60
 *     cdef int vport
 * 
 * cdef class DrActionIBPort(DrAction):             # <<<<<<<<<<<<<<
 *     cdef DrDomain domain
 *     cdef int ib_port
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionIBPort {
  struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrAction __pyx_base;
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionIBPort *__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionIBPort;


/* "pyverbs/providers/mlx5/dr_action.pxd":64
 *     cdef int ib_port
 * 
 * cdef class DrActionDestTir(DrAction):             # <<<<<<<<<<<<<<
 *     cdef Mlx5DevxObj devx_obj
 * 
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTir {
  struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrAction __pyx_base;
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTir *__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTir;


/* "pyverbs/providers/mlx5/dr_action.pxd":67
 *     cdef Mlx5DevxObj devx_obj
 * 
 * cdef class DrActionPacketReformat(DrAction):             # <<<<<<<<<<<<<<
 *     cdef DrDomain domain
 * 
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionPacketReformat {
  struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrAction __pyx_base;
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionPacketReformat *__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionPacketReformat;


/* "pyverbs/providers/mlx5/dr_action.pxd":70
 *     cdef DrDomain domain
 * 
 * cdef class DrFlowSamplerAttr(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_dr_flow_sampler_attr *attr
 *     cdef object actions
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrFlowSamplerAttr {
  struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM __pyx_base;
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrFlowSamplerAttr *__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrFlowSamplerAttr;


/* "pyverbs/providers/mlx5/dr_action.pxd":75
 *     cdef DrTable table
 * 
 * cdef class DrActionFlowSample(DrAction):             # <<<<<<<<<<<<<<
 *     cdef DrFlowSamplerAttr attr
 *     cdef object dr_actions
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowSample {
  struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrAction __pyx_base;
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowSample *__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowSample;


/* "pyverbs/providers/mlx5/dr_action.pxd":80
 *     cdef object dr_table
 * 
 * cdef class DrFlowMeterAttr(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_dr_flow_meter_attr *attr
 *     cdef DrTable table
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrFlowMeterAttr {
  struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM __pyx_base;
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrFlowMeterAttr *__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrFlowMeterAttr;


/* "pyverbs/providers/mlx5/dr_action.pxd":84
 *     cdef DrTable table
 * 
 * cdef class DrActionFlowMeter(DrAction):             # <<<<<<<<<<<<<<
 *     cdef DrFlowMeterAttr attr
 *     cdef DrTable dr_table
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowMeter {
  struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrAction __pyx_base;
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowMeter *__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowMeter;


/* "pyverbs/providers/mlx5/mlx5dv_sched.pxd":14
 *     cdef object parent_sched_node
 * 
 * cdef class Mlx5dvSchedNode(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_sched_node *sched_node
 *     cdef object context
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedNode {
  PyObject *(*close)(struct __pyx_obj_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedNode *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedNode *__pyx_vtabptr_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedNode;


/* "pyverbs/providers/mlx5/mlx5dv_sched.pxd":20
 *     cpdef close(self)
 * 
 * cdef class Mlx5dvSchedLeaf(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_sched_leaf *sched_leaf
 *     cdef object context
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedLeaf {
  PyObject *(*close)(struct __pyx_obj_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedLeaf *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedLeaf *__pyx_vtabptr_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedLeaf;


/* "pyverbs/wr.pxd":10
 * 
 * 
 * cdef class SGE(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_sge *sge
 *     cpdef read(self, length, offset)
*/

struct __pyx_vtabstruct_7pyverbs_2wr_SGE {
  struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM __pyx_base;
  PyObject *(*read)(struct __pyx_obj_7pyverbs_2wr_SGE *, PyObject *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_7pyverbs_2wr_SGE *__pyx_vtabptr_7pyverbs_2wr_SGE;


/* "pyverbs/wr.pxd":14
 *     cpdef read(self, length, offset)
 * 
 * cdef class RecvWR(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_recv_wr recv_wr
 * 
*/

struct __pyx_vtabstruct_7pyverbs_2wr_RecvWR {
  struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM __pyx_base;
};
static struct __pyx_vtabstruct_7pyverbs_2wr_RecvWR *__pyx_vtabptr_7pyverbs_2wr_RecvWR;


/* "pyverbs/wr.pxd":17
 *     cdef v.ibv_recv_wr recv_wr
 * 
 * cdef class SendWR(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_send_wr send_wr
 *     cdef object ah
*/

struct __pyx_vtabstruct_7pyverbs_2wr_SendWR {
  struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM __pyx_base;
};
static struct __pyx_vtabstruct_7pyverbs_2wr_SendWR *__pyx_vtabptr_7pyverbs_2wr_SendWR;


/* "cmid.pxd":10
 * 
 * 
 * cdef class CMID(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef cm.rdma_cm_id *id
 *     cdef object event_channel
*/

struct __pyx_vtabstruct_7pyverbs_4cmid_CMID {
  struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM __pyx_base;
  PyObject *(*add_ref)(struct __pyx_obj_7pyverbs_4cmid_CMID *, PyObject *);
};
static struct __pyx_vtabstruct_7pyverbs_4cmid_CMID *__pyx_vtabptr_7pyverbs_4cmid_CMID;


/* "cmid.pxd":20
 * 
 * 
 * cdef class CMEventChannel(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef cm.rdma_event_channel *event_channel
 *     cpdef close(self)
*/

struct __pyx_vtabstruct_7pyverbs_4cmid_CMEventChannel {
  PyObject *(*close)(struct __pyx_obj_7pyverbs_4cmid_CMEventChannel *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_7pyverbs_4cmid_CMEventChannel *__pyx_vtabptr_7pyverbs_4cmid_CMEventChannel;


/* "cmid.pxd":25
 * 
 * 
 * cdef class CMEvent(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef cm.rdma_cm_event *event
 *     cpdef close(self)
*/

struct __pyx_vtabstruct_7pyverbs_4cmid_CMEvent {
  PyObject *(*close)(struct __pyx_obj_7pyverbs_4cmid_CMEvent *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_7pyverbs_4cmid_CMEvent *__pyx_vtabptr_7pyverbs_4cmid_CMEvent;


/* "cmid.pxd":30
 * 
 * 
 * cdef class AddrInfo(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef cm.rdma_addrinfo *addr_info
 *     cpdef close(self)
*/

struct __pyx_vtabstruct_7pyverbs_4cmid_AddrInfo {
  PyObject *(*close)(struct __pyx_obj_7pyverbs_4cmid_AddrInfo *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_7pyverbs_4cmid_AddrInfo *__pyx_vtabptr_7pyverbs_4cmid_AddrInfo;


/* "pyverbs/addr.pxd":20
 *     cdef v.ibv_global_route gr
 * 
 * cdef class AHAttr(PyverbsObject):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_ah_attr ah_attr
 *     cdef init_from_ud_param(self, UDParam udparam)
*/

struct __pyx_vtabstruct_7pyverbs_4addr_AHAttr {
  PyObject *(*init_from_ud_param)(struct __pyx_obj_7pyverbs_4addr_AHAttr *, struct __pyx_obj_7pyverbs_4cmid_UDParam *);
};
static struct __pyx_vtabstruct_7pyverbs_4addr_AHAttr *__pyx_vtabptr_7pyverbs_4addr_AHAttr;


/* "pyverbs/addr.pxd":24
 *     cdef init_from_ud_param(self, UDParam udparam)
 * 
 * cdef class AH(PyverbsCM):             # <<<<<<<<<<<<<<
 *     cdef v.ibv_ah *ah
 *     cdef object pd
*/

struct __pyx_vtabstruct_7pyverbs_4addr_AH {
  struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM __pyx_base;
};
static struct __pyx_vtabstruct_7pyverbs_4addr_AH *__pyx_vtabptr_7pyverbs_4addr_AH;


/* "pyverbs/providers/mlx5/mlx5dv.pyx":296
 * 
 * 
 * cdef class Mlx5Context(Context):             # <<<<<<<<<<<<<<
 *     """
 *     Represent mlx5 context, which extends Context.
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context {
  struct __pyx_vtabstruct_7pyverbs_6device_Context __pyx_base;
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *__pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context;


/* "pyverbs/providers/mlx5/mlx5dv.pyx":832
 * 
 * 
 * cdef class Mlx5QP(QPEx):             # <<<<<<<<<<<<<<
 *     def __init__(self, Context context, QPInitAttrEx init_attr,
 *                  Mlx5DVQPInitAttr dv_init_attr):
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP {
  struct __pyx_vtabstruct_7pyverbs_2qp_QPEx __pyx_base;
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *__pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP;


/* "pyverbs/providers/mlx5/mlx5dv.pyx":1198
 * 
 * 
 * cdef class Mlx5CQ(CQEX):             # <<<<<<<<<<<<<<
 *     def __init__(self, Mlx5Context context, CqInitAttrEx init_attr,
 *                  Mlx5DVCQInitAttr dv_init_attr):
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ {
  struct __pyx_vtabstruct_7pyverbs_2cq_CQEX __pyx_base;
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ *__pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ;


/* "pyverbs/providers/mlx5/mlx5dv.pyx":1337
 * 
 * 
 * cdef class Mlx5VAR(PyverbsObject):             # <<<<<<<<<<<<<<
 *     def __init__(self, Context context not None, flags=0):
 *         self.context = context
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR {
  PyObject *(*close)(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *__pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR;


/* "pyverbs/providers/mlx5/mlx5dv.pyx":1377
 * 
 * 
 * cdef class Mlx5PP(PyverbsObject):             # <<<<<<<<<<<<<<
 *     """
 *     Represents mlx5dv_pp, packet pacing struct.
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP {
  PyObject *(*close)(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP *__pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP;


/* "pyverbs/providers/mlx5/mlx5dv.pyx":1411
 * 
 * 
 * cdef class Mlx5UAR(PyverbsObject):             # <<<<<<<<<<<<<<
 *     def __init__(self, Context context not None, flags=0):
 *         self.uar = dv.mlx5dv_devx_alloc_uar(context.context, flags)
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR {
  PyObject *(*close)(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *__pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR;


/* "pyverbs/providers/mlx5/mlx5dv.pyx":1459
 * 
 * 
 * cdef class Mlx5DmOpAddr(PyverbsCM):             # <<<<<<<<<<<<<<
 *     def __init__(self, DM dm not None, op=0):
 *         """
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr {
  struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM __pyx_base;
  void (*_cpy)(void *, void *, int);
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr *__pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr;


/* "pyverbs/providers/mlx5/mlx5dv.pyx":1527
 * 
 * 
 * cdef class WqeSeg(PyverbsCM):             # <<<<<<<<<<<<<<
 *     """
 *     An abstract class for WQE segments.
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg {
  struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM __pyx_base;
  PyObject *(*_copy_to_buffer)(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg *, PyObject *, int __pyx_skip_dispatch);
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg *__pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg;


/* "pyverbs/providers/mlx5/mlx5dv.pyx":1550
 * 
 * 
 * cdef class WqeCtrlSeg(WqeSeg):             # <<<<<<<<<<<<<<
 *     """
 *     Wrapper class for dv.mlx5_wqe_ctrl_seg
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg {
  struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg __pyx_base;
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *__pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg;


/* "pyverbs/providers/mlx5/mlx5dv.pyx":1626
 * 
 * 
 * cdef class WqeDataSeg(WqeSeg):             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, length=0, lkey=0, addr=0):
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg {
  struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg __pyx_base;
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg *__pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg;


/* "pyverbs/providers/mlx5/mlx5dv.pyx":1673
 * 
 * 
 * cdef class Wqe(PyverbsCM):             # <<<<<<<<<<<<<<
 *     """
 *     The Wqe class represents a WQE, which is one or more chained WQE segments.
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe {
  struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM __pyx_base;
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe *__pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe;


/* "pyverbs/providers/mlx5/mlx5dv.pyx":1726
 * 
 * 
 * cdef class Mlx5UMEM(PyverbsCM):             # <<<<<<<<<<<<<<
 *     def __init__(self, Context context not None, size, addr=None, alignment=64,
 *                  access=0, pgsz_bitmap=0, comp_mask=0, dmabuf_fd=0):
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM {
  struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM __pyx_base;
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM *__pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM;


/* "pyverbs/providers/mlx5/mlx5dv.pyx":161
 * 
 * 
 * cdef class Mlx5DevxObj(PyverbsCM):             # <<<<<<<<<<<<<<
 *     """
 *     Represents mlx5dv_devx_obj C struct.
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj {
  struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM __pyx_base;
  PyObject *(*add_ref)(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *, PyObject *);
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *__pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj;


/* "pyverbs/providers/mlx5/mlx5dv.pyx":1874
 *         return (<dv.mlx5_cqe64>((<dv.mlx5_cqe64*>self.cqe)[0])).__str__()
 * 
 * cdef class Mlx5DevxMsiVector(PyverbsCM):             # <<<<<<<<<<<<<<
 *     """
 *     Represents mlx5dv_devx_msi_vector C struct.
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector {
  struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM __pyx_base;
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector *__pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector;


/* "pyverbs/providers/mlx5/mlx5dv.pyx":1900
 * 
 * 
 * cdef class Mlx5DevxEq(PyverbsCM):             # <<<<<<<<<<<<<<
 *     """
 *     Represents mlx5dv_devx_eq C struct.
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq {
  struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM __pyx_base;
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq *__pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq;


/* "pyverbs/providers/mlx5/mlx5dv.pyx":1956
 * 
 * 
 * cdef class Mlx5DevxCmdComp(PyverbsCM):             # <<<<<<<<<<<<<<
 *     """
 *     Represents mlx5dv_devx_cmd_comp C struct.
*/

struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp {
  struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM __pyx_base;
};
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *__pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp;
/* #### Code section: utility_code_proto ### */

/* --- Runtime support code (head) --- */
/* Refnanny.proto */
#ifndef CYTHON_REFNANNY
  #define CYTHON_REFNANNY 0
#endif
#if CYTHON_REFNANNY
  typedef struct {
    void (*INCREF)(void*, PyObject*, Py_ssize_t);
    void (*DECREF)(void*, PyObject*, Py_ssize_t);
    void (*GOTREF)(void*, PyObject*, Py_ssize_t);
    void (*GIVEREF)(void*, PyObject*, Py_ssize_t);
    void* (*SetupContext)(const char*, Py_ssize_t, const char*);
    void (*FinishContext)(void**);
  } __Pyx_RefNannyAPIStruct;
  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname);
  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
  #define __Pyx_RefNannySetupContext(name, acquire_gil)\
          if (acquire_gil) {\
              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\
              PyGILState_Release(__pyx_gilstate_save);\
          } else {\
              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\
          }
  #define __Pyx_RefNannyFinishContextNogil() {\
              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
              __Pyx_RefNannyFinishContext();\
              PyGILState_Release(__pyx_gilstate_save);\
          }
  #define __Pyx_RefNannyFinishContextNogil() {\
              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
              __Pyx_RefNannyFinishContext();\
              PyGILState_Release(__pyx_gilstate_save);\
          }
  #define __Pyx_RefNannyFinishContext()\
          __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
  #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
  #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
  #define __Pyx_XINCREF(r)  do { if((r) == NULL); else {__Pyx_INCREF(r); }} while(0)
  #define __Pyx_XDECREF(r)  do { if((r) == NULL); else {__Pyx_DECREF(r); }} while(0)
  #define __Pyx_XGOTREF(r)  do { if((r) == NULL); else {__Pyx_GOTREF(r); }} while(0)
  #define __Pyx_XGIVEREF(r) do { if((r) == NULL); else {__Pyx_GIVEREF(r);}} while(0)
#else
  #define __Pyx_RefNannyDeclarations
  #define __Pyx_RefNannySetupContext(name, acquire_gil)
  #define __Pyx_RefNannyFinishContextNogil()
  #define __Pyx_RefNannyFinishContext()
  #define __Pyx_INCREF(r) Py_INCREF(r)
  #define __Pyx_DECREF(r) Py_DECREF(r)
  #define __Pyx_GOTREF(r)
  #define __Pyx_GIVEREF(r)
  #define __Pyx_XINCREF(r) Py_XINCREF(r)
  #define __Pyx_XDECREF(r) Py_XDECREF(r)
  #define __Pyx_XGOTREF(r)
  #define __Pyx_XGIVEREF(r)
#endif
#define __Pyx_Py_XDECREF_SET(r, v) do {\
        PyObject *tmp = (PyObject *) r;\
        r = v; Py_XDECREF(tmp);\
    } while (0)
#define __Pyx_XDECREF_SET(r, v) do {\
        PyObject *tmp = (PyObject *) r;\
        r = v; __Pyx_XDECREF(tmp);\
    } while (0)
#define __Pyx_DECREF_SET(r, v) do {\
        PyObject *tmp = (PyObject *) r;\
        r = v; __Pyx_DECREF(tmp);\
    } while (0)
#define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
#define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)

/* PyErrExceptionMatches.proto (used by PyObjectGetAttrStrNoError) */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err)
static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err);
#else
#define __Pyx_PyErr_ExceptionMatches(err)  PyErr_ExceptionMatches(err)
#endif

/* PyThreadStateGet.proto (used by PyErrFetchRestore) */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_PyThreadState_declare  PyThreadState *__pyx_tstate;
#define __Pyx_PyThreadState_assign  __pyx_tstate = __Pyx_PyThreadState_Current;
#if PY_VERSION_HEX >= 0x030C00A6
#define __Pyx_PyErr_Occurred()  (__pyx_tstate->current_exception != NULL)
#define __Pyx_PyErr_CurrentExceptionType()  (__pyx_tstate->current_exception ? (PyObject*) Py_TYPE(__pyx_tstate->current_exception) : (PyObject*) NULL)
#else
#define __Pyx_PyErr_Occurred()  (__pyx_tstate->curexc_type != NULL)
#define __Pyx_PyErr_CurrentExceptionType()  (__pyx_tstate->curexc_type)
#endif
#else
#define __Pyx_PyThreadState_declare
#define __Pyx_PyThreadState_assign
#define __Pyx_PyErr_Occurred()  (PyErr_Occurred() != NULL)
#define __Pyx_PyErr_CurrentExceptionType()  PyErr_Occurred()
#endif

/* PyErrFetchRestore.proto (used by PyObjectGetAttrStrNoError) */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL)
#define __Pyx_ErrRestoreWithState(type, value, tb)  __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
#define __Pyx_ErrFetchWithState(type, value, tb)    __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
#define __Pyx_ErrRestore(type, value, tb)  __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
#define __Pyx_ErrFetch(type, value, tb)    __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A6
#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL))
#else
#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
#endif
#else
#define __Pyx_PyErr_Clear() PyErr_Clear()
#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
#define __Pyx_ErrRestoreWithState(type, value, tb)  PyErr_Restore(type, value, tb)
#define __Pyx_ErrFetchWithState(type, value, tb)  PyErr_Fetch(type, value, tb)
#define __Pyx_ErrRestoreInState(tstate, type, value, tb)  PyErr_Restore(type, value, tb)
#define __Pyx_ErrFetchInState(tstate, type, value, tb)  PyErr_Fetch(type, value, tb)
#define __Pyx_ErrRestore(type, value, tb)  PyErr_Restore(type, value, tb)
#define __Pyx_ErrFetch(type, value, tb)  PyErr_Fetch(type, value, tb)
#endif

/* PyObjectGetAttrStr.proto (used by PyObjectGetAttrStrNoError) */
#if CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name);
#else
#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n)
#endif

/* PyObjectGetAttrStrNoError.proto (used by GetBuiltinName) */
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name);

/* GetBuiltinName.proto */
static PyObject *__Pyx_GetBuiltinName(PyObject *name);

/* HasAttr.proto (used by ImportImpl) */
#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000
#define __Pyx_HasAttr(o, n)  PyObject_HasAttrWithError(o, n)
#else
static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *);
#endif

/* PyObjectCall.proto (used by PyObjectFastCall) */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw);
#else
#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw)
#endif

/* PyObjectCallMethO.proto (used by PyObjectFastCall) */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
#endif

/* PyObjectFastCall.proto (used by PyObjectCallOneArg) */
#define __Pyx_PyObject_FastCall(func, args, nargs)  __Pyx_PyObject_FastCallDict(func, args, (size_t)(nargs), NULL)
static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject * const*args, size_t nargs, PyObject *kwargs);

/* PyObjectCallOneArg.proto (used by ImportImpl) */
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);

/* TupleAndListFromArray.proto (used by ImportImpl) */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n);
#endif
#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_METH_FASTCALL
static CYTHON_INLINE PyObject* __Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n);
#endif

/* IncludeStringH.proto (used by ImportImpl) */
#include <string.h>

/* ImportImpl.export */
static PyObject *__Pyx__Import(PyObject *name, PyObject *const *imported_names, Py_ssize_t len_imported_names, PyObject *qualname, PyObject *moddict, int level);

/* Import.proto */
static CYTHON_INLINE PyObject *__Pyx_Import(PyObject *name, PyObject *const *imported_names, Py_ssize_t len_imported_names, PyObject *qualname, int level);

/* ImportFrom.proto */
static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name);

/* GetTopmostException.proto (used by SaveResetException) */
#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE
static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate);
#endif

/* SaveResetException.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_ExceptionSave(type, value, tb)  __Pyx__ExceptionSave(__pyx_tstate, type, value, tb)
static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
#define __Pyx_ExceptionReset(type, value, tb)  __Pyx__ExceptionReset(__pyx_tstate, type, value, tb)
static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
#else
#define __Pyx_ExceptionSave(type, value, tb)   PyErr_GetExcInfo(type, value, tb)
#define __Pyx_ExceptionReset(type, value, tb)  PyErr_SetExcInfo(type, value, tb)
#endif

/* PyImportError_Check.proto */
#define __Pyx_PyExc_ImportError_Check(obj)  __Pyx_TypeCheck(obj, PyExc_ImportError)

/* GetException.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_GetException(type, value, tb)  __Pyx__GetException(__pyx_tstate, type, value, tb)
static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
#else
static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb);
#endif

/* PyObjectFastCallMethod.proto */
#if CYTHON_VECTORCALL && PY_VERSION_HEX >= 0x03090000
#define __Pyx_PyObject_FastCallMethod(name, args, nargsf) PyObject_VectorcallMethod(name, args, nargsf, NULL)
#else
static PyObject *__Pyx_PyObject_FastCallMethod(PyObject *name, PyObject *const *args, size_t nargsf);
#endif

/* DictGetItem.proto */
#if !CYTHON_COMPILING_IN_PYPY
static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key);
#define __Pyx_PyObject_Dict_GetItem(obj, name)\
    (likely(PyDict_CheckExact(obj)) ?\
     __Pyx_PyDict_GetItem(obj, name) : PyObject_GetItem(obj, name))
#else
#define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key)
#define __Pyx_PyObject_Dict_GetItem(obj, name)  PyObject_GetItem(obj, name)
#endif

/* PyKeyError_Check.proto */
#define __Pyx_PyExc_KeyError_Check(obj)  __Pyx_TypeCheck(obj, PyExc_KeyError)

/* PyValueError_Check.proto */
#define __Pyx_PyExc_ValueError_Check(obj)  __Pyx_TypeCheck(obj, PyExc_ValueError)

/* RaiseException.export */
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);

/* PyMemoryError_Check.proto */
#define __Pyx_PyExc_MemoryError_Check(obj)  __Pyx_TypeCheck(obj, PyExc_MemoryError)

/* BytesEquals.proto (used by UnicodeEquals) */
static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals);

/* UnicodeEquals.proto (used by fastcall) */
static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals);

/* fastcall.proto */
#if CYTHON_AVOID_BORROWED_REFS
    #define __Pyx_ArgRef_VARARGS(args, i) __Pyx_PySequence_ITEM(args, i)
#elif CYTHON_ASSUME_SAFE_MACROS
    #define __Pyx_ArgRef_VARARGS(args, i) __Pyx_NewRef(__Pyx_PyTuple_GET_ITEM(args, i))
#else
    #define __Pyx_ArgRef_VARARGS(args, i) __Pyx_XNewRef(PyTuple_GetItem(args, i))
#endif
#define __Pyx_NumKwargs_VARARGS(kwds) PyDict_Size(kwds)
#define __Pyx_KwValues_VARARGS(args, nargs) NULL
#define __Pyx_GetKwValue_VARARGS(kw, kwvalues, s) __Pyx_PyDict_GetItemStrWithError(kw, s)
#define __Pyx_KwargsAsDict_VARARGS(kw, kwvalues) PyDict_Copy(kw)
#if CYTHON_METH_FASTCALL
    #define __Pyx_ArgRef_FASTCALL(args, i) __Pyx_NewRef(args[i])
    #define __Pyx_NumKwargs_FASTCALL(kwds) __Pyx_PyTuple_GET_SIZE(kwds)
    #define __Pyx_KwValues_FASTCALL(args, nargs) ((args) + (nargs))
    static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 || CYTHON_COMPILING_IN_LIMITED_API
    CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues);
  #else
    #define __Pyx_KwargsAsDict_FASTCALL(kw, kwvalues) _PyStack_AsDict(kwvalues, kw)
  #endif
#else
    #define __Pyx_ArgRef_FASTCALL __Pyx_ArgRef_VARARGS
    #define __Pyx_NumKwargs_FASTCALL __Pyx_NumKwargs_VARARGS
    #define __Pyx_KwValues_FASTCALL __Pyx_KwValues_VARARGS
    #define __Pyx_GetKwValue_FASTCALL __Pyx_GetKwValue_VARARGS
    #define __Pyx_KwargsAsDict_FASTCALL __Pyx_KwargsAsDict_VARARGS
#endif
#define __Pyx_ArgsSlice_VARARGS(args, start, stop) PyTuple_GetSlice(args, start, stop)
#if CYTHON_METH_FASTCALL || (CYTHON_COMPILING_IN_CPYTHON && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS)
#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) __Pyx_PyTuple_FromArray(args + start, stop - start)
#else
#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) PyTuple_GetSlice(args, start, stop)
#endif

/* RaiseArgTupleInvalid.proto */
static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
    Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found);

/* py_dict_items.proto (used by OwnedDictNext) */
static CYTHON_INLINE PyObject* __Pyx_PyDict_Items(PyObject* d);

/* CallCFunction.proto (used by CallUnboundCMethod0) */
#define __Pyx_CallCFunction(cfunc, self, args)\
    ((PyCFunction)(void(*)(void))(cfunc)->func)(self, args)
#define __Pyx_CallCFunctionWithKeywords(cfunc, self, args, kwargs)\
    ((PyCFunctionWithKeywords)(void(*)(void))(cfunc)->func)(self, args, kwargs)
#define __Pyx_CallCFunctionFast(cfunc, self, args, nargs)\
    ((__Pyx_PyCFunctionFast)(void(*)(void))(PyCFunction)(cfunc)->func)(self, args, nargs)
#define __Pyx_CallCFunctionFastWithKeywords(cfunc, self, args, nargs, kwnames)\
    ((__Pyx_PyCFunctionFastWithKeywords)(void(*)(void))(PyCFunction)(cfunc)->func)(self, args, nargs, kwnames)

/* UnpackUnboundCMethod.proto (used by CallUnboundCMethod0) */
typedef struct {
    PyObject *type;
    PyObject **method_name;
#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING && CYTHON_ATOMICS
    __pyx_atomic_int_type initialized;
#endif
    PyCFunction func;
    PyObject *method;
    int flag;
} __Pyx_CachedCFunction;
#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
static CYTHON_INLINE int __Pyx_CachedCFunction_GetAndSetInitializing(__Pyx_CachedCFunction *cfunc) {
#if !CYTHON_ATOMICS
    return 1;
#else
    __pyx_nonatomic_int_type expected = 0;
    if (__pyx_atomic_int_cmp_exchange(&cfunc->initialized, &expected, 1)) {
        return 0;
    }
    return expected;
#endif
}
static CYTHON_INLINE void __Pyx_CachedCFunction_SetFinishedInitializing(__Pyx_CachedCFunction *cfunc) {
#if CYTHON_ATOMICS
    __pyx_atomic_store(&cfunc->initialized, 2);
#endif
}
#else
#define __Pyx_CachedCFunction_GetAndSetInitializing(cfunc) 2
#define __Pyx_CachedCFunction_SetFinishedInitializing(cfunc)
#endif

/* CallUnboundCMethod0.proto */
CYTHON_UNUSED
static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self);
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self);
#else
#define __Pyx_CallUnboundCMethod0(cfunc, self)  __Pyx__CallUnboundCMethod0(cfunc, self)
#endif

/* py_dict_values.proto (used by OwnedDictNext) */
static CYTHON_INLINE PyObject* __Pyx_PyDict_Values(PyObject* d);

/* OwnedDictNext.proto (used by RejectKeywords) */
#if CYTHON_AVOID_BORROWED_REFS
static int __Pyx_PyDict_NextRef(PyObject *p, PyObject **ppos, PyObject **pkey, PyObject **pvalue);
#else
CYTHON_INLINE
static int __Pyx_PyDict_NextRef(PyObject *p, Py_ssize_t *ppos, PyObject **pkey, PyObject **pvalue);
#endif

/* RejectKeywords.export */
static void __Pyx_RejectKeywords(const char* function_name, PyObject *kwds);

/* PyNumber_Hex.proto */
#define __Pyx_PyNumber_Hex(obj) PyNumber_ToBase((obj), 16)

/* CallUnboundCMethod2.proto */
CYTHON_UNUSED
static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2);
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2);
#else
#define __Pyx_CallUnboundCMethod2(cfunc, self, arg1, arg2)  __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2)
#endif

/* PyTypeError_Check.proto */
#define __Pyx_PyExc_TypeError_Check(obj)  __Pyx_TypeCheck(obj, PyExc_TypeError)

/* RaiseDoubleKeywords.proto (used by ParseKeywordsImpl) */
static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name);

/* ParseKeywordsImpl.export */
static int __Pyx_ParseKeywordsTuple(
    PyObject *kwds,
    PyObject * const *kwvalues,
    PyObject ** const argnames[],
    PyObject *kwds2,
    PyObject *values[],
    Py_ssize_t num_pos_args,
    Py_ssize_t num_kwargs,
    const char* function_name,
    int ignore_unknown_kwargs
);
static int __Pyx_ParseKeywordDictToDict(
    PyObject *kwds,
    PyObject ** const argnames[],
    PyObject *kwds2,
    PyObject *values[],
    Py_ssize_t num_pos_args,
    const char* function_name
);
static int __Pyx_ParseKeywordDict(
    PyObject *kwds,
    PyObject ** const argnames[],
    PyObject *values[],
    Py_ssize_t num_pos_args,
    Py_ssize_t num_kwargs,
    const char* function_name,
    int ignore_unknown_kwargs
);

/* ParseKeywords.proto */
static CYTHON_INLINE int __Pyx_ParseKeywords(
    PyObject *kwds, PyObject *const *kwvalues, PyObject ** const argnames[],
    PyObject *kwds2, PyObject *values[],
    Py_ssize_t num_pos_args, Py_ssize_t num_kwargs,
    const char* function_name,
    int ignore_unknown_kwargs
);

/* ArgTypeTestFunc.export */
static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact);

/* ArgTypeTest.proto */
#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\
    ((likely(__Pyx_IS_TYPE(obj, type) | (none_allowed && (obj == Py_None)))) ? 1 :\
        __Pyx__ArgTypeTest(obj, type, name, exact))

/* UnicodeConcatInPlace.proto */
# if CYTHON_COMPILING_IN_CPYTHON
    #if CYTHON_REFNANNY
        #define __Pyx_PyUnicode_ConcatInPlace(left, right, unsafe_shared) __Pyx_PyUnicode_ConcatInPlaceImpl(&left, right, unsafe_shared, __pyx_refnanny)
    #else
        #define __Pyx_PyUnicode_ConcatInPlace(left, right, unsafe_shared) __Pyx_PyUnicode_ConcatInPlaceImpl(&left, right, unsafe_shared)
    #endif
    #define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_DefinitelyUniqueInPlace(left, right) __Pyx_PyUnicode_ConcatInPlace(left, right, __Pyx_ReferenceSharing_DefinitelyUnique)
    #define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(left, right) __Pyx_PyUnicode_ConcatInPlace(left, right, __Pyx_ReferenceSharing_OwnStrongReference)
    #define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_FunctionArgumentInPlace(left, right) __Pyx_PyUnicode_ConcatInPlace(left, right, __Pyx_ReferenceSharing_DefinitelyUnique)
    #define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_SharedReferenceInPlace(left, right) __Pyx_PyUnicode_ConcatInPlace(left, right, __Pyx_ReferenceSharing_SharedReference)
    static CYTHON_INLINE PyObject *__Pyx_PyUnicode_ConcatInPlaceImpl(PyObject **p_left, PyObject *right, int unsafe_shared
        #if CYTHON_REFNANNY
        , void* __pyx_refnanny
        #endif
    );
#else
#define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_DefinitelyUniqueInPlace __Pyx_PyUnicode_Concat
#define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace __Pyx_PyUnicode_Concat
#define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_FunctionArgumentInPlace __Pyx_PyUnicode_Concat
#define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_SharedReferenceInPlace __Pyx_PyUnicode_Concat
#endif
#define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_DefinitelyUniqueInPlaceSafe(left, right)\
    ((unlikely((left) == Py_None) || unlikely((right) == Py_None)) ?\
    PyNumber_InPlaceAdd(left, right) : __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_DefinitelyUniqueInPlace(left, right))
#define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlaceSafe(left, right)\
    ((unlikely((left) == Py_None) || unlikely((right) == Py_None)) ?\
    PyNumber_InPlaceAdd(left, right) : __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(left, right))
#define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_FunctionArgumentInPlaceSafe(left, right)\
    ((unlikely((left) == Py_None) || unlikely((right) == Py_None)) ?\
    PyNumber_InPlaceAdd(left, right) : __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_FunctionArgumentInPlace(left, right))
#define __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_SharedReferenceInPlaceSafe(left, right)\
    ((unlikely((left) == Py_None) || unlikely((right) == Py_None)) ?\
    PyNumber_InPlaceAdd(left, right) : __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_SharedReferenceInPlace(left, right))

/* PyDictVersioning.proto (used by GetModuleGlobalName) */
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
#define __PYX_DICT_VERSION_INIT  ((PY_UINT64_T) -1)
#define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
    (version_var) = __PYX_GET_DICT_VERSION(dict);\
    (cache_var) = (value);
#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\
    static PY_UINT64_T __pyx_dict_version = 0;\
    static PyObject *__pyx_dict_cached_value = NULL;\
    if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\
        (VAR) = __Pyx_XNewRef(__pyx_dict_cached_value);\
    } else {\
        (VAR) = __pyx_dict_cached_value = (LOOKUP);\
        __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\
    }\
}
static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj);
static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj);
static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version);
#else
#define __PYX_GET_DICT_VERSION(dict)  (0)
#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)
#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP)  (VAR) = (LOOKUP);
#endif

/* GetModuleGlobalName.proto */
#if CYTHON_USE_DICT_VERSIONS
#define __Pyx_GetModuleGlobalName(var, name)  do {\
    static PY_UINT64_T __pyx_dict_version = 0;\
    static PyObject *__pyx_dict_cached_value = NULL;\
    (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_mstate_global->__pyx_d))) ?\
        (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\
        __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
} while(0)
#define __Pyx_GetModuleGlobalNameUncached(var, name)  do {\
    PY_UINT64_T __pyx_dict_version;\
    PyObject *__pyx_dict_cached_value;\
    (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
} while(0)
static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value);
#else
#define __Pyx_GetModuleGlobalName(var, name)  (var) = __Pyx__GetModuleGlobalName(name)
#define __Pyx_GetModuleGlobalNameUncached(var, name)  (var) = __Pyx__GetModuleGlobalName(name)
static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name);
#endif

/* GetItemInt.proto */
#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck, has_gil, unsafe_shared)\
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck, unsafe_shared) :\
    (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\
               __Pyx_GetItemInt_Generic(o, to_py_func(i))))
#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck, has_gil, unsafe_shared)\
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck, unsafe_shared) :\
    (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL))
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
                                                              int wraparound, int boundscheck, int unsafe_shared);
#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck, has_gil, unsafe_shared)\
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck, unsafe_shared) :\
    (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL))
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
                                                              int wraparound, int boundscheck, int unsafe_shared);
static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j);
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
                                                     int is_list, int wraparound, int boundscheck, int unsafe_shared);

/* SliceObject.proto */
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(
        PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop,
        PyObject** py_start, PyObject** py_stop, PyObject** py_slice,
        int has_cstart, int has_cstop, int wraparound);

/* PyUnicode_Unicode.proto */
static CYTHON_INLINE PyObject* __Pyx_PyUnicode_Unicode(PyObject *obj);

/* PyObjectFormatSimple.proto */
#if CYTHON_COMPILING_IN_PYPY
    #define __Pyx_PyObject_FormatSimple(s, f) (\
        likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\
        PyObject_Format(s, f))
#elif CYTHON_USE_TYPE_SLOTS
    #define __Pyx_PyObject_FormatSimple(s, f) (\
        likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\
        likely(PyLong_CheckExact(s)) ? PyLong_Type.tp_repr(s) :\
        likely(PyFloat_CheckExact(s)) ? PyFloat_Type.tp_repr(s) :\
        PyObject_Format(s, f))
#else
    #define __Pyx_PyObject_FormatSimple(s, f) (\
        likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\
        PyObject_Format(s, f))
#endif

/* JoinPyUnicode.export */
static PyObject* __Pyx_PyUnicode_Join(PyObject** values, Py_ssize_t value_count, Py_ssize_t result_ulength,
                                      Py_UCS4 max_char);

/* SwapException.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_ExceptionSwap(type, value, tb)  __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb)
static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
#else
static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb);
#endif

/* WriteUnraisableException.proto */
static void __Pyx_WriteUnraisable(const char *name, int clineno,
                                  int lineno, const char *filename,
                                  int full_traceback, int nogil);

/* PyObjectVectorCallKwBuilder.proto (used by PyObjectVectorCallMethodKwBuilder) */
CYTHON_UNUSED static int __Pyx_VectorcallBuilder_AddArg_Check(PyObject *key, PyObject *value, PyObject *builder, PyObject **args, int n);
#if CYTHON_VECTORCALL
#if PY_VERSION_HEX >= 0x03090000
#define __Pyx_Object_Vectorcall_CallFromBuilder PyObject_Vectorcall
#else
#define __Pyx_Object_Vectorcall_CallFromBuilder _PyObject_Vectorcall
#endif
#define __Pyx_MakeVectorcallBuilderKwds(n) PyTuple_New(n)
static int __Pyx_VectorcallBuilder_AddArg(PyObject *key, PyObject *value, PyObject *builder, PyObject **args, int n);
static int __Pyx_VectorcallBuilder_AddArgStr(const char *key, PyObject *value, PyObject *builder, PyObject **args, int n);
#else
#define __Pyx_Object_Vectorcall_CallFromBuilder __Pyx_PyObject_FastCallDict
#define __Pyx_MakeVectorcallBuilderKwds(n) __Pyx_PyDict_NewPresized(n)
#define __Pyx_VectorcallBuilder_AddArg(key, value, builder, args, n) PyDict_SetItem(builder, key, value)
#define __Pyx_VectorcallBuilder_AddArgStr(key, value, builder, args, n) PyDict_SetItemString(builder, key, value)
#endif

/* PyObjectVectorCallMethodKwBuilder.proto */
#if CYTHON_VECTORCALL && PY_VERSION_HEX >= 0x03090000
#define __Pyx_Object_VectorcallMethod_CallFromBuilder PyObject_VectorcallMethod
#else
static PyObject *__Pyx_Object_VectorcallMethod_CallFromBuilder(PyObject *name, PyObject *const *args, size_t nargsf, PyObject *kwnames);
#endif

/* PyLongCompare.proto */
static CYTHON_INLINE int __Pyx_PyLong_BoolEqObjC(PyObject *op1, PyObject *op2, long intval, long inplace);

/* PyObjectDelAttr.proto (used by PyObjectSetAttrStr) */
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030d0000
#define __Pyx_PyObject_DelAttr(o, n) PyObject_SetAttr(o, n, NULL)
#else
#define __Pyx_PyObject_DelAttr(o, n) PyObject_DelAttr(o, n)
#endif

/* PyObjectSetAttrStr.proto */
#if CYTHON_USE_TYPE_SLOTS
#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o, n, NULL)
static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value);
#else
#define __Pyx_PyObject_DelAttrStr(o,n)   __Pyx_PyObject_DelAttr(o,n)
#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v)
#endif

/* decode_c_string_utf16.proto (used by decode_c_string) */
static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16(const char *s, Py_ssize_t size, const char *errors) {
    int byteorder = 0;
    return PyUnicode_DecodeUTF16(s, size, errors, &byteorder);
}
static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16LE(const char *s, Py_ssize_t size, const char *errors) {
    int byteorder = -1;
    return PyUnicode_DecodeUTF16(s, size, errors, &byteorder);
}
static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16BE(const char *s, Py_ssize_t size, const char *errors) {
    int byteorder = 1;
    return PyUnicode_DecodeUTF16(s, size, errors, &byteorder);
}

/* decode_c_string.proto */
static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
         const char* cstring, Py_ssize_t start, Py_ssize_t stop,
         const char* encoding, const char* errors,
         PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors));

/* FastTypeChecks.proto */
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type)
#define __Pyx_TypeCheck2(obj, type1, type2) __Pyx_IsAnySubtype2(Py_TYPE(obj), (PyTypeObject *)type1, (PyTypeObject *)type2)
static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b);
static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b);
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type);
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2);
#else
#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
#define __Pyx_TypeCheck2(obj, type1, type2) (PyObject_TypeCheck(obj, (PyTypeObject *)type1) || PyObject_TypeCheck(obj, (PyTypeObject *)type2))
#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type)
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2) {
    return PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2);
}
#endif
#define __Pyx_PyErr_ExceptionMatches2(err1, err2)  __Pyx_PyErr_GivenExceptionMatches2(__Pyx_PyErr_CurrentExceptionType(), err1, err2)
#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception)
#ifdef PyExceptionInstance_Check
  #define __Pyx_PyBaseException_Check(obj) PyExceptionInstance_Check(obj)
#else
  #define __Pyx_PyBaseException_Check(obj) __Pyx_TypeCheck(obj, PyExc_BaseException)
#endif

/* ObjectGetItem.proto */
#if CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject *key);
#else
#define __Pyx_PyObject_GetItem(obj, key)  PyObject_GetItem(obj, key)
#endif

/* BuildPyUnicode.proto (used by COrdinalToPyUnicode) */
static PyObject* __Pyx_PyUnicode_BuildFromAscii(Py_ssize_t ulength, const char* chars, int clength,
                                                int prepend_sign, char padding_char);

/* COrdinalToPyUnicode.proto (used by CIntToPyUnicode) */
static CYTHON_INLINE int __Pyx_CheckUnicodeValue(int value);
static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromOrdinal_Padded(int value, Py_ssize_t width, char padding_char);

/* GCCDiagnostics.proto (used by CIntToPyUnicode) */
#if !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
#define __Pyx_HAS_GCC_DIAGNOSTIC
#endif

/* IncludeStdlibH.proto (used by CIntToPyUnicode) */
#include <stdlib.h>

/* CIntToPyUnicode.proto */
#define __Pyx_PyUnicode_From_unsigned_int(value, width, padding_char, format_char) (\
    ((format_char) == ('c')) ?\
        __Pyx_uchar___Pyx_PyUnicode_From_unsigned_int(value, width, padding_char) :\
        __Pyx____Pyx_PyUnicode_From_unsigned_int(value, width, padding_char, format_char)\
    )
static CYTHON_INLINE PyObject* __Pyx_uchar___Pyx_PyUnicode_From_unsigned_int(unsigned int value, Py_ssize_t width, char padding_char);
static CYTHON_INLINE PyObject* __Pyx____Pyx_PyUnicode_From_unsigned_int(unsigned int value, Py_ssize_t width, char padding_char, char format_char);

/* CIntToPyUnicode.proto */
#define __Pyx_PyUnicode_From_uint16_t(value, width, padding_char, format_char) (\
    ((format_char) == ('c')) ?\
        __Pyx_uchar___Pyx_PyUnicode_From_uint16_t(value, width, padding_char) :\
        __Pyx____Pyx_PyUnicode_From_uint16_t(value, width, padding_char, format_char)\
    )
static CYTHON_INLINE PyObject* __Pyx_uchar___Pyx_PyUnicode_From_uint16_t(uint16_t value, Py_ssize_t width, char padding_char);
static CYTHON_INLINE PyObject* __Pyx____Pyx_PyUnicode_From_uint16_t(uint16_t value, Py_ssize_t width, char padding_char, char format_char);

/* IterFinish.proto (used by dict_iter) */
static CYTHON_INLINE int __Pyx_IterFinish(void);

/* PyObjectCallNoArg.proto (used by PyObjectCallMethod0) */
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);

/* PyObjectGetMethod.proto (used by PyObjectCallMethod0) */
#if !(CYTHON_VECTORCALL && (__PYX_LIMITED_VERSION_HEX >= 0x030C0000 || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x03090000)))
static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method);
#endif

/* PyObjectCallMethod0.proto (used by dict_iter) */
static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name);

/* RaiseNeedMoreValuesToUnpack.proto (used by UnpackTuple2) */
static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index);

/* RaiseTooManyValuesToUnpack.proto (used by UnpackItemEndCheck) */
static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected);

/* UnpackItemEndCheck.proto (used by UnpackTuple2) */
static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected);

/* RaiseNoneIterError.proto (used by UnpackTupleError) */
static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void);

/* UnpackTupleError.proto (used by UnpackTuple2) */
static void __Pyx_UnpackTupleError(PyObject *, Py_ssize_t index);

/* UnpackTuple2.proto (used by dict_iter) */
static CYTHON_INLINE int __Pyx_unpack_tuple2(
    PyObject* tuple, PyObject** value1, PyObject** value2, int is_tuple, int has_known_size, int decref_tuple);
static CYTHON_INLINE int __Pyx_unpack_tuple2_exact(
    PyObject* tuple, PyObject** value1, PyObject** value2, int decref_tuple);
static int __Pyx_unpack_tuple2_generic(
    PyObject* tuple, PyObject** value1, PyObject** value2, int has_known_size, int decref_tuple);

/* dict_iter.proto */
static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* dict, int is_dict, PyObject* method_name,
                                                   Py_ssize_t* p_orig_length, int* p_is_dict);
static CYTHON_INLINE int __Pyx_dict_iter_next(PyObject* dict_or_iter, Py_ssize_t orig_length, Py_ssize_t* ppos,
                                              PyObject** pkey, PyObject** pvalue, PyObject** pitem, int is_dict);

/* CIntToPyUnicode.proto */
#define __Pyx_PyUnicode_From_int(value, width, padding_char, format_char) (\
    ((format_char) == ('c')) ?\
        __Pyx_uchar___Pyx_PyUnicode_From_int(value, width, padding_char) :\
        __Pyx____Pyx_PyUnicode_From_int(value, width, padding_char, format_char)\
    )
static CYTHON_INLINE PyObject* __Pyx_uchar___Pyx_PyUnicode_From_int(int value, Py_ssize_t width, char padding_char);
static CYTHON_INLINE PyObject* __Pyx____Pyx_PyUnicode_From_int(int value, Py_ssize_t width, char padding_char, char format_char);

/* dict_setdefault.proto (used by FetchCommonType) */
static CYTHON_INLINE PyObject *__Pyx_PyDict_SetDefault(PyObject *d, PyObject *key, PyObject *default_value);

/* LimitedApiGetTypeDict.proto (used by SetItemOnTypeDict) */
#if CYTHON_COMPILING_IN_LIMITED_API
static PyObject *__Pyx_GetTypeDict(PyTypeObject *tp);
#endif

/* SetItemOnTypeDict.proto (used by FixUpExtensionType) */
static int __Pyx__SetItemOnTypeDict(PyTypeObject *tp, PyObject *k, PyObject *v);
#define __Pyx_SetItemOnTypeDict(tp, k, v) __Pyx__SetItemOnTypeDict((PyTypeObject*)tp, k, v)

/* FixUpExtensionType.proto (used by FetchCommonType) */
static CYTHON_INLINE int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type);

/* AddModuleRef.proto (used by FetchSharedCythonModule) */
#if ((CYTHON_COMPILING_IN_CPYTHON_FREETHREADING ) ||\
     __PYX_LIMITED_VERSION_HEX < 0x030d0000)
  static PyObject *__Pyx_PyImport_AddModuleRef(const char *name);
#else
  #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name)
#endif

/* FetchSharedCythonModule.proto (used by FetchCommonType) */
static PyObject *__Pyx_FetchSharedCythonABIModule(void);

/* FetchCommonType.proto (used by CommonTypesMetaclass) */
static PyTypeObject* __Pyx_FetchCommonTypeFromSpec(PyTypeObject *metaclass, PyObject *module, PyType_Spec *spec, PyObject *bases);

/* CommonTypesMetaclass.proto (used by CythonFunctionShared) */
static int __pyx_CommonTypesMetaclass_init(PyObject *module);
#define __Pyx_CommonTypesMetaclass_USED

/* CallTypeTraverse.proto (used by CythonFunctionShared) */
#if !CYTHON_USE_TYPE_SPECS || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x03090000)
#define __Pyx_call_type_traverse(o, always_call, visit, arg) 0
#else
static int __Pyx_call_type_traverse(PyObject *o, int always_call, visitproc visit, void *arg);
#endif

/* PyMethodNew.proto (used by CythonFunctionShared) */
static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ);

/* PyVectorcallFastCallDict.proto (used by CythonFunctionShared) */
#if CYTHON_METH_FASTCALL && CYTHON_VECTORCALL
static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw);
#endif

/* CythonFunctionShared.proto (used by CythonFunction) */
#define __Pyx_CyFunction_USED
#define __Pyx_CYFUNCTION_STATICMETHOD  0x01
#define __Pyx_CYFUNCTION_CLASSMETHOD   0x02
#define __Pyx_CYFUNCTION_CCLASS        0x04
#define __Pyx_CYFUNCTION_COROUTINE     0x08
#define __Pyx_CyFunction_GetClosure(f)\
    (((__pyx_CyFunctionObject *) (f))->func_closure)
#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
  #define __Pyx_CyFunction_GetClassObj(f)\
      (((__pyx_CyFunctionObject *) (f))->func_classobj)
#else
  #define __Pyx_CyFunction_GetClassObj(f)\
      ((PyObject*) ((PyCMethodObject *) (f))->mm_class)
#endif
#define __Pyx_CyFunction_SetClassObj(f, classobj)\
    __Pyx__CyFunction_SetClassObj((__pyx_CyFunctionObject *) (f), (classobj))
#define __Pyx_CyFunction_Defaults(type, f)\
    ((type *)(((__pyx_CyFunctionObject *) (f))->defaults))
#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\
    ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g)
typedef struct {
#if CYTHON_COMPILING_IN_LIMITED_API
    PyObject_HEAD
    PyObject *func;
#elif PY_VERSION_HEX < 0x030900B1
    PyCFunctionObject func;
#else
    PyCMethodObject func;
#endif
#if CYTHON_COMPILING_IN_LIMITED_API && CYTHON_METH_FASTCALL
    __pyx_vectorcallfunc func_vectorcall;
#endif
#if CYTHON_COMPILING_IN_LIMITED_API
    PyObject *func_weakreflist;
#endif
#if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API
    PyObject *func_dict;
#endif
    PyObject *func_name;
    PyObject *func_qualname;
    PyObject *func_doc;
    PyObject *func_globals;
    PyObject *func_code;
    PyObject *func_closure;
#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
    PyObject *func_classobj;
#endif
    PyObject *defaults;
    int flags;
    PyObject *defaults_tuple;
    PyObject *defaults_kwdict;
    PyObject *(*defaults_getter)(PyObject *);
    PyObject *func_annotations;
    PyObject *func_is_coroutine;
} __pyx_CyFunctionObject;
#undef __Pyx_CyOrPyCFunction_Check
#define __Pyx_CyFunction_Check(obj)  __Pyx_TypeCheck(obj, __pyx_mstate_global->__pyx_CyFunctionType)
#define __Pyx_CyOrPyCFunction_Check(obj)  __Pyx_TypeCheck2(obj, __pyx_mstate_global->__pyx_CyFunctionType, &PyCFunction_Type)
#define __Pyx_CyFunction_CheckExact(obj)  __Pyx_IS_TYPE(obj, __pyx_mstate_global->__pyx_CyFunctionType)
static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void (*cfunc)(void));
#undef __Pyx_IsSameCFunction
#define __Pyx_IsSameCFunction(func, cfunc)   __Pyx__IsSameCyOrCFunction(func, cfunc)
static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject* op, PyMethodDef *ml,
                                      int flags, PyObject* qualname,
                                      PyObject *closure,
                                      PyObject *module, PyObject *globals,
                                      PyObject* code);
static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj);
static CYTHON_INLINE PyObject *__Pyx_CyFunction_InitDefaults(PyObject *func,
                                                         PyTypeObject *defaults_type);
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m,
                                                            PyObject *tuple);
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m,
                                                             PyObject *dict);
static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m,
                                                              PyObject *dict);
static int __pyx_CyFunction_init(PyObject *module);
#if CYTHON_METH_FASTCALL
static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
#if CYTHON_COMPILING_IN_LIMITED_API
#define __Pyx_CyFunction_func_vectorcall(f) (((__pyx_CyFunctionObject*)f)->func_vectorcall)
#else
#define __Pyx_CyFunction_func_vectorcall(f) (((PyCFunctionObject*)f)->vectorcall)
#endif
#endif

/* CythonFunction.proto */
static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml,
                                      int flags, PyObject* qualname,
                                      PyObject *closure,
                                      PyObject *module, PyObject *globals,
                                      PyObject* code);

/* PyObject_Unicode.proto */
#define __Pyx_PyObject_Unicode(obj)\
    (likely(PyUnicode_CheckExact(obj)) ? __Pyx_NewRef(obj) : PyObject_Str(obj))

/* PyLongBinop.proto */
#if !CYTHON_COMPILING_IN_PYPY
static CYTHON_INLINE PyObject* __Pyx_PyLong_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check);
#else
#define __Pyx_PyLong_AddObjC(op1, op2, intval, inplace, zerodivision_check)\
    (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2))
#endif

/* CallNextTpDealloc.proto */
static void __Pyx_call_next_tp_dealloc(PyObject* obj, destructor current_tp_dealloc);

/* CallNextTpTraverse.proto */
static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse);

/* CallNextTpClear.proto */
static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_clear);

/* TypeImport.proto */
#ifndef __PYX_HAVE_RT_ImportType_proto_3_2_4
#define __PYX_HAVE_RT_ImportType_proto_3_2_4
#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
#include <stdalign.h>
#endif
#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || __cplusplus >= 201103L
#define __PYX_GET_STRUCT_ALIGNMENT_3_2_4(s) alignof(s)
#else
#define __PYX_GET_STRUCT_ALIGNMENT_3_2_4(s) sizeof(void*)
#endif
enum __Pyx_ImportType_CheckSize_3_2_4 {
   __Pyx_ImportType_CheckSize_Error_3_2_4 = 0,
   __Pyx_ImportType_CheckSize_Warn_3_2_4 = 1,
   __Pyx_ImportType_CheckSize_Ignore_3_2_4 = 2
};
static PyTypeObject *__Pyx_ImportType_3_2_4(PyObject* module, const char *module_name, const char *class_name, size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_2_4 check_size);
#endif

/* GetVTable.proto */
static void* __Pyx_GetVtable(PyTypeObject *type);

/* ValidateBasesTuple.proto (used by PyType_Ready) */
#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS
static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases);
#endif

/* PyType_Ready.proto */
CYTHON_UNUSED static int __Pyx_PyType_Ready(PyTypeObject *t);

/* SetVTable.proto */
static int __Pyx_SetVtable(PyTypeObject* typeptr , void* vtable);

/* MergeVTables.proto */
static int __Pyx_MergeVtables(PyTypeObject *type);

/* DelItemOnTypeDict.proto (used by SetupReduce) */
static int __Pyx__DelItemOnTypeDict(PyTypeObject *tp, PyObject *k);
#define __Pyx_DelItemOnTypeDict(tp, k) __Pyx__DelItemOnTypeDict((PyTypeObject*)tp, k)

/* SetupReduce.proto */
static int __Pyx_setup_reduce(PyObject* type_obj);

/* FunctionImport.proto */
static int __Pyx_ImportFunction_3_2_4(PyObject *module, const char *funcname, void (**f)(void), const char *sig);

/* GetNameInClass.proto */
#define __Pyx_GetNameInClass(var, nmspace, name)  (var) = __Pyx__GetNameInClass(nmspace, name)
static PyObject *__Pyx__GetNameInClass(PyObject *nmspace, PyObject *name);

/* CLineInTraceback.proto (used by AddTraceback) */
#if CYTHON_CLINE_IN_TRACEBACK && CYTHON_CLINE_IN_TRACEBACK_RUNTIME
static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line);
#else
#define __Pyx_CLineForTraceback(tstate, c_line)  (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0)
#endif

/* CodeObjectCache.proto (used by AddTraceback) */
#if CYTHON_COMPILING_IN_LIMITED_API
typedef PyObject __Pyx_CachedCodeObjectType;
#else
typedef PyCodeObject __Pyx_CachedCodeObjectType;
#endif
typedef struct {
    __Pyx_CachedCodeObjectType* code_object;
    int code_line;
} __Pyx_CodeObjectCacheEntry;
struct __Pyx_CodeObjectCache {
    int count;
    int max_count;
    __Pyx_CodeObjectCacheEntry* entries;
  #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
    __pyx_atomic_int_type accessor_count;
  #endif
};
static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
static __Pyx_CachedCodeObjectType *__pyx_find_code_object(int code_line);
static void __pyx_insert_code_object(int code_line, __Pyx_CachedCodeObjectType* code_object);

/* AddTraceback.proto */
static void __Pyx_AddTraceback(const char *funcname, int c_line,
                               int py_line, const char *filename);

static PyObject* __pyx_convert__to_py_struct__mlx5dv_cqe_comp_caps(struct mlx5dv_cqe_comp_caps s);
static PyObject* __pyx_convert__to_py_struct__mlx5dv_sw_parsing_caps(struct mlx5dv_sw_parsing_caps s);
static PyObject* __pyx_convert__to_py_struct__mlx5dv_striding_rq_caps(struct mlx5dv_striding_rq_caps s);
static PyObject* __pyx_convert__to_py_struct__mlx5dv_crypto_caps(struct mlx5dv_crypto_caps s);
static PyObject* __pyx_convert__to_py_struct__mlx5dv_dci_streams_caps(struct mlx5dv_dci_streams_caps s);
static PyObject* __pyx_convert__to_py_struct__mlx5dv_ooo_recv_wrs_caps(struct mlx5dv_ooo_recv_wrs_caps s);
static PyObject* __pyx_convert__to_py_struct__mlx5dv_context(struct mlx5dv_context s);
static PyObject* __pyx_convert__to_py_struct__mlx5dv_dci_streams(struct mlx5dv_dci_streams s);
/* RaiseUnexpectedTypeError.proto */
static int __Pyx_RaiseUnexpectedTypeError(const char *expected, PyObject *obj);

static PyObject* __pyx_convert__to_py_struct__mlx5_cqe64(struct mlx5_cqe64 s);
/* CIntFromPy.proto */
static CYTHON_INLINE uint8_t __Pyx_PyLong_As_uint8_t(PyObject *);

/* CIntFromPy.proto */
static CYTHON_INLINE uint16_t __Pyx_PyLong_As_uint16_t(PyObject *);

/* CIntFromPy.proto */
static CYTHON_INLINE size_t __Pyx_PyLong_As_size_t(PyObject *);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_uint64_t(uint64_t value);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_uint16_t(uint16_t value);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_uint32_t(uint32_t value);

/* CIntFromPy.proto */
static CYTHON_INLINE unsigned int __Pyx_PyLong_As_unsigned_int(PyObject *);

/* CIntFromPy.proto */
static CYTHON_INLINE unsigned long __Pyx_PyLong_As_unsigned_long(PyObject *);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_unsigned_int(unsigned int value);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_unsigned_long(unsigned long value);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_long(long value);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_int(int value);

/* CIntFromPy.proto */
static CYTHON_INLINE uint64_t __Pyx_PyLong_As_uint64_t(PyObject *);

/* CIntFromPy.proto */
static CYTHON_INLINE uint32_t __Pyx_PyLong_As_uint32_t(PyObject *);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_unsigned_char(unsigned char value);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_uint8_t(uint8_t value);

/* CIntFromPy.proto */
static CYTHON_INLINE enum mlx5dv_dc_type __Pyx_PyLong_As_enum__mlx5dv_dc_type(PyObject *);

/* CIntFromPy.proto */
static CYTHON_INLINE int __Pyx_PyLong_As_int(PyObject *);

/* CIntFromPy.proto */
static CYTHON_INLINE unsigned char __Pyx_PyLong_As_unsigned_char(PyObject *);

/* CIntFromPy.proto */
static CYTHON_INLINE unsigned short __Pyx_PyLong_As_unsigned_short(PyObject *);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_unsigned_short(unsigned short value);

/* CIntFromPy.proto */
static CYTHON_INLINE long __Pyx_PyLong_As_long(PyObject *);

/* FormatTypeName.proto */
#if CYTHON_COMPILING_IN_LIMITED_API
typedef PyObject *__Pyx_TypeName;
#define __Pyx_FMT_TYPENAME "%U"
#define __Pyx_DECREF_TypeName(obj) Py_XDECREF(obj)
#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000
#define __Pyx_PyType_GetFullyQualifiedName PyType_GetFullyQualifiedName
#else
static __Pyx_TypeName __Pyx_PyType_GetFullyQualifiedName(PyTypeObject* tp);
#endif
#else  // !LIMITED_API
typedef const char *__Pyx_TypeName;
#define __Pyx_FMT_TYPENAME "%.200s"
#define __Pyx_PyType_GetFullyQualifiedName(tp) ((tp)->tp_name)
#define __Pyx_DECREF_TypeName(obj)
#endif

/* GetRuntimeVersion.proto */
#if __PYX_LIMITED_VERSION_HEX < 0x030b0000
static unsigned long __Pyx_cached_runtime_version = 0;
static void __Pyx_init_runtime_version(void);
#else
#define __Pyx_init_runtime_version()
#endif
static unsigned long __Pyx_get_runtime_version(void);

/* CheckBinaryVersion.proto */
static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer);

/* DecompressString.proto */
static PyObject *__Pyx_DecompressString(const char *s, Py_ssize_t length, int algo);

/* MultiPhaseInitModuleState.proto */
#if CYTHON_PEP489_MULTI_PHASE_INIT && CYTHON_USE_MODULE_STATE
static PyObject *__Pyx_State_FindModule(void*);
static int __Pyx_State_AddModule(PyObject* module, void*);
static int __Pyx_State_RemoveModule(void*);
#elif CYTHON_USE_MODULE_STATE
#define __Pyx_State_FindModule PyState_FindModule
#define __Pyx_State_AddModule PyState_AddModule
#define __Pyx_State_RemoveModule PyState_RemoveModule
#endif

/* #### Code section: module_declarations ### */
/* CythonABIVersion.proto */
#if CYTHON_COMPILING_IN_LIMITED_API
    #if CYTHON_METH_FASTCALL
        #define __PYX_FASTCALL_ABI_SUFFIX  "_fastcall"
    #else
        #define __PYX_FASTCALL_ABI_SUFFIX
    #endif
    #define __PYX_LIMITED_ABI_SUFFIX "limited" __PYX_FASTCALL_ABI_SUFFIX __PYX_AM_SEND_ABI_SUFFIX
#else
    #define __PYX_LIMITED_ABI_SUFFIX
#endif
#if __PYX_HAS_PY_AM_SEND == 1
    #define __PYX_AM_SEND_ABI_SUFFIX
#elif __PYX_HAS_PY_AM_SEND == 2
    #define __PYX_AM_SEND_ABI_SUFFIX "amsendbackport"
#else
    #define __PYX_AM_SEND_ABI_SUFFIX "noamsend"
#endif
#ifndef __PYX_MONITORING_ABI_SUFFIX
    #define __PYX_MONITORING_ABI_SUFFIX
#endif
#if CYTHON_USE_TP_FINALIZE
    #define __PYX_TP_FINALIZE_ABI_SUFFIX
#else
    #define __PYX_TP_FINALIZE_ABI_SUFFIX "nofinalize"
#endif
#if CYTHON_USE_FREELISTS || !defined(__Pyx_AsyncGen_USED)
    #define __PYX_FREELISTS_ABI_SUFFIX
#else
    #define __PYX_FREELISTS_ABI_SUFFIX "nofreelists"
#endif
#define CYTHON_ABI  __PYX_ABI_VERSION __PYX_LIMITED_ABI_SUFFIX __PYX_MONITORING_ABI_SUFFIX __PYX_TP_FINALIZE_ABI_SUFFIX __PYX_FREELISTS_ABI_SUFFIX __PYX_AM_SEND_ABI_SUFFIX
#define __PYX_ABI_MODULE_NAME "_cython_" CYTHON_ABI
#define __PYX_TYPE_MODULE_PREFIX __PYX_ABI_MODULE_NAME "."

static PyObject *__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_add_ref(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *__pyx_v_self, PyObject *__pyx_v_obj); /* proto*/
static PyObject *__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_add_ref(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *__pyx_v_self, PyObject *__pyx_v_obj); /* proto*/
static PyObject *__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
static void __pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr__cpy(void *__pyx_v_dst, void *__pyx_v_src, int __pyx_v_length); /* proto*/
static PyObject *__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg__copy_to_buffer(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg *__pyx_v_self, PyObject *__pyx_v_addr, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/

/* Module declarations from "pyverbs.base" */
static PyObject *(*__pyx_f_7pyverbs_4base_close_weakrefs)(PyObject *); /*proto*/

/* Module declarations from "libc.stdint" */

/* Module declarations from "posix.types" */

/* Module declarations from "libcpp" */

/* Module declarations from "libc.string" */

/* Module declarations from "libc.stdio" */

/* Module declarations from "pyverbs.providers.mlx5.mlx5_enums" */

/* Module declarations from "posix.signal" */

/* Module declarations from "posix.time" */

/* Module declarations from "pyverbs.libibverbs_enums" */

/* Module declarations from "pyverbs.libibverbs" */

/* Module declarations from "pyverbs.providers.mlx5.libmlx5" */

/* Module declarations from "pyverbs.device" */

/* Module declarations from "pyverbs.qp" */

/* Module declarations from "pyverbs.cq" */

/* Module declarations from "libc.stdlib" */

/* Module declarations from "posix.mman" */

/* Module declarations from "pyverbs.pd" */

/* Module declarations from "pyverbs.providers.mlx5.mlx5dv_mkey" */

/* Module declarations from "pyverbs.providers.mlx5.mlx5dv_crypto" */

/* Module declarations from "pyverbs.providers.mlx5.dr_domain" */

/* Module declarations from "pyverbs.providers.mlx5.dr_table" */

/* Module declarations from "pyverbs.providers.mlx5.dr_action" */

/* Module declarations from "pyverbs.providers.mlx5.mlx5dv_sched" */

/* Module declarations from "pyverbs.providers.mlx5" */

/* Module declarations from "pyverbs.providers" */

/* Module declarations from "pyverbs.librdmacm_enums" */

/* Module declarations from "pyverbs.librdmacm" */

/* Module declarations from "pyverbs" */

/* Module declarations from "pyverbs.wr" */
static PyObject *(*__pyx_f_7pyverbs_2wr_copy_sg_array)(struct ibv_sge *, PyObject *, PyObject *); /*proto*/

/* Module declarations from "pyverbs.cmid" */

/* Module declarations from "pyverbs.addr" */

/* Module declarations from "pyverbs.providers.mlx5.mlx5dv" */
static PyObject *__pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = 0;
static PyObject *__pyx_imported_enum___Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = 0;
static PyObject *__pyx_imported_enum___Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = 0;
static PyObject *__pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py = 0;
static PyObject *__pyx_imported_enum___Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = 0;
static PyObject *__pyx_imported_enum___Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = 0;
static PyObject *__pyx_imported_enum___Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = 0;
static PyObject *__pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py = 0;
static PyObject *__pyx_imported_enum___Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = 0;
static PyObject *__pyx_imported_enum___Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = 0;
static PyObject *__pyx_imported_enum___Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = 0;
static PyObject *__pyx_imported_enum___Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = 0;
static PyObject *__pyx_imported_enum___Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = 0;
static PyObject *__pyx_imported_enum___Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = 0;
static char *__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv__prepare_devx_inbox(PyObject *); /*proto*/
static char *__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv__prepare_devx_outbox(PyObject *); /*proto*/
static uintptr_t __pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_copy_data_to_addr(uintptr_t, PyObject *); /*proto*/
static PyObject *__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_copy_mr_interleaved_array(struct mlx5dv_mr_interleaved *, PyObject *); /*proto*/
static PyObject *__Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(enum mlx5dv_dc_type); /*proto*/
static PyObject *__Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(enum mlx5dv_crypto_login_state); /*proto*/
static struct mlx5dv_dci_streams __pyx_convert__from_py_struct__mlx5dv_dci_streams(PyObject *); /*proto*/
static PyObject *__Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(enum mlx5dv_qp_init_attr_mask); /*proto*/
static PyObject *__Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py(enum ibv_qp_attr_mask); /*proto*/
static PyObject *__Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(enum mlx5dv_cq_init_attr_flags); /*proto*/
static PyObject *__Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(enum mlx5dv_cq_init_attr_mask); /*proto*/
static PyObject *__Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(enum mlx5dv_cqe_comp_res_format); /*proto*/
static PyObject *__Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py(enum ibv_qp_type); /*proto*/
static PyObject *__Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(enum mlx5dv_context_comp_mask); /*proto*/
static PyObject *__Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(enum mlx5dv_context_flags); /*proto*/
static PyObject *__Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(enum mlx5dv_sw_parsing_offloads); /*proto*/
static PyObject *__Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(enum mlx5dv_tunnel_offloads); /*proto*/
static PyObject *__Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(enum mlx5dv_qp_create_flags); /*proto*/
static PyObject *__Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(enum mlx5dv_qp_create_send_ops_flags); /*proto*/
/* #### Code section: typeinfo ### */
/* #### Code section: before_global_var ### */
#define __Pyx_MODULE_NAME "pyverbs.providers.mlx5.mlx5dv"
extern int __pyx_module_is_main_pyverbs__providers__mlx5__mlx5dv;
int __pyx_module_is_main_pyverbs__providers__mlx5__mlx5dv = 0;

/* Implementation of "pyverbs.providers.mlx5.mlx5dv" */
/* #### Code section: global_var ### */
static PyObject *__pyx_builtin_staticmethod;
static PyObject *__pyx_builtin_super;
static PyObject *__pyx_builtin_sum;
static PyObject *__pyx_builtin_map;
/* #### Code section: string_decls ### */
static const char __pyx_k_a_mapping[] = "a mapping";
/* #### Code section: decls ### */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_2__str__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_5flags___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_5vport___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_13vport_vhca_id___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_17esw_owner_vhca_id___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_21vport_steering_icm_rx___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_21vport_steering_icm_tx___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_12reg_c0_value___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_11reg_c0_mask___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr *__pyx_v_self, PyObject *__pyx_v_flags, PyObject *__pyx_v_comp_mask, struct __pyx_obj_7pyverbs_6device_FdArr *__pyx_v_fds); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_2__str__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_5flags___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr *__pyx_v_self); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_5flags_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr *__pyx_v_self, PyObject *__pyx_v_val); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_9comp_mask___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr *__pyx_v_self); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_9comp_mask_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr *__pyx_v_self, PyObject *__pyx_v_val); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *__pyx_v_self, struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_context, PyObject *__pyx_v_in_, PyObject *__pyx_v_outlen); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_2query(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *__pyx_v_self, PyObject *__pyx_v_in_, PyObject *__pyx_v_outlen); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_4query_async(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *__pyx_v_self, PyObject *__pyx_v_in_, PyObject *__pyx_v_outlen, PyObject *__pyx_v_wr_id, struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *__pyx_v_cmd_comp); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_6modify(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *__pyx_v_self, PyObject *__pyx_v_in_, PyObject *__pyx_v_outlen); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_8out_view___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_3obj___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *__pyx_v_self); /* proto */
static void __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_8__dealloc__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_10close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_12__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_14__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *__pyx_v_self, struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr *__pyx_v_attr, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_2query_mlx5_device(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *__pyx_v_self, PyObject *__pyx_v_comp_mask); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_4query_mlx5_port(struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_ctx, PyObject *__pyx_v_port_num); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_6reserved_qpn_alloc(struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_ctx); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_8reserved_qpn_dealloc(struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_ctx, PyObject *__pyx_v_qpn); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_10crypto_login(struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_ctx, struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoLoginAttr *__pyx_v_login_attr); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_12query_login_state(struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_ctx); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_14crypto_logout(struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_ctx); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_16devx_general_cmd(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *__pyx_v_self, PyObject *__pyx_v_in_, PyObject *__pyx_v_outlen); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_18device_timestamp_to_ns(struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_ctx, PyObject *__pyx_v_device_timestamp); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_20devx_query_eqn(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *__pyx_v_self, PyObject *__pyx_v_vector); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_22get_data_direct_sysfs_path(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *__pyx_v_self, PyObject *__pyx_v_length); /* proto */
static void __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_24__dealloc__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_26close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_28__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_30__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_7version___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_5flags___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_9comp_mask___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_9comp_mask_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self, PyObject *__pyx_v_val); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_13cqe_comp_caps___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_15sw_parsing_caps___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_16striding_rq_caps___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_19tunnel_offload_caps___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_18max_dynamic_bfregs___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_26max_clock_info_update_nsec___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_17flow_action_flags___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_11dc_odp_caps___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_11crypto_caps___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_13num_lag_ports___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_16dci_streams_caps___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_20max_wr_memcpy_length___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_14max_dc_rd_atom___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_19max_dc_init_rd_atom___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_17ooo_recv_wrs_caps___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext___str__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr *__pyx_v_self, PyObject *__pyx_v_log_num_concurent, PyObject *__pyx_v_log_num_errored); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_2__str__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_17log_num_concurent___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr *__pyx_v_self); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_17log_num_concurent_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr *__pyx_v_self, PyObject *__pyx_v_val); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_15log_num_errored___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr *__pyx_v_self); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_15log_num_errored_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr *__pyx_v_self, PyObject *__pyx_v_val); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr *__pyx_v_self, PyObject *__pyx_v_dc_type, PyObject *__pyx_v_dct_access_key, PyObject *__pyx_v_dci_streams); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_2__str__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_7dc_type___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr *__pyx_v_self); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_7dc_type_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr *__pyx_v_self, PyObject *__pyx_v_val); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_14dct_access_key___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr *__pyx_v_self); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_14dct_access_key_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr *__pyx_v_self, PyObject *__pyx_v_val); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_11dci_streams___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr *__pyx_v_self); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_11dci_streams_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr *__pyx_v_self, PyObject *__pyx_v_val); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *__pyx_v_self, PyObject *__pyx_v_comp_mask, PyObject *__pyx_v_create_flags, struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr *__pyx_v_dc_init_attr, PyObject *__pyx_v_send_ops_flags); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_2__str__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_9comp_mask___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *__pyx_v_self); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_9comp_mask_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *__pyx_v_self, PyObject *__pyx_v_val); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_12create_flags___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *__pyx_v_self); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_12create_flags_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *__pyx_v_self, PyObject *__pyx_v_val); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_14send_ops_flags___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *__pyx_v_self); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_14send_ops_flags_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *__pyx_v_self, PyObject *__pyx_v_val); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_7dc_type___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *__pyx_v_self); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_7dc_type_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *__pyx_v_self, PyObject *__pyx_v_val); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_14dct_access_key___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *__pyx_v_self); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_14dct_access_key_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *__pyx_v_self, PyObject *__pyx_v_val); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_11dci_streams___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *__pyx_v_self); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_11dci_streams_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *__pyx_v_self, PyObject *__pyx_v_val); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *__pyx_v_self, struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_context, struct __pyx_obj_7pyverbs_2qp_QPInitAttrEx *__pyx_v_init_attr, struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *__pyx_v_dv_init_attr); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_2_get_comp_mask(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *__pyx_v_self, PyObject *__pyx_v_dst); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_4wr_set_dc_addr(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *__pyx_v_self, struct __pyx_obj_7pyverbs_4addr_AH *__pyx_v_ah, PyObject *__pyx_v_remote_dctn, PyObject *__pyx_v_remote_dc_key); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_6wr_raw_wqe(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *__pyx_v_self, PyObject *__pyx_v_wqe); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_8wr_mr_interleaved(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *__pyx_v_self, struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5Mkey *__pyx_v_mkey, PyObject *__pyx_v_access_flags, PyObject *__pyx_v_repeat_count, PyObject *__pyx_v_mr_interleaved_lst); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_10wr_mr_list(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *__pyx_v_self, struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5Mkey *__pyx_v_mkey, PyObject *__pyx_v_access_flags, PyObject *__pyx_v_sge_list); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_12wr_mkey_configure(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *__pyx_v_self, struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5Mkey *__pyx_v_mkey, PyObject *__pyx_v_num_setters, struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MkeyConfAttr *__pyx_v_mkey_config); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_14wr_set_mkey_access_flags(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *__pyx_v_self, PyObject *__pyx_v_access_flags); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_16wr_set_mkey_layout_list(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *__pyx_v_self, PyObject *__pyx_v_sge_list); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_18wr_set_mkey_layout_interleaved(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *__pyx_v_self, PyObject *__pyx_v_repeat_count, PyObject *__pyx_v_mr_interleaved_lst); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_20wr_set_mkey_crypto(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *__pyx_v_self, struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoAttr *__pyx_v_attr); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_22wr_set_mkey_sig_block(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *__pyx_v_self, struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigBlockAttr *__pyx_v_block_attr); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_24wr_memcpy(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *__pyx_v_self, PyObject *__pyx_v_dest_lkey, PyObject *__pyx_v_dest_addr, PyObject *__pyx_v_src_lkey, PyObject *__pyx_v_src_addr, PyObject *__pyx_v_length); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_26cancel_posted_send_wrs(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *__pyx_v_self, PyObject *__pyx_v_wr_id); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_28wr_set_dc_addr_stream(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *__pyx_v_self, struct __pyx_obj_7pyverbs_4addr_AH *__pyx_v_ah, PyObject *__pyx_v_remote_dctn, PyObject *__pyx_v_remote_dc_key, PyObject *__pyx_v_stream_id); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_30query_lag_port(struct __pyx_obj_7pyverbs_2qp_QP *__pyx_v_qp); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_32modify_lag_port(struct __pyx_obj_7pyverbs_2qp_QP *__pyx_v_qp, uint8_t __pyx_v_port_num); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_34modify_qp_sched_elem(struct __pyx_obj_7pyverbs_2qp_QP *__pyx_v_qp, struct __pyx_obj_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedLeaf *__pyx_v_req_sched_leaf, struct __pyx_obj_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedLeaf *__pyx_v_resp_sched_leaf); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_36modify_udp_sport(struct __pyx_obj_7pyverbs_2qp_QP *__pyx_v_qp, uint16_t __pyx_v_udp_sport); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_38map_ah_to_qp(struct __pyx_obj_7pyverbs_4addr_AH *__pyx_v_ah, PyObject *__pyx_v_qp_num); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_40modify_dci_stream_channel_id(struct __pyx_obj_7pyverbs_2qp_QP *__pyx_v_qp, uint16_t __pyx_v_stream_id); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_42__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_44__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *__pyx_v_self, PyObject *__pyx_v_comp_mask, PyObject *__pyx_v_cqe_comp_res_format, PyObject *__pyx_v_flags, PyObject *__pyx_v_cqe_size); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_9comp_mask___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *__pyx_v_self); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_9comp_mask_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *__pyx_v_self, PyObject *__pyx_v_val); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_19cqe_comp_res_format___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *__pyx_v_self); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_19cqe_comp_res_format_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *__pyx_v_self, PyObject *__pyx_v_val); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_5flags___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *__pyx_v_self); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_5flags_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *__pyx_v_self, PyObject *__pyx_v_val); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_8cqe_size___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *__pyx_v_self); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_8cqe_size_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *__pyx_v_self, PyObject *__pyx_v_val); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_2__str__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5CQ___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ *__pyx_v_self, struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *__pyx_v_context, struct __pyx_obj_7pyverbs_2cq_CqInitAttrEx *__pyx_v_init_attr, struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *__pyx_v_dv_init_attr); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5CQ_2__str__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5CQ_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5CQ_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_qpts_to_str(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_qp_types); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_2bitmask_to_str(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_bits, PyObject *__pyx_v_values); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_4context_comp_mask_to_str(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_mask); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6context_flags_to_str(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_flags); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_8swp_to_str(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_swps); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10cqe_comp_to_str(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_cqe); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_12tunnel_offloads_to_str(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_tun); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_14dc_type_to_str(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dctype); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16qp_comp_mask_to_str(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_flags); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_18qp_create_flags_to_str(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_flags); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_20send_ops_flags_to_str(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_flags); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *__pyx_v_self, struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_context, PyObject *__pyx_v_flags); /* proto */
static void __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_2__dealloc__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_4close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_6__str__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_7page_id___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_6length___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_8mmap_off___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_9comp_mask___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP *__pyx_v_self, struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_context, PyObject *__pyx_v_pp_context, PyObject *__pyx_v_flags); /* proto */
static void __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_2__dealloc__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_4close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_5index___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *__pyx_v_self, struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_context, PyObject *__pyx_v_flags); /* proto */
static void __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_2__dealloc__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_4close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_6__str__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_8reg_addr___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_9base_addr___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_7page_id___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_8mmap_off___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_9comp_mask___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_3uar___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr *__pyx_v_self, struct __pyx_obj_7pyverbs_6device_DM *__pyx_v_dm, PyObject *__pyx_v_op); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_2unmap(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr *__pyx_v_self, PyObject *__pyx_v_length); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_4write(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr *__pyx_v_self, PyObject *__pyx_v_data); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_6read(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr *__pyx_v_self, PyObject *__pyx_v_length); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_8close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_4addr___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_10__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_12__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_sizeof(void); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_2_copy_to_buffer(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg *__pyx_v_self, PyObject *__pyx_v_addr); /* proto */
static void __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_4__dealloc__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_6close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *__pyx_v_self, PyObject *__pyx_v_pi, PyObject *__pyx_v_opcode, PyObject *__pyx_v_opmod, PyObject *__pyx_v_qp_num, PyObject *__pyx_v_fm_ce_se, PyObject *__pyx_v_ds, PyObject *__pyx_v_signature, PyObject *__pyx_v_imm); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_2__str__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_4set_ctrl_seg(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *__pyx_v_self, PyObject *__pyx_v_pi, PyObject *__pyx_v_opcode, PyObject *__pyx_v_opmod, PyObject *__pyx_v_qp_num, PyObject *__pyx_v_fm_ce_se, PyObject *__pyx_v_ds, PyObject *__pyx_v_signature, PyObject *__pyx_v_imm); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_6sizeof(void); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_4addr___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_16opmod_idx_opcode___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *__pyx_v_self); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_16opmod_idx_opcode_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *__pyx_v_self, PyObject *__pyx_v_val); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_6qpn_ds___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *__pyx_v_self); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_6qpn_ds_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *__pyx_v_self, PyObject *__pyx_v_val); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_9signature___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *__pyx_v_self); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_9signature_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *__pyx_v_self, PyObject *__pyx_v_val); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_8fm_ce_se___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *__pyx_v_self); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_8fm_ce_se_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *__pyx_v_self, PyObject *__pyx_v_val); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_3imm___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *__pyx_v_self); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_3imm_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *__pyx_v_self, PyObject *__pyx_v_val); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg *__pyx_v_self, PyObject *__pyx_v_length, PyObject *__pyx_v_lkey, PyObject *__pyx_v_addr); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_2sizeof(void); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_4__str__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_6set_data_seg(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg *__pyx_v_self, PyObject *__pyx_v_length, PyObject *__pyx_v_lkey, PyObject *__pyx_v_addr); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_10byte_count___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg *__pyx_v_self); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_10byte_count_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg *__pyx_v_self, PyObject *__pyx_v_val); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_4lkey___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg *__pyx_v_self); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_4lkey_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg *__pyx_v_self, PyObject *__pyx_v_val); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_4addr___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg *__pyx_v_self); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_4addr_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg *__pyx_v_self, PyObject *__pyx_v_val); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_lambda_funcdef_lambda(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe *__pyx_v_self, PyObject *__pyx_v_segments, PyObject *__pyx_v_addr); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_7address___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_2__str__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe *__pyx_v_self); /* proto */
static void __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_4__dealloc__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_6close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM *__pyx_v_self, struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_context, PyObject *__pyx_v_size, PyObject *__pyx_v_addr, PyObject *__pyx_v_alignment, PyObject *__pyx_v_access, PyObject *__pyx_v_pgsz_bitmap, PyObject *__pyx_v_comp_mask, PyObject *__pyx_v_dmabuf_fd); /* proto */
static void __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_2__dealloc__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_4close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_6__str__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_7umem_id___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_9umem_addr___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *__pyx_v_self, PyObject *__pyx_v_addr); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_2dump(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_4is_empty(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_5owner___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *__pyx_v_self); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_5owner_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *__pyx_v_self, PyObject *__pyx_v_val); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_2se___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_6format___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_6opcode___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_14imm_inval_pkey___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_6wqe_id___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_8byte_cnt___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_9timestamp___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_11wqe_counter___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_9signature___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_6op_own___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_6__str__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector *__pyx_v_self, struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_context); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_6vector___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_2fd___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_2close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq *__pyx_v_self, struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_context, PyObject *__pyx_v_in_, PyObject *__pyx_v_outlen); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_8out_view___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_5vaddr___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq *__pyx_v_self); /* proto */
static void __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_2__dealloc__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_4close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *__pyx_v_self, struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_context); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_2__str__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_4get_async_cmd_comp(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *__pyx_v_self, PyObject *__pyx_v_cmd_resp_len); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_2fd___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *__pyx_v_self); /* proto */
static void __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_6__dealloc__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_8close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_10__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_12__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
/* #### Code section: late_includes ### */
/* #### Code section: module_state ### */
/* SmallCodeConfig */
#ifndef CYTHON_SMALL_CODE
#if defined(__clang__)
    #define CYTHON_SMALL_CODE
#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
    #define CYTHON_SMALL_CODE __attribute__((cold))
#else
    #define CYTHON_SMALL_CODE
#endif
#endif

typedef struct {
  PyObject *__pyx_d;
  PyObject *__pyx_b;
  PyObject *__pyx_cython_runtime;
  PyObject *__pyx_empty_tuple;
  PyObject *__pyx_empty_bytes;
  PyObject *__pyx_empty_unicode;
  PyTypeObject *__pyx_ptype_7pyverbs_4base_PyverbsObject;
  PyTypeObject *__pyx_ptype_7pyverbs_4base_PyverbsCM;
  PyTypeObject *__pyx_ptype_7pyverbs_6device_Context;
  PyTypeObject *__pyx_ptype_7pyverbs_6device_DeviceAttr;
  PyTypeObject *__pyx_ptype_7pyverbs_6device_QueryDeviceExInput;
  PyTypeObject *__pyx_ptype_7pyverbs_6device_ODPCaps;
  PyTypeObject *__pyx_ptype_7pyverbs_6device_RSSCaps;
  PyTypeObject *__pyx_ptype_7pyverbs_6device_PacketPacingCaps;
  PyTypeObject *__pyx_ptype_7pyverbs_6device_PCIAtomicCaps;
  PyTypeObject *__pyx_ptype_7pyverbs_6device_TMCaps;
  PyTypeObject *__pyx_ptype_7pyverbs_6device_CQModerationCaps;
  PyTypeObject *__pyx_ptype_7pyverbs_6device_TSOCaps;
  PyTypeObject *__pyx_ptype_7pyverbs_6device_DeviceAttrEx;
  PyTypeObject *__pyx_ptype_7pyverbs_6device_AllocDmAttr;
  PyTypeObject *__pyx_ptype_7pyverbs_6device_DM;
  PyTypeObject *__pyx_ptype_7pyverbs_6device_PortAttr;
  PyTypeObject *__pyx_ptype_7pyverbs_6device_GIDEntry;
  PyTypeObject *__pyx_ptype_7pyverbs_6device_AsyncEvent;
  PyTypeObject *__pyx_ptype_7pyverbs_6device_FdArr;
  PyTypeObject *__pyx_ptype_7pyverbs_2qp_QPCap;
  PyTypeObject *__pyx_ptype_7pyverbs_2qp_QPInitAttr;
  PyTypeObject *__pyx_ptype_7pyverbs_2qp_QPInitAttrEx;
  PyTypeObject *__pyx_ptype_7pyverbs_2qp_QPAttr;
  PyTypeObject *__pyx_ptype_7pyverbs_2qp_QP;
  PyTypeObject *__pyx_ptype_7pyverbs_2qp_DataBuffer;
  PyTypeObject *__pyx_ptype_7pyverbs_2qp_QPEx;
  PyTypeObject *__pyx_ptype_7pyverbs_2qp_ECE;
  PyTypeObject *__pyx_ptype_7pyverbs_2cq_CompChannel;
  PyTypeObject *__pyx_ptype_7pyverbs_2cq_CQ;
  PyTypeObject *__pyx_ptype_7pyverbs_2cq_CqInitAttrEx;
  PyTypeObject *__pyx_ptype_7pyverbs_2cq_CQEX;
  PyTypeObject *__pyx_ptype_7pyverbs_2cq_WC;
  PyTypeObject *__pyx_ptype_7pyverbs_2cq_PollCqAttr;
  PyTypeObject *__pyx_ptype_7pyverbs_2cq_WcTmInfo;
  PyTypeObject *__pyx_ptype_7pyverbs_2pd_PD;
  PyTypeObject *__pyx_ptype_7pyverbs_2pd_ParentDomainInitAttr;
  PyTypeObject *__pyx_ptype_7pyverbs_2pd_ParentDomain;
  PyTypeObject *__pyx_ptype_7pyverbs_2pd_ParentDomainContext;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MkeyConfAttr;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MrInterleaved;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5Mkey;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigCrc;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigT10Dif;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigBlockDomain;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigBlockAttr;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigErr;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MkeyErr;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoLoginAttr;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoExtLoginAttr;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEKInitAttr;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEKAttr;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoAttr;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEK;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoLogin;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_domain_DrDomain;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_8dr_table_DrTable;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrAction;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionQp;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionModify;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowCounter;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionDrop;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionTag;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTable;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionPushVLan;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionPopVLan;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestAttr;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestArray;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionDefMiss;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionVPort;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionIBPort;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTir;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionPacketReformat;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrFlowSamplerAttr;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowSample;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrFlowMeterAttr;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowMeter;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedAttr;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedNode;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedLeaf;
  PyTypeObject *__pyx_ptype_7pyverbs_2wr_SGE;
  PyTypeObject *__pyx_ptype_7pyverbs_2wr_RecvWR;
  PyTypeObject *__pyx_ptype_7pyverbs_2wr_SendWR;
  PyTypeObject *__pyx_ptype_7pyverbs_4cmid_CMID;
  PyTypeObject *__pyx_ptype_7pyverbs_4cmid_CMEventChannel;
  PyTypeObject *__pyx_ptype_7pyverbs_4cmid_CMEvent;
  PyTypeObject *__pyx_ptype_7pyverbs_4cmid_AddrInfo;
  PyTypeObject *__pyx_ptype_7pyverbs_4cmid_ConnParam;
  PyTypeObject *__pyx_ptype_7pyverbs_4cmid_UDParam;
  PyTypeObject *__pyx_ptype_7pyverbs_4cmid_JoinMCAttrEx;
  PyTypeObject *__pyx_ptype_7pyverbs_4addr_GID;
  PyTypeObject *__pyx_ptype_7pyverbs_4addr_GRH;
  PyTypeObject *__pyx_ptype_7pyverbs_4addr_GlobalRoute;
  PyTypeObject *__pyx_ptype_7pyverbs_4addr_AHAttr;
  PyTypeObject *__pyx_ptype_7pyverbs_4addr_AH;
  PyObject *__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context;
  PyObject *__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr;
  PyObject *__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext;
  PyObject *__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr;
  PyObject *__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr;
  PyObject *__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr;
  PyObject *__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr;
  PyObject *__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP;
  PyObject *__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr;
  PyObject *__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ;
  PyObject *__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR;
  PyObject *__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP;
  PyObject *__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR;
  PyObject *__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr;
  PyObject *__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg;
  PyObject *__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg;
  PyObject *__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg;
  PyObject *__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe;
  PyObject *__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM;
  PyObject *__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj;
  PyObject *__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64;
  PyObject *__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr;
  PyObject *__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector;
  PyObject *__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq;
  PyObject *__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq;
  PyTypeObject *__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp;
  __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_items;
  __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_pop;
  __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_values;
  __Pyx_CachedCFunction __pyx_umethod_PyUnicode_Type__format;
  PyObject *__pyx_k__4;
  PyObject *__pyx_slice[2];
  PyObject *__pyx_tuple[4];
  PyObject *__pyx_codeobj_tab[118];
  PyObject *__pyx_string_tab[796];
  PyObject *__pyx_number_tab[11];
/* #### Code section: module_state_contents ### */
/* CommonTypesMetaclass.module_state_decls */
PyTypeObject *__pyx_CommonTypesMetaclassType;

/* CachedMethodType.module_state_decls */
#if CYTHON_COMPILING_IN_LIMITED_API
PyObject *__Pyx_CachedMethodType;
#endif

/* CythonFunctionShared.module_state_decls */
PyTypeObject *__pyx_CyFunctionType;

/* CodeObjectCache.module_state_decls */
struct __Pyx_CodeObjectCache __pyx_code_cache;

/* #### Code section: module_state_end ### */
} __pyx_mstatetype;

#if CYTHON_USE_MODULE_STATE
#ifdef __cplusplus
namespace {
extern struct PyModuleDef __pyx_moduledef;
} /* anonymous namespace */
#else
static struct PyModuleDef __pyx_moduledef;
#endif

#define __pyx_mstate_global (__Pyx_PyModule_GetState(__Pyx_State_FindModule(&__pyx_moduledef)))

#define __pyx_m (__Pyx_State_FindModule(&__pyx_moduledef))
#else
static __pyx_mstatetype __pyx_mstate_global_static =
#ifdef __cplusplus
    {};
#else
    {0};
#endif
static __pyx_mstatetype * const __pyx_mstate_global = &__pyx_mstate_global_static;
#endif
/* #### Code section: constant_name_defines ### */
#define __pyx_kp_u_ __pyx_string_tab[0]
#define __pyx_kp_u_08x_08x_08x_08x __pyx_string_tab[1]
#define __pyx_kp_u_20_20 __pyx_string_tab[2]
#define __pyx_kp_u_20_20_2 __pyx_string_tab[3]
#define __pyx_kp_u_22_20 __pyx_string_tab[4]
#define __pyx_kp_u_22_20_2 __pyx_string_tab[5]
#define __pyx_kp_u_Allow_MC_self_loopback __pyx_string_tab[6]
#define __pyx_kp_u_Allow_UC_self_loopback __pyx_string_tab[7]
#define __pyx_kp_u_Allow_scatter_to_CQE __pyx_string_tab[8]
#define __pyx_kp_u_CQE_compression __pyx_string_tab[9]
#define __pyx_kp_u_CQE_compression_caps __pyx_string_tab[10]
#define __pyx_kp_u_CQE_compression_format __pyx_string_tab[11]
#define __pyx_kp_u_CQE_size __pyx_string_tab[12]
#define __pyx_kp_u_CQE_v1 __pyx_string_tab[13]
#define __pyx_kp_u_Clock_info_update __pyx_string_tab[14]
#define __pyx_kp_u_Closing_Mlx5DevxCmdComp __pyx_string_tab[15]
#define __pyx_kp_u_Closing_Mlx5DevxEq __pyx_string_tab[16]
#define __pyx_kp_u_Closing_Mlx5DvexObj __pyx_string_tab[17]
#define __pyx_kp_u_Closing_Mlx5UMEM __pyx_string_tab[18]
#define __pyx_kp_u_Comp_mask __pyx_string_tab[19]
#define __pyx_kp_u_Couldn_t_allocate_array_for_cmd __pyx_string_tab[20]
#define __pyx_kp_u_Create_flags __pyx_string_tab[21]
#define __pyx_kp_u_Ctrl_word_MPLS_over_GRE __pyx_string_tab[22]
#define __pyx_kp_u_Ctrl_word_MPLS_over_UDP __pyx_string_tab[23]
#define __pyx_kp_u_Currently_PyVerbs_does_not_suppo __pyx_string_tab[24]
#define __pyx_kp_u_DCI_Stream __pyx_string_tab[25]
#define __pyx_kp_u_DCI_Stream_log_num_concurent __pyx_string_tab[26]
#define __pyx_kp_u_DCI_Stream_log_num_concurent_2 __pyx_string_tab[27]
#define __pyx_kp_u_DCI_Stream_log_num_errored __pyx_string_tab[28]
#define __pyx_kp_u_DCI_Stream_log_num_errored_2 __pyx_string_tab[29]
#define __pyx_kp_u_DCI_stream_caps __pyx_string_tab[30]
#define __pyx_kp_u_DCT_access_key __pyx_string_tab[31]
#define __pyx_kp_u_DCT_access_key_2 __pyx_string_tab[32]
#define __pyx_kp_u_DC_ODP_caps __pyx_string_tab[33]
#define __pyx_kp_u_DC_init_attr __pyx_string_tab[34]
#define __pyx_kp_u_DC_type __pyx_string_tab[35]
#define __pyx_kp_u_DC_type_2 __pyx_string_tab[36]
#define __pyx_kp_u_DevX_general_command_failed __pyx_string_tab[37]
#define __pyx_kp_u_Disable_scatter_to_CQE __pyx_string_tab[38]
#define __pyx_kp_u_Driver_QPT __pyx_string_tab[39]
#define __pyx_kp_u_Dynamic_BF_regs __pyx_string_tab[40]
#define __pyx_kp_u_Enhanced_multi_packet_WQE __pyx_string_tab[41]
#define __pyx_kp_u_Failed_to_alloc_reserved_QP_numb __pyx_string_tab[42]
#define __pyx_kp_u_Failed_to_allocate_UAR __pyx_string_tab[43]
#define __pyx_kp_u_Failed_to_allocate_VAR __pyx_string_tab[44]
#define __pyx_kp_u_Failed_to_allocate_an_msi_vector __pyx_string_tab[45]
#define __pyx_kp_u_Failed_to_allocate_memory __pyx_string_tab[46]
#define __pyx_kp_u_Failed_to_allocate_packet_pacing __pyx_string_tab[47]
#define __pyx_kp_u_Failed_to_calloc_mr_interleaved __pyx_string_tab[48]
#define __pyx_kp_u_Failed_to_calloc_sge_buffers __pyx_string_tab[49]
#define __pyx_kp_u_Failed_to_cancel_send_WRs __pyx_string_tab[50]
#define __pyx_kp_u_Failed_to_create_DevX_cmd_comp __pyx_string_tab[51]
#define __pyx_kp_u_Failed_to_create_DevX_object __pyx_string_tab[52]
#define __pyx_kp_u_Failed_to_create_DevX_object_wit __pyx_string_tab[53]
#define __pyx_kp_u_Failed_to_create_MLX5_CQ_CQInitA __pyx_string_tab[54]
#define __pyx_kp_u_Failed_to_create_MLX5_QP_QPInitA __pyx_string_tab[55]
#define __pyx_kp_u_Failed_to_create_async_EQ_object __pyx_string_tab[56]
#define __pyx_kp_u_Failed_to_create_async_EQ_object_2 __pyx_string_tab[57]
#define __pyx_kp_u_Failed_to_create_crypto_login_se __pyx_string_tab[58]
#define __pyx_kp_u_Failed_to_dealloc_QP_number __pyx_string_tab[59]
#define __pyx_kp_u_Failed_to_dereg_UMEM __pyx_string_tab[60]
#define __pyx_kp_u_Failed_to_destroy_a_DevX_EQ_obje __pyx_string_tab[61]
#define __pyx_kp_u_Failed_to_destroy_a_DevX_object __pyx_string_tab[62]
#define __pyx_kp_u_Failed_to_free_the_msi_vector __pyx_string_tab[63]
#define __pyx_kp_u_Failed_to_get_DM_operation_addre __pyx_string_tab[64]
#define __pyx_kp_u_Failed_to_get_devx_async_event __pyx_string_tab[65]
#define __pyx_kp_u_Failed_to_get_the_clock_info __pyx_string_tab[66]
#define __pyx_kp_u_Failed_to_logout_from_crypto_log __pyx_string_tab[67]
#define __pyx_kp_u_Failed_to_map_AH_to_QP __pyx_string_tab[68]
#define __pyx_kp_u_Failed_to_modify_DevX_object __pyx_string_tab[69]
#define __pyx_kp_u_Failed_to_modify_QP __pyx_string_tab[70]
#define __pyx_kp_u_Failed_to_modify_UDP_source_port __pyx_string_tab[71]
#define __pyx_kp_u_Failed_to_modify_lag_of_QP __pyx_string_tab[72]
#define __pyx_kp_u_Failed_to_open_mlx5_context_on_d __pyx_string_tab[73]
#define __pyx_kp_u_Failed_to_query_DevX_object __pyx_string_tab[74]
#define __pyx_kp_u_Failed_to_query_EQN __pyx_string_tab[75]
#define __pyx_kp_u_Failed_to_query_QP __pyx_string_tab[76]
#define __pyx_kp_u_Failed_to_query_dv_port_mlx5 __pyx_string_tab[77]
#define __pyx_kp_u_Failed_to_query_mlx5_device __pyx_string_tab[78]
#define __pyx_kp_u_Failed_to_query_the_crypto_login __pyx_string_tab[79]
#define __pyx_kp_u_Failed_to_register_a_UMEM __pyx_string_tab[80]
#define __pyx_kp_u_Failed_to_reset_stream_id __pyx_string_tab[81]
#define __pyx_kp_u_Flow_action_flags __pyx_string_tab[82]
#define __pyx_kp_u_Get_data_direct_sysfs_path_faile __pyx_string_tab[83]
#define __pyx_kp_u_MLX5DV_CQ_INIT_ATTR_FLAGS_CQE_PA_2 __pyx_string_tab[84]
#define __pyx_kp_u_Max_DC_Init_Read_Atomic __pyx_string_tab[85]
#define __pyx_kp_u_Max_DC_Read_Atomic __pyx_string_tab[86]
#define __pyx_kp_u_Max_WR_memcpy_length __pyx_string_tab[87]
#define __pyx_kp_u_Max_clock_info_update_nsec __pyx_string_tab[88]
#define __pyx_kp_u_Max_dynamic_BF_registers __pyx_string_tab[89]
#define __pyx_kp_u_Memic_Atomic_operations_do_not_s __pyx_string_tab[90]
#define __pyx_kp_u_Mlx5DVCQInitAttr __pyx_string_tab[91]
#define __pyx_kp_u_Mlx5_CQ __pyx_string_tab[92]
#define __pyx_kp_u_Multi_packet_WQE_allowed __pyx_string_tab[93]
#define __pyx_kp_u_No_value_specified_for_struct_at __pyx_string_tab[94]
#define __pyx_kp_u_No_value_specified_for_struct_at_2 __pyx_string_tab[95]
#define __pyx_kp_u_None __pyx_string_tab[96]
#define __pyx_kp_u_Note_that_Cython_is_deliberately __pyx_string_tab[97]
#define __pyx_kp_u_Num_LAG_ports __pyx_string_tab[98]
#define __pyx_kp_u_Packet_based_credit_mode __pyx_string_tab[99]
#define __pyx_kp_u_Pickling_of_struct_members_such __pyx_string_tab[100]
#define __pyx_kp_u_Pickling_of_struct_members_such_2 __pyx_string_tab[101]
#define __pyx_kp_u_Pickling_of_struct_members_such_3 __pyx_string_tab[102]
#define __pyx_kp_u_Raw_Packet __pyx_string_tab[103]
#define __pyx_kp_u_SW_Parsing __pyx_string_tab[104]
#define __pyx_kp_u_SW_Parsing_CSUM __pyx_string_tab[105]
#define __pyx_kp_u_SW_Parsing_LSO __pyx_string_tab[106]
#define __pyx_kp_u_SW_parsing __pyx_string_tab[107]
#define __pyx_kp_u_SW_parsing_caps __pyx_string_tab[108]
#define __pyx_kp_u_SW_parsing_offloads __pyx_string_tab[109]
#define __pyx_kp_u_Segment_type __pyx_string_tab[110]
#define __pyx_kp_u_Send_ops_flags __pyx_string_tab[111]
#define __pyx_kp_u_Striding_RQ __pyx_string_tab[112]
#define __pyx_kp_u_Striding_RQ_caps __pyx_string_tab[113]
#define __pyx_kp_u_Support_BlueFlame __pyx_string_tab[114]
#define __pyx_kp_u_Support_CQE_128B_compression __pyx_string_tab[115]
#define __pyx_kp_u_Support_CQE_128B_padding __pyx_string_tab[116]
#define __pyx_kp_u_Support_packet_based_credit_mode __pyx_string_tab[117]
#define __pyx_kp_u_Support_signature_pipeline_suppo __pyx_string_tab[118]
#define __pyx_kp_u_This_is_not_an_MLX5_device __pyx_string_tab[119]
#define __pyx_kp_u_Tunnel_offloads __pyx_string_tab[120]
#define __pyx_kp_u_Tunnel_offloads_caps __pyx_string_tab[121]
#define __pyx_kp_u_Unknown_DC_type_dc __pyx_string_tab[122]
#define __pyx_kp_u_Unrecognized_object_type __pyx_string_tab[123]
#define __pyx_kp_u_With_MR_interleaved __pyx_string_tab[124]
#define __pyx_kp_u_With_MR_list __pyx_string_tab[125]
#define __pyx_kp_u_With_Mkey_configure __pyx_string_tab[126]
#define __pyx_kp_u_XRC_Recv __pyx_string_tab[127]
#define __pyx_kp_u_XRC_Send __pyx_string_tab[128]
#define __pyx_kp_u__2 __pyx_string_tab[129]
#define __pyx_kp_u__3 __pyx_string_tab[130]
#define __pyx_kp_u__5 __pyx_string_tab[131]
#define __pyx_kp_u__6 __pyx_string_tab[132]
#define __pyx_kp_u__7 __pyx_string_tab[133]
#define __pyx_kp_u__8 __pyx_string_tab[134]
#define __pyx_kp_u__9 __pyx_string_tab[135]
#define __pyx_kp_u_add_note __pyx_string_tab[136]
#define __pyx_kp_u_and_syndrome_0x __pyx_string_tab[137]
#define __pyx_kp_u_base_addr __pyx_string_tab[138]
#define __pyx_kp_u_comp_mask_2 __pyx_string_tab[139]
#define __pyx_kp_u_compatibility_mask __pyx_string_tab[140]
#define __pyx_kp_u_disable __pyx_string_tab[141]
#define __pyx_kp_u_enable __pyx_string_tab[142]
#define __pyx_kp_u_enum_class_ibv_qp_attr_mask_not __pyx_string_tab[143]
#define __pyx_kp_u_enum_class_ibv_qp_type_not_impor __pyx_string_tab[144]
#define __pyx_kp_u_enum_class_mlx5dv_context_comp_m __pyx_string_tab[145]
#define __pyx_kp_u_enum_class_mlx5dv_context_flags __pyx_string_tab[146]
#define __pyx_kp_u_enum_class_mlx5dv_cq_init_attr_f __pyx_string_tab[147]
#define __pyx_kp_u_enum_class_mlx5dv_cq_init_attr_m __pyx_string_tab[148]
#define __pyx_kp_u_enum_class_mlx5dv_cqe_comp_res_f __pyx_string_tab[149]
#define __pyx_kp_u_enum_class_mlx5dv_crypto_login_s __pyx_string_tab[150]
#define __pyx_kp_u_enum_class_mlx5dv_dc_type_not_im __pyx_string_tab[151]
#define __pyx_kp_u_enum_class_mlx5dv_qp_create_flag __pyx_string_tab[152]
#define __pyx_kp_u_enum_class_mlx5dv_qp_create_send __pyx_string_tab[153]
#define __pyx_kp_u_enum_class_mlx5dv_qp_init_attr_m __pyx_string_tab[154]
#define __pyx_kp_u_enum_class_mlx5dv_sw_parsing_off __pyx_string_tab[155]
#define __pyx_kp_u_enum_class_mlx5dv_tunnel_offload __pyx_string_tab[156]
#define __pyx_kp_u_for_DCI_QP __pyx_string_tab[157]
#define __pyx_kp_u_gc __pyx_string_tab[158]
#define __pyx_kp_u_isenabled __pyx_string_tab[159]
#define __pyx_kp_u_max_log_num_concurrent_streams __pyx_string_tab[160]
#define __pyx_kp_u_max_log_num_errored_streams __pyx_string_tab[161]
#define __pyx_kp_u_max_num __pyx_string_tab[162]
#define __pyx_kp_u_max_single_stride_log_num_of_byt __pyx_string_tab[163]
#define __pyx_kp_u_max_single_wqe_log_num_of_stride __pyx_string_tab[164]
#define __pyx_kp_u_min_single_stride_log_num_of_byt __pyx_string_tab[165]
#define __pyx_kp_u_min_single_wqe_log_num_of_stride __pyx_string_tab[166]
#define __pyx_kp_u_mmap_off __pyx_string_tab[167]
#define __pyx_kp_u_mmap_offset __pyx_string_tab[168]
#define __pyx_kp_u_page_id __pyx_string_tab[169]
#define __pyx_kp_u_port __pyx_string_tab[170]
#define __pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py __pyx_string_tab[171]
#define __pyx_kp_u_reg_addr __pyx_string_tab[172]
#define __pyx_kp_u_sched_element __pyx_string_tab[173]
#define __pyx_kp_u_self_addr_cannot_be_converted_to __pyx_string_tab[174]
#define __pyx_kp_u_self_addr_self_umem_cannot_be_co __pyx_string_tab[175]
#define __pyx_kp_u_self_attr_cannot_be_converted_to __pyx_string_tab[176]
#define __pyx_kp_u_self_cmd_comp_cannot_be_converte __pyx_string_tab[177]
#define __pyx_kp_u_self_context_self_device_cannot __pyx_string_tab[178]
#define __pyx_kp_u_self_cq_self_ibv_cq_cannot_be_co __pyx_string_tab[179]
#define __pyx_kp_u_self_cqe_cannot_be_converted_to __pyx_string_tab[180]
#define __pyx_kp_u_self_eq_cannot_be_converted_to_a __pyx_string_tab[181]
#define __pyx_kp_u_self_msi_vector_cannot_be_conver __pyx_string_tab[182]
#define __pyx_kp_u_self_obj_cannot_be_converted_to __pyx_string_tab[183]
#define __pyx_kp_u_self_pp_cannot_be_converted_to_a __pyx_string_tab[184]
#define __pyx_kp_u_self_qp_self_qp_ex_cannot_be_con __pyx_string_tab[185]
#define __pyx_kp_u_self_segment_cannot_be_converted __pyx_string_tab[186]
#define __pyx_kp_u_self_uar_cannot_be_converted_to __pyx_string_tab[187]
#define __pyx_kp_u_self_var_cannot_be_converted_to __pyx_string_tab[188]
#define __pyx_kp_u_supported_QP_types __pyx_string_tab[189]
#define __pyx_kp_u_supported_formats __pyx_string_tab[190]
#define __pyx_kp_u_tree_fragment __pyx_string_tab[191]
#define __pyx_kp_u_umem_id __pyx_string_tab[192]
#define __pyx_kp_u_with_RX_checksum_CSUM __pyx_string_tab[193]
#define __pyx_kp_u_with_hash __pyx_string_tab[194]
#define __pyx_kp_u_with_stride_index __pyx_string_tab[195]
#define __pyx_n_u_CQEs __pyx_string_tab[196]
#define __pyx_n_u_DC __pyx_string_tab[197]
#define __pyx_n_u_DCI __pyx_string_tab[198]
#define __pyx_n_u_DCT __pyx_string_tab[199]
#define __pyx_n_u_Flags __pyx_string_tab[200]
#define __pyx_n_u_GRE __pyx_string_tab[201]
#define __pyx_n_u_Geneve __pyx_string_tab[202]
#define __pyx_n_u_Handle __pyx_string_tab[203]
#define __pyx_n_u_IBV_QPT_DRIVER __pyx_string_tab[204]
#define __pyx_n_u_IBV_QPT_RAW_PACKET __pyx_string_tab[205]
#define __pyx_n_u_IBV_QPT_RC __pyx_string_tab[206]
#define __pyx_n_u_IBV_QPT_UC __pyx_string_tab[207]
#define __pyx_n_u_IBV_QPT_UD __pyx_string_tab[208]
#define __pyx_n_u_IBV_QPT_XRC_RECV __pyx_string_tab[209]
#define __pyx_n_u_IBV_QPT_XRC_SEND __pyx_string_tab[210]
#define __pyx_n_u_IBV_QP_ACCESS_FLAGS __pyx_string_tab[211]
#define __pyx_n_u_IBV_QP_ALT_PATH __pyx_string_tab[212]
#define __pyx_n_u_IBV_QP_AV __pyx_string_tab[213]
#define __pyx_n_u_IBV_QP_CAP __pyx_string_tab[214]
#define __pyx_n_u_IBV_QP_CUR_STATE __pyx_string_tab[215]
#define __pyx_n_u_IBV_QP_DEST_QPN __pyx_string_tab[216]
#define __pyx_n_u_IBV_QP_EN_SQD_ASYNC_NOTIFY __pyx_string_tab[217]
#define __pyx_n_u_IBV_QP_MAX_DEST_RD_ATOMIC __pyx_string_tab[218]
#define __pyx_n_u_IBV_QP_MAX_QP_RD_ATOMIC __pyx_string_tab[219]
#define __pyx_n_u_IBV_QP_MIN_RNR_TIMER __pyx_string_tab[220]
#define __pyx_n_u_IBV_QP_PATH_MIG_STATE __pyx_string_tab[221]
#define __pyx_n_u_IBV_QP_PATH_MTU __pyx_string_tab[222]
#define __pyx_n_u_IBV_QP_PKEY_INDEX __pyx_string_tab[223]
#define __pyx_n_u_IBV_QP_PORT __pyx_string_tab[224]
#define __pyx_n_u_IBV_QP_QKEY __pyx_string_tab[225]
#define __pyx_n_u_IBV_QP_RATE_LIMIT __pyx_string_tab[226]
#define __pyx_n_u_IBV_QP_RETRY_CNT __pyx_string_tab[227]
#define __pyx_n_u_IBV_QP_RNR_RETRY __pyx_string_tab[228]
#define __pyx_n_u_IBV_QP_RQ_PSN __pyx_string_tab[229]
#define __pyx_n_u_IBV_QP_SQ_PSN __pyx_string_tab[230]
#define __pyx_n_u_IBV_QP_STATE __pyx_string_tab[231]
#define __pyx_n_u_IBV_QP_TIMEOUT __pyx_string_tab[232]
#define __pyx_n_u_INIT __pyx_string_tab[233]
#define __pyx_n_u_MLX5DV_CONTEXT_FLAGS_BLUEFLAME __pyx_string_tab[234]
#define __pyx_n_u_MLX5DV_CONTEXT_FLAGS_CQE_128B_CO __pyx_string_tab[235]
#define __pyx_n_u_MLX5DV_CONTEXT_FLAGS_CQE_128B_PA __pyx_string_tab[236]
#define __pyx_n_u_MLX5DV_CONTEXT_FLAGS_CQE_V1 __pyx_string_tab[237]
#define __pyx_n_u_MLX5DV_CONTEXT_FLAGS_ENHANCED_MP __pyx_string_tab[238]
#define __pyx_n_u_MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED __pyx_string_tab[239]
#define __pyx_n_u_MLX5DV_CONTEXT_FLAGS_PACKET_BASE __pyx_string_tab[240]
#define __pyx_n_u_MLX5DV_CONTEXT_FLAGS_REAL_TIME_T __pyx_string_tab[241]
#define __pyx_n_u_MLX5DV_CONTEXT_MASK_CLOCK_INFO_U __pyx_string_tab[242]
#define __pyx_n_u_MLX5DV_CONTEXT_MASK_CQE_COMPRESI __pyx_string_tab[243]
#define __pyx_n_u_MLX5DV_CONTEXT_MASK_CRYPTO_OFFLO __pyx_string_tab[244]
#define __pyx_n_u_MLX5DV_CONTEXT_MASK_DCI_STREAMS __pyx_string_tab[245]
#define __pyx_n_u_MLX5DV_CONTEXT_MASK_DC_ODP_CAPS __pyx_string_tab[246]
#define __pyx_n_u_MLX5DV_CONTEXT_MASK_DYN_BFREGS __pyx_string_tab[247]
#define __pyx_n_u_MLX5DV_CONTEXT_MASK_FLOW_ACTION __pyx_string_tab[248]
#define __pyx_n_u_MLX5DV_CONTEXT_MASK_MAX_DC_RD_AT __pyx_string_tab[249]
#define __pyx_n_u_MLX5DV_CONTEXT_MASK_NUM_LAG_PORT __pyx_string_tab[250]
#define __pyx_n_u_MLX5DV_CONTEXT_MASK_OOO_RECV_WRS __pyx_string_tab[251]
#define __pyx_n_u_MLX5DV_CONTEXT_MASK_SIGNATURE_OF __pyx_string_tab[252]
#define __pyx_n_u_MLX5DV_CONTEXT_MASK_STRIDING_RQ __pyx_string_tab[253]
#define __pyx_n_u_MLX5DV_CONTEXT_MASK_SWP __pyx_string_tab[254]
#define __pyx_n_u_MLX5DV_CONTEXT_MASK_TUNNEL_OFFLO __pyx_string_tab[255]
#define __pyx_n_u_MLX5DV_CONTEXT_MASK_WR_MEMCPY_LE __pyx_string_tab[256]
#define __pyx_n_u_MLX5DV_CQE_RES_FORMAT_CSUM __pyx_string_tab[257]
#define __pyx_n_u_MLX5DV_CQE_RES_FORMAT_CSUM_STRID __pyx_string_tab[258]
#define __pyx_n_u_MLX5DV_CQE_RES_FORMAT_HASH __pyx_string_tab[259]
#define __pyx_n_u_MLX5DV_CQ_INIT_ATTR_FLAGS_CQE_PA __pyx_string_tab[260]
#define __pyx_n_u_MLX5DV_CQ_INIT_ATTR_FLAGS_RESERV __pyx_string_tab[261]
#define __pyx_n_u_MLX5DV_CQ_INIT_ATTR_MASK_COMPRES __pyx_string_tab[262]
#define __pyx_n_u_MLX5DV_CQ_INIT_ATTR_MASK_CQE_SIZ __pyx_string_tab[263]
#define __pyx_n_u_MLX5DV_CQ_INIT_ATTR_MASK_FLAGS __pyx_string_tab[264]
#define __pyx_n_u_MLX5DV_CRYPTO_LOGIN_STATE_INVALI __pyx_string_tab[265]
#define __pyx_n_u_MLX5DV_CRYPTO_LOGIN_STATE_NO_LOG __pyx_string_tab[266]
#define __pyx_n_u_MLX5DV_CRYPTO_LOGIN_STATE_VALID __pyx_string_tab[267]
#define __pyx_n_u_MLX5DV_DCTYPE_DCI __pyx_string_tab[268]
#define __pyx_n_u_MLX5DV_DCTYPE_DCT __pyx_string_tab[269]
#define __pyx_n_u_MLX5DV_QP_CREATE_ALLOW_SCATTER_T __pyx_string_tab[270]
#define __pyx_n_u_MLX5DV_QP_CREATE_DISABLE_SCATTER __pyx_string_tab[271]
#define __pyx_n_u_MLX5DV_QP_CREATE_OOO_DP __pyx_string_tab[272]
#define __pyx_n_u_MLX5DV_QP_CREATE_PACKET_BASED_CR __pyx_string_tab[273]
#define __pyx_n_u_MLX5DV_QP_CREATE_SIG_PIPELINING __pyx_string_tab[274]
#define __pyx_n_u_MLX5DV_QP_CREATE_TIR_ALLOW_SELF __pyx_string_tab[275]
#define __pyx_n_u_MLX5DV_QP_CREATE_TIR_ALLOW_SELF_2 __pyx_string_tab[276]
#define __pyx_n_u_MLX5DV_QP_CREATE_TUNNEL_OFFLOADS __pyx_string_tab[277]
#define __pyx_n_u_MLX5DV_QP_EX_WITH_MEMCPY __pyx_string_tab[278]
#define __pyx_n_u_MLX5DV_QP_EX_WITH_MKEY_CONFIGURE __pyx_string_tab[279]
#define __pyx_n_u_MLX5DV_QP_EX_WITH_MR_INTERLEAVED __pyx_string_tab[280]
#define __pyx_n_u_MLX5DV_QP_EX_WITH_MR_LIST __pyx_string_tab[281]
#define __pyx_n_u_MLX5DV_QP_EX_WITH_RAW_WQE __pyx_string_tab[282]
#define __pyx_n_u_MLX5DV_QP_INIT_ATTR_MASK_DC __pyx_string_tab[283]
#define __pyx_n_u_MLX5DV_QP_INIT_ATTR_MASK_DCI_STR __pyx_string_tab[284]
#define __pyx_n_u_MLX5DV_QP_INIT_ATTR_MASK_QP_CREA __pyx_string_tab[285]
#define __pyx_n_u_MLX5DV_QP_INIT_ATTR_MASK_SEND_OP __pyx_string_tab[286]
#define __pyx_n_u_MLX5DV_RAW_PACKET_CAP_TUNNELED_O __pyx_string_tab[287]
#define __pyx_n_u_MLX5DV_RAW_PACKET_CAP_TUNNELED_O_2 __pyx_string_tab[288]
#define __pyx_n_u_MLX5DV_RAW_PACKET_CAP_TUNNELED_O_3 __pyx_string_tab[289]
#define __pyx_n_u_MLX5DV_RAW_PACKET_CAP_TUNNELED_O_4 __pyx_string_tab[290]
#define __pyx_n_u_MLX5DV_RAW_PACKET_CAP_TUNNELED_O_5 __pyx_string_tab[291]
#define __pyx_n_u_MLX5DV_SW_PARSING __pyx_string_tab[292]
#define __pyx_n_u_MLX5DV_SW_PARSING_CSUM __pyx_string_tab[293]
#define __pyx_n_u_MLX5DV_SW_PARSING_LSO __pyx_string_tab[294]
#define __pyx_n_u_Mlx5CQ __pyx_string_tab[295]
#define __pyx_n_u_Mlx5CQ___reduce_cython __pyx_string_tab[296]
#define __pyx_n_u_Mlx5CQ___setstate_cython __pyx_string_tab[297]
#define __pyx_n_u_Mlx5Context __pyx_string_tab[298]
#define __pyx_n_u_Mlx5Context___reduce_cython __pyx_string_tab[299]
#define __pyx_n_u_Mlx5Context___setstate_cython __pyx_string_tab[300]
#define __pyx_n_u_Mlx5Context_close __pyx_string_tab[301]
#define __pyx_n_u_Mlx5Context_crypto_login __pyx_string_tab[302]
#define __pyx_n_u_Mlx5Context_crypto_logout __pyx_string_tab[303]
#define __pyx_n_u_Mlx5Context_device_timestamp_to __pyx_string_tab[304]
#define __pyx_n_u_Mlx5Context_devx_general_cmd __pyx_string_tab[305]
#define __pyx_n_u_Mlx5Context_devx_query_eqn __pyx_string_tab[306]
#define __pyx_n_u_Mlx5Context_get_data_direct_sysf __pyx_string_tab[307]
#define __pyx_n_u_Mlx5Context_query_login_state __pyx_string_tab[308]
#define __pyx_n_u_Mlx5Context_query_mlx5_device __pyx_string_tab[309]
#define __pyx_n_u_Mlx5Context_query_mlx5_port __pyx_string_tab[310]
#define __pyx_n_u_Mlx5Context_reserved_qpn_alloc __pyx_string_tab[311]
#define __pyx_n_u_Mlx5Context_reserved_qpn_dealloc __pyx_string_tab[312]
#define __pyx_n_u_Mlx5Cqe64 __pyx_string_tab[313]
#define __pyx_n_u_Mlx5Cqe64___reduce_cython __pyx_string_tab[314]
#define __pyx_n_u_Mlx5Cqe64___setstate_cython __pyx_string_tab[315]
#define __pyx_n_u_Mlx5Cqe64_dump __pyx_string_tab[316]
#define __pyx_n_u_Mlx5Cqe64_is_empty __pyx_string_tab[317]
#define __pyx_n_u_Mlx5DCIStreamInitAttr __pyx_string_tab[318]
#define __pyx_n_u_Mlx5DCIStreamInitAttr___reduce_c __pyx_string_tab[319]
#define __pyx_n_u_Mlx5DCIStreamInitAttr___setstate __pyx_string_tab[320]
#define __pyx_n_u_Mlx5DVCQInitAttr_2 __pyx_string_tab[321]
#define __pyx_n_u_Mlx5DVCQInitAttr___reduce_cython __pyx_string_tab[322]
#define __pyx_n_u_Mlx5DVCQInitAttr___setstate_cyth __pyx_string_tab[323]
#define __pyx_n_u_Mlx5DVContext __pyx_string_tab[324]
#define __pyx_n_u_Mlx5DVContextAttr __pyx_string_tab[325]
#define __pyx_n_u_Mlx5DVContextAttr___reduce_cytho __pyx_string_tab[326]
#define __pyx_n_u_Mlx5DVContextAttr___setstate_cyt __pyx_string_tab[327]
#define __pyx_n_u_Mlx5DVContext___reduce_cython __pyx_string_tab[328]
#define __pyx_n_u_Mlx5DVContext___setstate_cython __pyx_string_tab[329]
#define __pyx_n_u_Mlx5DVDCInitAttr __pyx_string_tab[330]
#define __pyx_n_u_Mlx5DVDCInitAttr___reduce_cython __pyx_string_tab[331]
#define __pyx_n_u_Mlx5DVDCInitAttr___setstate_cyth __pyx_string_tab[332]
#define __pyx_n_u_Mlx5DVPortAttr __pyx_string_tab[333]
#define __pyx_n_u_Mlx5DVPortAttr___reduce_cython __pyx_string_tab[334]
#define __pyx_n_u_Mlx5DVPortAttr___setstate_cython __pyx_string_tab[335]
#define __pyx_n_u_Mlx5DVQPInitAttr __pyx_string_tab[336]
#define __pyx_n_u_Mlx5DVQPInitAttr___reduce_cython __pyx_string_tab[337]
#define __pyx_n_u_Mlx5DVQPInitAttr___setstate_cyth __pyx_string_tab[338]
#define __pyx_n_u_Mlx5DevxCmdComp __pyx_string_tab[339]
#define __pyx_n_u_Mlx5DevxCmdComp___reduce_cython __pyx_string_tab[340]
#define __pyx_n_u_Mlx5DevxCmdComp___setstate_cytho __pyx_string_tab[341]
#define __pyx_n_u_Mlx5DevxCmdComp_close __pyx_string_tab[342]
#define __pyx_n_u_Mlx5DevxCmdComp_get_async_cmd_co __pyx_string_tab[343]
#define __pyx_n_u_Mlx5DevxEq __pyx_string_tab[344]
#define __pyx_n_u_Mlx5DevxEq___reduce_cython __pyx_string_tab[345]
#define __pyx_n_u_Mlx5DevxEq___setstate_cython __pyx_string_tab[346]
#define __pyx_n_u_Mlx5DevxEq_close __pyx_string_tab[347]
#define __pyx_n_u_Mlx5DevxMsiVector __pyx_string_tab[348]
#define __pyx_n_u_Mlx5DevxMsiVector___reduce_cytho __pyx_string_tab[349]
#define __pyx_n_u_Mlx5DevxMsiVector___setstate_cyt __pyx_string_tab[350]
#define __pyx_n_u_Mlx5DevxMsiVector_close __pyx_string_tab[351]
#define __pyx_n_u_Mlx5DevxObj __pyx_string_tab[352]
#define __pyx_n_u_Mlx5DevxObj___reduce_cython __pyx_string_tab[353]
#define __pyx_n_u_Mlx5DevxObj___setstate_cython __pyx_string_tab[354]
#define __pyx_n_u_Mlx5DevxObj_close __pyx_string_tab[355]
#define __pyx_n_u_Mlx5DevxObj_modify __pyx_string_tab[356]
#define __pyx_n_u_Mlx5DevxObj_query __pyx_string_tab[357]
#define __pyx_n_u_Mlx5DevxObj_query_async __pyx_string_tab[358]
#define __pyx_n_u_Mlx5DmOpAddr __pyx_string_tab[359]
#define __pyx_n_u_Mlx5DmOpAddr___reduce_cython __pyx_string_tab[360]
#define __pyx_n_u_Mlx5DmOpAddr___setstate_cython __pyx_string_tab[361]
#define __pyx_n_u_Mlx5DmOpAddr_close __pyx_string_tab[362]
#define __pyx_n_u_Mlx5DmOpAddr_read __pyx_string_tab[363]
#define __pyx_n_u_Mlx5DmOpAddr_unmap __pyx_string_tab[364]
#define __pyx_n_u_Mlx5DmOpAddr_write __pyx_string_tab[365]
#define __pyx_n_u_Mlx5PP __pyx_string_tab[366]
#define __pyx_n_u_Mlx5PP___reduce_cython __pyx_string_tab[367]
#define __pyx_n_u_Mlx5PP___setstate_cython __pyx_string_tab[368]
#define __pyx_n_u_Mlx5PP_close __pyx_string_tab[369]
#define __pyx_n_u_Mlx5QP __pyx_string_tab[370]
#define __pyx_n_u_Mlx5QP___reduce_cython __pyx_string_tab[371]
#define __pyx_n_u_Mlx5QP___setstate_cython __pyx_string_tab[372]
#define __pyx_n_u_Mlx5QP__get_comp_mask __pyx_string_tab[373]
#define __pyx_n_u_Mlx5QP_cancel_posted_send_wrs __pyx_string_tab[374]
#define __pyx_n_u_Mlx5QP_map_ah_to_qp __pyx_string_tab[375]
#define __pyx_n_u_Mlx5QP_modify_dci_stream_channel __pyx_string_tab[376]
#define __pyx_n_u_Mlx5QP_modify_lag_port __pyx_string_tab[377]
#define __pyx_n_u_Mlx5QP_modify_qp_sched_elem __pyx_string_tab[378]
#define __pyx_n_u_Mlx5QP_modify_udp_sport __pyx_string_tab[379]
#define __pyx_n_u_Mlx5QP_query_lag_port __pyx_string_tab[380]
#define __pyx_n_u_Mlx5QP_wr_memcpy __pyx_string_tab[381]
#define __pyx_n_u_Mlx5QP_wr_mkey_configure __pyx_string_tab[382]
#define __pyx_n_u_Mlx5QP_wr_mr_interleaved __pyx_string_tab[383]
#define __pyx_n_u_Mlx5QP_wr_mr_list __pyx_string_tab[384]
#define __pyx_n_u_Mlx5QP_wr_raw_wqe __pyx_string_tab[385]
#define __pyx_n_u_Mlx5QP_wr_set_dc_addr __pyx_string_tab[386]
#define __pyx_n_u_Mlx5QP_wr_set_dc_addr_stream __pyx_string_tab[387]
#define __pyx_n_u_Mlx5QP_wr_set_mkey_access_flags __pyx_string_tab[388]
#define __pyx_n_u_Mlx5QP_wr_set_mkey_crypto __pyx_string_tab[389]
#define __pyx_n_u_Mlx5QP_wr_set_mkey_layout_interl __pyx_string_tab[390]
#define __pyx_n_u_Mlx5QP_wr_set_mkey_layout_list __pyx_string_tab[391]
#define __pyx_n_u_Mlx5QP_wr_set_mkey_sig_block __pyx_string_tab[392]
#define __pyx_n_u_Mlx5UAR __pyx_string_tab[393]
#define __pyx_n_u_Mlx5UAR___reduce_cython __pyx_string_tab[394]
#define __pyx_n_u_Mlx5UAR___setstate_cython __pyx_string_tab[395]
#define __pyx_n_u_Mlx5UAR_close __pyx_string_tab[396]
#define __pyx_n_u_Mlx5UMEM __pyx_string_tab[397]
#define __pyx_n_u_Mlx5UMEM___reduce_cython __pyx_string_tab[398]
#define __pyx_n_u_Mlx5UMEM___setstate_cython __pyx_string_tab[399]
#define __pyx_n_u_Mlx5UMEM_close __pyx_string_tab[400]
#define __pyx_n_u_Mlx5VAR __pyx_string_tab[401]
#define __pyx_n_u_Mlx5VAR___reduce_cython __pyx_string_tab[402]
#define __pyx_n_u_Mlx5VAR___setstate_cython __pyx_string_tab[403]
#define __pyx_n_u_Mlx5VAR_close __pyx_string_tab[404]
#define __pyx_n_u_Mlx5VfioAttr __pyx_string_tab[405]
#define __pyx_n_u_PyverbsError __pyx_string_tab[406]
#define __pyx_n_u_PyverbsRDMAErrno __pyx_string_tab[407]
#define __pyx_n_u_PyverbsRDMAError __pyx_string_tab[408]
#define __pyx_n_u_PyverbsUserError __pyx_string_tab[409]
#define __pyx_n_u_Pyx_PyDict_NextRef __pyx_string_tab[410]
#define __pyx_n_u_RC __pyx_string_tab[411]
#define __pyx_n_u_RTR __pyx_string_tab[412]
#define __pyx_n_u_RTS __pyx_string_tab[413]
#define __pyx_n_u_UC __pyx_string_tab[414]
#define __pyx_n_u_UD __pyx_string_tab[415]
#define __pyx_n_u_VXLAN __pyx_string_tab[416]
#define __pyx_n_u_Version __pyx_string_tab[417]
#define __pyx_n_u_WeakSet __pyx_string_tab[418]
#define __pyx_n_u_Wqe __pyx_string_tab[419]
#define __pyx_n_u_WqeCtrlSeg __pyx_string_tab[420]
#define __pyx_n_u_WqeCtrlSeg___reduce_cython __pyx_string_tab[421]
#define __pyx_n_u_WqeCtrlSeg___setstate_cython __pyx_string_tab[422]
#define __pyx_n_u_WqeCtrlSeg_set_ctrl_seg __pyx_string_tab[423]
#define __pyx_n_u_WqeCtrlSeg_sizeof __pyx_string_tab[424]
#define __pyx_n_u_WqeDataSeg __pyx_string_tab[425]
#define __pyx_n_u_WqeDataSeg___reduce_cython __pyx_string_tab[426]
#define __pyx_n_u_WqeDataSeg___setstate_cython __pyx_string_tab[427]
#define __pyx_n_u_WqeDataSeg_set_data_seg __pyx_string_tab[428]
#define __pyx_n_u_WqeDataSeg_sizeof __pyx_string_tab[429]
#define __pyx_n_u_WqeSeg __pyx_string_tab[430]
#define __pyx_n_u_WqeSeg___reduce_cython __pyx_string_tab[431]
#define __pyx_n_u_WqeSeg___setstate_cython __pyx_string_tab[432]
#define __pyx_n_u_WqeSeg__copy_to_buffer __pyx_string_tab[433]
#define __pyx_n_u_WqeSeg_close __pyx_string_tab[434]
#define __pyx_n_u_WqeSeg_sizeof __pyx_string_tab[435]
#define __pyx_n_u_Wqe___reduce_cython __pyx_string_tab[436]
#define __pyx_n_u_Wqe___setstate_cython __pyx_string_tab[437]
#define __pyx_n_u_Wqe_close __pyx_string_tab[438]
#define __pyx_n_u_access __pyx_string_tab[439]
#define __pyx_n_u_access_flags __pyx_string_tab[440]
#define __pyx_n_u_active_port_num __pyx_string_tab[441]
#define __pyx_n_u_add __pyx_string_tab[442]
#define __pyx_n_u_addr __pyx_string_tab[443]
#define __pyx_n_u_address __pyx_string_tab[444]
#define __pyx_n_u_ah __pyx_string_tab[445]
#define __pyx_n_u_alignment __pyx_string_tab[446]
#define __pyx_n_u_asyncio_coroutines __pyx_string_tab[447]
#define __pyx_n_u_attr __pyx_string_tab[448]
#define __pyx_n_u_bitmask_to_str __pyx_string_tab[449]
#define __pyx_n_u_bits __pyx_string_tab[450]
#define __pyx_n_u_block_attr __pyx_string_tab[451]
#define __pyx_n_u_buffer __pyx_string_tab[452]
#define __pyx_n_u_buffer_str __pyx_string_tab[453]
#define __pyx_n_u_byte_cnt __pyx_string_tab[454]
#define __pyx_n_u_byte_count __pyx_string_tab[455]
#define __pyx_n_u_cancel_posted_send_wrs __pyx_string_tab[456]
#define __pyx_n_u_class __pyx_string_tab[457]
#define __pyx_n_u_class_getitem __pyx_string_tab[458]
#define __pyx_n_u_cline_in_traceback __pyx_string_tab[459]
#define __pyx_n_u_clock_info __pyx_string_tab[460]
#define __pyx_n_u_close __pyx_string_tab[461]
#define __pyx_n_u_cmd_comp __pyx_string_tab[462]
#define __pyx_n_u_cmd_resp __pyx_string_tab[463]
#define __pyx_n_u_cmd_resp_len __pyx_string_tab[464]
#define __pyx_n_u_comp_mask __pyx_string_tab[465]
#define __pyx_n_u_context __pyx_string_tab[466]
#define __pyx_n_u_context_comp_mask_to_str __pyx_string_tab[467]
#define __pyx_n_u_context_flags_to_str __pyx_string_tab[468]
#define __pyx_n_u_copy_to_buffer __pyx_string_tab[469]
#define __pyx_n_u_cqe __pyx_string_tab[470]
#define __pyx_n_u_cqe_comp_caps __pyx_string_tab[471]
#define __pyx_n_u_cqe_comp_res_format __pyx_string_tab[472]
#define __pyx_n_u_cqe_comp_to_str __pyx_string_tab[473]
#define __pyx_n_u_cqe_size __pyx_string_tab[474]
#define __pyx_n_u_create_flags __pyx_string_tab[475]
#define __pyx_n_u_crypto_caps __pyx_string_tab[476]
#define __pyx_n_u_crypto_engines __pyx_string_tab[477]
#define __pyx_n_u_crypto_login __pyx_string_tab[478]
#define __pyx_n_u_crypto_logout __pyx_string_tab[479]
#define __pyx_n_u_ctx __pyx_string_tab[480]
#define __pyx_n_u_data __pyx_string_tab[481]
#define __pyx_n_u_dc __pyx_string_tab[482]
#define __pyx_n_u_dc_init_attr __pyx_string_tab[483]
#define __pyx_n_u_dc_odp_caps __pyx_string_tab[484]
#define __pyx_n_u_dc_type __pyx_string_tab[485]
#define __pyx_n_u_dc_type_to_str __pyx_string_tab[486]
#define __pyx_n_u_dci_streams __pyx_string_tab[487]
#define __pyx_n_u_dci_streams_caps __pyx_string_tab[488]
#define __pyx_n_u_dct_access_key __pyx_string_tab[489]
#define __pyx_n_u_dctype __pyx_string_tab[490]
#define __pyx_n_u_debug __pyx_string_tab[491]
#define __pyx_n_u_dest_addr __pyx_string_tab[492]
#define __pyx_n_u_dest_lkey __pyx_string_tab[493]
#define __pyx_n_u_dev __pyx_string_tab[494]
#define __pyx_n_u_device_timestamp __pyx_string_tab[495]
#define __pyx_n_u_device_timestamp_to_ns __pyx_string_tab[496]
#define __pyx_n_u_devx_general_cmd __pyx_string_tab[497]
#define __pyx_n_u_devx_query_eqn __pyx_string_tab[498]
#define __pyx_n_u_dict __pyx_string_tab[499]
#define __pyx_n_u_dm __pyx_string_tab[500]
#define __pyx_n_u_dmabuf_fd __pyx_string_tab[501]
#define __pyx_n_u_ds __pyx_string_tab[502]
#define __pyx_n_u_dst __pyx_string_tab[503]
#define __pyx_n_u_dump __pyx_string_tab[504]
#define __pyx_n_u_dump_format __pyx_string_tab[505]
#define __pyx_n_u_dv_attr __pyx_string_tab[506]
#define __pyx_n_u_dv_init_attr __pyx_string_tab[507]
#define __pyx_n_u_eqn __pyx_string_tab[508]
#define __pyx_n_u_failed_selftests __pyx_string_tab[509]
#define __pyx_n_u_fd __pyx_string_tab[510]
#define __pyx_n_u_fds __pyx_string_tab[511]
#define __pyx_n_u_flags __pyx_string_tab[512]
#define __pyx_n_u_flow_action_flags __pyx_string_tab[513]
#define __pyx_n_u_fm_ce_se __pyx_string_tab[514]
#define __pyx_n_u_format __pyx_string_tab[515]
#define __pyx_n_u_func __pyx_string_tab[516]
#define __pyx_n_u_getLogger __pyx_string_tab[517]
#define __pyx_n_u_get_async_cmd_comp __pyx_string_tab[518]
#define __pyx_n_u_get_comp_mask __pyx_string_tab[519]
#define __pyx_n_u_get_data_direct_sysfs_path __pyx_string_tab[520]
#define __pyx_n_u_getstate __pyx_string_tab[521]
#define __pyx_n_u_hex __pyx_string_tab[522]
#define __pyx_n_u_i __pyx_string_tab[523]
#define __pyx_n_u_ibv_qp_attr_mask __pyx_string_tab[524]
#define __pyx_n_u_ibv_qp_type __pyx_string_tab[525]
#define __pyx_n_u_imm __pyx_string_tab[526]
#define __pyx_n_u_imm_inval_pkey __pyx_string_tab[527]
#define __pyx_n_u_in __pyx_string_tab[528]
#define __pyx_n_u_in_bytes __pyx_string_tab[529]
#define __pyx_n_u_in_mailbox __pyx_string_tab[530]
#define __pyx_n_u_init __pyx_string_tab[531]
#define __pyx_n_u_init___locals_lambda __pyx_string_tab[532]
#define __pyx_n_u_init_attr __pyx_string_tab[533]
#define __pyx_n_u_is_coroutine __pyx_string_tab[534]
#define __pyx_n_u_is_empty __pyx_string_tab[535]
#define __pyx_n_u_items __pyx_string_tab[536]
#define __pyx_n_u_keys __pyx_string_tab[537]
#define __pyx_n_u_l __pyx_string_tab[538]
#define __pyx_n_u_lambda __pyx_string_tab[539]
#define __pyx_n_u_length __pyx_string_tab[540]
#define __pyx_n_u_lkey __pyx_string_tab[541]
#define __pyx_n_u_log_max_num_deks __pyx_string_tab[542]
#define __pyx_n_u_log_num_concurent __pyx_string_tab[543]
#define __pyx_n_u_log_num_errored __pyx_string_tab[544]
#define __pyx_n_u_logging __pyx_string_tab[545]
#define __pyx_n_u_login_attr __pyx_string_tab[546]
#define __pyx_n_u_main __pyx_string_tab[547]
#define __pyx_n_u_map __pyx_string_tab[548]
#define __pyx_n_u_map_ah_to_qp __pyx_string_tab[549]
#define __pyx_n_u_mask __pyx_string_tab[550]
#define __pyx_n_u_masks __pyx_string_tab[551]
#define __pyx_n_u_max_clock_info_update_nsec __pyx_string_tab[552]
#define __pyx_n_u_max_dc_init_rd_atom __pyx_string_tab[553]
#define __pyx_n_u_max_dc_init_rd_atomic __pyx_string_tab[554]
#define __pyx_n_u_max_dc_rd_atom __pyx_string_tab[555]
#define __pyx_n_u_max_dc_rd_atomic __pyx_string_tab[556]
#define __pyx_n_u_max_dct __pyx_string_tab[557]
#define __pyx_n_u_max_dynamic_bfregs __pyx_string_tab[558]
#define __pyx_n_u_max_log_num_concurent __pyx_string_tab[559]
#define __pyx_n_u_max_log_num_errored __pyx_string_tab[560]
#define __pyx_n_u_max_num_2 __pyx_string_tab[561]
#define __pyx_n_u_max_rc __pyx_string_tab[562]
#define __pyx_n_u_max_single_stride_log_num_of_byt_2 __pyx_string_tab[563]
#define __pyx_n_u_max_single_wqe_log_num_of_stride_2 __pyx_string_tab[564]
#define __pyx_n_u_max_uc __pyx_string_tab[565]
#define __pyx_n_u_max_ud __pyx_string_tab[566]
#define __pyx_n_u_max_wr_memcpy_length __pyx_string_tab[567]
#define __pyx_n_u_max_xrc __pyx_string_tab[568]
#define __pyx_n_u_min_single_stride_log_num_of_byt_2 __pyx_string_tab[569]
#define __pyx_n_u_min_single_wqe_log_num_of_stride_2 __pyx_string_tab[570]
#define __pyx_n_u_mkey __pyx_string_tab[571]
#define __pyx_n_u_mkey_config __pyx_string_tab[572]
#define __pyx_n_u_mlx5dv_context_comp_mask __pyx_string_tab[573]
#define __pyx_n_u_mlx5dv_context_flags __pyx_string_tab[574]
#define __pyx_n_u_mlx5dv_cq_init_attr_flags __pyx_string_tab[575]
#define __pyx_n_u_mlx5dv_cq_init_attr_mask __pyx_string_tab[576]
#define __pyx_n_u_mlx5dv_cqe_comp_res_format __pyx_string_tab[577]
#define __pyx_n_u_mlx5dv_crypto_login_state __pyx_string_tab[578]
#define __pyx_n_u_mlx5dv_dc_type __pyx_string_tab[579]
#define __pyx_n_u_mlx5dv_qp_create_flags __pyx_string_tab[580]
#define __pyx_n_u_mlx5dv_qp_create_send_ops_flags __pyx_string_tab[581]
#define __pyx_n_u_mlx5dv_qp_init_attr_mask __pyx_string_tab[582]
#define __pyx_n_u_mlx5dv_sw_parsing_offloads __pyx_string_tab[583]
#define __pyx_n_u_mlx5dv_tunnel_offloads __pyx_string_tab[584]
#define __pyx_n_u_modify __pyx_string_tab[585]
#define __pyx_n_u_modify_dci_stream_channel_id __pyx_string_tab[586]
#define __pyx_n_u_modify_lag_port __pyx_string_tab[587]
#define __pyx_n_u_modify_qp_sched_elem __pyx_string_tab[588]
#define __pyx_n_u_modify_udp_sport __pyx_string_tab[589]
#define __pyx_n_u_module __pyx_string_tab[590]
#define __pyx_n_u_mr_interleaved_lst __pyx_string_tab[591]
#define __pyx_n_u_mr_interleaved_p __pyx_string_tab[592]
#define __pyx_n_u_name __pyx_string_tab[593]
#define __pyx_n_u_name_2 __pyx_string_tab[594]
#define __pyx_n_u_ns_time __pyx_string_tab[595]
#define __pyx_n_u_num_interleaved __pyx_string_tab[596]
#define __pyx_n_u_num_lag_ports __pyx_string_tab[597]
#define __pyx_n_u_num_setters __pyx_string_tab[598]
#define __pyx_n_u_num_sges __pyx_string_tab[599]
#define __pyx_n_u_numeric_bits __pyx_string_tab[600]
#define __pyx_n_u_numeric_types __pyx_string_tab[601]
#define __pyx_n_u_ooo_recv_wrs_caps __pyx_string_tab[602]
#define __pyx_n_u_op __pyx_string_tab[603]
#define __pyx_n_u_op_own __pyx_string_tab[604]
#define __pyx_n_u_opcode __pyx_string_tab[605]
#define __pyx_n_u_opmod __pyx_string_tab[606]
#define __pyx_n_u_out __pyx_string_tab[607]
#define __pyx_n_u_out_data __pyx_string_tab[608]
#define __pyx_n_u_out_mailbox __pyx_string_tab[609]
#define __pyx_n_u_outlen __pyx_string_tab[610]
#define __pyx_n_u_pd __pyx_string_tab[611]
#define __pyx_n_u_pgsz_bitmap __pyx_string_tab[612]
#define __pyx_n_u_pi __pyx_string_tab[613]
#define __pyx_n_u_pop __pyx_string_tab[614]
#define __pyx_n_u_port_num __pyx_string_tab[615]
#define __pyx_n_u_posix_memalign __pyx_string_tab[616]
#define __pyx_n_u_pp_context __pyx_string_tab[617]
#define __pyx_n_u_pyverbs_base __pyx_string_tab[618]
#define __pyx_n_u_pyverbs_libibverbs_enums __pyx_string_tab[619]
#define __pyx_n_u_pyverbs_mem_alloc __pyx_string_tab[620]
#define __pyx_n_u_pyverbs_providers_mlx5_mlx5_enum __pyx_string_tab[621]
#define __pyx_n_u_pyverbs_providers_mlx5_mlx5dv __pyx_string_tab[622]
#define __pyx_n_u_pyverbs_pyverbs_error __pyx_string_tab[623]
#define __pyx_n_u_pyx_state __pyx_string_tab[624]
#define __pyx_n_u_pyx_vtable __pyx_string_tab[625]
#define __pyx_n_u_qp __pyx_string_tab[626]
#define __pyx_n_u_qp_comp_mask_to_str __pyx_string_tab[627]
#define __pyx_n_u_qp_create_flags_to_str __pyx_string_tab[628]
#define __pyx_n_u_qp_num __pyx_string_tab[629]
#define __pyx_n_u_qp_types __pyx_string_tab[630]
#define __pyx_n_u_qpn __pyx_string_tab[631]
#define __pyx_n_u_qpn_ds __pyx_string_tab[632]
#define __pyx_n_u_qpts __pyx_string_tab[633]
#define __pyx_n_u_qpts_str __pyx_string_tab[634]
#define __pyx_n_u_qpts_to_str __pyx_string_tab[635]
#define __pyx_n_u_qualname __pyx_string_tab[636]
#define __pyx_n_u_query __pyx_string_tab[637]
#define __pyx_n_u_query_async __pyx_string_tab[638]
#define __pyx_n_u_query_lag_port __pyx_string_tab[639]
#define __pyx_n_u_query_login_state __pyx_string_tab[640]
#define __pyx_n_u_query_mlx5_device __pyx_string_tab[641]
#define __pyx_n_u_query_mlx5_port __pyx_string_tab[642]
#define __pyx_n_u_rc __pyx_string_tab[643]
#define __pyx_n_u_read __pyx_string_tab[644]
#define __pyx_n_u_reduce __pyx_string_tab[645]
#define __pyx_n_u_reduce_cython __pyx_string_tab[646]
#define __pyx_n_u_reduce_ex __pyx_string_tab[647]
#define __pyx_n_u_remote_dc_key __pyx_string_tab[648]
#define __pyx_n_u_remote_dctn __pyx_string_tab[649]
#define __pyx_n_u_repeat_count __pyx_string_tab[650]
#define __pyx_n_u_req_sched_leaf __pyx_string_tab[651]
#define __pyx_n_u_req_se __pyx_string_tab[652]
#define __pyx_n_u_res __pyx_string_tab[653]
#define __pyx_n_u_reserved_qpn_alloc __pyx_string_tab[654]
#define __pyx_n_u_reserved_qpn_dealloc __pyx_string_tab[655]
#define __pyx_n_u_resp_sched_leaf __pyx_string_tab[656]
#define __pyx_n_u_resp_se __pyx_string_tab[657]
#define __pyx_n_u_segments __pyx_string_tab[658]
#define __pyx_n_u_self __pyx_string_tab[659]
#define __pyx_n_u_send_ops_flags __pyx_string_tab[660]
#define __pyx_n_u_send_ops_flags_to_str __pyx_string_tab[661]
#define __pyx_n_u_set_ctrl_seg __pyx_string_tab[662]
#define __pyx_n_u_set_data_seg __pyx_string_tab[663]
#define __pyx_n_u_set_name __pyx_string_tab[664]
#define __pyx_n_u_setdefault __pyx_string_tab[665]
#define __pyx_n_u_setstate __pyx_string_tab[666]
#define __pyx_n_u_setstate_cython __pyx_string_tab[667]
#define __pyx_n_u_sge_list __pyx_string_tab[668]
#define __pyx_n_u_sge_p __pyx_string_tab[669]
#define __pyx_n_u_signature __pyx_string_tab[670]
#define __pyx_n_u_size __pyx_string_tab[671]
#define __pyx_n_u_sizeof __pyx_string_tab[672]
#define __pyx_n_u_src_addr __pyx_string_tab[673]
#define __pyx_n_u_src_lkey __pyx_string_tab[674]
#define __pyx_n_u_state __pyx_string_tab[675]
#define __pyx_n_u_staticmethod __pyx_string_tab[676]
#define __pyx_n_u_str __pyx_string_tab[677]
#define __pyx_n_u_str_2 __pyx_string_tab[678]
#define __pyx_n_u_stream_id __pyx_string_tab[679]
#define __pyx_n_u_striding_rq_caps __pyx_string_tab[680]
#define __pyx_n_u_sum __pyx_string_tab[681]
#define __pyx_n_u_super __pyx_string_tab[682]
#define __pyx_n_u_supported_format __pyx_string_tab[683]
#define __pyx_n_u_supported_qpts __pyx_string_tab[684]
#define __pyx_n_u_sw_parsing_caps __pyx_string_tab[685]
#define __pyx_n_u_sw_parsing_offloads __pyx_string_tab[686]
#define __pyx_n_u_swp_to_str __pyx_string_tab[687]
#define __pyx_n_u_swps __pyx_string_tab[688]
#define __pyx_n_u_t __pyx_string_tab[689]
#define __pyx_n_u_test __pyx_string_tab[690]
#define __pyx_n_u_timestamp __pyx_string_tab[691]
#define __pyx_n_u_tun __pyx_string_tab[692]
#define __pyx_n_u_tunnel_offloads_caps __pyx_string_tab[693]
#define __pyx_n_u_tunnel_offloads_to_str __pyx_string_tab[694]
#define __pyx_n_u_udp_sport __pyx_string_tab[695]
#define __pyx_n_u_umem_addr __pyx_string_tab[696]
#define __pyx_n_u_umem_id_2 __pyx_string_tab[697]
#define __pyx_n_u_unmap __pyx_string_tab[698]
#define __pyx_n_u_values __pyx_string_tab[699]
#define __pyx_n_u_vector __pyx_string_tab[700]
#define __pyx_n_u_version __pyx_string_tab[701]
#define __pyx_n_u_warn __pyx_string_tab[702]
#define __pyx_n_u_warnings __pyx_string_tab[703]
#define __pyx_n_u_weakref __pyx_string_tab[704]
#define __pyx_n_u_wqe __pyx_string_tab[705]
#define __pyx_n_u_wqe_counter __pyx_string_tab[706]
#define __pyx_n_u_wqe_id __pyx_string_tab[707]
#define __pyx_n_u_wqe_ptr __pyx_string_tab[708]
#define __pyx_n_u_wr_id __pyx_string_tab[709]
#define __pyx_n_u_wr_memcpy __pyx_string_tab[710]
#define __pyx_n_u_wr_mkey_configure __pyx_string_tab[711]
#define __pyx_n_u_wr_mr_interleaved __pyx_string_tab[712]
#define __pyx_n_u_wr_mr_list __pyx_string_tab[713]
#define __pyx_n_u_wr_raw_wqe __pyx_string_tab[714]
#define __pyx_n_u_wr_set_dc_addr __pyx_string_tab[715]
#define __pyx_n_u_wr_set_dc_addr_stream __pyx_string_tab[716]
#define __pyx_n_u_wr_set_mkey_access_flags __pyx_string_tab[717]
#define __pyx_n_u_wr_set_mkey_crypto __pyx_string_tab[718]
#define __pyx_n_u_wr_set_mkey_layout_interleaved __pyx_string_tab[719]
#define __pyx_n_u_wr_set_mkey_layout_list __pyx_string_tab[720]
#define __pyx_n_u_wr_set_mkey_sig_block __pyx_string_tab[721]
#define __pyx_n_u_wrapped_import_method __pyx_string_tab[722]
#define __pyx_n_u_write __pyx_string_tab[723]
#define __pyx_n_u_x __pyx_string_tab[724]
#define __pyx_kp_b_PyObject_PyObject_close_weakrefs __pyx_string_tab[725]
#define __pyx_kp_b_PyObject_struct_ibv_sge_PyObject __pyx_string_tab[726]
#define __pyx_kp_b_iso88591_0_IV1Cq_7_Q_Qa_1_j_1_I_S_wa_AQ __pyx_string_tab[727]
#define __pyx_kp_b_iso88591_0_q __pyx_string_tab[728]
#define __pyx_kp_b_iso88591_1_9_A_q __pyx_string_tab[729]
#define __pyx_kp_b_iso88591_1_V5_2Rq_6_Rq_A_5_1_3c_BgWAQ __pyx_string_tab[730]
#define __pyx_kp_b_iso88591_1_a_a_2_Q_4A_4A __pyx_string_tab[731]
#define __pyx_kp_b_iso88591_1_q_T_1_7q_A_4A_8_31_4A_4A_9_7q __pyx_string_tab[732]
#define __pyx_kp_b_iso88591_7q_6a_31 __pyx_string_tab[733]
#define __pyx_kp_b_iso88591_ACD_B_0EQ_1Be81_3c_2S_YYZ __pyx_string_tab[734]
#define __pyx_kp_b_iso88591_A_0_3OqPTTU12_3b_A_q __pyx_string_tab[735]
#define __pyx_kp_b_iso88591_A_1Be1_3c_Qj __pyx_string_tab[736]
#define __pyx_kp_b_iso88591_A_1Cz_3c_A __pyx_string_tab[737]
#define __pyx_kp_b_iso88591_A_1Cz_A_3c_Na __pyx_string_tab[738]
#define __pyx_kp_b_iso88591_A_2EQ_7s_1_A_1_2EQ_1_11A_A_C_a_4 __pyx_string_tab[739]
#define __pyx_kp_b_iso88591_A_2U_3c_1_r_Kq __pyx_string_tab[740]
#define __pyx_kp_b_iso88591_A_2U_3c_r_Kq __pyx_string_tab[741]
#define __pyx_kp_b_iso88591_A_3_4q_Ja __pyx_string_tab[742]
#define __pyx_kp_b_iso88591_A_3_B_4q_a __pyx_string_tab[743]
#define __pyx_kp_b_iso88591_A_3aq_F_3ir_6_A_Qa_QgZq_C_1D_Zq __pyx_string_tab[744]
#define __pyx_kp_b_iso88591_A_3aq_F_3ir_6_A_Qa_QgZq_H_Q_4A_A __pyx_string_tab[745]
#define __pyx_kp_b_iso88591_A_4_3a_q_A_q_a_H_N __pyx_string_tab[746]
#define __pyx_kp_b_iso88591_A_4t3a_Qd_a __pyx_string_tab[747]
#define __pyx_kp_b_iso88591_A_4t3a_vQa_4q_q_a_MQ_a_1 __pyx_string_tab[748]
#define __pyx_kp_b_iso88591_A_4uCq_1D_q __pyx_string_tab[749]
#define __pyx_kp_b_iso88591_A_4uCq_at1_q __pyx_string_tab[750]
#define __pyx_kp_b_iso88591_A_4uCq_t1_G6_1D_7t1_1D_q_a_J_q_1 __pyx_string_tab[751]
#define __pyx_kp_b_iso88591_A_4vS_t1_G6_4q_1_a_4t1_Q_1 __pyx_string_tab[752]
#define __pyx_kp_b_iso88591_A_4vS_t4q_AT __pyx_string_tab[753]
#define __pyx_kp_b_iso88591_A_4y_1_1D_d_d_t1_q_uF __pyx_string_tab[754]
#define __pyx_kp_b_iso88591_A_4y_1_Q_1 __pyx_string_tab[755]
#define __pyx_kp_b_iso88591_A_4z_A_vQa_1D_A_1 __pyx_string_tab[756]
#define __pyx_kp_b_iso88591_A_5_1A_3c_9_C_z __pyx_string_tab[757]
#define __pyx_kp_b_iso88591_A_5_31A_1D_l_Qa_4G81_q_a_Fa __pyx_string_tab[758]
#define __pyx_kp_b_iso88591_A_5_31A_5Qa_Qd_Cq_31_q_a_Fa_Ba_q __pyx_string_tab[759]
#define __pyx_kp_b_iso88591_A_5_31A_5Qa_at6_S_4A_q_a_Gq_Ba_q __pyx_string_tab[760]
#define __pyx_kp_b_iso88591_A_5_31A_5Qa_q_Jl_Qa_5Q_q_a_Fa_Ba __pyx_string_tab[761]
#define __pyx_kp_b_iso88591_A_AQ_4whivQ __pyx_string_tab[762]
#define __pyx_kp_b_iso88591_A_AS_3c_SST __pyx_string_tab[763]
#define __pyx_kp_b_iso88591_A_C_C1D_d __pyx_string_tab[764]
#define __pyx_kp_b_iso88591_A_E_3c_A_C_RS __pyx_string_tab[765]
#define __pyx_kp_b_iso88591_A_E_aq_wb_4uAT_A_q_q __pyx_string_tab[766]
#define __pyx_kp_b_iso88591_A_G1_y_Rq_AQ_q __pyx_string_tab[767]
#define __pyx_kp_b_iso88591_A_HA __pyx_string_tab[768]
#define __pyx_kp_b_iso88591_A_I_a __pyx_string_tab[769]
#define __pyx_kp_b_iso88591_A_Qa_vQc1A_1_Cq_Qa_4A_0_3OqPTTU1 __pyx_string_tab[770]
#define __pyx_kp_b_iso88591_A_Qa_vQc1A_1_Cq_Qa_4A_3_B_4q_nA __pyx_string_tab[771]
#define __pyx_kp_b_iso88591_A_Qd_HAQ_1_q __pyx_string_tab[772]
#define __pyx_kp_b_iso88591_A_V1Cq_Qc_1_3c_DA_A_AQ_q __pyx_string_tab[773]
#define __pyx_kp_b_iso88591_A_Yl_Q_C_1D __pyx_string_tab[774]
#define __pyx_kp_b_iso88591_A_Zq_3c_J_q __pyx_string_tab[775]
#define __pyx_kp_b_iso88591_A_Zz_3c_B_3lRSS_a_q __pyx_string_tab[776]
#define __pyx_kp_b_iso88591_A_a_7t1_vQ __pyx_string_tab[777]
#define __pyx_kp_b_iso88591_A_a_7t_T_hj_Kq __pyx_string_tab[778]
#define __pyx_kp_b_iso88591_A_a_a_E_as_a_gQgR_e1A_R_e1Bb_R_e __pyx_string_tab[779]
#define __pyx_kp_b_iso88591_A_at7 __pyx_string_tab[780]
#define __pyx_kp_b_iso88591_A_ax_Jd __pyx_string_tab[781]
#define __pyx_kp_b_iso88591_A_q __pyx_string_tab[782]
#define __pyx_kp_b_iso88591_A_q_A_5_Q __pyx_string_tab[783]
#define __pyx_kp_b_iso88591_A_q_Qa_3c_WWX_q __pyx_string_tab[784]
#define __pyx_kp_b_iso88591_A_q_g_1DA_a_T_a_Bc_Ba_AS_9Cq_83 __pyx_string_tab[785]
#define __pyx_kp_b_iso88591_A_s_Fat1_1 __pyx_string_tab[786]
#define __pyx_kp_b_iso88591_A_s_Fat1_A __pyx_string_tab[787]
#define __pyx_kp_b_iso88591_Q __pyx_string_tab[788]
#define __pyx_kp_b_iso88591_Q_A __pyx_string_tab[789]
#define __pyx_kp_b_iso88591_a_2_4q_Qa_at_j_3c_a_A_89Ba_AQ_w __pyx_string_tab[790]
#define __pyx_kp_b_iso88591_a_q_was __pyx_string_tab[791]
#define __pyx_kp_b_iso88591_j_j_MY __pyx_string_tab[792]
#define __pyx_kp_b_iso88591_q_0_1_0_Q __pyx_string_tab[793]
#define __pyx_kp_b_iso88591_q_6a_4A_a __pyx_string_tab[794]
#define __pyx_kp_b_iso88591_q_q __pyx_string_tab[795]
#define __pyx_int_0 __pyx_number_tab[0]
#define __pyx_int_neg_1 __pyx_number_tab[1]
#define __pyx_int_1 __pyx_number_tab[2]
#define __pyx_int_neg_2 __pyx_number_tab[3]
#define __pyx_int_2 __pyx_number_tab[4]
#define __pyx_int_3 __pyx_number_tab[5]
#define __pyx_int_4 __pyx_number_tab[6]
#define __pyx_int_8 __pyx_number_tab[7]
#define __pyx_int_64 __pyx_number_tab[8]
#define __pyx_int_512 __pyx_number_tab[9]
#define __pyx_int_1024 __pyx_number_tab[10]
/* #### Code section: module_state_clear ### */
#if CYTHON_USE_MODULE_STATE
static CYTHON_SMALL_CODE int __pyx_m_clear(PyObject *m) {
  __pyx_mstatetype *clear_module_state = __Pyx_PyModule_GetState(m);
  if (!clear_module_state) return 0;
  Py_CLEAR(clear_module_state->__pyx_d);
  Py_CLEAR(clear_module_state->__pyx_b);
  Py_CLEAR(clear_module_state->__pyx_cython_runtime);
  Py_CLEAR(clear_module_state->__pyx_empty_tuple);
  Py_CLEAR(clear_module_state->__pyx_empty_bytes);
  Py_CLEAR(clear_module_state->__pyx_empty_unicode);
  #if CYTHON_PEP489_MULTI_PHASE_INIT
  __Pyx_State_RemoveModule(NULL);
  #endif
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_4base_PyverbsObject);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_4base_PyverbsCM);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_6device_Context);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_6device_DeviceAttr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_6device_QueryDeviceExInput);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_6device_ODPCaps);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_6device_RSSCaps);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_6device_PacketPacingCaps);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_6device_PCIAtomicCaps);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_6device_TMCaps);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_6device_CQModerationCaps);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_6device_TSOCaps);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_6device_DeviceAttrEx);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_6device_AllocDmAttr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_6device_DM);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_6device_PortAttr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_6device_GIDEntry);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_6device_AsyncEvent);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_6device_FdArr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_2qp_QPCap);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_2qp_QPInitAttr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_2qp_QPInitAttrEx);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_2qp_QPAttr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_2qp_QP);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_2qp_DataBuffer);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_2qp_QPEx);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_2qp_ECE);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_2cq_CompChannel);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_2cq_CQ);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_2cq_CqInitAttrEx);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_2cq_CQEX);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_2cq_WC);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_2cq_PollCqAttr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_2cq_WcTmInfo);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_2pd_PD);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_2pd_ParentDomainInitAttr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_2pd_ParentDomain);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_2pd_ParentDomainContext);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MkeyConfAttr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MrInterleaved);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5Mkey);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigCrc);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigT10Dif);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigBlockDomain);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigBlockAttr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigErr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MkeyErr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoLoginAttr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoExtLoginAttr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEKInitAttr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEKAttr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoAttr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEK);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoLogin);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_domain_DrDomain);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_8dr_table_DrTable);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrAction);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionQp);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionModify);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowCounter);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionDrop);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionTag);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTable);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionPushVLan);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionPopVLan);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestAttr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestArray);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionDefMiss);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionVPort);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionIBPort);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTir);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionPacketReformat);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrFlowSamplerAttr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowSample);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrFlowMeterAttr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowMeter);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedAttr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedNode);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedLeaf);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_2wr_SGE);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_2wr_RecvWR);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_2wr_SendWR);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_4cmid_CMID);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_4cmid_CMEventChannel);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_4cmid_CMEvent);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_4cmid_AddrInfo);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_4cmid_ConnParam);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_4cmid_UDParam);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_4cmid_JoinMCAttrEx);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_4addr_GID);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_4addr_GRH);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_4addr_GlobalRoute);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_4addr_AHAttr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_4addr_AH);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context);
  Py_CLEAR(clear_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr);
  Py_CLEAR(clear_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext);
  Py_CLEAR(clear_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr);
  Py_CLEAR(clear_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr);
  Py_CLEAR(clear_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr);
  Py_CLEAR(clear_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr);
  Py_CLEAR(clear_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP);
  Py_CLEAR(clear_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr);
  Py_CLEAR(clear_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ);
  Py_CLEAR(clear_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR);
  Py_CLEAR(clear_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP);
  Py_CLEAR(clear_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR);
  Py_CLEAR(clear_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr);
  Py_CLEAR(clear_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg);
  Py_CLEAR(clear_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg);
  Py_CLEAR(clear_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg);
  Py_CLEAR(clear_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe);
  Py_CLEAR(clear_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM);
  Py_CLEAR(clear_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj);
  Py_CLEAR(clear_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64);
  Py_CLEAR(clear_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr);
  Py_CLEAR(clear_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector);
  Py_CLEAR(clear_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq);
  Py_CLEAR(clear_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq);
  Py_CLEAR(clear_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp);
  Py_CLEAR(clear_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp);
  Py_CLEAR(clear_module_state->__pyx_k__4);
  for (int i=0; i<2; ++i) { Py_CLEAR(clear_module_state->__pyx_slice[i]); }
  for (int i=0; i<4; ++i) { Py_CLEAR(clear_module_state->__pyx_tuple[i]); }
  for (int i=0; i<118; ++i) { Py_CLEAR(clear_module_state->__pyx_codeobj_tab[i]); }
  for (int i=0; i<796; ++i) { Py_CLEAR(clear_module_state->__pyx_string_tab[i]); }
  for (int i=0; i<11; ++i) { Py_CLEAR(clear_module_state->__pyx_number_tab[i]); }
/* #### Code section: module_state_clear_contents ### */
/* CommonTypesMetaclass.module_state_clear */
Py_CLEAR(clear_module_state->__pyx_CommonTypesMetaclassType);

/* CythonFunctionShared.module_state_clear */
Py_CLEAR(clear_module_state->__pyx_CyFunctionType);

/* #### Code section: module_state_clear_end ### */
return 0;
}
#endif
/* #### Code section: module_state_traverse ### */
#if CYTHON_USE_MODULE_STATE
static CYTHON_SMALL_CODE int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) {
  __pyx_mstatetype *traverse_module_state = __Pyx_PyModule_GetState(m);
  if (!traverse_module_state) return 0;
  Py_VISIT(traverse_module_state->__pyx_d);
  Py_VISIT(traverse_module_state->__pyx_b);
  Py_VISIT(traverse_module_state->__pyx_cython_runtime);
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_empty_tuple);
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_empty_bytes);
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_empty_unicode);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_4base_PyverbsObject);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_4base_PyverbsCM);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_6device_Context);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_6device_DeviceAttr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_6device_QueryDeviceExInput);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_6device_ODPCaps);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_6device_RSSCaps);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_6device_PacketPacingCaps);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_6device_PCIAtomicCaps);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_6device_TMCaps);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_6device_CQModerationCaps);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_6device_TSOCaps);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_6device_DeviceAttrEx);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_6device_AllocDmAttr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_6device_DM);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_6device_PortAttr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_6device_GIDEntry);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_6device_AsyncEvent);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_6device_FdArr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_2qp_QPCap);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_2qp_QPInitAttr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_2qp_QPInitAttrEx);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_2qp_QPAttr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_2qp_QP);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_2qp_DataBuffer);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_2qp_QPEx);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_2qp_ECE);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_2cq_CompChannel);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_2cq_CQ);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_2cq_CqInitAttrEx);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_2cq_CQEX);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_2cq_WC);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_2cq_PollCqAttr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_2cq_WcTmInfo);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_2pd_PD);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_2pd_ParentDomainInitAttr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_2pd_ParentDomain);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_2pd_ParentDomainContext);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MkeyConfAttr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MrInterleaved);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5Mkey);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigCrc);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigT10Dif);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigBlockDomain);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigBlockAttr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigErr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MkeyErr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoLoginAttr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoExtLoginAttr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEKInitAttr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEKAttr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoAttr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEK);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoLogin);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_domain_DrDomain);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_8dr_table_DrTable);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrAction);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionQp);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionModify);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowCounter);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionDrop);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionTag);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTable);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionPushVLan);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionPopVLan);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestAttr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestArray);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionDefMiss);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionVPort);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionIBPort);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTir);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionPacketReformat);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrFlowSamplerAttr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowSample);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrFlowMeterAttr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowMeter);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedAttr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedNode);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedLeaf);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_2wr_SGE);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_2wr_RecvWR);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_2wr_SendWR);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_4cmid_CMID);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_4cmid_CMEventChannel);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_4cmid_CMEvent);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_4cmid_AddrInfo);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_4cmid_ConnParam);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_4cmid_UDParam);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_4cmid_JoinMCAttrEx);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_4addr_GID);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_4addr_GRH);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_4addr_GlobalRoute);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_4addr_AHAttr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_4addr_AH);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context);
  Py_VISIT(traverse_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr);
  Py_VISIT(traverse_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext);
  Py_VISIT(traverse_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr);
  Py_VISIT(traverse_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr);
  Py_VISIT(traverse_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr);
  Py_VISIT(traverse_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr);
  Py_VISIT(traverse_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP);
  Py_VISIT(traverse_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr);
  Py_VISIT(traverse_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ);
  Py_VISIT(traverse_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR);
  Py_VISIT(traverse_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP);
  Py_VISIT(traverse_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR);
  Py_VISIT(traverse_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr);
  Py_VISIT(traverse_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg);
  Py_VISIT(traverse_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg);
  Py_VISIT(traverse_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg);
  Py_VISIT(traverse_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe);
  Py_VISIT(traverse_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM);
  Py_VISIT(traverse_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj);
  Py_VISIT(traverse_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64);
  Py_VISIT(traverse_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr);
  Py_VISIT(traverse_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector);
  Py_VISIT(traverse_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq);
  Py_VISIT(traverse_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq);
  Py_VISIT(traverse_module_state->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp);
  Py_VISIT(traverse_module_state->__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp);
  Py_VISIT(traverse_module_state->__pyx_k__4);
  for (int i=0; i<2; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_slice[i]); }
  for (int i=0; i<4; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_tuple[i]); }
  for (int i=0; i<118; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_codeobj_tab[i]); }
  for (int i=0; i<796; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_string_tab[i]); }
  for (int i=0; i<11; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_number_tab[i]); }
/* #### Code section: module_state_traverse_contents ### */
/* CommonTypesMetaclass.module_state_traverse */
Py_VISIT(traverse_module_state->__pyx_CommonTypesMetaclassType);

/* CythonFunctionShared.module_state_traverse */
Py_VISIT(traverse_module_state->__pyx_CyFunctionType);

/* #### Code section: module_state_traverse_end ### */
return 0;
}
#endif
/* #### Code section: module_code ### */

/* "EnumTypeToPy":3
 * cdef object __pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = None
 * 
 * @cname("__Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py")             # <<<<<<<<<<<<<<
 * cdef __Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(mlx5dv_dc_type c_val):
 *     cdef object __pyx_enum
*/

static PyObject *__Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(enum mlx5dv_dc_type __pyx_v_c_val) {
  PyObject *__pyx_v___pyx_enum = 0;
  PyObject *__pyx_v_warnings = NULL;
  int __pyx_v_underlying_c_val;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  size_t __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py", 0);

  /* "EnumTypeToPy":11
 * 
 * 
 *     if __pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:             # <<<<<<<<<<<<<<
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_dc_type as __pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
*/
  __pyx_t_1 = (__pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py == Py_None);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_dc_type as __pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
*/
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_4);
      /*try:*/ {

        /* "EnumTypeToPy":13
 *     if __pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_dc_type as __pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py             # <<<<<<<<<<<<<<
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
*/
        {
          PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_mlx5dv_dc_type};
          __pyx_t_6 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5_enum, __pyx_imported_names, 1, NULL, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L4_error)
        }
        __pyx_t_5 = __pyx_t_6;
        __Pyx_GOTREF(__pyx_t_5);
        {
          PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_mlx5dv_dc_type};
          __pyx_t_7 = 0; {
            __pyx_t_8 = __Pyx_ImportFrom(__pyx_t_5, __pyx_imported_names[__pyx_t_7]); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 13, __pyx_L4_error)
            __Pyx_GOTREF(__pyx_t_8);
            switch (__pyx_t_7) {
              case 0:
              __Pyx_INCREF(__pyx_t_8);
              __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
              __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_8);
              break;
              default:;
            }
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          }
        }
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

        /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_dc_type as __pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
*/
      }
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L9_try_end;
      __pyx_L4_error:;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;

      /* "EnumTypeToPy":14
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_dc_type as __pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:             # <<<<<<<<<<<<<<
 *             __pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
 *             import warnings
*/
      __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ImportError))));
      if (__pyx_t_9) {
        __Pyx_AddTraceback("EnumTypeToPy.__Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_8, &__pyx_t_10) < 0) __PYX_ERR(1, 14, __pyx_L6_except_error)
        __Pyx_XGOTREF(__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_10);

        /* "EnumTypeToPy":15
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_dc_type as __pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"             # <<<<<<<<<<<<<<
 *             import warnings
 *             warnings.warn(
*/
        __Pyx_INCREF(Py_False);
        __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
        __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py, Py_False);
        __Pyx_GIVEREF(Py_False);

        /* "EnumTypeToPy":16
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
 *             import warnings             # <<<<<<<<<<<<<<
 *             warnings.warn(
 *                 f"enum class mlx5dv_dc_type not importable from pyverbs.providers.mlx5.mlx5_enums. "
*/
        __pyx_t_6 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_warnings, 0, 0, NULL, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 16, __pyx_L6_except_error)
        __pyx_t_11 = __pyx_t_6;
        __Pyx_GOTREF(__pyx_t_11);
        __pyx_v_warnings = __pyx_t_11;
        __pyx_t_11 = 0;

        /* "EnumTypeToPy":17
 *             __pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
 *             import warnings
 *             warnings.warn(             # <<<<<<<<<<<<<<
 *                 f"enum class mlx5dv_dc_type not importable from pyverbs.providers.mlx5.mlx5_enums. "
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
*/
        __pyx_t_12 = __pyx_v_warnings;
        __Pyx_INCREF(__pyx_t_12);
        __pyx_t_13 = 0;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_mstate_global->__pyx_kp_u_enum_class_mlx5dv_dc_type_not_im};
          __pyx_t_11 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_warn, __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 17, __pyx_L6_except_error)
          __Pyx_GOTREF(__pyx_t_11);
        }
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        goto __pyx_L5_exception_handled;
      }
      goto __pyx_L6_except_error;

      /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_dc_type as __pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
*/
      __pyx_L6_except_error:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      goto __pyx_L1_error;
      __pyx_L5_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      __pyx_L9_try_end:;
    }

    /* "EnumTypeToPy":11
 * 
 * 
 *     if __pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:             # <<<<<<<<<<<<<<
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_dc_type as __pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
*/
  }

  /* "EnumTypeToPy":21
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
 *                 "does not have a .py  or .pyx file.")
 *     if __pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is False:             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_1 = (__pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py == Py_False);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":24
 * 
 * 
 *         return <int>c_val             # <<<<<<<<<<<<<<
 *     __pyx_enum = __pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyLong_From_int(((int)__pyx_v_c_val)); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 24, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":21
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
 *                 "does not have a .py  or .pyx file.")
 *     if __pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is False:             # <<<<<<<<<<<<<<
 * 
 * 
*/
  }

  /* "EnumTypeToPy":25
 * 
 *         return <int>c_val
 *     __pyx_enum = __pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py             # <<<<<<<<<<<<<<
 * 
 *     if 0:
*/
  __Pyx_INCREF(__pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
  __pyx_v___pyx_enum = __pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py;

  /* "EnumTypeToPy":27
 *     __pyx_enum = __pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 * 
 *     if 0:             # <<<<<<<<<<<<<<
 *         pass
 *     elif c_val == mlx5dv_dc_type.MLX5DV_DCTYPE_DCT:
*/
  switch (__pyx_v_c_val) {
    case MLX5DV_DCTYPE_DCT:

    /* "EnumTypeToPy":30
 *         pass
 *     elif c_val == mlx5dv_dc_type.MLX5DV_DCTYPE_DCT:
 *         return __pyx_enum.MLX5DV_DCTYPE_DCT             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_dc_type.MLX5DV_DCTYPE_DCI:
 *         return __pyx_enum.MLX5DV_DCTYPE_DCI
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_DCTYPE_DCT); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 30, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":29
 *     if 0:
 *         pass
 *     elif c_val == mlx5dv_dc_type.MLX5DV_DCTYPE_DCT:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_DCTYPE_DCT
 *     elif c_val == mlx5dv_dc_type.MLX5DV_DCTYPE_DCI:
*/
    break;
    case MLX5DV_DCTYPE_DCI:

    /* "EnumTypeToPy":32
 *         return __pyx_enum.MLX5DV_DCTYPE_DCT
 *     elif c_val == mlx5dv_dc_type.MLX5DV_DCTYPE_DCI:
 *         return __pyx_enum.MLX5DV_DCTYPE_DCI             # <<<<<<<<<<<<<<
 *     else:
 *         underlying_c_val = <int>c_val
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_DCTYPE_DCI); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 32, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":31
 *     elif c_val == mlx5dv_dc_type.MLX5DV_DCTYPE_DCT:
 *         return __pyx_enum.MLX5DV_DCTYPE_DCT
 *     elif c_val == mlx5dv_dc_type.MLX5DV_DCTYPE_DCI:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_DCTYPE_DCI
 *     else:
*/
    break;
    default:

    /* "EnumTypeToPy":34
 *         return __pyx_enum.MLX5DV_DCTYPE_DCI
 *     else:
 *         underlying_c_val = <int>c_val             # <<<<<<<<<<<<<<
 *         return __pyx_enum(underlying_c_val)
*/
    __pyx_v_underlying_c_val = ((int)__pyx_v_c_val);

    /* "EnumTypeToPy":35
 *     else:
 *         underlying_c_val = <int>c_val
 *         return __pyx_enum(underlying_c_val)             # <<<<<<<<<<<<<<
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = NULL;
    __Pyx_INCREF(__pyx_v___pyx_enum);
    __pyx_t_5 = __pyx_v___pyx_enum; 
    __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_v_underlying_c_val); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 35, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_13 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_8);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_13 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_11};
      __pyx_t_10 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (__pyx_t_13*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 35, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
    }
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;
    break;
  }

  /* "EnumTypeToPy":3
 * cdef object __pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = None
 * 
 * @cname("__Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py")             # <<<<<<<<<<<<<<
 * cdef __Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(mlx5dv_dc_type c_val):
 *     cdef object __pyx_enum
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("EnumTypeToPy.__Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_enum);
  __Pyx_XDECREF(__pyx_v_warnings);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(enum mlx5dv_crypto_login_state __pyx_v_c_val) {
  PyObject *__pyx_v___pyx_enum = 0;
  PyObject *__pyx_v_warnings = NULL;
  int __pyx_v_underlying_c_val;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  size_t __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py", 0);

  /* "EnumTypeToPy":11
 * 
 * 
 *     if __pyx_imported_enum___Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:             # <<<<<<<<<<<<<<
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_crypto_login_state as __pyx_imported_enum___Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
*/
  __pyx_t_1 = (__pyx_imported_enum___Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py == Py_None);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_crypto_login_state as __pyx_imported_enum___Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
*/
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_4);
      /*try:*/ {

        /* "EnumTypeToPy":13
 *     if __pyx_imported_enum___Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_crypto_login_state as __pyx_imported_enum___Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py             # <<<<<<<<<<<<<<
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
*/
        {
          PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_mlx5dv_crypto_login_state};
          __pyx_t_6 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5_enum, __pyx_imported_names, 1, NULL, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L4_error)
        }
        __pyx_t_5 = __pyx_t_6;
        __Pyx_GOTREF(__pyx_t_5);
        {
          PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_mlx5dv_crypto_login_state};
          __pyx_t_7 = 0; {
            __pyx_t_8 = __Pyx_ImportFrom(__pyx_t_5, __pyx_imported_names[__pyx_t_7]); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 13, __pyx_L4_error)
            __Pyx_GOTREF(__pyx_t_8);
            switch (__pyx_t_7) {
              case 0:
              __Pyx_INCREF(__pyx_t_8);
              __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
              __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_8);
              break;
              default:;
            }
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          }
        }
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

        /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_crypto_login_state as __pyx_imported_enum___Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
*/
      }
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L9_try_end;
      __pyx_L4_error:;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;

      /* "EnumTypeToPy":14
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_crypto_login_state as __pyx_imported_enum___Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:             # <<<<<<<<<<<<<<
 *             __pyx_imported_enum___Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
 *             import warnings
*/
      __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ImportError))));
      if (__pyx_t_9) {
        __Pyx_AddTraceback("EnumTypeToPy.__Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_8, &__pyx_t_10) < 0) __PYX_ERR(1, 14, __pyx_L6_except_error)
        __Pyx_XGOTREF(__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_10);

        /* "EnumTypeToPy":15
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_crypto_login_state as __pyx_imported_enum___Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"             # <<<<<<<<<<<<<<
 *             import warnings
 *             warnings.warn(
*/
        __Pyx_INCREF(Py_False);
        __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
        __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py, Py_False);
        __Pyx_GIVEREF(Py_False);

        /* "EnumTypeToPy":16
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
 *             import warnings             # <<<<<<<<<<<<<<
 *             warnings.warn(
 *                 f"enum class mlx5dv_crypto_login_state not importable from pyverbs.providers.mlx5.mlx5_enums. "
*/
        __pyx_t_6 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_warnings, 0, 0, NULL, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 16, __pyx_L6_except_error)
        __pyx_t_11 = __pyx_t_6;
        __Pyx_GOTREF(__pyx_t_11);
        __pyx_v_warnings = __pyx_t_11;
        __pyx_t_11 = 0;

        /* "EnumTypeToPy":17
 *             __pyx_imported_enum___Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
 *             import warnings
 *             warnings.warn(             # <<<<<<<<<<<<<<
 *                 f"enum class mlx5dv_crypto_login_state not importable from pyverbs.providers.mlx5.mlx5_enums. "
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
*/
        __pyx_t_12 = __pyx_v_warnings;
        __Pyx_INCREF(__pyx_t_12);
        __pyx_t_13 = 0;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_mstate_global->__pyx_kp_u_enum_class_mlx5dv_crypto_login_s};
          __pyx_t_11 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_warn, __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 17, __pyx_L6_except_error)
          __Pyx_GOTREF(__pyx_t_11);
        }
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        goto __pyx_L5_exception_handled;
      }
      goto __pyx_L6_except_error;

      /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_crypto_login_state as __pyx_imported_enum___Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
*/
      __pyx_L6_except_error:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      goto __pyx_L1_error;
      __pyx_L5_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      __pyx_L9_try_end:;
    }

    /* "EnumTypeToPy":11
 * 
 * 
 *     if __pyx_imported_enum___Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:             # <<<<<<<<<<<<<<
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_crypto_login_state as __pyx_imported_enum___Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
*/
  }

  /* "EnumTypeToPy":21
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
 *                 "does not have a .py  or .pyx file.")
 *     if __pyx_imported_enum___Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is False:             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_1 = (__pyx_imported_enum___Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py == Py_False);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":24
 * 
 * 
 *         return <int>c_val             # <<<<<<<<<<<<<<
 *     __pyx_enum = __pyx_imported_enum___Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyLong_From_int(((int)__pyx_v_c_val)); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 24, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":21
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
 *                 "does not have a .py  or .pyx file.")
 *     if __pyx_imported_enum___Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is False:             # <<<<<<<<<<<<<<
 * 
 * 
*/
  }

  /* "EnumTypeToPy":25
 * 
 *         return <int>c_val
 *     __pyx_enum = __pyx_imported_enum___Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py             # <<<<<<<<<<<<<<
 * 
 *     if 0:
*/
  __Pyx_INCREF(__pyx_imported_enum___Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
  __pyx_v___pyx_enum = __pyx_imported_enum___Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py;

  /* "EnumTypeToPy":29
 *     if 0:
 *         pass
 *     elif c_val == mlx5dv_crypto_login_state.MLX5DV_CRYPTO_LOGIN_STATE_VALID:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CRYPTO_LOGIN_STATE_VALID
 *     elif c_val == mlx5dv_crypto_login_state.MLX5DV_CRYPTO_LOGIN_STATE_NO_LOGIN:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_CRYPTO_LOGIN_STATE_VALID);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":30
 *         pass
 *     elif c_val == mlx5dv_crypto_login_state.MLX5DV_CRYPTO_LOGIN_STATE_VALID:
 *         return __pyx_enum.MLX5DV_CRYPTO_LOGIN_STATE_VALID             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_crypto_login_state.MLX5DV_CRYPTO_LOGIN_STATE_NO_LOGIN:
 *         return __pyx_enum.MLX5DV_CRYPTO_LOGIN_STATE_NO_LOGIN
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_CRYPTO_LOGIN_STATE_VALID); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 30, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":29
 *     if 0:
 *         pass
 *     elif c_val == mlx5dv_crypto_login_state.MLX5DV_CRYPTO_LOGIN_STATE_VALID:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CRYPTO_LOGIN_STATE_VALID
 *     elif c_val == mlx5dv_crypto_login_state.MLX5DV_CRYPTO_LOGIN_STATE_NO_LOGIN:
*/
  }

  /* "EnumTypeToPy":31
 *     elif c_val == mlx5dv_crypto_login_state.MLX5DV_CRYPTO_LOGIN_STATE_VALID:
 *         return __pyx_enum.MLX5DV_CRYPTO_LOGIN_STATE_VALID
 *     elif c_val == mlx5dv_crypto_login_state.MLX5DV_CRYPTO_LOGIN_STATE_NO_LOGIN:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CRYPTO_LOGIN_STATE_NO_LOGIN
 *     elif c_val == mlx5dv_crypto_login_state.MLX5DV_CRYPTO_LOGIN_STATE_INVALID:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_CRYPTO_LOGIN_STATE_NO_LOGIN);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":32
 *         return __pyx_enum.MLX5DV_CRYPTO_LOGIN_STATE_VALID
 *     elif c_val == mlx5dv_crypto_login_state.MLX5DV_CRYPTO_LOGIN_STATE_NO_LOGIN:
 *         return __pyx_enum.MLX5DV_CRYPTO_LOGIN_STATE_NO_LOGIN             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_crypto_login_state.MLX5DV_CRYPTO_LOGIN_STATE_INVALID:
 *         return __pyx_enum.MLX5DV_CRYPTO_LOGIN_STATE_INVALID
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_CRYPTO_LOGIN_STATE_NO_LOG); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 32, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":31
 *     elif c_val == mlx5dv_crypto_login_state.MLX5DV_CRYPTO_LOGIN_STATE_VALID:
 *         return __pyx_enum.MLX5DV_CRYPTO_LOGIN_STATE_VALID
 *     elif c_val == mlx5dv_crypto_login_state.MLX5DV_CRYPTO_LOGIN_STATE_NO_LOGIN:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CRYPTO_LOGIN_STATE_NO_LOGIN
 *     elif c_val == mlx5dv_crypto_login_state.MLX5DV_CRYPTO_LOGIN_STATE_INVALID:
*/
  }

  /* "EnumTypeToPy":33
 *     elif c_val == mlx5dv_crypto_login_state.MLX5DV_CRYPTO_LOGIN_STATE_NO_LOGIN:
 *         return __pyx_enum.MLX5DV_CRYPTO_LOGIN_STATE_NO_LOGIN
 *     elif c_val == mlx5dv_crypto_login_state.MLX5DV_CRYPTO_LOGIN_STATE_INVALID:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CRYPTO_LOGIN_STATE_INVALID
 *     else:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_CRYPTO_LOGIN_STATE_INVALID);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":34
 *         return __pyx_enum.MLX5DV_CRYPTO_LOGIN_STATE_NO_LOGIN
 *     elif c_val == mlx5dv_crypto_login_state.MLX5DV_CRYPTO_LOGIN_STATE_INVALID:
 *         return __pyx_enum.MLX5DV_CRYPTO_LOGIN_STATE_INVALID             # <<<<<<<<<<<<<<
 *     else:
 *         underlying_c_val = <int>c_val
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_CRYPTO_LOGIN_STATE_INVALI); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 34, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":33
 *     elif c_val == mlx5dv_crypto_login_state.MLX5DV_CRYPTO_LOGIN_STATE_NO_LOGIN:
 *         return __pyx_enum.MLX5DV_CRYPTO_LOGIN_STATE_NO_LOGIN
 *     elif c_val == mlx5dv_crypto_login_state.MLX5DV_CRYPTO_LOGIN_STATE_INVALID:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CRYPTO_LOGIN_STATE_INVALID
 *     else:
*/
  }

  /* "EnumTypeToPy":36
 *         return __pyx_enum.MLX5DV_CRYPTO_LOGIN_STATE_INVALID
 *     else:
 *         underlying_c_val = <int>c_val             # <<<<<<<<<<<<<<
 *         return __pyx_enum(underlying_c_val)
*/
  /*else*/ {
    __pyx_v_underlying_c_val = ((int)__pyx_v_c_val);

    /* "EnumTypeToPy":37
 *     else:
 *         underlying_c_val = <int>c_val
 *         return __pyx_enum(underlying_c_val)             # <<<<<<<<<<<<<<
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = NULL;
    __Pyx_INCREF(__pyx_v___pyx_enum);
    __pyx_t_5 = __pyx_v___pyx_enum; 
    __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_v_underlying_c_val); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 37, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_13 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_8);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_13 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_11};
      __pyx_t_10 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (__pyx_t_13*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 37, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
    }
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;
  }

  /* "EnumTypeToPy":3
 * cdef object __pyx_imported_enum___Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = None
 * 
 * @cname("__Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py")             # <<<<<<<<<<<<<<
 * cdef __Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(mlx5dv_crypto_login_state c_val):
 *     cdef object __pyx_enum
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("EnumTypeToPy.__Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_enum);
  __Pyx_XDECREF(__pyx_v_warnings);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "FromPyStructUtility":11
 *     int __Pyx_RaiseUnexpectedTypeError(const char *expected, object obj) except 0
 * 
 * @cname("__pyx_convert__from_py_struct__mlx5dv_dci_streams")             # <<<<<<<<<<<<<<
 * cdef struct_type __pyx_convert__from_py_struct__mlx5dv_dci_streams(obj) except *:
 *     cdef struct_type result
*/

static struct mlx5dv_dci_streams __pyx_convert__from_py_struct__mlx5dv_dci_streams(PyObject *__pyx_v_obj) {
  struct mlx5dv_dci_streams __pyx_v_result;
  PyObject *__pyx_v_value = NULL;
  struct mlx5dv_dci_streams __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  size_t __pyx_t_11;
  uint8_t __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_convert__from_py_struct__mlx5dv_dci_streams", 0);

  /* "FromPyStructUtility":14
 * cdef struct_type __pyx_convert__from_py_struct__mlx5dv_dci_streams(obj) except *:
 *     cdef struct_type result
 *     if not PyMapping_Check(obj):             # <<<<<<<<<<<<<<
 *         __Pyx_RaiseUnexpectedTypeError(b"a mapping", obj)
 * 
*/
  __pyx_t_1 = (!PyMapping_Check(__pyx_v_obj));
  if (__pyx_t_1) {

    /* "FromPyStructUtility":15
 *     cdef struct_type result
 *     if not PyMapping_Check(obj):
 *         __Pyx_RaiseUnexpectedTypeError(b"a mapping", obj)             # <<<<<<<<<<<<<<
 * 
 *     try:
*/
    __pyx_t_2 = __Pyx_RaiseUnexpectedTypeError(__pyx_k_a_mapping, __pyx_v_obj); if (unlikely(__pyx_t_2 == ((int)0))) __PYX_ERR(1, 15, __pyx_L1_error)

    /* "FromPyStructUtility":14
 * cdef struct_type __pyx_convert__from_py_struct__mlx5dv_dci_streams(obj) except *:
 *     cdef struct_type result
 *     if not PyMapping_Check(obj):             # <<<<<<<<<<<<<<
 *         __Pyx_RaiseUnexpectedTypeError(b"a mapping", obj)
 * 
*/
  }

  /* "FromPyStructUtility":17
 *         __Pyx_RaiseUnexpectedTypeError(b"a mapping", obj)
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         value = obj['log_num_concurent']
 *     except KeyError:
*/
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_5);
    /*try:*/ {

      /* "FromPyStructUtility":18
 * 
 *     try:
 *         value = obj['log_num_concurent']             # <<<<<<<<<<<<<<
 *     except KeyError:
 *         raise ValueError("No value specified for struct attribute 'log_num_concurent'")
*/
      __pyx_t_6 = __Pyx_PyObject_Dict_GetItem(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_log_num_concurent); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 18, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_v_value = __pyx_t_6;
      __pyx_t_6 = 0;

      /* "FromPyStructUtility":17
 *         __Pyx_RaiseUnexpectedTypeError(b"a mapping", obj)
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         value = obj['log_num_concurent']
 *     except KeyError:
*/
    }
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    goto __pyx_L9_try_end;
    __pyx_L4_error:;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "FromPyStructUtility":19
 *     try:
 *         value = obj['log_num_concurent']
 *     except KeyError:             # <<<<<<<<<<<<<<
 *         raise ValueError("No value specified for struct attribute 'log_num_concurent'")
 *     result.log_num_concurent = value
*/
    __pyx_t_2 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_KeyError))));
    if (__pyx_t_2) {
      __Pyx_AddTraceback("FromPyStructUtility.__pyx_convert__from_py_struct__mlx5dv_dci_streams", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(1, 19, __pyx_L6_except_error)
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);

      /* "FromPyStructUtility":20
 *         value = obj['log_num_concurent']
 *     except KeyError:
 *         raise ValueError("No value specified for struct attribute 'log_num_concurent'")             # <<<<<<<<<<<<<<
 *     result.log_num_concurent = value
 *     try:
*/
      __pyx_t_10 = NULL;
      __pyx_t_11 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_mstate_global->__pyx_kp_u_No_value_specified_for_struct_at};
        __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 20, __pyx_L6_except_error)
        __Pyx_GOTREF(__pyx_t_9);
      }
      __Pyx_Raise(__pyx_t_9, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __PYX_ERR(1, 20, __pyx_L6_except_error)
    }
    goto __pyx_L6_except_error;

    /* "FromPyStructUtility":17
 *         __Pyx_RaiseUnexpectedTypeError(b"a mapping", obj)
 * 
 *     try:             # <<<<<<<<<<<<<<
 *         value = obj['log_num_concurent']
 *     except KeyError:
*/
    __pyx_L6_except_error:;
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
    goto __pyx_L1_error;
    __pyx_L9_try_end:;
  }

  /* "FromPyStructUtility":21
 *     except KeyError:
 *         raise ValueError("No value specified for struct attribute 'log_num_concurent'")
 *     result.log_num_concurent = value             # <<<<<<<<<<<<<<
 *     try:
 *         value = obj['log_num_errored']
*/
  __pyx_t_12 = __Pyx_PyLong_As_uint8_t(__pyx_v_value); if (unlikely((__pyx_t_12 == ((uint8_t)-1)) && PyErr_Occurred())) __PYX_ERR(1, 21, __pyx_L1_error)
  __pyx_v_result.log_num_concurent = __pyx_t_12;

  /* "FromPyStructUtility":22
 *         raise ValueError("No value specified for struct attribute 'log_num_concurent'")
 *     result.log_num_concurent = value
 *     try:             # <<<<<<<<<<<<<<
 *         value = obj['log_num_errored']
 *     except KeyError:
*/
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_5);
    __Pyx_XGOTREF(__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "FromPyStructUtility":23
 *     result.log_num_concurent = value
 *     try:
 *         value = obj['log_num_errored']             # <<<<<<<<<<<<<<
 *     except KeyError:
 *         raise ValueError("No value specified for struct attribute 'log_num_errored'")
*/
      __pyx_t_8 = __Pyx_PyObject_Dict_GetItem(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_log_num_errored); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 23, __pyx_L12_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_8);
      __pyx_t_8 = 0;

      /* "FromPyStructUtility":22
 *         raise ValueError("No value specified for struct attribute 'log_num_concurent'")
 *     result.log_num_concurent = value
 *     try:             # <<<<<<<<<<<<<<
 *         value = obj['log_num_errored']
 *     except KeyError:
*/
    }
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L17_try_end;
    __pyx_L12_error:;
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "FromPyStructUtility":24
 *     try:
 *         value = obj['log_num_errored']
 *     except KeyError:             # <<<<<<<<<<<<<<
 *         raise ValueError("No value specified for struct attribute 'log_num_errored'")
 *     result.log_num_errored = value
*/
    __pyx_t_2 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_KeyError))));
    if (__pyx_t_2) {
      __Pyx_AddTraceback("FromPyStructUtility.__pyx_convert__from_py_struct__mlx5dv_dci_streams", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6) < 0) __PYX_ERR(1, 24, __pyx_L14_except_error)
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_6);

      /* "FromPyStructUtility":25
 *         value = obj['log_num_errored']
 *     except KeyError:
 *         raise ValueError("No value specified for struct attribute 'log_num_errored'")             # <<<<<<<<<<<<<<
 *     result.log_num_errored = value
 *     return result
*/
      __pyx_t_10 = NULL;
      __pyx_t_11 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_mstate_global->__pyx_kp_u_No_value_specified_for_struct_at_2};
        __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 25, __pyx_L14_except_error)
        __Pyx_GOTREF(__pyx_t_9);
      }
      __Pyx_Raise(__pyx_t_9, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __PYX_ERR(1, 25, __pyx_L14_except_error)
    }
    goto __pyx_L14_except_error;

    /* "FromPyStructUtility":22
 *         raise ValueError("No value specified for struct attribute 'log_num_concurent'")
 *     result.log_num_concurent = value
 *     try:             # <<<<<<<<<<<<<<
 *         value = obj['log_num_errored']
 *     except KeyError:
*/
    __pyx_L14_except_error:;
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_4, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L17_try_end:;
  }

  /* "FromPyStructUtility":26
 *     except KeyError:
 *         raise ValueError("No value specified for struct attribute 'log_num_errored'")
 *     result.log_num_errored = value             # <<<<<<<<<<<<<<
 *     return result
 * 
*/
  __pyx_t_12 = __Pyx_PyLong_As_uint8_t(__pyx_v_value); if (unlikely((__pyx_t_12 == ((uint8_t)-1)) && PyErr_Occurred())) __PYX_ERR(1, 26, __pyx_L1_error)
  __pyx_v_result.log_num_errored = __pyx_t_12;

  /* "FromPyStructUtility":27
 *         raise ValueError("No value specified for struct attribute 'log_num_errored'")
 *     result.log_num_errored = value
 *     return result             # <<<<<<<<<<<<<<
 * 
*/
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  /* "FromPyStructUtility":11
 *     int __Pyx_RaiseUnexpectedTypeError(const char *expected, object obj) except 0
 * 
 * @cname("__pyx_convert__from_py_struct__mlx5dv_dci_streams")             # <<<<<<<<<<<<<<
 * cdef struct_type __pyx_convert__from_py_struct__mlx5dv_dci_streams(obj) except *:
 *     cdef struct_type result
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("FromPyStructUtility.__pyx_convert__from_py_struct__mlx5dv_dci_streams", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_pretend_to_initialize(&__pyx_r);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "EnumTypeToPy":3
 * cdef object __pyx_imported_enum___Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = None
 * 
 * @cname("__Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py")             # <<<<<<<<<<<<<<
 * cdef __Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(mlx5dv_qp_init_attr_mask c_val):
 *     cdef object __pyx_enum
*/

static PyObject *__Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(enum mlx5dv_qp_init_attr_mask __pyx_v_c_val) {
  PyObject *__pyx_v___pyx_enum = 0;
  PyObject *__pyx_v_warnings = NULL;
  int __pyx_v_underlying_c_val;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  size_t __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py", 0);

  /* "EnumTypeToPy":11
 * 
 * 
 *     if __pyx_imported_enum___Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:             # <<<<<<<<<<<<<<
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_qp_init_attr_mask as __pyx_imported_enum___Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
*/
  __pyx_t_1 = (__pyx_imported_enum___Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py == Py_None);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_qp_init_attr_mask as __pyx_imported_enum___Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
*/
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_4);
      /*try:*/ {

        /* "EnumTypeToPy":13
 *     if __pyx_imported_enum___Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_qp_init_attr_mask as __pyx_imported_enum___Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py             # <<<<<<<<<<<<<<
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
*/
        {
          PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_mlx5dv_qp_init_attr_mask};
          __pyx_t_6 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5_enum, __pyx_imported_names, 1, NULL, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L4_error)
        }
        __pyx_t_5 = __pyx_t_6;
        __Pyx_GOTREF(__pyx_t_5);
        {
          PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_mlx5dv_qp_init_attr_mask};
          __pyx_t_7 = 0; {
            __pyx_t_8 = __Pyx_ImportFrom(__pyx_t_5, __pyx_imported_names[__pyx_t_7]); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 13, __pyx_L4_error)
            __Pyx_GOTREF(__pyx_t_8);
            switch (__pyx_t_7) {
              case 0:
              __Pyx_INCREF(__pyx_t_8);
              __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
              __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_8);
              break;
              default:;
            }
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          }
        }
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

        /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_qp_init_attr_mask as __pyx_imported_enum___Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
*/
      }
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L9_try_end;
      __pyx_L4_error:;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;

      /* "EnumTypeToPy":14
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_qp_init_attr_mask as __pyx_imported_enum___Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:             # <<<<<<<<<<<<<<
 *             __pyx_imported_enum___Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
 *             import warnings
*/
      __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ImportError))));
      if (__pyx_t_9) {
        __Pyx_AddTraceback("EnumTypeToPy.__Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_8, &__pyx_t_10) < 0) __PYX_ERR(1, 14, __pyx_L6_except_error)
        __Pyx_XGOTREF(__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_10);

        /* "EnumTypeToPy":15
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_qp_init_attr_mask as __pyx_imported_enum___Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"             # <<<<<<<<<<<<<<
 *             import warnings
 *             warnings.warn(
*/
        __Pyx_INCREF(Py_False);
        __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
        __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py, Py_False);
        __Pyx_GIVEREF(Py_False);

        /* "EnumTypeToPy":16
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
 *             import warnings             # <<<<<<<<<<<<<<
 *             warnings.warn(
 *                 f"enum class mlx5dv_qp_init_attr_mask not importable from pyverbs.providers.mlx5.mlx5_enums. "
*/
        __pyx_t_6 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_warnings, 0, 0, NULL, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 16, __pyx_L6_except_error)
        __pyx_t_11 = __pyx_t_6;
        __Pyx_GOTREF(__pyx_t_11);
        __pyx_v_warnings = __pyx_t_11;
        __pyx_t_11 = 0;

        /* "EnumTypeToPy":17
 *             __pyx_imported_enum___Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
 *             import warnings
 *             warnings.warn(             # <<<<<<<<<<<<<<
 *                 f"enum class mlx5dv_qp_init_attr_mask not importable from pyverbs.providers.mlx5.mlx5_enums. "
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
*/
        __pyx_t_12 = __pyx_v_warnings;
        __Pyx_INCREF(__pyx_t_12);
        __pyx_t_13 = 0;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_mstate_global->__pyx_kp_u_enum_class_mlx5dv_qp_init_attr_m};
          __pyx_t_11 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_warn, __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 17, __pyx_L6_except_error)
          __Pyx_GOTREF(__pyx_t_11);
        }
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        goto __pyx_L5_exception_handled;
      }
      goto __pyx_L6_except_error;

      /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_qp_init_attr_mask as __pyx_imported_enum___Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
*/
      __pyx_L6_except_error:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      goto __pyx_L1_error;
      __pyx_L5_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      __pyx_L9_try_end:;
    }

    /* "EnumTypeToPy":11
 * 
 * 
 *     if __pyx_imported_enum___Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:             # <<<<<<<<<<<<<<
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_qp_init_attr_mask as __pyx_imported_enum___Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
*/
  }

  /* "EnumTypeToPy":21
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
 *                 "does not have a .py  or .pyx file.")
 *     if __pyx_imported_enum___Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is False:             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_1 = (__pyx_imported_enum___Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py == Py_False);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":24
 * 
 * 
 *         return <int>c_val             # <<<<<<<<<<<<<<
 *     __pyx_enum = __pyx_imported_enum___Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyLong_From_int(((int)__pyx_v_c_val)); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 24, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":21
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
 *                 "does not have a .py  or .pyx file.")
 *     if __pyx_imported_enum___Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is False:             # <<<<<<<<<<<<<<
 * 
 * 
*/
  }

  /* "EnumTypeToPy":25
 * 
 *         return <int>c_val
 *     __pyx_enum = __pyx_imported_enum___Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py             # <<<<<<<<<<<<<<
 * 
 *     if 0:
*/
  __Pyx_INCREF(__pyx_imported_enum___Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
  __pyx_v___pyx_enum = __pyx_imported_enum___Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py;

  /* "EnumTypeToPy":29
 *     if 0:
 *         pass
 *     elif c_val == mlx5dv_qp_init_attr_mask.MLX5DV_QP_INIT_ATTR_MASK_QP_CREATE_FLAGS:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_QP_INIT_ATTR_MASK_QP_CREATE_FLAGS
 *     elif c_val == mlx5dv_qp_init_attr_mask.MLX5DV_QP_INIT_ATTR_MASK_DC:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_QP_INIT_ATTR_MASK_QP_CREATE_FLAGS);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":30
 *         pass
 *     elif c_val == mlx5dv_qp_init_attr_mask.MLX5DV_QP_INIT_ATTR_MASK_QP_CREATE_FLAGS:
 *         return __pyx_enum.MLX5DV_QP_INIT_ATTR_MASK_QP_CREATE_FLAGS             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_qp_init_attr_mask.MLX5DV_QP_INIT_ATTR_MASK_DC:
 *         return __pyx_enum.MLX5DV_QP_INIT_ATTR_MASK_DC
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_QP_INIT_ATTR_MASK_QP_CREA); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 30, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":29
 *     if 0:
 *         pass
 *     elif c_val == mlx5dv_qp_init_attr_mask.MLX5DV_QP_INIT_ATTR_MASK_QP_CREATE_FLAGS:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_QP_INIT_ATTR_MASK_QP_CREATE_FLAGS
 *     elif c_val == mlx5dv_qp_init_attr_mask.MLX5DV_QP_INIT_ATTR_MASK_DC:
*/
  }

  /* "EnumTypeToPy":31
 *     elif c_val == mlx5dv_qp_init_attr_mask.MLX5DV_QP_INIT_ATTR_MASK_QP_CREATE_FLAGS:
 *         return __pyx_enum.MLX5DV_QP_INIT_ATTR_MASK_QP_CREATE_FLAGS
 *     elif c_val == mlx5dv_qp_init_attr_mask.MLX5DV_QP_INIT_ATTR_MASK_DC:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_QP_INIT_ATTR_MASK_DC
 *     elif c_val == mlx5dv_qp_init_attr_mask.MLX5DV_QP_INIT_ATTR_MASK_SEND_OPS_FLAGS:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_QP_INIT_ATTR_MASK_DC);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":32
 *         return __pyx_enum.MLX5DV_QP_INIT_ATTR_MASK_QP_CREATE_FLAGS
 *     elif c_val == mlx5dv_qp_init_attr_mask.MLX5DV_QP_INIT_ATTR_MASK_DC:
 *         return __pyx_enum.MLX5DV_QP_INIT_ATTR_MASK_DC             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_qp_init_attr_mask.MLX5DV_QP_INIT_ATTR_MASK_SEND_OPS_FLAGS:
 *         return __pyx_enum.MLX5DV_QP_INIT_ATTR_MASK_SEND_OPS_FLAGS
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_QP_INIT_ATTR_MASK_DC); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 32, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":31
 *     elif c_val == mlx5dv_qp_init_attr_mask.MLX5DV_QP_INIT_ATTR_MASK_QP_CREATE_FLAGS:
 *         return __pyx_enum.MLX5DV_QP_INIT_ATTR_MASK_QP_CREATE_FLAGS
 *     elif c_val == mlx5dv_qp_init_attr_mask.MLX5DV_QP_INIT_ATTR_MASK_DC:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_QP_INIT_ATTR_MASK_DC
 *     elif c_val == mlx5dv_qp_init_attr_mask.MLX5DV_QP_INIT_ATTR_MASK_SEND_OPS_FLAGS:
*/
  }

  /* "EnumTypeToPy":33
 *     elif c_val == mlx5dv_qp_init_attr_mask.MLX5DV_QP_INIT_ATTR_MASK_DC:
 *         return __pyx_enum.MLX5DV_QP_INIT_ATTR_MASK_DC
 *     elif c_val == mlx5dv_qp_init_attr_mask.MLX5DV_QP_INIT_ATTR_MASK_SEND_OPS_FLAGS:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_QP_INIT_ATTR_MASK_SEND_OPS_FLAGS
 *     elif c_val == mlx5dv_qp_init_attr_mask.MLX5DV_QP_INIT_ATTR_MASK_DCI_STREAMS:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_QP_INIT_ATTR_MASK_SEND_OPS_FLAGS);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":34
 *         return __pyx_enum.MLX5DV_QP_INIT_ATTR_MASK_DC
 *     elif c_val == mlx5dv_qp_init_attr_mask.MLX5DV_QP_INIT_ATTR_MASK_SEND_OPS_FLAGS:
 *         return __pyx_enum.MLX5DV_QP_INIT_ATTR_MASK_SEND_OPS_FLAGS             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_qp_init_attr_mask.MLX5DV_QP_INIT_ATTR_MASK_DCI_STREAMS:
 *         return __pyx_enum.MLX5DV_QP_INIT_ATTR_MASK_DCI_STREAMS
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_QP_INIT_ATTR_MASK_SEND_OP); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 34, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":33
 *     elif c_val == mlx5dv_qp_init_attr_mask.MLX5DV_QP_INIT_ATTR_MASK_DC:
 *         return __pyx_enum.MLX5DV_QP_INIT_ATTR_MASK_DC
 *     elif c_val == mlx5dv_qp_init_attr_mask.MLX5DV_QP_INIT_ATTR_MASK_SEND_OPS_FLAGS:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_QP_INIT_ATTR_MASK_SEND_OPS_FLAGS
 *     elif c_val == mlx5dv_qp_init_attr_mask.MLX5DV_QP_INIT_ATTR_MASK_DCI_STREAMS:
*/
  }

  /* "EnumTypeToPy":35
 *     elif c_val == mlx5dv_qp_init_attr_mask.MLX5DV_QP_INIT_ATTR_MASK_SEND_OPS_FLAGS:
 *         return __pyx_enum.MLX5DV_QP_INIT_ATTR_MASK_SEND_OPS_FLAGS
 *     elif c_val == mlx5dv_qp_init_attr_mask.MLX5DV_QP_INIT_ATTR_MASK_DCI_STREAMS:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_QP_INIT_ATTR_MASK_DCI_STREAMS
 *     else:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_QP_INIT_ATTR_MASK_DCI_STREAMS);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":36
 *         return __pyx_enum.MLX5DV_QP_INIT_ATTR_MASK_SEND_OPS_FLAGS
 *     elif c_val == mlx5dv_qp_init_attr_mask.MLX5DV_QP_INIT_ATTR_MASK_DCI_STREAMS:
 *         return __pyx_enum.MLX5DV_QP_INIT_ATTR_MASK_DCI_STREAMS             # <<<<<<<<<<<<<<
 *     else:
 *         underlying_c_val = <int>c_val
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_QP_INIT_ATTR_MASK_DCI_STR); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 36, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":35
 *     elif c_val == mlx5dv_qp_init_attr_mask.MLX5DV_QP_INIT_ATTR_MASK_SEND_OPS_FLAGS:
 *         return __pyx_enum.MLX5DV_QP_INIT_ATTR_MASK_SEND_OPS_FLAGS
 *     elif c_val == mlx5dv_qp_init_attr_mask.MLX5DV_QP_INIT_ATTR_MASK_DCI_STREAMS:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_QP_INIT_ATTR_MASK_DCI_STREAMS
 *     else:
*/
  }

  /* "EnumTypeToPy":38
 *         return __pyx_enum.MLX5DV_QP_INIT_ATTR_MASK_DCI_STREAMS
 *     else:
 *         underlying_c_val = <int>c_val             # <<<<<<<<<<<<<<
 *         return __pyx_enum(underlying_c_val)
*/
  /*else*/ {
    __pyx_v_underlying_c_val = ((int)__pyx_v_c_val);

    /* "EnumTypeToPy":39
 *     else:
 *         underlying_c_val = <int>c_val
 *         return __pyx_enum(underlying_c_val)             # <<<<<<<<<<<<<<
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = NULL;
    __Pyx_INCREF(__pyx_v___pyx_enum);
    __pyx_t_5 = __pyx_v___pyx_enum; 
    __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_v_underlying_c_val); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 39, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_13 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_8);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_13 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_11};
      __pyx_t_10 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (__pyx_t_13*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 39, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
    }
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;
  }

  /* "EnumTypeToPy":3
 * cdef object __pyx_imported_enum___Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = None
 * 
 * @cname("__Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py")             # <<<<<<<<<<<<<<
 * cdef __Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(mlx5dv_qp_init_attr_mask c_val):
 *     cdef object __pyx_enum
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("EnumTypeToPy.__Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_enum);
  __Pyx_XDECREF(__pyx_v_warnings);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py(enum ibv_qp_attr_mask __pyx_v_c_val) {
  PyObject *__pyx_v___pyx_enum = 0;
  PyObject *__pyx_v_warnings = NULL;
  int __pyx_v_underlying_c_val;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  size_t __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py", 0);

  /* "EnumTypeToPy":11
 * 
 * 
 *     if __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py is None:             # <<<<<<<<<<<<<<
 *         try:
 *             from pyverbs.libibverbs_enums import ibv_qp_attr_mask as __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py
*/
  __pyx_t_1 = (__pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py == Py_None);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.libibverbs_enums import ibv_qp_attr_mask as __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py
 *         except ImportError:
*/
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_4);
      /*try:*/ {

        /* "EnumTypeToPy":13
 *     if __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py is None:
 *         try:
 *             from pyverbs.libibverbs_enums import ibv_qp_attr_mask as __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py             # <<<<<<<<<<<<<<
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py = False  # False indicates "don't try again"
*/
        {
          PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_ibv_qp_attr_mask};
          __pyx_t_6 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pyverbs_libibverbs_enums, __pyx_imported_names, 1, NULL, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L4_error)
        }
        __pyx_t_5 = __pyx_t_6;
        __Pyx_GOTREF(__pyx_t_5);
        {
          PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_ibv_qp_attr_mask};
          __pyx_t_7 = 0; {
            __pyx_t_8 = __Pyx_ImportFrom(__pyx_t_5, __pyx_imported_names[__pyx_t_7]); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 13, __pyx_L4_error)
            __Pyx_GOTREF(__pyx_t_8);
            switch (__pyx_t_7) {
              case 0:
              __Pyx_INCREF(__pyx_t_8);
              __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py);
              __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_8);
              break;
              default:;
            }
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          }
        }
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

        /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.libibverbs_enums import ibv_qp_attr_mask as __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py
 *         except ImportError:
*/
      }
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L9_try_end;
      __pyx_L4_error:;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;

      /* "EnumTypeToPy":14
 *         try:
 *             from pyverbs.libibverbs_enums import ibv_qp_attr_mask as __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py
 *         except ImportError:             # <<<<<<<<<<<<<<
 *             __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py = False  # False indicates "don't try again"
 *             import warnings
*/
      __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ImportError))));
      if (__pyx_t_9) {
        __Pyx_AddTraceback("EnumTypeToPy.__Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_8, &__pyx_t_10) < 0) __PYX_ERR(1, 14, __pyx_L6_except_error)
        __Pyx_XGOTREF(__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_10);

        /* "EnumTypeToPy":15
 *             from pyverbs.libibverbs_enums import ibv_qp_attr_mask as __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py = False  # False indicates "don't try again"             # <<<<<<<<<<<<<<
 *             import warnings
 *             warnings.warn(
*/
        __Pyx_INCREF(Py_False);
        __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py);
        __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py, Py_False);
        __Pyx_GIVEREF(Py_False);

        /* "EnumTypeToPy":16
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py = False  # False indicates "don't try again"
 *             import warnings             # <<<<<<<<<<<<<<
 *             warnings.warn(
 *                 f"enum class ibv_qp_attr_mask not importable from pyverbs.libibverbs_enums. "
*/
        __pyx_t_6 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_warnings, 0, 0, NULL, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 16, __pyx_L6_except_error)
        __pyx_t_11 = __pyx_t_6;
        __Pyx_GOTREF(__pyx_t_11);
        __pyx_v_warnings = __pyx_t_11;
        __pyx_t_11 = 0;

        /* "EnumTypeToPy":17
 *             __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py = False  # False indicates "don't try again"
 *             import warnings
 *             warnings.warn(             # <<<<<<<<<<<<<<
 *                 f"enum class ibv_qp_attr_mask not importable from pyverbs.libibverbs_enums. "
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
*/
        __pyx_t_12 = __pyx_v_warnings;
        __Pyx_INCREF(__pyx_t_12);
        __pyx_t_13 = 0;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_mstate_global->__pyx_kp_u_enum_class_ibv_qp_attr_mask_not};
          __pyx_t_11 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_warn, __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 17, __pyx_L6_except_error)
          __Pyx_GOTREF(__pyx_t_11);
        }
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        goto __pyx_L5_exception_handled;
      }
      goto __pyx_L6_except_error;

      /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.libibverbs_enums import ibv_qp_attr_mask as __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py
 *         except ImportError:
*/
      __pyx_L6_except_error:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      goto __pyx_L1_error;
      __pyx_L5_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      __pyx_L9_try_end:;
    }

    /* "EnumTypeToPy":11
 * 
 * 
 *     if __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py is None:             # <<<<<<<<<<<<<<
 *         try:
 *             from pyverbs.libibverbs_enums import ibv_qp_attr_mask as __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py
*/
  }

  /* "EnumTypeToPy":21
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
 *                 "does not have a .py  or .pyx file.")
 *     if __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py is False:             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_1 = (__pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py == Py_False);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":24
 * 
 * 
 *         return <int>c_val             # <<<<<<<<<<<<<<
 *     __pyx_enum = __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyLong_From_int(((int)__pyx_v_c_val)); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 24, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":21
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
 *                 "does not have a .py  or .pyx file.")
 *     if __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py is False:             # <<<<<<<<<<<<<<
 * 
 * 
*/
  }

  /* "EnumTypeToPy":25
 * 
 *         return <int>c_val
 *     __pyx_enum = __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py             # <<<<<<<<<<<<<<
 * 
 *     if 0:
*/
  __Pyx_INCREF(__pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py);
  __pyx_v___pyx_enum = __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py;

  /* "EnumTypeToPy":29
 *     if 0:
 *         pass
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_STATE:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_STATE
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_CUR_STATE:
*/
  __pyx_t_1 = (__pyx_v_c_val == IBV_QP_STATE);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":30
 *         pass
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_STATE:
 *         return __pyx_enum.IBV_QP_STATE             # <<<<<<<<<<<<<<
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_CUR_STATE:
 *         return __pyx_enum.IBV_QP_CUR_STATE
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_IBV_QP_STATE); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 30, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":29
 *     if 0:
 *         pass
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_STATE:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_STATE
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_CUR_STATE:
*/
  }

  /* "EnumTypeToPy":31
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_STATE:
 *         return __pyx_enum.IBV_QP_STATE
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_CUR_STATE:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_CUR_STATE
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_EN_SQD_ASYNC_NOTIFY:
*/
  __pyx_t_1 = (__pyx_v_c_val == IBV_QP_CUR_STATE);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":32
 *         return __pyx_enum.IBV_QP_STATE
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_CUR_STATE:
 *         return __pyx_enum.IBV_QP_CUR_STATE             # <<<<<<<<<<<<<<
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_EN_SQD_ASYNC_NOTIFY:
 *         return __pyx_enum.IBV_QP_EN_SQD_ASYNC_NOTIFY
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_IBV_QP_CUR_STATE); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 32, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":31
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_STATE:
 *         return __pyx_enum.IBV_QP_STATE
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_CUR_STATE:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_CUR_STATE
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_EN_SQD_ASYNC_NOTIFY:
*/
  }

  /* "EnumTypeToPy":33
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_CUR_STATE:
 *         return __pyx_enum.IBV_QP_CUR_STATE
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_EN_SQD_ASYNC_NOTIFY:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_EN_SQD_ASYNC_NOTIFY
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_ACCESS_FLAGS:
*/
  __pyx_t_1 = (__pyx_v_c_val == IBV_QP_EN_SQD_ASYNC_NOTIFY);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":34
 *         return __pyx_enum.IBV_QP_CUR_STATE
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_EN_SQD_ASYNC_NOTIFY:
 *         return __pyx_enum.IBV_QP_EN_SQD_ASYNC_NOTIFY             # <<<<<<<<<<<<<<
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_ACCESS_FLAGS:
 *         return __pyx_enum.IBV_QP_ACCESS_FLAGS
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_IBV_QP_EN_SQD_ASYNC_NOTIFY); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 34, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":33
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_CUR_STATE:
 *         return __pyx_enum.IBV_QP_CUR_STATE
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_EN_SQD_ASYNC_NOTIFY:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_EN_SQD_ASYNC_NOTIFY
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_ACCESS_FLAGS:
*/
  }

  /* "EnumTypeToPy":35
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_EN_SQD_ASYNC_NOTIFY:
 *         return __pyx_enum.IBV_QP_EN_SQD_ASYNC_NOTIFY
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_ACCESS_FLAGS:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_ACCESS_FLAGS
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_PKEY_INDEX:
*/
  __pyx_t_1 = (__pyx_v_c_val == IBV_QP_ACCESS_FLAGS);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":36
 *         return __pyx_enum.IBV_QP_EN_SQD_ASYNC_NOTIFY
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_ACCESS_FLAGS:
 *         return __pyx_enum.IBV_QP_ACCESS_FLAGS             # <<<<<<<<<<<<<<
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_PKEY_INDEX:
 *         return __pyx_enum.IBV_QP_PKEY_INDEX
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_IBV_QP_ACCESS_FLAGS); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 36, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":35
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_EN_SQD_ASYNC_NOTIFY:
 *         return __pyx_enum.IBV_QP_EN_SQD_ASYNC_NOTIFY
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_ACCESS_FLAGS:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_ACCESS_FLAGS
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_PKEY_INDEX:
*/
  }

  /* "EnumTypeToPy":37
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_ACCESS_FLAGS:
 *         return __pyx_enum.IBV_QP_ACCESS_FLAGS
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_PKEY_INDEX:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_PKEY_INDEX
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_PORT:
*/
  __pyx_t_1 = (__pyx_v_c_val == IBV_QP_PKEY_INDEX);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":38
 *         return __pyx_enum.IBV_QP_ACCESS_FLAGS
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_PKEY_INDEX:
 *         return __pyx_enum.IBV_QP_PKEY_INDEX             # <<<<<<<<<<<<<<
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_PORT:
 *         return __pyx_enum.IBV_QP_PORT
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_IBV_QP_PKEY_INDEX); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 38, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":37
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_ACCESS_FLAGS:
 *         return __pyx_enum.IBV_QP_ACCESS_FLAGS
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_PKEY_INDEX:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_PKEY_INDEX
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_PORT:
*/
  }

  /* "EnumTypeToPy":39
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_PKEY_INDEX:
 *         return __pyx_enum.IBV_QP_PKEY_INDEX
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_PORT:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_PORT
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_QKEY:
*/
  __pyx_t_1 = (__pyx_v_c_val == IBV_QP_PORT);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":40
 *         return __pyx_enum.IBV_QP_PKEY_INDEX
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_PORT:
 *         return __pyx_enum.IBV_QP_PORT             # <<<<<<<<<<<<<<
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_QKEY:
 *         return __pyx_enum.IBV_QP_QKEY
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_IBV_QP_PORT); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 40, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":39
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_PKEY_INDEX:
 *         return __pyx_enum.IBV_QP_PKEY_INDEX
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_PORT:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_PORT
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_QKEY:
*/
  }

  /* "EnumTypeToPy":41
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_PORT:
 *         return __pyx_enum.IBV_QP_PORT
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_QKEY:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_QKEY
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_AV:
*/
  __pyx_t_1 = (__pyx_v_c_val == IBV_QP_QKEY);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":42
 *         return __pyx_enum.IBV_QP_PORT
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_QKEY:
 *         return __pyx_enum.IBV_QP_QKEY             # <<<<<<<<<<<<<<
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_AV:
 *         return __pyx_enum.IBV_QP_AV
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_IBV_QP_QKEY); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 42, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":41
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_PORT:
 *         return __pyx_enum.IBV_QP_PORT
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_QKEY:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_QKEY
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_AV:
*/
  }

  /* "EnumTypeToPy":43
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_QKEY:
 *         return __pyx_enum.IBV_QP_QKEY
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_AV:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_AV
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_PATH_MTU:
*/
  __pyx_t_1 = (__pyx_v_c_val == IBV_QP_AV);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":44
 *         return __pyx_enum.IBV_QP_QKEY
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_AV:
 *         return __pyx_enum.IBV_QP_AV             # <<<<<<<<<<<<<<
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_PATH_MTU:
 *         return __pyx_enum.IBV_QP_PATH_MTU
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_IBV_QP_AV); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 44, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":43
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_QKEY:
 *         return __pyx_enum.IBV_QP_QKEY
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_AV:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_AV
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_PATH_MTU:
*/
  }

  /* "EnumTypeToPy":45
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_AV:
 *         return __pyx_enum.IBV_QP_AV
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_PATH_MTU:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_PATH_MTU
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_TIMEOUT:
*/
  __pyx_t_1 = (__pyx_v_c_val == IBV_QP_PATH_MTU);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":46
 *         return __pyx_enum.IBV_QP_AV
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_PATH_MTU:
 *         return __pyx_enum.IBV_QP_PATH_MTU             # <<<<<<<<<<<<<<
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_TIMEOUT:
 *         return __pyx_enum.IBV_QP_TIMEOUT
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_IBV_QP_PATH_MTU); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 46, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":45
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_AV:
 *         return __pyx_enum.IBV_QP_AV
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_PATH_MTU:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_PATH_MTU
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_TIMEOUT:
*/
  }

  /* "EnumTypeToPy":47
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_PATH_MTU:
 *         return __pyx_enum.IBV_QP_PATH_MTU
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_TIMEOUT:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_TIMEOUT
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_RETRY_CNT:
*/
  __pyx_t_1 = (__pyx_v_c_val == IBV_QP_TIMEOUT);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":48
 *         return __pyx_enum.IBV_QP_PATH_MTU
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_TIMEOUT:
 *         return __pyx_enum.IBV_QP_TIMEOUT             # <<<<<<<<<<<<<<
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_RETRY_CNT:
 *         return __pyx_enum.IBV_QP_RETRY_CNT
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_IBV_QP_TIMEOUT); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 48, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":47
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_PATH_MTU:
 *         return __pyx_enum.IBV_QP_PATH_MTU
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_TIMEOUT:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_TIMEOUT
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_RETRY_CNT:
*/
  }

  /* "EnumTypeToPy":49
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_TIMEOUT:
 *         return __pyx_enum.IBV_QP_TIMEOUT
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_RETRY_CNT:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_RETRY_CNT
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_RNR_RETRY:
*/
  __pyx_t_1 = (__pyx_v_c_val == IBV_QP_RETRY_CNT);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":50
 *         return __pyx_enum.IBV_QP_TIMEOUT
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_RETRY_CNT:
 *         return __pyx_enum.IBV_QP_RETRY_CNT             # <<<<<<<<<<<<<<
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_RNR_RETRY:
 *         return __pyx_enum.IBV_QP_RNR_RETRY
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_IBV_QP_RETRY_CNT); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 50, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":49
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_TIMEOUT:
 *         return __pyx_enum.IBV_QP_TIMEOUT
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_RETRY_CNT:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_RETRY_CNT
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_RNR_RETRY:
*/
  }

  /* "EnumTypeToPy":51
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_RETRY_CNT:
 *         return __pyx_enum.IBV_QP_RETRY_CNT
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_RNR_RETRY:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_RNR_RETRY
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_RQ_PSN:
*/
  __pyx_t_1 = (__pyx_v_c_val == IBV_QP_RNR_RETRY);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":52
 *         return __pyx_enum.IBV_QP_RETRY_CNT
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_RNR_RETRY:
 *         return __pyx_enum.IBV_QP_RNR_RETRY             # <<<<<<<<<<<<<<
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_RQ_PSN:
 *         return __pyx_enum.IBV_QP_RQ_PSN
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_IBV_QP_RNR_RETRY); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 52, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":51
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_RETRY_CNT:
 *         return __pyx_enum.IBV_QP_RETRY_CNT
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_RNR_RETRY:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_RNR_RETRY
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_RQ_PSN:
*/
  }

  /* "EnumTypeToPy":53
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_RNR_RETRY:
 *         return __pyx_enum.IBV_QP_RNR_RETRY
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_RQ_PSN:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_RQ_PSN
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_MAX_QP_RD_ATOMIC:
*/
  __pyx_t_1 = (__pyx_v_c_val == IBV_QP_RQ_PSN);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":54
 *         return __pyx_enum.IBV_QP_RNR_RETRY
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_RQ_PSN:
 *         return __pyx_enum.IBV_QP_RQ_PSN             # <<<<<<<<<<<<<<
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_MAX_QP_RD_ATOMIC:
 *         return __pyx_enum.IBV_QP_MAX_QP_RD_ATOMIC
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_IBV_QP_RQ_PSN); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 54, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":53
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_RNR_RETRY:
 *         return __pyx_enum.IBV_QP_RNR_RETRY
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_RQ_PSN:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_RQ_PSN
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_MAX_QP_RD_ATOMIC:
*/
  }

  /* "EnumTypeToPy":55
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_RQ_PSN:
 *         return __pyx_enum.IBV_QP_RQ_PSN
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_MAX_QP_RD_ATOMIC:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_MAX_QP_RD_ATOMIC
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_ALT_PATH:
*/
  __pyx_t_1 = (__pyx_v_c_val == IBV_QP_MAX_QP_RD_ATOMIC);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":56
 *         return __pyx_enum.IBV_QP_RQ_PSN
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_MAX_QP_RD_ATOMIC:
 *         return __pyx_enum.IBV_QP_MAX_QP_RD_ATOMIC             # <<<<<<<<<<<<<<
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_ALT_PATH:
 *         return __pyx_enum.IBV_QP_ALT_PATH
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_IBV_QP_MAX_QP_RD_ATOMIC); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":55
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_RQ_PSN:
 *         return __pyx_enum.IBV_QP_RQ_PSN
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_MAX_QP_RD_ATOMIC:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_MAX_QP_RD_ATOMIC
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_ALT_PATH:
*/
  }

  /* "EnumTypeToPy":57
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_MAX_QP_RD_ATOMIC:
 *         return __pyx_enum.IBV_QP_MAX_QP_RD_ATOMIC
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_ALT_PATH:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_ALT_PATH
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_MIN_RNR_TIMER:
*/
  __pyx_t_1 = (__pyx_v_c_val == IBV_QP_ALT_PATH);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":58
 *         return __pyx_enum.IBV_QP_MAX_QP_RD_ATOMIC
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_ALT_PATH:
 *         return __pyx_enum.IBV_QP_ALT_PATH             # <<<<<<<<<<<<<<
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_MIN_RNR_TIMER:
 *         return __pyx_enum.IBV_QP_MIN_RNR_TIMER
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_IBV_QP_ALT_PATH); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 58, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":57
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_MAX_QP_RD_ATOMIC:
 *         return __pyx_enum.IBV_QP_MAX_QP_RD_ATOMIC
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_ALT_PATH:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_ALT_PATH
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_MIN_RNR_TIMER:
*/
  }

  /* "EnumTypeToPy":59
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_ALT_PATH:
 *         return __pyx_enum.IBV_QP_ALT_PATH
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_MIN_RNR_TIMER:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_MIN_RNR_TIMER
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_SQ_PSN:
*/
  __pyx_t_1 = (__pyx_v_c_val == IBV_QP_MIN_RNR_TIMER);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":60
 *         return __pyx_enum.IBV_QP_ALT_PATH
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_MIN_RNR_TIMER:
 *         return __pyx_enum.IBV_QP_MIN_RNR_TIMER             # <<<<<<<<<<<<<<
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_SQ_PSN:
 *         return __pyx_enum.IBV_QP_SQ_PSN
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_IBV_QP_MIN_RNR_TIMER); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 60, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":59
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_ALT_PATH:
 *         return __pyx_enum.IBV_QP_ALT_PATH
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_MIN_RNR_TIMER:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_MIN_RNR_TIMER
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_SQ_PSN:
*/
  }

  /* "EnumTypeToPy":61
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_MIN_RNR_TIMER:
 *         return __pyx_enum.IBV_QP_MIN_RNR_TIMER
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_SQ_PSN:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_SQ_PSN
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_MAX_DEST_RD_ATOMIC:
*/
  __pyx_t_1 = (__pyx_v_c_val == IBV_QP_SQ_PSN);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":62
 *         return __pyx_enum.IBV_QP_MIN_RNR_TIMER
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_SQ_PSN:
 *         return __pyx_enum.IBV_QP_SQ_PSN             # <<<<<<<<<<<<<<
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_MAX_DEST_RD_ATOMIC:
 *         return __pyx_enum.IBV_QP_MAX_DEST_RD_ATOMIC
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_IBV_QP_SQ_PSN); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 62, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":61
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_MIN_RNR_TIMER:
 *         return __pyx_enum.IBV_QP_MIN_RNR_TIMER
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_SQ_PSN:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_SQ_PSN
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_MAX_DEST_RD_ATOMIC:
*/
  }

  /* "EnumTypeToPy":63
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_SQ_PSN:
 *         return __pyx_enum.IBV_QP_SQ_PSN
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_MAX_DEST_RD_ATOMIC:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_MAX_DEST_RD_ATOMIC
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_PATH_MIG_STATE:
*/
  __pyx_t_1 = (__pyx_v_c_val == IBV_QP_MAX_DEST_RD_ATOMIC);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":64
 *         return __pyx_enum.IBV_QP_SQ_PSN
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_MAX_DEST_RD_ATOMIC:
 *         return __pyx_enum.IBV_QP_MAX_DEST_RD_ATOMIC             # <<<<<<<<<<<<<<
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_PATH_MIG_STATE:
 *         return __pyx_enum.IBV_QP_PATH_MIG_STATE
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_IBV_QP_MAX_DEST_RD_ATOMIC); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 64, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":63
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_SQ_PSN:
 *         return __pyx_enum.IBV_QP_SQ_PSN
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_MAX_DEST_RD_ATOMIC:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_MAX_DEST_RD_ATOMIC
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_PATH_MIG_STATE:
*/
  }

  /* "EnumTypeToPy":65
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_MAX_DEST_RD_ATOMIC:
 *         return __pyx_enum.IBV_QP_MAX_DEST_RD_ATOMIC
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_PATH_MIG_STATE:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_PATH_MIG_STATE
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_CAP:
*/
  __pyx_t_1 = (__pyx_v_c_val == IBV_QP_PATH_MIG_STATE);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":66
 *         return __pyx_enum.IBV_QP_MAX_DEST_RD_ATOMIC
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_PATH_MIG_STATE:
 *         return __pyx_enum.IBV_QP_PATH_MIG_STATE             # <<<<<<<<<<<<<<
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_CAP:
 *         return __pyx_enum.IBV_QP_CAP
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_IBV_QP_PATH_MIG_STATE); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":65
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_MAX_DEST_RD_ATOMIC:
 *         return __pyx_enum.IBV_QP_MAX_DEST_RD_ATOMIC
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_PATH_MIG_STATE:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_PATH_MIG_STATE
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_CAP:
*/
  }

  /* "EnumTypeToPy":67
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_PATH_MIG_STATE:
 *         return __pyx_enum.IBV_QP_PATH_MIG_STATE
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_CAP:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_CAP
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_DEST_QPN:
*/
  __pyx_t_1 = (__pyx_v_c_val == IBV_QP_CAP);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":68
 *         return __pyx_enum.IBV_QP_PATH_MIG_STATE
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_CAP:
 *         return __pyx_enum.IBV_QP_CAP             # <<<<<<<<<<<<<<
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_DEST_QPN:
 *         return __pyx_enum.IBV_QP_DEST_QPN
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_IBV_QP_CAP); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 68, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":67
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_PATH_MIG_STATE:
 *         return __pyx_enum.IBV_QP_PATH_MIG_STATE
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_CAP:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_CAP
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_DEST_QPN:
*/
  }

  /* "EnumTypeToPy":69
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_CAP:
 *         return __pyx_enum.IBV_QP_CAP
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_DEST_QPN:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_DEST_QPN
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_RATE_LIMIT:
*/
  __pyx_t_1 = (__pyx_v_c_val == IBV_QP_DEST_QPN);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":70
 *         return __pyx_enum.IBV_QP_CAP
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_DEST_QPN:
 *         return __pyx_enum.IBV_QP_DEST_QPN             # <<<<<<<<<<<<<<
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_RATE_LIMIT:
 *         return __pyx_enum.IBV_QP_RATE_LIMIT
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_IBV_QP_DEST_QPN); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 70, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":69
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_CAP:
 *         return __pyx_enum.IBV_QP_CAP
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_DEST_QPN:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_DEST_QPN
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_RATE_LIMIT:
*/
  }

  /* "EnumTypeToPy":71
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_DEST_QPN:
 *         return __pyx_enum.IBV_QP_DEST_QPN
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_RATE_LIMIT:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_RATE_LIMIT
 *     else:
*/
  __pyx_t_1 = (__pyx_v_c_val == IBV_QP_RATE_LIMIT);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":72
 *         return __pyx_enum.IBV_QP_DEST_QPN
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_RATE_LIMIT:
 *         return __pyx_enum.IBV_QP_RATE_LIMIT             # <<<<<<<<<<<<<<
 *     else:
 *         underlying_c_val = <int>c_val
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_IBV_QP_RATE_LIMIT); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 72, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":71
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_DEST_QPN:
 *         return __pyx_enum.IBV_QP_DEST_QPN
 *     elif c_val == ibv_qp_attr_mask.IBV_QP_RATE_LIMIT:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QP_RATE_LIMIT
 *     else:
*/
  }

  /* "EnumTypeToPy":74
 *         return __pyx_enum.IBV_QP_RATE_LIMIT
 *     else:
 *         underlying_c_val = <int>c_val             # <<<<<<<<<<<<<<
 *         return __pyx_enum(underlying_c_val)
*/
  /*else*/ {
    __pyx_v_underlying_c_val = ((int)__pyx_v_c_val);

    /* "EnumTypeToPy":75
 *     else:
 *         underlying_c_val = <int>c_val
 *         return __pyx_enum(underlying_c_val)             # <<<<<<<<<<<<<<
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = NULL;
    __Pyx_INCREF(__pyx_v___pyx_enum);
    __pyx_t_5 = __pyx_v___pyx_enum; 
    __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_v_underlying_c_val); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 75, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_13 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_8);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_13 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_11};
      __pyx_t_10 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (__pyx_t_13*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 75, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
    }
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;
  }

  /* "EnumTypeToPy":3
 * cdef object __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py = None
 * 
 * @cname("__Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py")             # <<<<<<<<<<<<<<
 * cdef __Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py(ibv_qp_attr_mask c_val):
 *     cdef object __pyx_enum
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("EnumTypeToPy.__Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_enum);
  __Pyx_XDECREF(__pyx_v_warnings);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(enum mlx5dv_cq_init_attr_flags __pyx_v_c_val) {
  PyObject *__pyx_v___pyx_enum = 0;
  PyObject *__pyx_v_warnings = NULL;
  int __pyx_v_underlying_c_val;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  size_t __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py", 0);

  /* "EnumTypeToPy":11
 * 
 * 
 *     if __pyx_imported_enum___Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:             # <<<<<<<<<<<<<<
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_cq_init_attr_flags as __pyx_imported_enum___Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
*/
  __pyx_t_1 = (__pyx_imported_enum___Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py == Py_None);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_cq_init_attr_flags as __pyx_imported_enum___Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
*/
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_4);
      /*try:*/ {

        /* "EnumTypeToPy":13
 *     if __pyx_imported_enum___Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_cq_init_attr_flags as __pyx_imported_enum___Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py             # <<<<<<<<<<<<<<
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
*/
        {
          PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_mlx5dv_cq_init_attr_flags};
          __pyx_t_6 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5_enum, __pyx_imported_names, 1, NULL, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L4_error)
        }
        __pyx_t_5 = __pyx_t_6;
        __Pyx_GOTREF(__pyx_t_5);
        {
          PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_mlx5dv_cq_init_attr_flags};
          __pyx_t_7 = 0; {
            __pyx_t_8 = __Pyx_ImportFrom(__pyx_t_5, __pyx_imported_names[__pyx_t_7]); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 13, __pyx_L4_error)
            __Pyx_GOTREF(__pyx_t_8);
            switch (__pyx_t_7) {
              case 0:
              __Pyx_INCREF(__pyx_t_8);
              __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
              __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_8);
              break;
              default:;
            }
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          }
        }
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

        /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_cq_init_attr_flags as __pyx_imported_enum___Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
*/
      }
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L9_try_end;
      __pyx_L4_error:;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;

      /* "EnumTypeToPy":14
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_cq_init_attr_flags as __pyx_imported_enum___Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:             # <<<<<<<<<<<<<<
 *             __pyx_imported_enum___Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
 *             import warnings
*/
      __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ImportError))));
      if (__pyx_t_9) {
        __Pyx_AddTraceback("EnumTypeToPy.__Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_8, &__pyx_t_10) < 0) __PYX_ERR(1, 14, __pyx_L6_except_error)
        __Pyx_XGOTREF(__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_10);

        /* "EnumTypeToPy":15
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_cq_init_attr_flags as __pyx_imported_enum___Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"             # <<<<<<<<<<<<<<
 *             import warnings
 *             warnings.warn(
*/
        __Pyx_INCREF(Py_False);
        __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
        __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py, Py_False);
        __Pyx_GIVEREF(Py_False);

        /* "EnumTypeToPy":16
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
 *             import warnings             # <<<<<<<<<<<<<<
 *             warnings.warn(
 *                 f"enum class mlx5dv_cq_init_attr_flags not importable from pyverbs.providers.mlx5.mlx5_enums. "
*/
        __pyx_t_6 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_warnings, 0, 0, NULL, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 16, __pyx_L6_except_error)
        __pyx_t_11 = __pyx_t_6;
        __Pyx_GOTREF(__pyx_t_11);
        __pyx_v_warnings = __pyx_t_11;
        __pyx_t_11 = 0;

        /* "EnumTypeToPy":17
 *             __pyx_imported_enum___Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
 *             import warnings
 *             warnings.warn(             # <<<<<<<<<<<<<<
 *                 f"enum class mlx5dv_cq_init_attr_flags not importable from pyverbs.providers.mlx5.mlx5_enums. "
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
*/
        __pyx_t_12 = __pyx_v_warnings;
        __Pyx_INCREF(__pyx_t_12);
        __pyx_t_13 = 0;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_mstate_global->__pyx_kp_u_enum_class_mlx5dv_cq_init_attr_f};
          __pyx_t_11 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_warn, __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 17, __pyx_L6_except_error)
          __Pyx_GOTREF(__pyx_t_11);
        }
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        goto __pyx_L5_exception_handled;
      }
      goto __pyx_L6_except_error;

      /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_cq_init_attr_flags as __pyx_imported_enum___Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
*/
      __pyx_L6_except_error:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      goto __pyx_L1_error;
      __pyx_L5_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      __pyx_L9_try_end:;
    }

    /* "EnumTypeToPy":11
 * 
 * 
 *     if __pyx_imported_enum___Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:             # <<<<<<<<<<<<<<
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_cq_init_attr_flags as __pyx_imported_enum___Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
*/
  }

  /* "EnumTypeToPy":21
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
 *                 "does not have a .py  or .pyx file.")
 *     if __pyx_imported_enum___Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is False:             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_1 = (__pyx_imported_enum___Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py == Py_False);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":24
 * 
 * 
 *         return <int>c_val             # <<<<<<<<<<<<<<
 *     __pyx_enum = __pyx_imported_enum___Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyLong_From_int(((int)__pyx_v_c_val)); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 24, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":21
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
 *                 "does not have a .py  or .pyx file.")
 *     if __pyx_imported_enum___Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is False:             # <<<<<<<<<<<<<<
 * 
 * 
*/
  }

  /* "EnumTypeToPy":25
 * 
 *         return <int>c_val
 *     __pyx_enum = __pyx_imported_enum___Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py             # <<<<<<<<<<<<<<
 * 
 *     if 0:
*/
  __Pyx_INCREF(__pyx_imported_enum___Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
  __pyx_v___pyx_enum = __pyx_imported_enum___Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py;

  /* "EnumTypeToPy":29
 *     if 0:
 *         pass
 *     elif c_val == mlx5dv_cq_init_attr_flags.MLX5DV_CQ_INIT_ATTR_FLAGS_CQE_PAD:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CQ_INIT_ATTR_FLAGS_CQE_PAD
 *     elif c_val == mlx5dv_cq_init_attr_flags.MLX5DV_CQ_INIT_ATTR_FLAGS_RESERVED:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_CQ_INIT_ATTR_FLAGS_CQE_PAD);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":30
 *         pass
 *     elif c_val == mlx5dv_cq_init_attr_flags.MLX5DV_CQ_INIT_ATTR_FLAGS_CQE_PAD:
 *         return __pyx_enum.MLX5DV_CQ_INIT_ATTR_FLAGS_CQE_PAD             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_cq_init_attr_flags.MLX5DV_CQ_INIT_ATTR_FLAGS_RESERVED:
 *         return __pyx_enum.MLX5DV_CQ_INIT_ATTR_FLAGS_RESERVED
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_CQ_INIT_ATTR_FLAGS_CQE_PA); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 30, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":29
 *     if 0:
 *         pass
 *     elif c_val == mlx5dv_cq_init_attr_flags.MLX5DV_CQ_INIT_ATTR_FLAGS_CQE_PAD:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CQ_INIT_ATTR_FLAGS_CQE_PAD
 *     elif c_val == mlx5dv_cq_init_attr_flags.MLX5DV_CQ_INIT_ATTR_FLAGS_RESERVED:
*/
  }

  /* "EnumTypeToPy":31
 *     elif c_val == mlx5dv_cq_init_attr_flags.MLX5DV_CQ_INIT_ATTR_FLAGS_CQE_PAD:
 *         return __pyx_enum.MLX5DV_CQ_INIT_ATTR_FLAGS_CQE_PAD
 *     elif c_val == mlx5dv_cq_init_attr_flags.MLX5DV_CQ_INIT_ATTR_FLAGS_RESERVED:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CQ_INIT_ATTR_FLAGS_RESERVED
 *     else:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_CQ_INIT_ATTR_FLAGS_RESERVED);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":32
 *         return __pyx_enum.MLX5DV_CQ_INIT_ATTR_FLAGS_CQE_PAD
 *     elif c_val == mlx5dv_cq_init_attr_flags.MLX5DV_CQ_INIT_ATTR_FLAGS_RESERVED:
 *         return __pyx_enum.MLX5DV_CQ_INIT_ATTR_FLAGS_RESERVED             # <<<<<<<<<<<<<<
 *     else:
 *         underlying_c_val = <int>c_val
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_CQ_INIT_ATTR_FLAGS_RESERV); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 32, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":31
 *     elif c_val == mlx5dv_cq_init_attr_flags.MLX5DV_CQ_INIT_ATTR_FLAGS_CQE_PAD:
 *         return __pyx_enum.MLX5DV_CQ_INIT_ATTR_FLAGS_CQE_PAD
 *     elif c_val == mlx5dv_cq_init_attr_flags.MLX5DV_CQ_INIT_ATTR_FLAGS_RESERVED:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CQ_INIT_ATTR_FLAGS_RESERVED
 *     else:
*/
  }

  /* "EnumTypeToPy":34
 *         return __pyx_enum.MLX5DV_CQ_INIT_ATTR_FLAGS_RESERVED
 *     else:
 *         underlying_c_val = <int>c_val             # <<<<<<<<<<<<<<
 *         return __pyx_enum(underlying_c_val)
*/
  /*else*/ {
    __pyx_v_underlying_c_val = ((int)__pyx_v_c_val);

    /* "EnumTypeToPy":35
 *     else:
 *         underlying_c_val = <int>c_val
 *         return __pyx_enum(underlying_c_val)             # <<<<<<<<<<<<<<
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = NULL;
    __Pyx_INCREF(__pyx_v___pyx_enum);
    __pyx_t_5 = __pyx_v___pyx_enum; 
    __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_v_underlying_c_val); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 35, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_13 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_8);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_13 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_11};
      __pyx_t_10 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (__pyx_t_13*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 35, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
    }
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;
  }

  /* "EnumTypeToPy":3
 * cdef object __pyx_imported_enum___Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = None
 * 
 * @cname("__Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py")             # <<<<<<<<<<<<<<
 * cdef __Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(mlx5dv_cq_init_attr_flags c_val):
 *     cdef object __pyx_enum
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("EnumTypeToPy.__Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_enum);
  __Pyx_XDECREF(__pyx_v_warnings);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(enum mlx5dv_cq_init_attr_mask __pyx_v_c_val) {
  PyObject *__pyx_v___pyx_enum = 0;
  PyObject *__pyx_v_warnings = NULL;
  int __pyx_v_underlying_c_val;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  size_t __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py", 0);

  /* "EnumTypeToPy":11
 * 
 * 
 *     if __pyx_imported_enum___Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:             # <<<<<<<<<<<<<<
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_cq_init_attr_mask as __pyx_imported_enum___Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
*/
  __pyx_t_1 = (__pyx_imported_enum___Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py == Py_None);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_cq_init_attr_mask as __pyx_imported_enum___Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
*/
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_4);
      /*try:*/ {

        /* "EnumTypeToPy":13
 *     if __pyx_imported_enum___Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_cq_init_attr_mask as __pyx_imported_enum___Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py             # <<<<<<<<<<<<<<
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
*/
        {
          PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_mlx5dv_cq_init_attr_mask};
          __pyx_t_6 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5_enum, __pyx_imported_names, 1, NULL, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L4_error)
        }
        __pyx_t_5 = __pyx_t_6;
        __Pyx_GOTREF(__pyx_t_5);
        {
          PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_mlx5dv_cq_init_attr_mask};
          __pyx_t_7 = 0; {
            __pyx_t_8 = __Pyx_ImportFrom(__pyx_t_5, __pyx_imported_names[__pyx_t_7]); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 13, __pyx_L4_error)
            __Pyx_GOTREF(__pyx_t_8);
            switch (__pyx_t_7) {
              case 0:
              __Pyx_INCREF(__pyx_t_8);
              __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
              __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_8);
              break;
              default:;
            }
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          }
        }
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

        /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_cq_init_attr_mask as __pyx_imported_enum___Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
*/
      }
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L9_try_end;
      __pyx_L4_error:;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;

      /* "EnumTypeToPy":14
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_cq_init_attr_mask as __pyx_imported_enum___Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:             # <<<<<<<<<<<<<<
 *             __pyx_imported_enum___Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
 *             import warnings
*/
      __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ImportError))));
      if (__pyx_t_9) {
        __Pyx_AddTraceback("EnumTypeToPy.__Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_8, &__pyx_t_10) < 0) __PYX_ERR(1, 14, __pyx_L6_except_error)
        __Pyx_XGOTREF(__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_10);

        /* "EnumTypeToPy":15
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_cq_init_attr_mask as __pyx_imported_enum___Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"             # <<<<<<<<<<<<<<
 *             import warnings
 *             warnings.warn(
*/
        __Pyx_INCREF(Py_False);
        __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
        __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py, Py_False);
        __Pyx_GIVEREF(Py_False);

        /* "EnumTypeToPy":16
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
 *             import warnings             # <<<<<<<<<<<<<<
 *             warnings.warn(
 *                 f"enum class mlx5dv_cq_init_attr_mask not importable from pyverbs.providers.mlx5.mlx5_enums. "
*/
        __pyx_t_6 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_warnings, 0, 0, NULL, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 16, __pyx_L6_except_error)
        __pyx_t_11 = __pyx_t_6;
        __Pyx_GOTREF(__pyx_t_11);
        __pyx_v_warnings = __pyx_t_11;
        __pyx_t_11 = 0;

        /* "EnumTypeToPy":17
 *             __pyx_imported_enum___Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
 *             import warnings
 *             warnings.warn(             # <<<<<<<<<<<<<<
 *                 f"enum class mlx5dv_cq_init_attr_mask not importable from pyverbs.providers.mlx5.mlx5_enums. "
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
*/
        __pyx_t_12 = __pyx_v_warnings;
        __Pyx_INCREF(__pyx_t_12);
        __pyx_t_13 = 0;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_mstate_global->__pyx_kp_u_enum_class_mlx5dv_cq_init_attr_m};
          __pyx_t_11 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_warn, __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 17, __pyx_L6_except_error)
          __Pyx_GOTREF(__pyx_t_11);
        }
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        goto __pyx_L5_exception_handled;
      }
      goto __pyx_L6_except_error;

      /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_cq_init_attr_mask as __pyx_imported_enum___Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
*/
      __pyx_L6_except_error:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      goto __pyx_L1_error;
      __pyx_L5_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      __pyx_L9_try_end:;
    }

    /* "EnumTypeToPy":11
 * 
 * 
 *     if __pyx_imported_enum___Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:             # <<<<<<<<<<<<<<
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_cq_init_attr_mask as __pyx_imported_enum___Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
*/
  }

  /* "EnumTypeToPy":21
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
 *                 "does not have a .py  or .pyx file.")
 *     if __pyx_imported_enum___Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is False:             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_1 = (__pyx_imported_enum___Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py == Py_False);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":24
 * 
 * 
 *         return <int>c_val             # <<<<<<<<<<<<<<
 *     __pyx_enum = __pyx_imported_enum___Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyLong_From_int(((int)__pyx_v_c_val)); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 24, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":21
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
 *                 "does not have a .py  or .pyx file.")
 *     if __pyx_imported_enum___Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is False:             # <<<<<<<<<<<<<<
 * 
 * 
*/
  }

  /* "EnumTypeToPy":25
 * 
 *         return <int>c_val
 *     __pyx_enum = __pyx_imported_enum___Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py             # <<<<<<<<<<<<<<
 * 
 *     if 0:
*/
  __Pyx_INCREF(__pyx_imported_enum___Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
  __pyx_v___pyx_enum = __pyx_imported_enum___Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py;

  /* "EnumTypeToPy":29
 *     if 0:
 *         pass
 *     elif c_val == mlx5dv_cq_init_attr_mask.MLX5DV_CQ_INIT_ATTR_MASK_COMPRESSED_CQE:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CQ_INIT_ATTR_MASK_COMPRESSED_CQE
 *     elif c_val == mlx5dv_cq_init_attr_mask.MLX5DV_CQ_INIT_ATTR_MASK_FLAGS:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_CQ_INIT_ATTR_MASK_COMPRESSED_CQE);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":30
 *         pass
 *     elif c_val == mlx5dv_cq_init_attr_mask.MLX5DV_CQ_INIT_ATTR_MASK_COMPRESSED_CQE:
 *         return __pyx_enum.MLX5DV_CQ_INIT_ATTR_MASK_COMPRESSED_CQE             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_cq_init_attr_mask.MLX5DV_CQ_INIT_ATTR_MASK_FLAGS:
 *         return __pyx_enum.MLX5DV_CQ_INIT_ATTR_MASK_FLAGS
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_CQ_INIT_ATTR_MASK_COMPRES); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 30, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":29
 *     if 0:
 *         pass
 *     elif c_val == mlx5dv_cq_init_attr_mask.MLX5DV_CQ_INIT_ATTR_MASK_COMPRESSED_CQE:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CQ_INIT_ATTR_MASK_COMPRESSED_CQE
 *     elif c_val == mlx5dv_cq_init_attr_mask.MLX5DV_CQ_INIT_ATTR_MASK_FLAGS:
*/
  }

  /* "EnumTypeToPy":31
 *     elif c_val == mlx5dv_cq_init_attr_mask.MLX5DV_CQ_INIT_ATTR_MASK_COMPRESSED_CQE:
 *         return __pyx_enum.MLX5DV_CQ_INIT_ATTR_MASK_COMPRESSED_CQE
 *     elif c_val == mlx5dv_cq_init_attr_mask.MLX5DV_CQ_INIT_ATTR_MASK_FLAGS:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CQ_INIT_ATTR_MASK_FLAGS
 *     elif c_val == mlx5dv_cq_init_attr_mask.MLX5DV_CQ_INIT_ATTR_MASK_CQE_SIZE:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_CQ_INIT_ATTR_MASK_FLAGS);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":32
 *         return __pyx_enum.MLX5DV_CQ_INIT_ATTR_MASK_COMPRESSED_CQE
 *     elif c_val == mlx5dv_cq_init_attr_mask.MLX5DV_CQ_INIT_ATTR_MASK_FLAGS:
 *         return __pyx_enum.MLX5DV_CQ_INIT_ATTR_MASK_FLAGS             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_cq_init_attr_mask.MLX5DV_CQ_INIT_ATTR_MASK_CQE_SIZE:
 *         return __pyx_enum.MLX5DV_CQ_INIT_ATTR_MASK_CQE_SIZE
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_CQ_INIT_ATTR_MASK_FLAGS); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 32, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":31
 *     elif c_val == mlx5dv_cq_init_attr_mask.MLX5DV_CQ_INIT_ATTR_MASK_COMPRESSED_CQE:
 *         return __pyx_enum.MLX5DV_CQ_INIT_ATTR_MASK_COMPRESSED_CQE
 *     elif c_val == mlx5dv_cq_init_attr_mask.MLX5DV_CQ_INIT_ATTR_MASK_FLAGS:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CQ_INIT_ATTR_MASK_FLAGS
 *     elif c_val == mlx5dv_cq_init_attr_mask.MLX5DV_CQ_INIT_ATTR_MASK_CQE_SIZE:
*/
  }

  /* "EnumTypeToPy":33
 *     elif c_val == mlx5dv_cq_init_attr_mask.MLX5DV_CQ_INIT_ATTR_MASK_FLAGS:
 *         return __pyx_enum.MLX5DV_CQ_INIT_ATTR_MASK_FLAGS
 *     elif c_val == mlx5dv_cq_init_attr_mask.MLX5DV_CQ_INIT_ATTR_MASK_CQE_SIZE:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CQ_INIT_ATTR_MASK_CQE_SIZE
 *     else:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_CQ_INIT_ATTR_MASK_CQE_SIZE);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":34
 *         return __pyx_enum.MLX5DV_CQ_INIT_ATTR_MASK_FLAGS
 *     elif c_val == mlx5dv_cq_init_attr_mask.MLX5DV_CQ_INIT_ATTR_MASK_CQE_SIZE:
 *         return __pyx_enum.MLX5DV_CQ_INIT_ATTR_MASK_CQE_SIZE             # <<<<<<<<<<<<<<
 *     else:
 *         underlying_c_val = <int>c_val
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_CQ_INIT_ATTR_MASK_CQE_SIZ); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 34, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":33
 *     elif c_val == mlx5dv_cq_init_attr_mask.MLX5DV_CQ_INIT_ATTR_MASK_FLAGS:
 *         return __pyx_enum.MLX5DV_CQ_INIT_ATTR_MASK_FLAGS
 *     elif c_val == mlx5dv_cq_init_attr_mask.MLX5DV_CQ_INIT_ATTR_MASK_CQE_SIZE:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CQ_INIT_ATTR_MASK_CQE_SIZE
 *     else:
*/
  }

  /* "EnumTypeToPy":36
 *         return __pyx_enum.MLX5DV_CQ_INIT_ATTR_MASK_CQE_SIZE
 *     else:
 *         underlying_c_val = <int>c_val             # <<<<<<<<<<<<<<
 *         return __pyx_enum(underlying_c_val)
*/
  /*else*/ {
    __pyx_v_underlying_c_val = ((int)__pyx_v_c_val);

    /* "EnumTypeToPy":37
 *     else:
 *         underlying_c_val = <int>c_val
 *         return __pyx_enum(underlying_c_val)             # <<<<<<<<<<<<<<
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = NULL;
    __Pyx_INCREF(__pyx_v___pyx_enum);
    __pyx_t_5 = __pyx_v___pyx_enum; 
    __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_v_underlying_c_val); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 37, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_13 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_8);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_13 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_11};
      __pyx_t_10 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (__pyx_t_13*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 37, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
    }
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;
  }

  /* "EnumTypeToPy":3
 * cdef object __pyx_imported_enum___Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = None
 * 
 * @cname("__Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py")             # <<<<<<<<<<<<<<
 * cdef __Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(mlx5dv_cq_init_attr_mask c_val):
 *     cdef object __pyx_enum
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("EnumTypeToPy.__Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_enum);
  __Pyx_XDECREF(__pyx_v_warnings);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(enum mlx5dv_cqe_comp_res_format __pyx_v_c_val) {
  PyObject *__pyx_v___pyx_enum = 0;
  PyObject *__pyx_v_warnings = NULL;
  int __pyx_v_underlying_c_val;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  size_t __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py", 0);

  /* "EnumTypeToPy":11
 * 
 * 
 *     if __pyx_imported_enum___Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:             # <<<<<<<<<<<<<<
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_cqe_comp_res_format as __pyx_imported_enum___Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
*/
  __pyx_t_1 = (__pyx_imported_enum___Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py == Py_None);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_cqe_comp_res_format as __pyx_imported_enum___Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
*/
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_4);
      /*try:*/ {

        /* "EnumTypeToPy":13
 *     if __pyx_imported_enum___Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_cqe_comp_res_format as __pyx_imported_enum___Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py             # <<<<<<<<<<<<<<
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
*/
        {
          PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_mlx5dv_cqe_comp_res_format};
          __pyx_t_6 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5_enum, __pyx_imported_names, 1, NULL, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L4_error)
        }
        __pyx_t_5 = __pyx_t_6;
        __Pyx_GOTREF(__pyx_t_5);
        {
          PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_mlx5dv_cqe_comp_res_format};
          __pyx_t_7 = 0; {
            __pyx_t_8 = __Pyx_ImportFrom(__pyx_t_5, __pyx_imported_names[__pyx_t_7]); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 13, __pyx_L4_error)
            __Pyx_GOTREF(__pyx_t_8);
            switch (__pyx_t_7) {
              case 0:
              __Pyx_INCREF(__pyx_t_8);
              __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
              __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_8);
              break;
              default:;
            }
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          }
        }
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

        /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_cqe_comp_res_format as __pyx_imported_enum___Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
*/
      }
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L9_try_end;
      __pyx_L4_error:;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;

      /* "EnumTypeToPy":14
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_cqe_comp_res_format as __pyx_imported_enum___Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:             # <<<<<<<<<<<<<<
 *             __pyx_imported_enum___Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
 *             import warnings
*/
      __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ImportError))));
      if (__pyx_t_9) {
        __Pyx_AddTraceback("EnumTypeToPy.__Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_8, &__pyx_t_10) < 0) __PYX_ERR(1, 14, __pyx_L6_except_error)
        __Pyx_XGOTREF(__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_10);

        /* "EnumTypeToPy":15
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_cqe_comp_res_format as __pyx_imported_enum___Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"             # <<<<<<<<<<<<<<
 *             import warnings
 *             warnings.warn(
*/
        __Pyx_INCREF(Py_False);
        __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
        __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py, Py_False);
        __Pyx_GIVEREF(Py_False);

        /* "EnumTypeToPy":16
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
 *             import warnings             # <<<<<<<<<<<<<<
 *             warnings.warn(
 *                 f"enum class mlx5dv_cqe_comp_res_format not importable from pyverbs.providers.mlx5.mlx5_enums. "
*/
        __pyx_t_6 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_warnings, 0, 0, NULL, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 16, __pyx_L6_except_error)
        __pyx_t_11 = __pyx_t_6;
        __Pyx_GOTREF(__pyx_t_11);
        __pyx_v_warnings = __pyx_t_11;
        __pyx_t_11 = 0;

        /* "EnumTypeToPy":17
 *             __pyx_imported_enum___Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
 *             import warnings
 *             warnings.warn(             # <<<<<<<<<<<<<<
 *                 f"enum class mlx5dv_cqe_comp_res_format not importable from pyverbs.providers.mlx5.mlx5_enums. "
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
*/
        __pyx_t_12 = __pyx_v_warnings;
        __Pyx_INCREF(__pyx_t_12);
        __pyx_t_13 = 0;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_mstate_global->__pyx_kp_u_enum_class_mlx5dv_cqe_comp_res_f};
          __pyx_t_11 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_warn, __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 17, __pyx_L6_except_error)
          __Pyx_GOTREF(__pyx_t_11);
        }
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        goto __pyx_L5_exception_handled;
      }
      goto __pyx_L6_except_error;

      /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_cqe_comp_res_format as __pyx_imported_enum___Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
*/
      __pyx_L6_except_error:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      goto __pyx_L1_error;
      __pyx_L5_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      __pyx_L9_try_end:;
    }

    /* "EnumTypeToPy":11
 * 
 * 
 *     if __pyx_imported_enum___Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:             # <<<<<<<<<<<<<<
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_cqe_comp_res_format as __pyx_imported_enum___Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
*/
  }

  /* "EnumTypeToPy":21
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
 *                 "does not have a .py  or .pyx file.")
 *     if __pyx_imported_enum___Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is False:             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_1 = (__pyx_imported_enum___Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py == Py_False);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":24
 * 
 * 
 *         return <int>c_val             # <<<<<<<<<<<<<<
 *     __pyx_enum = __pyx_imported_enum___Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyLong_From_int(((int)__pyx_v_c_val)); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 24, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":21
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
 *                 "does not have a .py  or .pyx file.")
 *     if __pyx_imported_enum___Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is False:             # <<<<<<<<<<<<<<
 * 
 * 
*/
  }

  /* "EnumTypeToPy":25
 * 
 *         return <int>c_val
 *     __pyx_enum = __pyx_imported_enum___Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py             # <<<<<<<<<<<<<<
 * 
 *     if 0:
*/
  __Pyx_INCREF(__pyx_imported_enum___Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
  __pyx_v___pyx_enum = __pyx_imported_enum___Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py;

  /* "EnumTypeToPy":29
 *     if 0:
 *         pass
 *     elif c_val == mlx5dv_cqe_comp_res_format.MLX5DV_CQE_RES_FORMAT_HASH:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CQE_RES_FORMAT_HASH
 *     elif c_val == mlx5dv_cqe_comp_res_format.MLX5DV_CQE_RES_FORMAT_CSUM:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_CQE_RES_FORMAT_HASH);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":30
 *         pass
 *     elif c_val == mlx5dv_cqe_comp_res_format.MLX5DV_CQE_RES_FORMAT_HASH:
 *         return __pyx_enum.MLX5DV_CQE_RES_FORMAT_HASH             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_cqe_comp_res_format.MLX5DV_CQE_RES_FORMAT_CSUM:
 *         return __pyx_enum.MLX5DV_CQE_RES_FORMAT_CSUM
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_CQE_RES_FORMAT_HASH); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 30, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":29
 *     if 0:
 *         pass
 *     elif c_val == mlx5dv_cqe_comp_res_format.MLX5DV_CQE_RES_FORMAT_HASH:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CQE_RES_FORMAT_HASH
 *     elif c_val == mlx5dv_cqe_comp_res_format.MLX5DV_CQE_RES_FORMAT_CSUM:
*/
  }

  /* "EnumTypeToPy":31
 *     elif c_val == mlx5dv_cqe_comp_res_format.MLX5DV_CQE_RES_FORMAT_HASH:
 *         return __pyx_enum.MLX5DV_CQE_RES_FORMAT_HASH
 *     elif c_val == mlx5dv_cqe_comp_res_format.MLX5DV_CQE_RES_FORMAT_CSUM:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CQE_RES_FORMAT_CSUM
 *     elif c_val == mlx5dv_cqe_comp_res_format.MLX5DV_CQE_RES_FORMAT_CSUM_STRIDX:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_CQE_RES_FORMAT_CSUM);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":32
 *         return __pyx_enum.MLX5DV_CQE_RES_FORMAT_HASH
 *     elif c_val == mlx5dv_cqe_comp_res_format.MLX5DV_CQE_RES_FORMAT_CSUM:
 *         return __pyx_enum.MLX5DV_CQE_RES_FORMAT_CSUM             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_cqe_comp_res_format.MLX5DV_CQE_RES_FORMAT_CSUM_STRIDX:
 *         return __pyx_enum.MLX5DV_CQE_RES_FORMAT_CSUM_STRIDX
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_CQE_RES_FORMAT_CSUM); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 32, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":31
 *     elif c_val == mlx5dv_cqe_comp_res_format.MLX5DV_CQE_RES_FORMAT_HASH:
 *         return __pyx_enum.MLX5DV_CQE_RES_FORMAT_HASH
 *     elif c_val == mlx5dv_cqe_comp_res_format.MLX5DV_CQE_RES_FORMAT_CSUM:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CQE_RES_FORMAT_CSUM
 *     elif c_val == mlx5dv_cqe_comp_res_format.MLX5DV_CQE_RES_FORMAT_CSUM_STRIDX:
*/
  }

  /* "EnumTypeToPy":33
 *     elif c_val == mlx5dv_cqe_comp_res_format.MLX5DV_CQE_RES_FORMAT_CSUM:
 *         return __pyx_enum.MLX5DV_CQE_RES_FORMAT_CSUM
 *     elif c_val == mlx5dv_cqe_comp_res_format.MLX5DV_CQE_RES_FORMAT_CSUM_STRIDX:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CQE_RES_FORMAT_CSUM_STRIDX
 *     else:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_CQE_RES_FORMAT_CSUM_STRIDX);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":34
 *         return __pyx_enum.MLX5DV_CQE_RES_FORMAT_CSUM
 *     elif c_val == mlx5dv_cqe_comp_res_format.MLX5DV_CQE_RES_FORMAT_CSUM_STRIDX:
 *         return __pyx_enum.MLX5DV_CQE_RES_FORMAT_CSUM_STRIDX             # <<<<<<<<<<<<<<
 *     else:
 *         underlying_c_val = <int>c_val
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_CQE_RES_FORMAT_CSUM_STRID); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 34, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":33
 *     elif c_val == mlx5dv_cqe_comp_res_format.MLX5DV_CQE_RES_FORMAT_CSUM:
 *         return __pyx_enum.MLX5DV_CQE_RES_FORMAT_CSUM
 *     elif c_val == mlx5dv_cqe_comp_res_format.MLX5DV_CQE_RES_FORMAT_CSUM_STRIDX:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CQE_RES_FORMAT_CSUM_STRIDX
 *     else:
*/
  }

  /* "EnumTypeToPy":36
 *         return __pyx_enum.MLX5DV_CQE_RES_FORMAT_CSUM_STRIDX
 *     else:
 *         underlying_c_val = <int>c_val             # <<<<<<<<<<<<<<
 *         return __pyx_enum(underlying_c_val)
*/
  /*else*/ {
    __pyx_v_underlying_c_val = ((int)__pyx_v_c_val);

    /* "EnumTypeToPy":37
 *     else:
 *         underlying_c_val = <int>c_val
 *         return __pyx_enum(underlying_c_val)             # <<<<<<<<<<<<<<
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = NULL;
    __Pyx_INCREF(__pyx_v___pyx_enum);
    __pyx_t_5 = __pyx_v___pyx_enum; 
    __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_v_underlying_c_val); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 37, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_13 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_8);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_13 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_11};
      __pyx_t_10 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (__pyx_t_13*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 37, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
    }
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;
  }

  /* "EnumTypeToPy":3
 * cdef object __pyx_imported_enum___Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = None
 * 
 * @cname("__Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py")             # <<<<<<<<<<<<<<
 * cdef __Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(mlx5dv_cqe_comp_res_format c_val):
 *     cdef object __pyx_enum
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("EnumTypeToPy.__Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_enum);
  __Pyx_XDECREF(__pyx_v_warnings);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py(enum ibv_qp_type __pyx_v_c_val) {
  PyObject *__pyx_v___pyx_enum = 0;
  PyObject *__pyx_v_warnings = NULL;
  int __pyx_v_underlying_c_val;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  size_t __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py", 0);

  /* "EnumTypeToPy":11
 * 
 * 
 *     if __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py is None:             # <<<<<<<<<<<<<<
 *         try:
 *             from pyverbs.libibverbs_enums import ibv_qp_type as __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py
*/
  __pyx_t_1 = (__pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py == Py_None);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.libibverbs_enums import ibv_qp_type as __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py
 *         except ImportError:
*/
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_4);
      /*try:*/ {

        /* "EnumTypeToPy":13
 *     if __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py is None:
 *         try:
 *             from pyverbs.libibverbs_enums import ibv_qp_type as __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py             # <<<<<<<<<<<<<<
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py = False  # False indicates "don't try again"
*/
        {
          PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_ibv_qp_type};
          __pyx_t_6 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pyverbs_libibverbs_enums, __pyx_imported_names, 1, NULL, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L4_error)
        }
        __pyx_t_5 = __pyx_t_6;
        __Pyx_GOTREF(__pyx_t_5);
        {
          PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_ibv_qp_type};
          __pyx_t_7 = 0; {
            __pyx_t_8 = __Pyx_ImportFrom(__pyx_t_5, __pyx_imported_names[__pyx_t_7]); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 13, __pyx_L4_error)
            __Pyx_GOTREF(__pyx_t_8);
            switch (__pyx_t_7) {
              case 0:
              __Pyx_INCREF(__pyx_t_8);
              __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py);
              __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_8);
              break;
              default:;
            }
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          }
        }
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

        /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.libibverbs_enums import ibv_qp_type as __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py
 *         except ImportError:
*/
      }
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L9_try_end;
      __pyx_L4_error:;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;

      /* "EnumTypeToPy":14
 *         try:
 *             from pyverbs.libibverbs_enums import ibv_qp_type as __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py
 *         except ImportError:             # <<<<<<<<<<<<<<
 *             __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py = False  # False indicates "don't try again"
 *             import warnings
*/
      __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ImportError))));
      if (__pyx_t_9) {
        __Pyx_AddTraceback("EnumTypeToPy.__Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_8, &__pyx_t_10) < 0) __PYX_ERR(1, 14, __pyx_L6_except_error)
        __Pyx_XGOTREF(__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_10);

        /* "EnumTypeToPy":15
 *             from pyverbs.libibverbs_enums import ibv_qp_type as __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py = False  # False indicates "don't try again"             # <<<<<<<<<<<<<<
 *             import warnings
 *             warnings.warn(
*/
        __Pyx_INCREF(Py_False);
        __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py);
        __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py, Py_False);
        __Pyx_GIVEREF(Py_False);

        /* "EnumTypeToPy":16
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py = False  # False indicates "don't try again"
 *             import warnings             # <<<<<<<<<<<<<<
 *             warnings.warn(
 *                 f"enum class ibv_qp_type not importable from pyverbs.libibverbs_enums. "
*/
        __pyx_t_6 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_warnings, 0, 0, NULL, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 16, __pyx_L6_except_error)
        __pyx_t_11 = __pyx_t_6;
        __Pyx_GOTREF(__pyx_t_11);
        __pyx_v_warnings = __pyx_t_11;
        __pyx_t_11 = 0;

        /* "EnumTypeToPy":17
 *             __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py = False  # False indicates "don't try again"
 *             import warnings
 *             warnings.warn(             # <<<<<<<<<<<<<<
 *                 f"enum class ibv_qp_type not importable from pyverbs.libibverbs_enums. "
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
*/
        __pyx_t_12 = __pyx_v_warnings;
        __Pyx_INCREF(__pyx_t_12);
        __pyx_t_13 = 0;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_mstate_global->__pyx_kp_u_enum_class_ibv_qp_type_not_impor};
          __pyx_t_11 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_warn, __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 17, __pyx_L6_except_error)
          __Pyx_GOTREF(__pyx_t_11);
        }
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        goto __pyx_L5_exception_handled;
      }
      goto __pyx_L6_except_error;

      /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.libibverbs_enums import ibv_qp_type as __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py
 *         except ImportError:
*/
      __pyx_L6_except_error:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      goto __pyx_L1_error;
      __pyx_L5_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      __pyx_L9_try_end:;
    }

    /* "EnumTypeToPy":11
 * 
 * 
 *     if __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py is None:             # <<<<<<<<<<<<<<
 *         try:
 *             from pyverbs.libibverbs_enums import ibv_qp_type as __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py
*/
  }

  /* "EnumTypeToPy":21
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
 *                 "does not have a .py  or .pyx file.")
 *     if __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py is False:             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_1 = (__pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py == Py_False);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":24
 * 
 * 
 *         return <int>c_val             # <<<<<<<<<<<<<<
 *     __pyx_enum = __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyLong_From_int(((int)__pyx_v_c_val)); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 24, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":21
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
 *                 "does not have a .py  or .pyx file.")
 *     if __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py is False:             # <<<<<<<<<<<<<<
 * 
 * 
*/
  }

  /* "EnumTypeToPy":25
 * 
 *         return <int>c_val
 *     __pyx_enum = __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py             # <<<<<<<<<<<<<<
 * 
 *     if 0:
*/
  __Pyx_INCREF(__pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py);
  __pyx_v___pyx_enum = __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py;

  /* "EnumTypeToPy":29
 *     if 0:
 *         pass
 *     elif c_val == ibv_qp_type.IBV_QPT_RC:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QPT_RC
 *     elif c_val == ibv_qp_type.IBV_QPT_UC:
*/
  __pyx_t_1 = (__pyx_v_c_val == IBV_QPT_RC);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":30
 *         pass
 *     elif c_val == ibv_qp_type.IBV_QPT_RC:
 *         return __pyx_enum.IBV_QPT_RC             # <<<<<<<<<<<<<<
 *     elif c_val == ibv_qp_type.IBV_QPT_UC:
 *         return __pyx_enum.IBV_QPT_UC
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_IBV_QPT_RC); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 30, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":29
 *     if 0:
 *         pass
 *     elif c_val == ibv_qp_type.IBV_QPT_RC:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QPT_RC
 *     elif c_val == ibv_qp_type.IBV_QPT_UC:
*/
  }

  /* "EnumTypeToPy":31
 *     elif c_val == ibv_qp_type.IBV_QPT_RC:
 *         return __pyx_enum.IBV_QPT_RC
 *     elif c_val == ibv_qp_type.IBV_QPT_UC:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QPT_UC
 *     elif c_val == ibv_qp_type.IBV_QPT_UD:
*/
  __pyx_t_1 = (__pyx_v_c_val == IBV_QPT_UC);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":32
 *         return __pyx_enum.IBV_QPT_RC
 *     elif c_val == ibv_qp_type.IBV_QPT_UC:
 *         return __pyx_enum.IBV_QPT_UC             # <<<<<<<<<<<<<<
 *     elif c_val == ibv_qp_type.IBV_QPT_UD:
 *         return __pyx_enum.IBV_QPT_UD
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_IBV_QPT_UC); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 32, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":31
 *     elif c_val == ibv_qp_type.IBV_QPT_RC:
 *         return __pyx_enum.IBV_QPT_RC
 *     elif c_val == ibv_qp_type.IBV_QPT_UC:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QPT_UC
 *     elif c_val == ibv_qp_type.IBV_QPT_UD:
*/
  }

  /* "EnumTypeToPy":33
 *     elif c_val == ibv_qp_type.IBV_QPT_UC:
 *         return __pyx_enum.IBV_QPT_UC
 *     elif c_val == ibv_qp_type.IBV_QPT_UD:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QPT_UD
 *     elif c_val == ibv_qp_type.IBV_QPT_RAW_PACKET:
*/
  __pyx_t_1 = (__pyx_v_c_val == IBV_QPT_UD);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":34
 *         return __pyx_enum.IBV_QPT_UC
 *     elif c_val == ibv_qp_type.IBV_QPT_UD:
 *         return __pyx_enum.IBV_QPT_UD             # <<<<<<<<<<<<<<
 *     elif c_val == ibv_qp_type.IBV_QPT_RAW_PACKET:
 *         return __pyx_enum.IBV_QPT_RAW_PACKET
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_IBV_QPT_UD); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 34, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":33
 *     elif c_val == ibv_qp_type.IBV_QPT_UC:
 *         return __pyx_enum.IBV_QPT_UC
 *     elif c_val == ibv_qp_type.IBV_QPT_UD:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QPT_UD
 *     elif c_val == ibv_qp_type.IBV_QPT_RAW_PACKET:
*/
  }

  /* "EnumTypeToPy":35
 *     elif c_val == ibv_qp_type.IBV_QPT_UD:
 *         return __pyx_enum.IBV_QPT_UD
 *     elif c_val == ibv_qp_type.IBV_QPT_RAW_PACKET:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QPT_RAW_PACKET
 *     elif c_val == ibv_qp_type.IBV_QPT_XRC_SEND:
*/
  __pyx_t_1 = (__pyx_v_c_val == IBV_QPT_RAW_PACKET);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":36
 *         return __pyx_enum.IBV_QPT_UD
 *     elif c_val == ibv_qp_type.IBV_QPT_RAW_PACKET:
 *         return __pyx_enum.IBV_QPT_RAW_PACKET             # <<<<<<<<<<<<<<
 *     elif c_val == ibv_qp_type.IBV_QPT_XRC_SEND:
 *         return __pyx_enum.IBV_QPT_XRC_SEND
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_IBV_QPT_RAW_PACKET); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 36, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":35
 *     elif c_val == ibv_qp_type.IBV_QPT_UD:
 *         return __pyx_enum.IBV_QPT_UD
 *     elif c_val == ibv_qp_type.IBV_QPT_RAW_PACKET:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QPT_RAW_PACKET
 *     elif c_val == ibv_qp_type.IBV_QPT_XRC_SEND:
*/
  }

  /* "EnumTypeToPy":37
 *     elif c_val == ibv_qp_type.IBV_QPT_RAW_PACKET:
 *         return __pyx_enum.IBV_QPT_RAW_PACKET
 *     elif c_val == ibv_qp_type.IBV_QPT_XRC_SEND:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QPT_XRC_SEND
 *     elif c_val == ibv_qp_type.IBV_QPT_XRC_RECV:
*/
  __pyx_t_1 = (__pyx_v_c_val == IBV_QPT_XRC_SEND);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":38
 *         return __pyx_enum.IBV_QPT_RAW_PACKET
 *     elif c_val == ibv_qp_type.IBV_QPT_XRC_SEND:
 *         return __pyx_enum.IBV_QPT_XRC_SEND             # <<<<<<<<<<<<<<
 *     elif c_val == ibv_qp_type.IBV_QPT_XRC_RECV:
 *         return __pyx_enum.IBV_QPT_XRC_RECV
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_IBV_QPT_XRC_SEND); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 38, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":37
 *     elif c_val == ibv_qp_type.IBV_QPT_RAW_PACKET:
 *         return __pyx_enum.IBV_QPT_RAW_PACKET
 *     elif c_val == ibv_qp_type.IBV_QPT_XRC_SEND:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QPT_XRC_SEND
 *     elif c_val == ibv_qp_type.IBV_QPT_XRC_RECV:
*/
  }

  /* "EnumTypeToPy":39
 *     elif c_val == ibv_qp_type.IBV_QPT_XRC_SEND:
 *         return __pyx_enum.IBV_QPT_XRC_SEND
 *     elif c_val == ibv_qp_type.IBV_QPT_XRC_RECV:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QPT_XRC_RECV
 *     elif c_val == ibv_qp_type.IBV_QPT_DRIVER:
*/
  __pyx_t_1 = (__pyx_v_c_val == IBV_QPT_XRC_RECV);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":40
 *         return __pyx_enum.IBV_QPT_XRC_SEND
 *     elif c_val == ibv_qp_type.IBV_QPT_XRC_RECV:
 *         return __pyx_enum.IBV_QPT_XRC_RECV             # <<<<<<<<<<<<<<
 *     elif c_val == ibv_qp_type.IBV_QPT_DRIVER:
 *         return __pyx_enum.IBV_QPT_DRIVER
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_IBV_QPT_XRC_RECV); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 40, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":39
 *     elif c_val == ibv_qp_type.IBV_QPT_XRC_SEND:
 *         return __pyx_enum.IBV_QPT_XRC_SEND
 *     elif c_val == ibv_qp_type.IBV_QPT_XRC_RECV:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QPT_XRC_RECV
 *     elif c_val == ibv_qp_type.IBV_QPT_DRIVER:
*/
  }

  /* "EnumTypeToPy":41
 *     elif c_val == ibv_qp_type.IBV_QPT_XRC_RECV:
 *         return __pyx_enum.IBV_QPT_XRC_RECV
 *     elif c_val == ibv_qp_type.IBV_QPT_DRIVER:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QPT_DRIVER
 *     else:
*/
  __pyx_t_1 = (__pyx_v_c_val == IBV_QPT_DRIVER);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":42
 *         return __pyx_enum.IBV_QPT_XRC_RECV
 *     elif c_val == ibv_qp_type.IBV_QPT_DRIVER:
 *         return __pyx_enum.IBV_QPT_DRIVER             # <<<<<<<<<<<<<<
 *     else:
 *         underlying_c_val = <int>c_val
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_IBV_QPT_DRIVER); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 42, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":41
 *     elif c_val == ibv_qp_type.IBV_QPT_XRC_RECV:
 *         return __pyx_enum.IBV_QPT_XRC_RECV
 *     elif c_val == ibv_qp_type.IBV_QPT_DRIVER:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.IBV_QPT_DRIVER
 *     else:
*/
  }

  /* "EnumTypeToPy":44
 *         return __pyx_enum.IBV_QPT_DRIVER
 *     else:
 *         underlying_c_val = <int>c_val             # <<<<<<<<<<<<<<
 *         return __pyx_enum(underlying_c_val)
*/
  /*else*/ {
    __pyx_v_underlying_c_val = ((int)__pyx_v_c_val);

    /* "EnumTypeToPy":45
 *     else:
 *         underlying_c_val = <int>c_val
 *         return __pyx_enum(underlying_c_val)             # <<<<<<<<<<<<<<
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = NULL;
    __Pyx_INCREF(__pyx_v___pyx_enum);
    __pyx_t_5 = __pyx_v___pyx_enum; 
    __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_v_underlying_c_val); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 45, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_13 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_8);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_13 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_11};
      __pyx_t_10 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (__pyx_t_13*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 45, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
    }
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;
  }

  /* "EnumTypeToPy":3
 * cdef object __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py = None
 * 
 * @cname("__Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py")             # <<<<<<<<<<<<<<
 * cdef __Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py(ibv_qp_type c_val):
 *     cdef object __pyx_enum
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("EnumTypeToPy.__Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_enum);
  __Pyx_XDECREF(__pyx_v_warnings);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(enum mlx5dv_context_comp_mask __pyx_v_c_val) {
  PyObject *__pyx_v___pyx_enum = 0;
  PyObject *__pyx_v_warnings = NULL;
  int __pyx_v_underlying_c_val;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  size_t __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py", 0);

  /* "EnumTypeToPy":11
 * 
 * 
 *     if __pyx_imported_enum___Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:             # <<<<<<<<<<<<<<
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_context_comp_mask as __pyx_imported_enum___Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
*/
  __pyx_t_1 = (__pyx_imported_enum___Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py == Py_None);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_context_comp_mask as __pyx_imported_enum___Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
*/
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_4);
      /*try:*/ {

        /* "EnumTypeToPy":13
 *     if __pyx_imported_enum___Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_context_comp_mask as __pyx_imported_enum___Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py             # <<<<<<<<<<<<<<
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
*/
        {
          PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_mlx5dv_context_comp_mask};
          __pyx_t_6 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5_enum, __pyx_imported_names, 1, NULL, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L4_error)
        }
        __pyx_t_5 = __pyx_t_6;
        __Pyx_GOTREF(__pyx_t_5);
        {
          PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_mlx5dv_context_comp_mask};
          __pyx_t_7 = 0; {
            __pyx_t_8 = __Pyx_ImportFrom(__pyx_t_5, __pyx_imported_names[__pyx_t_7]); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 13, __pyx_L4_error)
            __Pyx_GOTREF(__pyx_t_8);
            switch (__pyx_t_7) {
              case 0:
              __Pyx_INCREF(__pyx_t_8);
              __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
              __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_8);
              break;
              default:;
            }
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          }
        }
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

        /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_context_comp_mask as __pyx_imported_enum___Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
*/
      }
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L9_try_end;
      __pyx_L4_error:;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;

      /* "EnumTypeToPy":14
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_context_comp_mask as __pyx_imported_enum___Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:             # <<<<<<<<<<<<<<
 *             __pyx_imported_enum___Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
 *             import warnings
*/
      __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ImportError))));
      if (__pyx_t_9) {
        __Pyx_AddTraceback("EnumTypeToPy.__Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_8, &__pyx_t_10) < 0) __PYX_ERR(1, 14, __pyx_L6_except_error)
        __Pyx_XGOTREF(__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_10);

        /* "EnumTypeToPy":15
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_context_comp_mask as __pyx_imported_enum___Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"             # <<<<<<<<<<<<<<
 *             import warnings
 *             warnings.warn(
*/
        __Pyx_INCREF(Py_False);
        __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
        __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py, Py_False);
        __Pyx_GIVEREF(Py_False);

        /* "EnumTypeToPy":16
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
 *             import warnings             # <<<<<<<<<<<<<<
 *             warnings.warn(
 *                 f"enum class mlx5dv_context_comp_mask not importable from pyverbs.providers.mlx5.mlx5_enums. "
*/
        __pyx_t_6 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_warnings, 0, 0, NULL, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 16, __pyx_L6_except_error)
        __pyx_t_11 = __pyx_t_6;
        __Pyx_GOTREF(__pyx_t_11);
        __pyx_v_warnings = __pyx_t_11;
        __pyx_t_11 = 0;

        /* "EnumTypeToPy":17
 *             __pyx_imported_enum___Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
 *             import warnings
 *             warnings.warn(             # <<<<<<<<<<<<<<
 *                 f"enum class mlx5dv_context_comp_mask not importable from pyverbs.providers.mlx5.mlx5_enums. "
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
*/
        __pyx_t_12 = __pyx_v_warnings;
        __Pyx_INCREF(__pyx_t_12);
        __pyx_t_13 = 0;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_mstate_global->__pyx_kp_u_enum_class_mlx5dv_context_comp_m};
          __pyx_t_11 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_warn, __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 17, __pyx_L6_except_error)
          __Pyx_GOTREF(__pyx_t_11);
        }
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        goto __pyx_L5_exception_handled;
      }
      goto __pyx_L6_except_error;

      /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_context_comp_mask as __pyx_imported_enum___Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
*/
      __pyx_L6_except_error:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      goto __pyx_L1_error;
      __pyx_L5_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      __pyx_L9_try_end:;
    }

    /* "EnumTypeToPy":11
 * 
 * 
 *     if __pyx_imported_enum___Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:             # <<<<<<<<<<<<<<
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_context_comp_mask as __pyx_imported_enum___Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
*/
  }

  /* "EnumTypeToPy":21
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
 *                 "does not have a .py  or .pyx file.")
 *     if __pyx_imported_enum___Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is False:             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_1 = (__pyx_imported_enum___Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py == Py_False);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":24
 * 
 * 
 *         return <int>c_val             # <<<<<<<<<<<<<<
 *     __pyx_enum = __pyx_imported_enum___Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyLong_From_int(((int)__pyx_v_c_val)); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 24, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":21
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
 *                 "does not have a .py  or .pyx file.")
 *     if __pyx_imported_enum___Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is False:             # <<<<<<<<<<<<<<
 * 
 * 
*/
  }

  /* "EnumTypeToPy":25
 * 
 *         return <int>c_val
 *     __pyx_enum = __pyx_imported_enum___Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py             # <<<<<<<<<<<<<<
 * 
 *     if 0:
*/
  __Pyx_INCREF(__pyx_imported_enum___Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
  __pyx_v___pyx_enum = __pyx_imported_enum___Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py;

  /* "EnumTypeToPy":29
 *     if 0:
 *         pass
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_CQE_COMPRESION:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_CQE_COMPRESION
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_SWP:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_CONTEXT_MASK_CQE_COMPRESION);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":30
 *         pass
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_CQE_COMPRESION:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_CQE_COMPRESION             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_SWP:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_SWP
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_CONTEXT_MASK_CQE_COMPRESI); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 30, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":29
 *     if 0:
 *         pass
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_CQE_COMPRESION:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_CQE_COMPRESION
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_SWP:
*/
  }

  /* "EnumTypeToPy":31
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_CQE_COMPRESION:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_CQE_COMPRESION
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_SWP:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_SWP
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_STRIDING_RQ:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_CONTEXT_MASK_SWP);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":32
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_CQE_COMPRESION
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_SWP:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_SWP             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_STRIDING_RQ:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_STRIDING_RQ
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_CONTEXT_MASK_SWP); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 32, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":31
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_CQE_COMPRESION:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_CQE_COMPRESION
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_SWP:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_SWP
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_STRIDING_RQ:
*/
  }

  /* "EnumTypeToPy":33
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_SWP:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_SWP
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_STRIDING_RQ:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_STRIDING_RQ
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_TUNNEL_OFFLOADS:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_CONTEXT_MASK_STRIDING_RQ);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":34
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_SWP
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_STRIDING_RQ:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_STRIDING_RQ             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_TUNNEL_OFFLOADS:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_TUNNEL_OFFLOADS
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_CONTEXT_MASK_STRIDING_RQ); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 34, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":33
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_SWP:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_SWP
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_STRIDING_RQ:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_STRIDING_RQ
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_TUNNEL_OFFLOADS:
*/
  }

  /* "EnumTypeToPy":35
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_STRIDING_RQ:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_STRIDING_RQ
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_TUNNEL_OFFLOADS:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_TUNNEL_OFFLOADS
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_DYN_BFREGS:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_CONTEXT_MASK_TUNNEL_OFFLOADS);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":36
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_STRIDING_RQ
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_TUNNEL_OFFLOADS:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_TUNNEL_OFFLOADS             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_DYN_BFREGS:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_DYN_BFREGS
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_CONTEXT_MASK_TUNNEL_OFFLO); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 36, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":35
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_STRIDING_RQ:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_STRIDING_RQ
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_TUNNEL_OFFLOADS:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_TUNNEL_OFFLOADS
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_DYN_BFREGS:
*/
  }

  /* "EnumTypeToPy":37
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_TUNNEL_OFFLOADS:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_TUNNEL_OFFLOADS
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_DYN_BFREGS:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_DYN_BFREGS
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_CLOCK_INFO_UPDATE:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_CONTEXT_MASK_DYN_BFREGS);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":38
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_TUNNEL_OFFLOADS
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_DYN_BFREGS:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_DYN_BFREGS             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_CLOCK_INFO_UPDATE:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_CLOCK_INFO_UPDATE
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_CONTEXT_MASK_DYN_BFREGS); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 38, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":37
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_TUNNEL_OFFLOADS:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_TUNNEL_OFFLOADS
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_DYN_BFREGS:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_DYN_BFREGS
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_CLOCK_INFO_UPDATE:
*/
  }

  /* "EnumTypeToPy":39
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_DYN_BFREGS:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_DYN_BFREGS
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_CLOCK_INFO_UPDATE:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_CLOCK_INFO_UPDATE
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_FLOW_ACTION_FLAGS:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_CONTEXT_MASK_CLOCK_INFO_UPDATE);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":40
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_DYN_BFREGS
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_CLOCK_INFO_UPDATE:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_CLOCK_INFO_UPDATE             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_FLOW_ACTION_FLAGS:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_FLOW_ACTION_FLAGS
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_CONTEXT_MASK_CLOCK_INFO_U); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 40, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":39
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_DYN_BFREGS:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_DYN_BFREGS
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_CLOCK_INFO_UPDATE:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_CLOCK_INFO_UPDATE
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_FLOW_ACTION_FLAGS:
*/
  }

  /* "EnumTypeToPy":41
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_CLOCK_INFO_UPDATE:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_CLOCK_INFO_UPDATE
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_FLOW_ACTION_FLAGS:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_FLOW_ACTION_FLAGS
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_DC_ODP_CAPS:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_CONTEXT_MASK_FLOW_ACTION_FLAGS);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":42
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_CLOCK_INFO_UPDATE
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_FLOW_ACTION_FLAGS:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_FLOW_ACTION_FLAGS             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_DC_ODP_CAPS:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_DC_ODP_CAPS
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_CONTEXT_MASK_FLOW_ACTION); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 42, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":41
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_CLOCK_INFO_UPDATE:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_CLOCK_INFO_UPDATE
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_FLOW_ACTION_FLAGS:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_FLOW_ACTION_FLAGS
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_DC_ODP_CAPS:
*/
  }

  /* "EnumTypeToPy":43
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_FLOW_ACTION_FLAGS:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_FLOW_ACTION_FLAGS
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_DC_ODP_CAPS:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_DC_ODP_CAPS
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_NUM_LAG_PORTS:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_CONTEXT_MASK_DC_ODP_CAPS);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":44
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_FLOW_ACTION_FLAGS
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_DC_ODP_CAPS:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_DC_ODP_CAPS             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_NUM_LAG_PORTS:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_NUM_LAG_PORTS
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_CONTEXT_MASK_DC_ODP_CAPS); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 44, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":43
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_FLOW_ACTION_FLAGS:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_FLOW_ACTION_FLAGS
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_DC_ODP_CAPS:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_DC_ODP_CAPS
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_NUM_LAG_PORTS:
*/
  }

  /* "EnumTypeToPy":45
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_DC_ODP_CAPS:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_DC_ODP_CAPS
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_NUM_LAG_PORTS:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_NUM_LAG_PORTS
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_SIGNATURE_OFFLOAD:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_CONTEXT_MASK_NUM_LAG_PORTS);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":46
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_DC_ODP_CAPS
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_NUM_LAG_PORTS:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_NUM_LAG_PORTS             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_SIGNATURE_OFFLOAD:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_SIGNATURE_OFFLOAD
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_CONTEXT_MASK_NUM_LAG_PORT); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 46, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":45
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_DC_ODP_CAPS:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_DC_ODP_CAPS
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_NUM_LAG_PORTS:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_NUM_LAG_PORTS
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_SIGNATURE_OFFLOAD:
*/
  }

  /* "EnumTypeToPy":47
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_NUM_LAG_PORTS:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_NUM_LAG_PORTS
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_SIGNATURE_OFFLOAD:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_SIGNATURE_OFFLOAD
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_DCI_STREAMS:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_CONTEXT_MASK_SIGNATURE_OFFLOAD);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":48
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_NUM_LAG_PORTS
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_SIGNATURE_OFFLOAD:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_SIGNATURE_OFFLOAD             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_DCI_STREAMS:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_DCI_STREAMS
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_CONTEXT_MASK_SIGNATURE_OF); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 48, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":47
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_NUM_LAG_PORTS:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_NUM_LAG_PORTS
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_SIGNATURE_OFFLOAD:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_SIGNATURE_OFFLOAD
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_DCI_STREAMS:
*/
  }

  /* "EnumTypeToPy":49
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_SIGNATURE_OFFLOAD:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_SIGNATURE_OFFLOAD
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_DCI_STREAMS:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_DCI_STREAMS
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_WR_MEMCPY_LENGTH:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_CONTEXT_MASK_DCI_STREAMS);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":50
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_SIGNATURE_OFFLOAD
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_DCI_STREAMS:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_DCI_STREAMS             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_WR_MEMCPY_LENGTH:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_WR_MEMCPY_LENGTH
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_CONTEXT_MASK_DCI_STREAMS); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 50, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":49
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_SIGNATURE_OFFLOAD:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_SIGNATURE_OFFLOAD
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_DCI_STREAMS:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_DCI_STREAMS
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_WR_MEMCPY_LENGTH:
*/
  }

  /* "EnumTypeToPy":51
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_DCI_STREAMS:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_DCI_STREAMS
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_WR_MEMCPY_LENGTH:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_WR_MEMCPY_LENGTH
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_CRYPTO_OFFLOAD:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_CONTEXT_MASK_WR_MEMCPY_LENGTH);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":52
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_DCI_STREAMS
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_WR_MEMCPY_LENGTH:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_WR_MEMCPY_LENGTH             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_CRYPTO_OFFLOAD:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_CRYPTO_OFFLOAD
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_CONTEXT_MASK_WR_MEMCPY_LE); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 52, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":51
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_DCI_STREAMS:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_DCI_STREAMS
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_WR_MEMCPY_LENGTH:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_WR_MEMCPY_LENGTH
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_CRYPTO_OFFLOAD:
*/
  }

  /* "EnumTypeToPy":53
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_WR_MEMCPY_LENGTH:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_WR_MEMCPY_LENGTH
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_CRYPTO_OFFLOAD:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_CRYPTO_OFFLOAD
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_MAX_DC_RD_ATOM:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_CONTEXT_MASK_CRYPTO_OFFLOAD);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":54
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_WR_MEMCPY_LENGTH
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_CRYPTO_OFFLOAD:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_CRYPTO_OFFLOAD             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_MAX_DC_RD_ATOM:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_MAX_DC_RD_ATOM
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_CONTEXT_MASK_CRYPTO_OFFLO); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 54, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":53
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_WR_MEMCPY_LENGTH:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_WR_MEMCPY_LENGTH
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_CRYPTO_OFFLOAD:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_CRYPTO_OFFLOAD
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_MAX_DC_RD_ATOM:
*/
  }

  /* "EnumTypeToPy":55
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_CRYPTO_OFFLOAD:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_CRYPTO_OFFLOAD
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_MAX_DC_RD_ATOM:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_MAX_DC_RD_ATOM
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_OOO_RECV_WRS:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_CONTEXT_MASK_MAX_DC_RD_ATOM);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":56
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_CRYPTO_OFFLOAD
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_MAX_DC_RD_ATOM:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_MAX_DC_RD_ATOM             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_OOO_RECV_WRS:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_OOO_RECV_WRS
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_CONTEXT_MASK_MAX_DC_RD_AT); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":55
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_CRYPTO_OFFLOAD:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_CRYPTO_OFFLOAD
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_MAX_DC_RD_ATOM:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_MAX_DC_RD_ATOM
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_OOO_RECV_WRS:
*/
  }

  /* "EnumTypeToPy":57
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_MAX_DC_RD_ATOM:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_MAX_DC_RD_ATOM
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_OOO_RECV_WRS:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_OOO_RECV_WRS
 *     else:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_CONTEXT_MASK_OOO_RECV_WRS);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":58
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_MAX_DC_RD_ATOM
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_OOO_RECV_WRS:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_OOO_RECV_WRS             # <<<<<<<<<<<<<<
 *     else:
 *         underlying_c_val = <int>c_val
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_CONTEXT_MASK_OOO_RECV_WRS); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 58, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":57
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_MAX_DC_RD_ATOM:
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_MAX_DC_RD_ATOM
 *     elif c_val == mlx5dv_context_comp_mask.MLX5DV_CONTEXT_MASK_OOO_RECV_WRS:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_OOO_RECV_WRS
 *     else:
*/
  }

  /* "EnumTypeToPy":60
 *         return __pyx_enum.MLX5DV_CONTEXT_MASK_OOO_RECV_WRS
 *     else:
 *         underlying_c_val = <int>c_val             # <<<<<<<<<<<<<<
 *         return __pyx_enum(underlying_c_val)
*/
  /*else*/ {
    __pyx_v_underlying_c_val = ((int)__pyx_v_c_val);

    /* "EnumTypeToPy":61
 *     else:
 *         underlying_c_val = <int>c_val
 *         return __pyx_enum(underlying_c_val)             # <<<<<<<<<<<<<<
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = NULL;
    __Pyx_INCREF(__pyx_v___pyx_enum);
    __pyx_t_5 = __pyx_v___pyx_enum; 
    __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_v_underlying_c_val); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 61, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_13 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_8);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_13 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_11};
      __pyx_t_10 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (__pyx_t_13*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 61, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
    }
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;
  }

  /* "EnumTypeToPy":3
 * cdef object __pyx_imported_enum___Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = None
 * 
 * @cname("__Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py")             # <<<<<<<<<<<<<<
 * cdef __Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(mlx5dv_context_comp_mask c_val):
 *     cdef object __pyx_enum
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("EnumTypeToPy.__Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_enum);
  __Pyx_XDECREF(__pyx_v_warnings);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(enum mlx5dv_context_flags __pyx_v_c_val) {
  PyObject *__pyx_v___pyx_enum = 0;
  PyObject *__pyx_v_warnings = NULL;
  int __pyx_v_underlying_c_val;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  size_t __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py", 0);

  /* "EnumTypeToPy":11
 * 
 * 
 *     if __pyx_imported_enum___Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:             # <<<<<<<<<<<<<<
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_context_flags as __pyx_imported_enum___Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
*/
  __pyx_t_1 = (__pyx_imported_enum___Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py == Py_None);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_context_flags as __pyx_imported_enum___Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
*/
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_4);
      /*try:*/ {

        /* "EnumTypeToPy":13
 *     if __pyx_imported_enum___Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_context_flags as __pyx_imported_enum___Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py             # <<<<<<<<<<<<<<
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
*/
        {
          PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_mlx5dv_context_flags};
          __pyx_t_6 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5_enum, __pyx_imported_names, 1, NULL, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L4_error)
        }
        __pyx_t_5 = __pyx_t_6;
        __Pyx_GOTREF(__pyx_t_5);
        {
          PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_mlx5dv_context_flags};
          __pyx_t_7 = 0; {
            __pyx_t_8 = __Pyx_ImportFrom(__pyx_t_5, __pyx_imported_names[__pyx_t_7]); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 13, __pyx_L4_error)
            __Pyx_GOTREF(__pyx_t_8);
            switch (__pyx_t_7) {
              case 0:
              __Pyx_INCREF(__pyx_t_8);
              __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
              __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_8);
              break;
              default:;
            }
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          }
        }
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

        /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_context_flags as __pyx_imported_enum___Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
*/
      }
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L9_try_end;
      __pyx_L4_error:;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;

      /* "EnumTypeToPy":14
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_context_flags as __pyx_imported_enum___Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:             # <<<<<<<<<<<<<<
 *             __pyx_imported_enum___Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
 *             import warnings
*/
      __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ImportError))));
      if (__pyx_t_9) {
        __Pyx_AddTraceback("EnumTypeToPy.__Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_8, &__pyx_t_10) < 0) __PYX_ERR(1, 14, __pyx_L6_except_error)
        __Pyx_XGOTREF(__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_10);

        /* "EnumTypeToPy":15
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_context_flags as __pyx_imported_enum___Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"             # <<<<<<<<<<<<<<
 *             import warnings
 *             warnings.warn(
*/
        __Pyx_INCREF(Py_False);
        __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
        __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py, Py_False);
        __Pyx_GIVEREF(Py_False);

        /* "EnumTypeToPy":16
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
 *             import warnings             # <<<<<<<<<<<<<<
 *             warnings.warn(
 *                 f"enum class mlx5dv_context_flags not importable from pyverbs.providers.mlx5.mlx5_enums. "
*/
        __pyx_t_6 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_warnings, 0, 0, NULL, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 16, __pyx_L6_except_error)
        __pyx_t_11 = __pyx_t_6;
        __Pyx_GOTREF(__pyx_t_11);
        __pyx_v_warnings = __pyx_t_11;
        __pyx_t_11 = 0;

        /* "EnumTypeToPy":17
 *             __pyx_imported_enum___Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
 *             import warnings
 *             warnings.warn(             # <<<<<<<<<<<<<<
 *                 f"enum class mlx5dv_context_flags not importable from pyverbs.providers.mlx5.mlx5_enums. "
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
*/
        __pyx_t_12 = __pyx_v_warnings;
        __Pyx_INCREF(__pyx_t_12);
        __pyx_t_13 = 0;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_mstate_global->__pyx_kp_u_enum_class_mlx5dv_context_flags};
          __pyx_t_11 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_warn, __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 17, __pyx_L6_except_error)
          __Pyx_GOTREF(__pyx_t_11);
        }
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        goto __pyx_L5_exception_handled;
      }
      goto __pyx_L6_except_error;

      /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_context_flags as __pyx_imported_enum___Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
*/
      __pyx_L6_except_error:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      goto __pyx_L1_error;
      __pyx_L5_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      __pyx_L9_try_end:;
    }

    /* "EnumTypeToPy":11
 * 
 * 
 *     if __pyx_imported_enum___Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:             # <<<<<<<<<<<<<<
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_context_flags as __pyx_imported_enum___Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
*/
  }

  /* "EnumTypeToPy":21
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
 *                 "does not have a .py  or .pyx file.")
 *     if __pyx_imported_enum___Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is False:             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_1 = (__pyx_imported_enum___Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py == Py_False);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":24
 * 
 * 
 *         return <int>c_val             # <<<<<<<<<<<<<<
 *     __pyx_enum = __pyx_imported_enum___Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyLong_From_int(((int)__pyx_v_c_val)); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 24, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":21
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
 *                 "does not have a .py  or .pyx file.")
 *     if __pyx_imported_enum___Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is False:             # <<<<<<<<<<<<<<
 * 
 * 
*/
  }

  /* "EnumTypeToPy":25
 * 
 *         return <int>c_val
 *     __pyx_enum = __pyx_imported_enum___Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py             # <<<<<<<<<<<<<<
 * 
 *     if 0:
*/
  __Pyx_INCREF(__pyx_imported_enum___Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
  __pyx_v___pyx_enum = __pyx_imported_enum___Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py;

  /* "EnumTypeToPy":29
 *     if 0:
 *         pass
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_CQE_V1:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_CQE_V1
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_CONTEXT_FLAGS_CQE_V1);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":30
 *         pass
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_CQE_V1:
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_CQE_V1             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED:
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_CONTEXT_FLAGS_CQE_V1); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 30, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":29
 *     if 0:
 *         pass
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_CQE_V1:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_CQE_V1
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED:
*/
  }

  /* "EnumTypeToPy":31
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_CQE_V1:
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_CQE_V1
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_ENHANCED_MPW:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":32
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_CQE_V1
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED:
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_ENHANCED_MPW:
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_ENHANCED_MPW
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 32, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":31
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_CQE_V1:
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_CQE_V1
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_ENHANCED_MPW:
*/
  }

  /* "EnumTypeToPy":33
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED:
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_ENHANCED_MPW:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_ENHANCED_MPW
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_CQE_128B_COMP:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_CONTEXT_FLAGS_ENHANCED_MPW);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":34
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_ENHANCED_MPW:
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_ENHANCED_MPW             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_CQE_128B_COMP:
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_CQE_128B_COMP
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_CONTEXT_FLAGS_ENHANCED_MP); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 34, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":33
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED:
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_ENHANCED_MPW:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_ENHANCED_MPW
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_CQE_128B_COMP:
*/
  }

  /* "EnumTypeToPy":35
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_ENHANCED_MPW:
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_ENHANCED_MPW
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_CQE_128B_COMP:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_CQE_128B_COMP
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_CQE_128B_PAD:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_CONTEXT_FLAGS_CQE_128B_COMP);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":36
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_ENHANCED_MPW
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_CQE_128B_COMP:
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_CQE_128B_COMP             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_CQE_128B_PAD:
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_CQE_128B_PAD
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_CONTEXT_FLAGS_CQE_128B_CO); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 36, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":35
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_ENHANCED_MPW:
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_ENHANCED_MPW
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_CQE_128B_COMP:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_CQE_128B_COMP
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_CQE_128B_PAD:
*/
  }

  /* "EnumTypeToPy":37
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_CQE_128B_COMP:
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_CQE_128B_COMP
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_CQE_128B_PAD:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_CQE_128B_PAD
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_PACKET_BASED_CREDIT_MODE:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_CONTEXT_FLAGS_CQE_128B_PAD);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":38
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_CQE_128B_COMP
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_CQE_128B_PAD:
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_CQE_128B_PAD             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_PACKET_BASED_CREDIT_MODE:
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_PACKET_BASED_CREDIT_MODE
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_CONTEXT_FLAGS_CQE_128B_PA); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 38, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":37
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_CQE_128B_COMP:
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_CQE_128B_COMP
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_CQE_128B_PAD:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_CQE_128B_PAD
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_PACKET_BASED_CREDIT_MODE:
*/
  }

  /* "EnumTypeToPy":39
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_CQE_128B_PAD:
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_CQE_128B_PAD
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_PACKET_BASED_CREDIT_MODE:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_PACKET_BASED_CREDIT_MODE
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_REAL_TIME_TS:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_CONTEXT_FLAGS_PACKET_BASED_CREDIT_MODE);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":40
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_CQE_128B_PAD
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_PACKET_BASED_CREDIT_MODE:
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_PACKET_BASED_CREDIT_MODE             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_REAL_TIME_TS:
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_REAL_TIME_TS
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_CONTEXT_FLAGS_PACKET_BASE); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 40, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":39
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_CQE_128B_PAD:
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_CQE_128B_PAD
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_PACKET_BASED_CREDIT_MODE:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_PACKET_BASED_CREDIT_MODE
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_REAL_TIME_TS:
*/
  }

  /* "EnumTypeToPy":41
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_PACKET_BASED_CREDIT_MODE:
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_PACKET_BASED_CREDIT_MODE
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_REAL_TIME_TS:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_REAL_TIME_TS
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_BLUEFLAME:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_CONTEXT_FLAGS_REAL_TIME_TS);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":42
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_PACKET_BASED_CREDIT_MODE
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_REAL_TIME_TS:
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_REAL_TIME_TS             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_BLUEFLAME:
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_BLUEFLAME
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_CONTEXT_FLAGS_REAL_TIME_T); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 42, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":41
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_PACKET_BASED_CREDIT_MODE:
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_PACKET_BASED_CREDIT_MODE
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_REAL_TIME_TS:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_REAL_TIME_TS
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_BLUEFLAME:
*/
  }

  /* "EnumTypeToPy":43
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_REAL_TIME_TS:
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_REAL_TIME_TS
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_BLUEFLAME:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_BLUEFLAME
 *     else:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_CONTEXT_FLAGS_BLUEFLAME);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":44
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_REAL_TIME_TS
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_BLUEFLAME:
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_BLUEFLAME             # <<<<<<<<<<<<<<
 *     else:
 *         underlying_c_val = <int>c_val
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_CONTEXT_FLAGS_BLUEFLAME); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 44, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":43
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_REAL_TIME_TS:
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_REAL_TIME_TS
 *     elif c_val == mlx5dv_context_flags.MLX5DV_CONTEXT_FLAGS_BLUEFLAME:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_BLUEFLAME
 *     else:
*/
  }

  /* "EnumTypeToPy":46
 *         return __pyx_enum.MLX5DV_CONTEXT_FLAGS_BLUEFLAME
 *     else:
 *         underlying_c_val = <int>c_val             # <<<<<<<<<<<<<<
 *         return __pyx_enum(underlying_c_val)
*/
  /*else*/ {
    __pyx_v_underlying_c_val = ((int)__pyx_v_c_val);

    /* "EnumTypeToPy":47
 *     else:
 *         underlying_c_val = <int>c_val
 *         return __pyx_enum(underlying_c_val)             # <<<<<<<<<<<<<<
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = NULL;
    __Pyx_INCREF(__pyx_v___pyx_enum);
    __pyx_t_5 = __pyx_v___pyx_enum; 
    __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_v_underlying_c_val); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 47, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_13 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_8);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_13 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_11};
      __pyx_t_10 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (__pyx_t_13*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 47, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
    }
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;
  }

  /* "EnumTypeToPy":3
 * cdef object __pyx_imported_enum___Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = None
 * 
 * @cname("__Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py")             # <<<<<<<<<<<<<<
 * cdef __Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(mlx5dv_context_flags c_val):
 *     cdef object __pyx_enum
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("EnumTypeToPy.__Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_enum);
  __Pyx_XDECREF(__pyx_v_warnings);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(enum mlx5dv_sw_parsing_offloads __pyx_v_c_val) {
  PyObject *__pyx_v___pyx_enum = 0;
  PyObject *__pyx_v_warnings = NULL;
  int __pyx_v_underlying_c_val;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  size_t __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py", 0);

  /* "EnumTypeToPy":11
 * 
 * 
 *     if __pyx_imported_enum___Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:             # <<<<<<<<<<<<<<
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_sw_parsing_offloads as __pyx_imported_enum___Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
*/
  __pyx_t_1 = (__pyx_imported_enum___Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py == Py_None);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_sw_parsing_offloads as __pyx_imported_enum___Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
*/
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_4);
      /*try:*/ {

        /* "EnumTypeToPy":13
 *     if __pyx_imported_enum___Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_sw_parsing_offloads as __pyx_imported_enum___Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py             # <<<<<<<<<<<<<<
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
*/
        {
          PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_mlx5dv_sw_parsing_offloads};
          __pyx_t_6 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5_enum, __pyx_imported_names, 1, NULL, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L4_error)
        }
        __pyx_t_5 = __pyx_t_6;
        __Pyx_GOTREF(__pyx_t_5);
        {
          PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_mlx5dv_sw_parsing_offloads};
          __pyx_t_7 = 0; {
            __pyx_t_8 = __Pyx_ImportFrom(__pyx_t_5, __pyx_imported_names[__pyx_t_7]); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 13, __pyx_L4_error)
            __Pyx_GOTREF(__pyx_t_8);
            switch (__pyx_t_7) {
              case 0:
              __Pyx_INCREF(__pyx_t_8);
              __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
              __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_8);
              break;
              default:;
            }
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          }
        }
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

        /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_sw_parsing_offloads as __pyx_imported_enum___Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
*/
      }
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L9_try_end;
      __pyx_L4_error:;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;

      /* "EnumTypeToPy":14
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_sw_parsing_offloads as __pyx_imported_enum___Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:             # <<<<<<<<<<<<<<
 *             __pyx_imported_enum___Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
 *             import warnings
*/
      __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ImportError))));
      if (__pyx_t_9) {
        __Pyx_AddTraceback("EnumTypeToPy.__Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_8, &__pyx_t_10) < 0) __PYX_ERR(1, 14, __pyx_L6_except_error)
        __Pyx_XGOTREF(__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_10);

        /* "EnumTypeToPy":15
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_sw_parsing_offloads as __pyx_imported_enum___Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"             # <<<<<<<<<<<<<<
 *             import warnings
 *             warnings.warn(
*/
        __Pyx_INCREF(Py_False);
        __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
        __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py, Py_False);
        __Pyx_GIVEREF(Py_False);

        /* "EnumTypeToPy":16
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
 *             import warnings             # <<<<<<<<<<<<<<
 *             warnings.warn(
 *                 f"enum class mlx5dv_sw_parsing_offloads not importable from pyverbs.providers.mlx5.mlx5_enums. "
*/
        __pyx_t_6 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_warnings, 0, 0, NULL, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 16, __pyx_L6_except_error)
        __pyx_t_11 = __pyx_t_6;
        __Pyx_GOTREF(__pyx_t_11);
        __pyx_v_warnings = __pyx_t_11;
        __pyx_t_11 = 0;

        /* "EnumTypeToPy":17
 *             __pyx_imported_enum___Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
 *             import warnings
 *             warnings.warn(             # <<<<<<<<<<<<<<
 *                 f"enum class mlx5dv_sw_parsing_offloads not importable from pyverbs.providers.mlx5.mlx5_enums. "
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
*/
        __pyx_t_12 = __pyx_v_warnings;
        __Pyx_INCREF(__pyx_t_12);
        __pyx_t_13 = 0;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_mstate_global->__pyx_kp_u_enum_class_mlx5dv_sw_parsing_off};
          __pyx_t_11 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_warn, __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 17, __pyx_L6_except_error)
          __Pyx_GOTREF(__pyx_t_11);
        }
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        goto __pyx_L5_exception_handled;
      }
      goto __pyx_L6_except_error;

      /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_sw_parsing_offloads as __pyx_imported_enum___Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
*/
      __pyx_L6_except_error:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      goto __pyx_L1_error;
      __pyx_L5_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      __pyx_L9_try_end:;
    }

    /* "EnumTypeToPy":11
 * 
 * 
 *     if __pyx_imported_enum___Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:             # <<<<<<<<<<<<<<
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_sw_parsing_offloads as __pyx_imported_enum___Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
*/
  }

  /* "EnumTypeToPy":21
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
 *                 "does not have a .py  or .pyx file.")
 *     if __pyx_imported_enum___Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is False:             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_1 = (__pyx_imported_enum___Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py == Py_False);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":24
 * 
 * 
 *         return <int>c_val             # <<<<<<<<<<<<<<
 *     __pyx_enum = __pyx_imported_enum___Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyLong_From_int(((int)__pyx_v_c_val)); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 24, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":21
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
 *                 "does not have a .py  or .pyx file.")
 *     if __pyx_imported_enum___Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is False:             # <<<<<<<<<<<<<<
 * 
 * 
*/
  }

  /* "EnumTypeToPy":25
 * 
 *         return <int>c_val
 *     __pyx_enum = __pyx_imported_enum___Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py             # <<<<<<<<<<<<<<
 * 
 *     if 0:
*/
  __Pyx_INCREF(__pyx_imported_enum___Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
  __pyx_v___pyx_enum = __pyx_imported_enum___Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py;

  /* "EnumTypeToPy":29
 *     if 0:
 *         pass
 *     elif c_val == mlx5dv_sw_parsing_offloads.MLX5DV_SW_PARSING:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_SW_PARSING
 *     elif c_val == mlx5dv_sw_parsing_offloads.MLX5DV_SW_PARSING_CSUM:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_SW_PARSING);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":30
 *         pass
 *     elif c_val == mlx5dv_sw_parsing_offloads.MLX5DV_SW_PARSING:
 *         return __pyx_enum.MLX5DV_SW_PARSING             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_sw_parsing_offloads.MLX5DV_SW_PARSING_CSUM:
 *         return __pyx_enum.MLX5DV_SW_PARSING_CSUM
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_SW_PARSING); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 30, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":29
 *     if 0:
 *         pass
 *     elif c_val == mlx5dv_sw_parsing_offloads.MLX5DV_SW_PARSING:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_SW_PARSING
 *     elif c_val == mlx5dv_sw_parsing_offloads.MLX5DV_SW_PARSING_CSUM:
*/
  }

  /* "EnumTypeToPy":31
 *     elif c_val == mlx5dv_sw_parsing_offloads.MLX5DV_SW_PARSING:
 *         return __pyx_enum.MLX5DV_SW_PARSING
 *     elif c_val == mlx5dv_sw_parsing_offloads.MLX5DV_SW_PARSING_CSUM:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_SW_PARSING_CSUM
 *     elif c_val == mlx5dv_sw_parsing_offloads.MLX5DV_SW_PARSING_LSO:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_SW_PARSING_CSUM);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":32
 *         return __pyx_enum.MLX5DV_SW_PARSING
 *     elif c_val == mlx5dv_sw_parsing_offloads.MLX5DV_SW_PARSING_CSUM:
 *         return __pyx_enum.MLX5DV_SW_PARSING_CSUM             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_sw_parsing_offloads.MLX5DV_SW_PARSING_LSO:
 *         return __pyx_enum.MLX5DV_SW_PARSING_LSO
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_SW_PARSING_CSUM); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 32, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":31
 *     elif c_val == mlx5dv_sw_parsing_offloads.MLX5DV_SW_PARSING:
 *         return __pyx_enum.MLX5DV_SW_PARSING
 *     elif c_val == mlx5dv_sw_parsing_offloads.MLX5DV_SW_PARSING_CSUM:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_SW_PARSING_CSUM
 *     elif c_val == mlx5dv_sw_parsing_offloads.MLX5DV_SW_PARSING_LSO:
*/
  }

  /* "EnumTypeToPy":33
 *     elif c_val == mlx5dv_sw_parsing_offloads.MLX5DV_SW_PARSING_CSUM:
 *         return __pyx_enum.MLX5DV_SW_PARSING_CSUM
 *     elif c_val == mlx5dv_sw_parsing_offloads.MLX5DV_SW_PARSING_LSO:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_SW_PARSING_LSO
 *     else:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_SW_PARSING_LSO);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":34
 *         return __pyx_enum.MLX5DV_SW_PARSING_CSUM
 *     elif c_val == mlx5dv_sw_parsing_offloads.MLX5DV_SW_PARSING_LSO:
 *         return __pyx_enum.MLX5DV_SW_PARSING_LSO             # <<<<<<<<<<<<<<
 *     else:
 *         underlying_c_val = <int>c_val
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_SW_PARSING_LSO); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 34, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":33
 *     elif c_val == mlx5dv_sw_parsing_offloads.MLX5DV_SW_PARSING_CSUM:
 *         return __pyx_enum.MLX5DV_SW_PARSING_CSUM
 *     elif c_val == mlx5dv_sw_parsing_offloads.MLX5DV_SW_PARSING_LSO:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_SW_PARSING_LSO
 *     else:
*/
  }

  /* "EnumTypeToPy":36
 *         return __pyx_enum.MLX5DV_SW_PARSING_LSO
 *     else:
 *         underlying_c_val = <int>c_val             # <<<<<<<<<<<<<<
 *         return __pyx_enum(underlying_c_val)
*/
  /*else*/ {
    __pyx_v_underlying_c_val = ((int)__pyx_v_c_val);

    /* "EnumTypeToPy":37
 *     else:
 *         underlying_c_val = <int>c_val
 *         return __pyx_enum(underlying_c_val)             # <<<<<<<<<<<<<<
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = NULL;
    __Pyx_INCREF(__pyx_v___pyx_enum);
    __pyx_t_5 = __pyx_v___pyx_enum; 
    __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_v_underlying_c_val); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 37, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_13 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_8);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_13 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_11};
      __pyx_t_10 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (__pyx_t_13*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 37, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
    }
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;
  }

  /* "EnumTypeToPy":3
 * cdef object __pyx_imported_enum___Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = None
 * 
 * @cname("__Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py")             # <<<<<<<<<<<<<<
 * cdef __Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(mlx5dv_sw_parsing_offloads c_val):
 *     cdef object __pyx_enum
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("EnumTypeToPy.__Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_enum);
  __Pyx_XDECREF(__pyx_v_warnings);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(enum mlx5dv_tunnel_offloads __pyx_v_c_val) {
  PyObject *__pyx_v___pyx_enum = 0;
  PyObject *__pyx_v_warnings = NULL;
  int __pyx_v_underlying_c_val;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  size_t __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py", 0);

  /* "EnumTypeToPy":11
 * 
 * 
 *     if __pyx_imported_enum___Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:             # <<<<<<<<<<<<<<
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_tunnel_offloads as __pyx_imported_enum___Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
*/
  __pyx_t_1 = (__pyx_imported_enum___Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py == Py_None);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_tunnel_offloads as __pyx_imported_enum___Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
*/
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_4);
      /*try:*/ {

        /* "EnumTypeToPy":13
 *     if __pyx_imported_enum___Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_tunnel_offloads as __pyx_imported_enum___Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py             # <<<<<<<<<<<<<<
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
*/
        {
          PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_mlx5dv_tunnel_offloads};
          __pyx_t_6 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5_enum, __pyx_imported_names, 1, NULL, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L4_error)
        }
        __pyx_t_5 = __pyx_t_6;
        __Pyx_GOTREF(__pyx_t_5);
        {
          PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_mlx5dv_tunnel_offloads};
          __pyx_t_7 = 0; {
            __pyx_t_8 = __Pyx_ImportFrom(__pyx_t_5, __pyx_imported_names[__pyx_t_7]); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 13, __pyx_L4_error)
            __Pyx_GOTREF(__pyx_t_8);
            switch (__pyx_t_7) {
              case 0:
              __Pyx_INCREF(__pyx_t_8);
              __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
              __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_8);
              break;
              default:;
            }
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          }
        }
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

        /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_tunnel_offloads as __pyx_imported_enum___Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
*/
      }
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L9_try_end;
      __pyx_L4_error:;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;

      /* "EnumTypeToPy":14
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_tunnel_offloads as __pyx_imported_enum___Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:             # <<<<<<<<<<<<<<
 *             __pyx_imported_enum___Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
 *             import warnings
*/
      __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ImportError))));
      if (__pyx_t_9) {
        __Pyx_AddTraceback("EnumTypeToPy.__Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_8, &__pyx_t_10) < 0) __PYX_ERR(1, 14, __pyx_L6_except_error)
        __Pyx_XGOTREF(__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_10);

        /* "EnumTypeToPy":15
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_tunnel_offloads as __pyx_imported_enum___Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"             # <<<<<<<<<<<<<<
 *             import warnings
 *             warnings.warn(
*/
        __Pyx_INCREF(Py_False);
        __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
        __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py, Py_False);
        __Pyx_GIVEREF(Py_False);

        /* "EnumTypeToPy":16
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
 *             import warnings             # <<<<<<<<<<<<<<
 *             warnings.warn(
 *                 f"enum class mlx5dv_tunnel_offloads not importable from pyverbs.providers.mlx5.mlx5_enums. "
*/
        __pyx_t_6 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_warnings, 0, 0, NULL, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 16, __pyx_L6_except_error)
        __pyx_t_11 = __pyx_t_6;
        __Pyx_GOTREF(__pyx_t_11);
        __pyx_v_warnings = __pyx_t_11;
        __pyx_t_11 = 0;

        /* "EnumTypeToPy":17
 *             __pyx_imported_enum___Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
 *             import warnings
 *             warnings.warn(             # <<<<<<<<<<<<<<
 *                 f"enum class mlx5dv_tunnel_offloads not importable from pyverbs.providers.mlx5.mlx5_enums. "
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
*/
        __pyx_t_12 = __pyx_v_warnings;
        __Pyx_INCREF(__pyx_t_12);
        __pyx_t_13 = 0;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_mstate_global->__pyx_kp_u_enum_class_mlx5dv_tunnel_offload};
          __pyx_t_11 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_warn, __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 17, __pyx_L6_except_error)
          __Pyx_GOTREF(__pyx_t_11);
        }
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        goto __pyx_L5_exception_handled;
      }
      goto __pyx_L6_except_error;

      /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_tunnel_offloads as __pyx_imported_enum___Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
*/
      __pyx_L6_except_error:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      goto __pyx_L1_error;
      __pyx_L5_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      __pyx_L9_try_end:;
    }

    /* "EnumTypeToPy":11
 * 
 * 
 *     if __pyx_imported_enum___Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:             # <<<<<<<<<<<<<<
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_tunnel_offloads as __pyx_imported_enum___Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
*/
  }

  /* "EnumTypeToPy":21
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
 *                 "does not have a .py  or .pyx file.")
 *     if __pyx_imported_enum___Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is False:             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_1 = (__pyx_imported_enum___Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py == Py_False);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":24
 * 
 * 
 *         return <int>c_val             # <<<<<<<<<<<<<<
 *     __pyx_enum = __pyx_imported_enum___Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyLong_From_int(((int)__pyx_v_c_val)); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 24, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":21
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
 *                 "does not have a .py  or .pyx file.")
 *     if __pyx_imported_enum___Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is False:             # <<<<<<<<<<<<<<
 * 
 * 
*/
  }

  /* "EnumTypeToPy":25
 * 
 *         return <int>c_val
 *     __pyx_enum = __pyx_imported_enum___Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py             # <<<<<<<<<<<<<<
 * 
 *     if 0:
*/
  __Pyx_INCREF(__pyx_imported_enum___Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
  __pyx_v___pyx_enum = __pyx_imported_enum___Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py;

  /* "EnumTypeToPy":29
 *     if 0:
 *         pass
 *     elif c_val == mlx5dv_tunnel_offloads.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_VXLAN:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_VXLAN
 *     elif c_val == mlx5dv_tunnel_offloads.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GRE:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_VXLAN);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":30
 *         pass
 *     elif c_val == mlx5dv_tunnel_offloads.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_VXLAN:
 *         return __pyx_enum.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_VXLAN             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_tunnel_offloads.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GRE:
 *         return __pyx_enum.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GRE
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_RAW_PACKET_CAP_TUNNELED_O); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 30, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":29
 *     if 0:
 *         pass
 *     elif c_val == mlx5dv_tunnel_offloads.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_VXLAN:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_VXLAN
 *     elif c_val == mlx5dv_tunnel_offloads.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GRE:
*/
  }

  /* "EnumTypeToPy":31
 *     elif c_val == mlx5dv_tunnel_offloads.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_VXLAN:
 *         return __pyx_enum.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_VXLAN
 *     elif c_val == mlx5dv_tunnel_offloads.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GRE:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GRE
 *     elif c_val == mlx5dv_tunnel_offloads.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GENEVE:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GRE);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":32
 *         return __pyx_enum.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_VXLAN
 *     elif c_val == mlx5dv_tunnel_offloads.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GRE:
 *         return __pyx_enum.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GRE             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_tunnel_offloads.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GENEVE:
 *         return __pyx_enum.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GENEVE
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_RAW_PACKET_CAP_TUNNELED_O_2); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 32, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":31
 *     elif c_val == mlx5dv_tunnel_offloads.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_VXLAN:
 *         return __pyx_enum.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_VXLAN
 *     elif c_val == mlx5dv_tunnel_offloads.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GRE:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GRE
 *     elif c_val == mlx5dv_tunnel_offloads.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GENEVE:
*/
  }

  /* "EnumTypeToPy":33
 *     elif c_val == mlx5dv_tunnel_offloads.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GRE:
 *         return __pyx_enum.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GRE
 *     elif c_val == mlx5dv_tunnel_offloads.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GENEVE:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GENEVE
 *     elif c_val == mlx5dv_tunnel_offloads.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_CW_MPLS_OVER_GRE:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GENEVE);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":34
 *         return __pyx_enum.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GRE
 *     elif c_val == mlx5dv_tunnel_offloads.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GENEVE:
 *         return __pyx_enum.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GENEVE             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_tunnel_offloads.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_CW_MPLS_OVER_GRE:
 *         return __pyx_enum.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_CW_MPLS_OVER_GRE
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_RAW_PACKET_CAP_TUNNELED_O_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 34, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":33
 *     elif c_val == mlx5dv_tunnel_offloads.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GRE:
 *         return __pyx_enum.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GRE
 *     elif c_val == mlx5dv_tunnel_offloads.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GENEVE:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GENEVE
 *     elif c_val == mlx5dv_tunnel_offloads.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_CW_MPLS_OVER_GRE:
*/
  }

  /* "EnumTypeToPy":35
 *     elif c_val == mlx5dv_tunnel_offloads.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GENEVE:
 *         return __pyx_enum.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GENEVE
 *     elif c_val == mlx5dv_tunnel_offloads.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_CW_MPLS_OVER_GRE:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_CW_MPLS_OVER_GRE
 *     elif c_val == mlx5dv_tunnel_offloads.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_CW_MPLS_OVER_UDP:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_CW_MPLS_OVER_GRE);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":36
 *         return __pyx_enum.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GENEVE
 *     elif c_val == mlx5dv_tunnel_offloads.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_CW_MPLS_OVER_GRE:
 *         return __pyx_enum.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_CW_MPLS_OVER_GRE             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_tunnel_offloads.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_CW_MPLS_OVER_UDP:
 *         return __pyx_enum.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_CW_MPLS_OVER_UDP
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_RAW_PACKET_CAP_TUNNELED_O_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 36, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":35
 *     elif c_val == mlx5dv_tunnel_offloads.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GENEVE:
 *         return __pyx_enum.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GENEVE
 *     elif c_val == mlx5dv_tunnel_offloads.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_CW_MPLS_OVER_GRE:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_CW_MPLS_OVER_GRE
 *     elif c_val == mlx5dv_tunnel_offloads.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_CW_MPLS_OVER_UDP:
*/
  }

  /* "EnumTypeToPy":37
 *     elif c_val == mlx5dv_tunnel_offloads.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_CW_MPLS_OVER_GRE:
 *         return __pyx_enum.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_CW_MPLS_OVER_GRE
 *     elif c_val == mlx5dv_tunnel_offloads.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_CW_MPLS_OVER_UDP:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_CW_MPLS_OVER_UDP
 *     else:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_CW_MPLS_OVER_UDP);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":38
 *         return __pyx_enum.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_CW_MPLS_OVER_GRE
 *     elif c_val == mlx5dv_tunnel_offloads.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_CW_MPLS_OVER_UDP:
 *         return __pyx_enum.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_CW_MPLS_OVER_UDP             # <<<<<<<<<<<<<<
 *     else:
 *         underlying_c_val = <int>c_val
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_RAW_PACKET_CAP_TUNNELED_O_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 38, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":37
 *     elif c_val == mlx5dv_tunnel_offloads.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_CW_MPLS_OVER_GRE:
 *         return __pyx_enum.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_CW_MPLS_OVER_GRE
 *     elif c_val == mlx5dv_tunnel_offloads.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_CW_MPLS_OVER_UDP:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_CW_MPLS_OVER_UDP
 *     else:
*/
  }

  /* "EnumTypeToPy":40
 *         return __pyx_enum.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_CW_MPLS_OVER_UDP
 *     else:
 *         underlying_c_val = <int>c_val             # <<<<<<<<<<<<<<
 *         return __pyx_enum(underlying_c_val)
*/
  /*else*/ {
    __pyx_v_underlying_c_val = ((int)__pyx_v_c_val);

    /* "EnumTypeToPy":41
 *     else:
 *         underlying_c_val = <int>c_val
 *         return __pyx_enum(underlying_c_val)             # <<<<<<<<<<<<<<
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = NULL;
    __Pyx_INCREF(__pyx_v___pyx_enum);
    __pyx_t_5 = __pyx_v___pyx_enum; 
    __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_v_underlying_c_val); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 41, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_13 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_8);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_13 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_11};
      __pyx_t_10 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (__pyx_t_13*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 41, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
    }
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;
  }

  /* "EnumTypeToPy":3
 * cdef object __pyx_imported_enum___Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = None
 * 
 * @cname("__Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py")             # <<<<<<<<<<<<<<
 * cdef __Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(mlx5dv_tunnel_offloads c_val):
 *     cdef object __pyx_enum
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("EnumTypeToPy.__Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_enum);
  __Pyx_XDECREF(__pyx_v_warnings);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(enum mlx5dv_qp_create_flags __pyx_v_c_val) {
  PyObject *__pyx_v___pyx_enum = 0;
  PyObject *__pyx_v_warnings = NULL;
  int __pyx_v_underlying_c_val;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  size_t __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py", 0);

  /* "EnumTypeToPy":11
 * 
 * 
 *     if __pyx_imported_enum___Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:             # <<<<<<<<<<<<<<
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_qp_create_flags as __pyx_imported_enum___Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
*/
  __pyx_t_1 = (__pyx_imported_enum___Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py == Py_None);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_qp_create_flags as __pyx_imported_enum___Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
*/
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_4);
      /*try:*/ {

        /* "EnumTypeToPy":13
 *     if __pyx_imported_enum___Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_qp_create_flags as __pyx_imported_enum___Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py             # <<<<<<<<<<<<<<
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
*/
        {
          PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_mlx5dv_qp_create_flags};
          __pyx_t_6 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5_enum, __pyx_imported_names, 1, NULL, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L4_error)
        }
        __pyx_t_5 = __pyx_t_6;
        __Pyx_GOTREF(__pyx_t_5);
        {
          PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_mlx5dv_qp_create_flags};
          __pyx_t_7 = 0; {
            __pyx_t_8 = __Pyx_ImportFrom(__pyx_t_5, __pyx_imported_names[__pyx_t_7]); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 13, __pyx_L4_error)
            __Pyx_GOTREF(__pyx_t_8);
            switch (__pyx_t_7) {
              case 0:
              __Pyx_INCREF(__pyx_t_8);
              __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
              __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_8);
              break;
              default:;
            }
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          }
        }
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

        /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_qp_create_flags as __pyx_imported_enum___Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
*/
      }
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L9_try_end;
      __pyx_L4_error:;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;

      /* "EnumTypeToPy":14
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_qp_create_flags as __pyx_imported_enum___Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:             # <<<<<<<<<<<<<<
 *             __pyx_imported_enum___Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
 *             import warnings
*/
      __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ImportError))));
      if (__pyx_t_9) {
        __Pyx_AddTraceback("EnumTypeToPy.__Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_8, &__pyx_t_10) < 0) __PYX_ERR(1, 14, __pyx_L6_except_error)
        __Pyx_XGOTREF(__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_10);

        /* "EnumTypeToPy":15
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_qp_create_flags as __pyx_imported_enum___Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"             # <<<<<<<<<<<<<<
 *             import warnings
 *             warnings.warn(
*/
        __Pyx_INCREF(Py_False);
        __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
        __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py, Py_False);
        __Pyx_GIVEREF(Py_False);

        /* "EnumTypeToPy":16
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
 *             import warnings             # <<<<<<<<<<<<<<
 *             warnings.warn(
 *                 f"enum class mlx5dv_qp_create_flags not importable from pyverbs.providers.mlx5.mlx5_enums. "
*/
        __pyx_t_6 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_warnings, 0, 0, NULL, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 16, __pyx_L6_except_error)
        __pyx_t_11 = __pyx_t_6;
        __Pyx_GOTREF(__pyx_t_11);
        __pyx_v_warnings = __pyx_t_11;
        __pyx_t_11 = 0;

        /* "EnumTypeToPy":17
 *             __pyx_imported_enum___Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
 *             import warnings
 *             warnings.warn(             # <<<<<<<<<<<<<<
 *                 f"enum class mlx5dv_qp_create_flags not importable from pyverbs.providers.mlx5.mlx5_enums. "
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
*/
        __pyx_t_12 = __pyx_v_warnings;
        __Pyx_INCREF(__pyx_t_12);
        __pyx_t_13 = 0;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_mstate_global->__pyx_kp_u_enum_class_mlx5dv_qp_create_flag};
          __pyx_t_11 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_warn, __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 17, __pyx_L6_except_error)
          __Pyx_GOTREF(__pyx_t_11);
        }
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        goto __pyx_L5_exception_handled;
      }
      goto __pyx_L6_except_error;

      /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_qp_create_flags as __pyx_imported_enum___Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
*/
      __pyx_L6_except_error:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      goto __pyx_L1_error;
      __pyx_L5_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      __pyx_L9_try_end:;
    }

    /* "EnumTypeToPy":11
 * 
 * 
 *     if __pyx_imported_enum___Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:             # <<<<<<<<<<<<<<
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_qp_create_flags as __pyx_imported_enum___Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
*/
  }

  /* "EnumTypeToPy":21
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
 *                 "does not have a .py  or .pyx file.")
 *     if __pyx_imported_enum___Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is False:             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_1 = (__pyx_imported_enum___Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py == Py_False);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":24
 * 
 * 
 *         return <int>c_val             # <<<<<<<<<<<<<<
 *     __pyx_enum = __pyx_imported_enum___Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyLong_From_int(((int)__pyx_v_c_val)); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 24, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":21
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
 *                 "does not have a .py  or .pyx file.")
 *     if __pyx_imported_enum___Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is False:             # <<<<<<<<<<<<<<
 * 
 * 
*/
  }

  /* "EnumTypeToPy":25
 * 
 *         return <int>c_val
 *     __pyx_enum = __pyx_imported_enum___Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py             # <<<<<<<<<<<<<<
 * 
 *     if 0:
*/
  __Pyx_INCREF(__pyx_imported_enum___Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
  __pyx_v___pyx_enum = __pyx_imported_enum___Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py;

  /* "EnumTypeToPy":29
 *     if 0:
 *         pass
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_TUNNEL_OFFLOADS:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_QP_CREATE_TUNNEL_OFFLOADS
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_UC:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_QP_CREATE_TUNNEL_OFFLOADS);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":30
 *         pass
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_TUNNEL_OFFLOADS:
 *         return __pyx_enum.MLX5DV_QP_CREATE_TUNNEL_OFFLOADS             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_UC:
 *         return __pyx_enum.MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_UC
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_QP_CREATE_TUNNEL_OFFLOADS); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 30, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":29
 *     if 0:
 *         pass
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_TUNNEL_OFFLOADS:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_QP_CREATE_TUNNEL_OFFLOADS
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_UC:
*/
  }

  /* "EnumTypeToPy":31
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_TUNNEL_OFFLOADS:
 *         return __pyx_enum.MLX5DV_QP_CREATE_TUNNEL_OFFLOADS
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_UC:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_UC
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_MC:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_UC);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":32
 *         return __pyx_enum.MLX5DV_QP_CREATE_TUNNEL_OFFLOADS
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_UC:
 *         return __pyx_enum.MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_UC             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_MC:
 *         return __pyx_enum.MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_MC
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_QP_CREATE_TIR_ALLOW_SELF); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 32, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":31
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_TUNNEL_OFFLOADS:
 *         return __pyx_enum.MLX5DV_QP_CREATE_TUNNEL_OFFLOADS
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_UC:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_UC
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_MC:
*/
  }

  /* "EnumTypeToPy":33
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_UC:
 *         return __pyx_enum.MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_UC
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_MC:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_MC
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_DISABLE_SCATTER_TO_CQE:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_MC);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":34
 *         return __pyx_enum.MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_UC
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_MC:
 *         return __pyx_enum.MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_MC             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_DISABLE_SCATTER_TO_CQE:
 *         return __pyx_enum.MLX5DV_QP_CREATE_DISABLE_SCATTER_TO_CQE
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_QP_CREATE_TIR_ALLOW_SELF_2); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 34, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":33
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_UC:
 *         return __pyx_enum.MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_UC
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_MC:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_MC
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_DISABLE_SCATTER_TO_CQE:
*/
  }

  /* "EnumTypeToPy":35
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_MC:
 *         return __pyx_enum.MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_MC
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_DISABLE_SCATTER_TO_CQE:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_QP_CREATE_DISABLE_SCATTER_TO_CQE
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_ALLOW_SCATTER_TO_CQE:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_QP_CREATE_DISABLE_SCATTER_TO_CQE);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":36
 *         return __pyx_enum.MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_MC
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_DISABLE_SCATTER_TO_CQE:
 *         return __pyx_enum.MLX5DV_QP_CREATE_DISABLE_SCATTER_TO_CQE             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_ALLOW_SCATTER_TO_CQE:
 *         return __pyx_enum.MLX5DV_QP_CREATE_ALLOW_SCATTER_TO_CQE
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_QP_CREATE_DISABLE_SCATTER); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 36, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":35
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_MC:
 *         return __pyx_enum.MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_MC
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_DISABLE_SCATTER_TO_CQE:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_QP_CREATE_DISABLE_SCATTER_TO_CQE
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_ALLOW_SCATTER_TO_CQE:
*/
  }

  /* "EnumTypeToPy":37
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_DISABLE_SCATTER_TO_CQE:
 *         return __pyx_enum.MLX5DV_QP_CREATE_DISABLE_SCATTER_TO_CQE
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_ALLOW_SCATTER_TO_CQE:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_QP_CREATE_ALLOW_SCATTER_TO_CQE
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_PACKET_BASED_CREDIT_MODE:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_QP_CREATE_ALLOW_SCATTER_TO_CQE);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":38
 *         return __pyx_enum.MLX5DV_QP_CREATE_DISABLE_SCATTER_TO_CQE
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_ALLOW_SCATTER_TO_CQE:
 *         return __pyx_enum.MLX5DV_QP_CREATE_ALLOW_SCATTER_TO_CQE             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_PACKET_BASED_CREDIT_MODE:
 *         return __pyx_enum.MLX5DV_QP_CREATE_PACKET_BASED_CREDIT_MODE
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_QP_CREATE_ALLOW_SCATTER_T); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 38, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":37
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_DISABLE_SCATTER_TO_CQE:
 *         return __pyx_enum.MLX5DV_QP_CREATE_DISABLE_SCATTER_TO_CQE
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_ALLOW_SCATTER_TO_CQE:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_QP_CREATE_ALLOW_SCATTER_TO_CQE
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_PACKET_BASED_CREDIT_MODE:
*/
  }

  /* "EnumTypeToPy":39
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_ALLOW_SCATTER_TO_CQE:
 *         return __pyx_enum.MLX5DV_QP_CREATE_ALLOW_SCATTER_TO_CQE
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_PACKET_BASED_CREDIT_MODE:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_QP_CREATE_PACKET_BASED_CREDIT_MODE
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_SIG_PIPELINING:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_QP_CREATE_PACKET_BASED_CREDIT_MODE);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":40
 *         return __pyx_enum.MLX5DV_QP_CREATE_ALLOW_SCATTER_TO_CQE
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_PACKET_BASED_CREDIT_MODE:
 *         return __pyx_enum.MLX5DV_QP_CREATE_PACKET_BASED_CREDIT_MODE             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_SIG_PIPELINING:
 *         return __pyx_enum.MLX5DV_QP_CREATE_SIG_PIPELINING
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_QP_CREATE_PACKET_BASED_CR); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 40, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":39
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_ALLOW_SCATTER_TO_CQE:
 *         return __pyx_enum.MLX5DV_QP_CREATE_ALLOW_SCATTER_TO_CQE
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_PACKET_BASED_CREDIT_MODE:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_QP_CREATE_PACKET_BASED_CREDIT_MODE
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_SIG_PIPELINING:
*/
  }

  /* "EnumTypeToPy":41
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_PACKET_BASED_CREDIT_MODE:
 *         return __pyx_enum.MLX5DV_QP_CREATE_PACKET_BASED_CREDIT_MODE
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_SIG_PIPELINING:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_QP_CREATE_SIG_PIPELINING
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_OOO_DP:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_QP_CREATE_SIG_PIPELINING);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":42
 *         return __pyx_enum.MLX5DV_QP_CREATE_PACKET_BASED_CREDIT_MODE
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_SIG_PIPELINING:
 *         return __pyx_enum.MLX5DV_QP_CREATE_SIG_PIPELINING             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_OOO_DP:
 *         return __pyx_enum.MLX5DV_QP_CREATE_OOO_DP
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_QP_CREATE_SIG_PIPELINING); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 42, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":41
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_PACKET_BASED_CREDIT_MODE:
 *         return __pyx_enum.MLX5DV_QP_CREATE_PACKET_BASED_CREDIT_MODE
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_SIG_PIPELINING:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_QP_CREATE_SIG_PIPELINING
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_OOO_DP:
*/
  }

  /* "EnumTypeToPy":43
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_SIG_PIPELINING:
 *         return __pyx_enum.MLX5DV_QP_CREATE_SIG_PIPELINING
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_OOO_DP:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_QP_CREATE_OOO_DP
 *     else:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_QP_CREATE_OOO_DP);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":44
 *         return __pyx_enum.MLX5DV_QP_CREATE_SIG_PIPELINING
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_OOO_DP:
 *         return __pyx_enum.MLX5DV_QP_CREATE_OOO_DP             # <<<<<<<<<<<<<<
 *     else:
 *         underlying_c_val = <int>c_val
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_QP_CREATE_OOO_DP); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 44, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":43
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_SIG_PIPELINING:
 *         return __pyx_enum.MLX5DV_QP_CREATE_SIG_PIPELINING
 *     elif c_val == mlx5dv_qp_create_flags.MLX5DV_QP_CREATE_OOO_DP:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_QP_CREATE_OOO_DP
 *     else:
*/
  }

  /* "EnumTypeToPy":46
 *         return __pyx_enum.MLX5DV_QP_CREATE_OOO_DP
 *     else:
 *         underlying_c_val = <int>c_val             # <<<<<<<<<<<<<<
 *         return __pyx_enum(underlying_c_val)
*/
  /*else*/ {
    __pyx_v_underlying_c_val = ((int)__pyx_v_c_val);

    /* "EnumTypeToPy":47
 *     else:
 *         underlying_c_val = <int>c_val
 *         return __pyx_enum(underlying_c_val)             # <<<<<<<<<<<<<<
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = NULL;
    __Pyx_INCREF(__pyx_v___pyx_enum);
    __pyx_t_5 = __pyx_v___pyx_enum; 
    __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_v_underlying_c_val); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 47, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_13 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_8);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_13 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_11};
      __pyx_t_10 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (__pyx_t_13*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 47, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
    }
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;
  }

  /* "EnumTypeToPy":3
 * cdef object __pyx_imported_enum___Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = None
 * 
 * @cname("__Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py")             # <<<<<<<<<<<<<<
 * cdef __Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(mlx5dv_qp_create_flags c_val):
 *     cdef object __pyx_enum
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("EnumTypeToPy.__Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_enum);
  __Pyx_XDECREF(__pyx_v_warnings);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(enum mlx5dv_qp_create_send_ops_flags __pyx_v_c_val) {
  PyObject *__pyx_v___pyx_enum = 0;
  PyObject *__pyx_v_warnings = NULL;
  int __pyx_v_underlying_c_val;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  size_t __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py", 0);

  /* "EnumTypeToPy":11
 * 
 * 
 *     if __pyx_imported_enum___Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:             # <<<<<<<<<<<<<<
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_qp_create_send_ops_flags as __pyx_imported_enum___Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
*/
  __pyx_t_1 = (__pyx_imported_enum___Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py == Py_None);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_qp_create_send_ops_flags as __pyx_imported_enum___Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
*/
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_4);
      /*try:*/ {

        /* "EnumTypeToPy":13
 *     if __pyx_imported_enum___Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_qp_create_send_ops_flags as __pyx_imported_enum___Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py             # <<<<<<<<<<<<<<
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
*/
        {
          PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_mlx5dv_qp_create_send_ops_flags};
          __pyx_t_6 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5_enum, __pyx_imported_names, 1, NULL, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 13, __pyx_L4_error)
        }
        __pyx_t_5 = __pyx_t_6;
        __Pyx_GOTREF(__pyx_t_5);
        {
          PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_mlx5dv_qp_create_send_ops_flags};
          __pyx_t_7 = 0; {
            __pyx_t_8 = __Pyx_ImportFrom(__pyx_t_5, __pyx_imported_names[__pyx_t_7]); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 13, __pyx_L4_error)
            __Pyx_GOTREF(__pyx_t_8);
            switch (__pyx_t_7) {
              case 0:
              __Pyx_INCREF(__pyx_t_8);
              __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
              __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_8);
              break;
              default:;
            }
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          }
        }
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

        /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_qp_create_send_ops_flags as __pyx_imported_enum___Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
*/
      }
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L9_try_end;
      __pyx_L4_error:;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;

      /* "EnumTypeToPy":14
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_qp_create_send_ops_flags as __pyx_imported_enum___Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:             # <<<<<<<<<<<<<<
 *             __pyx_imported_enum___Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
 *             import warnings
*/
      __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ImportError))));
      if (__pyx_t_9) {
        __Pyx_AddTraceback("EnumTypeToPy.__Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_8, &__pyx_t_10) < 0) __PYX_ERR(1, 14, __pyx_L6_except_error)
        __Pyx_XGOTREF(__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_10);

        /* "EnumTypeToPy":15
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_qp_create_send_ops_flags as __pyx_imported_enum___Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"             # <<<<<<<<<<<<<<
 *             import warnings
 *             warnings.warn(
*/
        __Pyx_INCREF(Py_False);
        __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
        __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py, Py_False);
        __Pyx_GIVEREF(Py_False);

        /* "EnumTypeToPy":16
 *         except ImportError:
 *             __pyx_imported_enum___Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
 *             import warnings             # <<<<<<<<<<<<<<
 *             warnings.warn(
 *                 f"enum class mlx5dv_qp_create_send_ops_flags not importable from pyverbs.providers.mlx5.mlx5_enums. "
*/
        __pyx_t_6 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_warnings, 0, 0, NULL, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 16, __pyx_L6_except_error)
        __pyx_t_11 = __pyx_t_6;
        __Pyx_GOTREF(__pyx_t_11);
        __pyx_v_warnings = __pyx_t_11;
        __pyx_t_11 = 0;

        /* "EnumTypeToPy":17
 *             __pyx_imported_enum___Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = False  # False indicates "don't try again"
 *             import warnings
 *             warnings.warn(             # <<<<<<<<<<<<<<
 *                 f"enum class mlx5dv_qp_create_send_ops_flags not importable from pyverbs.providers.mlx5.mlx5_enums. "
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
*/
        __pyx_t_12 = __pyx_v_warnings;
        __Pyx_INCREF(__pyx_t_12);
        __pyx_t_13 = 0;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_mstate_global->__pyx_kp_u_enum_class_mlx5dv_qp_create_send};
          __pyx_t_11 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_warn, __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 17, __pyx_L6_except_error)
          __Pyx_GOTREF(__pyx_t_11);
        }
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        goto __pyx_L5_exception_handled;
      }
      goto __pyx_L6_except_error;

      /* "EnumTypeToPy":12
 * 
 *     if __pyx_imported_enum___Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:
 *         try:             # <<<<<<<<<<<<<<
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_qp_create_send_ops_flags as __pyx_imported_enum___Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 *         except ImportError:
*/
      __pyx_L6_except_error:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      goto __pyx_L1_error;
      __pyx_L5_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_2);
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
      __pyx_L9_try_end:;
    }

    /* "EnumTypeToPy":11
 * 
 * 
 *     if __pyx_imported_enum___Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is None:             # <<<<<<<<<<<<<<
 *         try:
 *             from pyverbs.providers.mlx5.mlx5_enums import mlx5dv_qp_create_send_ops_flags as __pyx_imported_enum___Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
*/
  }

  /* "EnumTypeToPy":21
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
 *                 "does not have a .py  or .pyx file.")
 *     if __pyx_imported_enum___Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is False:             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_1 = (__pyx_imported_enum___Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py == Py_False);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":24
 * 
 * 
 *         return <int>c_val             # <<<<<<<<<<<<<<
 *     __pyx_enum = __pyx_imported_enum___Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyLong_From_int(((int)__pyx_v_c_val)); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 24, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":21
 *                 "You are probably using a cpdef enum declared in a .pxd file that "
 *                 "does not have a .py  or .pyx file.")
 *     if __pyx_imported_enum___Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py is False:             # <<<<<<<<<<<<<<
 * 
 * 
*/
  }

  /* "EnumTypeToPy":25
 * 
 *         return <int>c_val
 *     __pyx_enum = __pyx_imported_enum___Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py             # <<<<<<<<<<<<<<
 * 
 *     if 0:
*/
  __Pyx_INCREF(__pyx_imported_enum___Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
  __pyx_v___pyx_enum = __pyx_imported_enum___Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py;

  /* "EnumTypeToPy":29
 *     if 0:
 *         pass
 *     elif c_val == mlx5dv_qp_create_send_ops_flags.MLX5DV_QP_EX_WITH_MR_INTERLEAVED:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_QP_EX_WITH_MR_INTERLEAVED
 *     elif c_val == mlx5dv_qp_create_send_ops_flags.MLX5DV_QP_EX_WITH_MR_LIST:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_QP_EX_WITH_MR_INTERLEAVED);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":30
 *         pass
 *     elif c_val == mlx5dv_qp_create_send_ops_flags.MLX5DV_QP_EX_WITH_MR_INTERLEAVED:
 *         return __pyx_enum.MLX5DV_QP_EX_WITH_MR_INTERLEAVED             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_qp_create_send_ops_flags.MLX5DV_QP_EX_WITH_MR_LIST:
 *         return __pyx_enum.MLX5DV_QP_EX_WITH_MR_LIST
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_QP_EX_WITH_MR_INTERLEAVED); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 30, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":29
 *     if 0:
 *         pass
 *     elif c_val == mlx5dv_qp_create_send_ops_flags.MLX5DV_QP_EX_WITH_MR_INTERLEAVED:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_QP_EX_WITH_MR_INTERLEAVED
 *     elif c_val == mlx5dv_qp_create_send_ops_flags.MLX5DV_QP_EX_WITH_MR_LIST:
*/
  }

  /* "EnumTypeToPy":31
 *     elif c_val == mlx5dv_qp_create_send_ops_flags.MLX5DV_QP_EX_WITH_MR_INTERLEAVED:
 *         return __pyx_enum.MLX5DV_QP_EX_WITH_MR_INTERLEAVED
 *     elif c_val == mlx5dv_qp_create_send_ops_flags.MLX5DV_QP_EX_WITH_MR_LIST:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_QP_EX_WITH_MR_LIST
 *     elif c_val == mlx5dv_qp_create_send_ops_flags.MLX5DV_QP_EX_WITH_MKEY_CONFIGURE:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_QP_EX_WITH_MR_LIST);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":32
 *         return __pyx_enum.MLX5DV_QP_EX_WITH_MR_INTERLEAVED
 *     elif c_val == mlx5dv_qp_create_send_ops_flags.MLX5DV_QP_EX_WITH_MR_LIST:
 *         return __pyx_enum.MLX5DV_QP_EX_WITH_MR_LIST             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_qp_create_send_ops_flags.MLX5DV_QP_EX_WITH_MKEY_CONFIGURE:
 *         return __pyx_enum.MLX5DV_QP_EX_WITH_MKEY_CONFIGURE
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_QP_EX_WITH_MR_LIST); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 32, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":31
 *     elif c_val == mlx5dv_qp_create_send_ops_flags.MLX5DV_QP_EX_WITH_MR_INTERLEAVED:
 *         return __pyx_enum.MLX5DV_QP_EX_WITH_MR_INTERLEAVED
 *     elif c_val == mlx5dv_qp_create_send_ops_flags.MLX5DV_QP_EX_WITH_MR_LIST:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_QP_EX_WITH_MR_LIST
 *     elif c_val == mlx5dv_qp_create_send_ops_flags.MLX5DV_QP_EX_WITH_MKEY_CONFIGURE:
*/
  }

  /* "EnumTypeToPy":33
 *     elif c_val == mlx5dv_qp_create_send_ops_flags.MLX5DV_QP_EX_WITH_MR_LIST:
 *         return __pyx_enum.MLX5DV_QP_EX_WITH_MR_LIST
 *     elif c_val == mlx5dv_qp_create_send_ops_flags.MLX5DV_QP_EX_WITH_MKEY_CONFIGURE:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_QP_EX_WITH_MKEY_CONFIGURE
 *     elif c_val == mlx5dv_qp_create_send_ops_flags.MLX5DV_QP_EX_WITH_RAW_WQE:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_QP_EX_WITH_MKEY_CONFIGURE);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":34
 *         return __pyx_enum.MLX5DV_QP_EX_WITH_MR_LIST
 *     elif c_val == mlx5dv_qp_create_send_ops_flags.MLX5DV_QP_EX_WITH_MKEY_CONFIGURE:
 *         return __pyx_enum.MLX5DV_QP_EX_WITH_MKEY_CONFIGURE             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_qp_create_send_ops_flags.MLX5DV_QP_EX_WITH_RAW_WQE:
 *         return __pyx_enum.MLX5DV_QP_EX_WITH_RAW_WQE
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_QP_EX_WITH_MKEY_CONFIGURE); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 34, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":33
 *     elif c_val == mlx5dv_qp_create_send_ops_flags.MLX5DV_QP_EX_WITH_MR_LIST:
 *         return __pyx_enum.MLX5DV_QP_EX_WITH_MR_LIST
 *     elif c_val == mlx5dv_qp_create_send_ops_flags.MLX5DV_QP_EX_WITH_MKEY_CONFIGURE:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_QP_EX_WITH_MKEY_CONFIGURE
 *     elif c_val == mlx5dv_qp_create_send_ops_flags.MLX5DV_QP_EX_WITH_RAW_WQE:
*/
  }

  /* "EnumTypeToPy":35
 *     elif c_val == mlx5dv_qp_create_send_ops_flags.MLX5DV_QP_EX_WITH_MKEY_CONFIGURE:
 *         return __pyx_enum.MLX5DV_QP_EX_WITH_MKEY_CONFIGURE
 *     elif c_val == mlx5dv_qp_create_send_ops_flags.MLX5DV_QP_EX_WITH_RAW_WQE:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_QP_EX_WITH_RAW_WQE
 *     elif c_val == mlx5dv_qp_create_send_ops_flags.MLX5DV_QP_EX_WITH_MEMCPY:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_QP_EX_WITH_RAW_WQE);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":36
 *         return __pyx_enum.MLX5DV_QP_EX_WITH_MKEY_CONFIGURE
 *     elif c_val == mlx5dv_qp_create_send_ops_flags.MLX5DV_QP_EX_WITH_RAW_WQE:
 *         return __pyx_enum.MLX5DV_QP_EX_WITH_RAW_WQE             # <<<<<<<<<<<<<<
 *     elif c_val == mlx5dv_qp_create_send_ops_flags.MLX5DV_QP_EX_WITH_MEMCPY:
 *         return __pyx_enum.MLX5DV_QP_EX_WITH_MEMCPY
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_QP_EX_WITH_RAW_WQE); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 36, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":35
 *     elif c_val == mlx5dv_qp_create_send_ops_flags.MLX5DV_QP_EX_WITH_MKEY_CONFIGURE:
 *         return __pyx_enum.MLX5DV_QP_EX_WITH_MKEY_CONFIGURE
 *     elif c_val == mlx5dv_qp_create_send_ops_flags.MLX5DV_QP_EX_WITH_RAW_WQE:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_QP_EX_WITH_RAW_WQE
 *     elif c_val == mlx5dv_qp_create_send_ops_flags.MLX5DV_QP_EX_WITH_MEMCPY:
*/
  }

  /* "EnumTypeToPy":37
 *     elif c_val == mlx5dv_qp_create_send_ops_flags.MLX5DV_QP_EX_WITH_RAW_WQE:
 *         return __pyx_enum.MLX5DV_QP_EX_WITH_RAW_WQE
 *     elif c_val == mlx5dv_qp_create_send_ops_flags.MLX5DV_QP_EX_WITH_MEMCPY:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_QP_EX_WITH_MEMCPY
 *     else:
*/
  __pyx_t_1 = (__pyx_v_c_val == MLX5DV_QP_EX_WITH_MEMCPY);
  if (__pyx_t_1) {

    /* "EnumTypeToPy":38
 *         return __pyx_enum.MLX5DV_QP_EX_WITH_RAW_WQE
 *     elif c_val == mlx5dv_qp_create_send_ops_flags.MLX5DV_QP_EX_WITH_MEMCPY:
 *         return __pyx_enum.MLX5DV_QP_EX_WITH_MEMCPY             # <<<<<<<<<<<<<<
 *     else:
 *         underlying_c_val = <int>c_val
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v___pyx_enum, __pyx_mstate_global->__pyx_n_u_MLX5DV_QP_EX_WITH_MEMCPY); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 38, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;

    /* "EnumTypeToPy":37
 *     elif c_val == mlx5dv_qp_create_send_ops_flags.MLX5DV_QP_EX_WITH_RAW_WQE:
 *         return __pyx_enum.MLX5DV_QP_EX_WITH_RAW_WQE
 *     elif c_val == mlx5dv_qp_create_send_ops_flags.MLX5DV_QP_EX_WITH_MEMCPY:             # <<<<<<<<<<<<<<
 *         return __pyx_enum.MLX5DV_QP_EX_WITH_MEMCPY
 *     else:
*/
  }

  /* "EnumTypeToPy":40
 *         return __pyx_enum.MLX5DV_QP_EX_WITH_MEMCPY
 *     else:
 *         underlying_c_val = <int>c_val             # <<<<<<<<<<<<<<
 *         return __pyx_enum(underlying_c_val)
*/
  /*else*/ {
    __pyx_v_underlying_c_val = ((int)__pyx_v_c_val);

    /* "EnumTypeToPy":41
 *     else:
 *         underlying_c_val = <int>c_val
 *         return __pyx_enum(underlying_c_val)             # <<<<<<<<<<<<<<
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_8 = NULL;
    __Pyx_INCREF(__pyx_v___pyx_enum);
    __pyx_t_5 = __pyx_v___pyx_enum; 
    __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_v_underlying_c_val); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 41, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_13 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_8);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_13 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_11};
      __pyx_t_10 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (__pyx_t_13*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 41, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
    }
    __pyx_r = __pyx_t_10;
    __pyx_t_10 = 0;
    goto __pyx_L0;
  }

  /* "EnumTypeToPy":3
 * cdef object __pyx_imported_enum___Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = None
 * 
 * @cname("__Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py")             # <<<<<<<<<<<<<<
 * cdef __Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(mlx5dv_qp_create_send_ops_flags c_val):
 *     cdef object __pyx_enum
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("EnumTypeToPy.__Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_enum);
  __Pyx_XDECREF(__pyx_v_warnings);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":41
 * 
 * 
 * cdef char* _prepare_devx_inbox(in_bytes):             # <<<<<<<<<<<<<<
 *     """
 *     Auxiliary function that allocates inboxes for DevX commands, and fills them
*/

static char *__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv__prepare_devx_inbox(PyObject *__pyx_v_in_bytes) {
  char *__pyx_v_in_bytes_c;
  char *__pyx_v_in_mailbox;
  char *__pyx_r;
  __Pyx_RefNannyDeclarations
  char *__pyx_t_1;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_prepare_devx_inbox", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":49
 *     :return: The C allocated inbox
 *     """
 *     cdef char *in_bytes_c = in_bytes             # <<<<<<<<<<<<<<
 *     cdef char* in_mailbox = <char*>calloc(1, len(in_bytes))
 *     if in_mailbox == NULL:
*/
  __pyx_t_1 = __Pyx_PyObject_AsWritableString(__pyx_v_in_bytes); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) __PYX_ERR(0, 49, __pyx_L1_error)
  __pyx_v_in_bytes_c = __pyx_t_1;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":50
 *     """
 *     cdef char *in_bytes_c = in_bytes
 *     cdef char* in_mailbox = <char*>calloc(1, len(in_bytes))             # <<<<<<<<<<<<<<
 *     if in_mailbox == NULL:
 *         raise MemoryError('Failed to allocate memory')
*/
  __pyx_t_2 = PyObject_Length(__pyx_v_in_bytes); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 50, __pyx_L1_error)
  __pyx_v_in_mailbox = ((char *)calloc(1, __pyx_t_2));

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":51
 *     cdef char *in_bytes_c = in_bytes
 *     cdef char* in_mailbox = <char*>calloc(1, len(in_bytes))
 *     if in_mailbox == NULL:             # <<<<<<<<<<<<<<
 *         raise MemoryError('Failed to allocate memory')
 *     memcpy(in_mailbox, in_bytes_c, len(in_bytes))
*/
  __pyx_t_3 = (__pyx_v_in_mailbox == NULL);
  if (unlikely(__pyx_t_3)) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":52
 *     cdef char* in_mailbox = <char*>calloc(1, len(in_bytes))
 *     if in_mailbox == NULL:
 *         raise MemoryError('Failed to allocate memory')             # <<<<<<<<<<<<<<
 *     memcpy(in_mailbox, in_bytes_c, len(in_bytes))
 *     return in_mailbox
*/
    __pyx_t_5 = NULL;
    __pyx_t_6 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_Failed_to_allocate_memory};
      __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_MemoryError)), __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 52, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(0, 52, __pyx_L1_error)

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":51
 *     cdef char *in_bytes_c = in_bytes
 *     cdef char* in_mailbox = <char*>calloc(1, len(in_bytes))
 *     if in_mailbox == NULL:             # <<<<<<<<<<<<<<
 *         raise MemoryError('Failed to allocate memory')
 *     memcpy(in_mailbox, in_bytes_c, len(in_bytes))
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":53
 *     if in_mailbox == NULL:
 *         raise MemoryError('Failed to allocate memory')
 *     memcpy(in_mailbox, in_bytes_c, len(in_bytes))             # <<<<<<<<<<<<<<
 *     return in_mailbox
 * 
*/
  __pyx_t_2 = PyObject_Length(__pyx_v_in_bytes); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 53, __pyx_L1_error)
  (void)(memcpy(__pyx_v_in_mailbox, __pyx_v_in_bytes_c, __pyx_t_2));

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":54
 *         raise MemoryError('Failed to allocate memory')
 *     memcpy(in_mailbox, in_bytes_c, len(in_bytes))
 *     return in_mailbox             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_r = __pyx_v_in_mailbox;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":41
 * 
 * 
 * cdef char* _prepare_devx_inbox(in_bytes):             # <<<<<<<<<<<<<<
 *     """
 *     Auxiliary function that allocates inboxes for DevX commands, and fills them
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv._prepare_devx_inbox", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":57
 * 
 * 
 * cdef char* _prepare_devx_outbox(outlen):             # <<<<<<<<<<<<<<
 *     """
 *     Auxiliary function that allocates the outboxes for DevX commands.
*/

static char *__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv__prepare_devx_outbox(PyObject *__pyx_v_outlen) {
  char *__pyx_v_out_mailbox;
  char *__pyx_r;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_prepare_devx_outbox", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":64
 *     :return: The C allocated outbox
 *     """
 *     cdef char* out_mailbox = <char*>calloc(1, outlen)             # <<<<<<<<<<<<<<
 *     if out_mailbox == NULL:
 *         raise MemoryError('Failed to allocate memory')
*/
  __pyx_t_1 = __Pyx_PyLong_As_size_t(__pyx_v_outlen); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 64, __pyx_L1_error)
  __pyx_v_out_mailbox = ((char *)calloc(1, __pyx_t_1));

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":65
 *     """
 *     cdef char* out_mailbox = <char*>calloc(1, outlen)
 *     if out_mailbox == NULL:             # <<<<<<<<<<<<<<
 *         raise MemoryError('Failed to allocate memory')
 *     return out_mailbox
*/
  __pyx_t_2 = (__pyx_v_out_mailbox == NULL);
  if (unlikely(__pyx_t_2)) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":66
 *     cdef char* out_mailbox = <char*>calloc(1, outlen)
 *     if out_mailbox == NULL:
 *         raise MemoryError('Failed to allocate memory')             # <<<<<<<<<<<<<<
 *     return out_mailbox
 * 
*/
    __pyx_t_4 = NULL;
    __pyx_t_1 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_Failed_to_allocate_memory};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_MemoryError)), __pyx_callargs+__pyx_t_1, (2-__pyx_t_1) | (__pyx_t_1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 66, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(0, 66, __pyx_L1_error)

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":65
 *     """
 *     cdef char* out_mailbox = <char*>calloc(1, outlen)
 *     if out_mailbox == NULL:             # <<<<<<<<<<<<<<
 *         raise MemoryError('Failed to allocate memory')
 *     return out_mailbox
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":67
 *     if out_mailbox == NULL:
 *         raise MemoryError('Failed to allocate memory')
 *     return out_mailbox             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_r = __pyx_v_out_mailbox;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":57
 * 
 * 
 * cdef char* _prepare_devx_outbox(outlen):             # <<<<<<<<<<<<<<
 *     """
 *     Auxiliary function that allocates the outboxes for DevX commands.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv._prepare_devx_outbox", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":70
 * 
 * 
 * cdef uintptr_t copy_data_to_addr(uintptr_t addr, data):             # <<<<<<<<<<<<<<
 *     """
 *     Auxiliary function that copies data to memory at provided address.
*/

static uintptr_t __pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_copy_data_to_addr(uintptr_t __pyx_v_addr, PyObject *__pyx_v_data) {
  PyObject *__pyx_v_py_bytes = 0;
  char *__pyx_v_tmp;
  uintptr_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  size_t __pyx_t_3;
  char *__pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("copy_data_to_addr", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":77
 *     :return: The incremented address to the end of the written data
 *     """
 *     cdef bytes py_bytes = bytes(data)             # <<<<<<<<<<<<<<
 *     cdef char *tmp = py_bytes
 *     memcpy(<void *>addr, tmp, len(data))
*/
  __pyx_t_2 = NULL;
  __pyx_t_3 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_data};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(&PyBytes_Type), __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 77, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_v_py_bytes = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":78
 *     """
 *     cdef bytes py_bytes = bytes(data)
 *     cdef char *tmp = py_bytes             # <<<<<<<<<<<<<<
 *     memcpy(<void *>addr, tmp, len(data))
 *     return addr + len(data)
*/
  __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_py_bytes); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 78, __pyx_L1_error)
  __pyx_v_tmp = __pyx_t_4;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":79
 *     cdef bytes py_bytes = bytes(data)
 *     cdef char *tmp = py_bytes
 *     memcpy(<void *>addr, tmp, len(data))             # <<<<<<<<<<<<<<
 *     return addr + len(data)
 * 
*/
  __pyx_t_5 = PyObject_Length(__pyx_v_data); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 79, __pyx_L1_error)
  (void)(memcpy(((void *)__pyx_v_addr), __pyx_v_tmp, __pyx_t_5));

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":80
 *     cdef char *tmp = py_bytes
 *     memcpy(<void *>addr, tmp, len(data))
 *     return addr + len(data)             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_5 = PyObject_Length(__pyx_v_data); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 80, __pyx_L1_error)
  __pyx_r = (__pyx_v_addr + __pyx_t_5);
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":70
 * 
 * 
 * cdef uintptr_t copy_data_to_addr(uintptr_t addr, data):             # <<<<<<<<<<<<<<
 *     """
 *     Auxiliary function that copies data to memory at provided address.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.copy_data_to_addr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1L;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_py_bytes);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":88
 *     reported by mlx5dv_query_port()
 *     """
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         super().__init__()
 * 
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr___init__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":89
 *     """
 *     def __init__(self):
 *         super().__init__()             # <<<<<<<<<<<<<<
 * 
 *     def __str__(self):
*/
  __pyx_t_4 = NULL;
  __pyx_t_5 = 1;
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, ((PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr), ((PyObject *)__pyx_v_self)};
    __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_super, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 89, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_t_2 = __pyx_t_3;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_init, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 89, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":88
 *     reported by mlx5dv_query_port()
 *     """
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         super().__init__()
 * 
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVPortAttr.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":91
 *         super().__init__()
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('flags', hex(self.attr.flags))
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_3__str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_3__str__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_2__str__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_2__str__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr *__pyx_v_self) {
  PyObject *__pyx_v_print_format = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":92
 * 
 *     def __str__(self):
 *         print_format = '{:20}: {:<20}\n'             # <<<<<<<<<<<<<<
 *         return print_format.format('flags', hex(self.attr.flags))
 * 
*/
  __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_20_20);
  __pyx_v_print_format = __pyx_mstate_global->__pyx_kp_u_20_20;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":93
 *     def __str__(self):
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('flags', hex(self.attr.flags))             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint64_t(__pyx_v_self->attr.flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyNumber_Hex(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_n_u_flags, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":91
 *         super().__init__()
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('flags', hex(self.attr.flags))
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVPortAttr.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_print_format);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":95
 *         return print_format.format('flags', hex(self.attr.flags))
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def flags(self):
 *         return self.attr.flags
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_5flags_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_5flags_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_5flags___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_5flags___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":97
 *     @property
 *     def flags(self):
 *         return self.attr.flags             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint64_t(__pyx_v_self->attr.flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":95
 *         return print_format.format('flags', hex(self.attr.flags))
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def flags(self):
 *         return self.attr.flags
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVPortAttr.flags.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":99
 *         return self.attr.flags
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def vport(self):
 *         return self.attr.vport
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_5vport_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_5vport_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_5vport___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_5vport___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":101
 *     @property
 *     def vport(self):
 *         return self.attr.vport             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(__pyx_v_self->attr.vport); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":99
 *         return self.attr.flags
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def vport(self):
 *         return self.attr.vport
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVPortAttr.vport.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":103
 *         return self.attr.vport
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def vport_vhca_id(self):
 *         return self.attr.vport_vhca_id
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_13vport_vhca_id_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_13vport_vhca_id_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_13vport_vhca_id___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_13vport_vhca_id___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":105
 *     @property
 *     def vport_vhca_id(self):
 *         return self.attr.vport_vhca_id             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(__pyx_v_self->attr.vport_vhca_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":103
 *         return self.attr.vport
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def vport_vhca_id(self):
 *         return self.attr.vport_vhca_id
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVPortAttr.vport_vhca_id.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":107
 *         return self.attr.vport_vhca_id
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def esw_owner_vhca_id(self):
 *         return self.attr.esw_owner_vhca_id
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_17esw_owner_vhca_id_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_17esw_owner_vhca_id_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_17esw_owner_vhca_id___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_17esw_owner_vhca_id___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":109
 *     @property
 *     def esw_owner_vhca_id(self):
 *         return self.attr.esw_owner_vhca_id             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(__pyx_v_self->attr.esw_owner_vhca_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":107
 *         return self.attr.vport_vhca_id
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def esw_owner_vhca_id(self):
 *         return self.attr.esw_owner_vhca_id
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVPortAttr.esw_owner_vhca_id.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":111
 *         return self.attr.esw_owner_vhca_id
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def vport_steering_icm_rx(self):
 *         return self.attr.vport_steering_icm_rx
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_21vport_steering_icm_rx_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_21vport_steering_icm_rx_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_21vport_steering_icm_rx___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_21vport_steering_icm_rx___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":113
 *     @property
 *     def vport_steering_icm_rx(self):
 *         return self.attr.vport_steering_icm_rx             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint64_t(__pyx_v_self->attr.vport_steering_icm_rx); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":111
 *         return self.attr.esw_owner_vhca_id
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def vport_steering_icm_rx(self):
 *         return self.attr.vport_steering_icm_rx
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVPortAttr.vport_steering_icm_rx.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":115
 *         return self.attr.vport_steering_icm_rx
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def vport_steering_icm_tx(self):
 *         return self.attr.vport_steering_icm_tx
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_21vport_steering_icm_tx_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_21vport_steering_icm_tx_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_21vport_steering_icm_tx___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_21vport_steering_icm_tx___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":117
 *     @property
 *     def vport_steering_icm_tx(self):
 *         return self.attr.vport_steering_icm_tx             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint64_t(__pyx_v_self->attr.vport_steering_icm_tx); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":115
 *         return self.attr.vport_steering_icm_rx
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def vport_steering_icm_tx(self):
 *         return self.attr.vport_steering_icm_tx
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVPortAttr.vport_steering_icm_tx.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":119
 *         return self.attr.vport_steering_icm_tx
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def reg_c0_value(self):
 *         return self.attr.reg_c0.value
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_12reg_c0_value_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_12reg_c0_value_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_12reg_c0_value___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_12reg_c0_value___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":121
 *     @property
 *     def reg_c0_value(self):
 *         return self.attr.reg_c0.value             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(__pyx_v_self->attr.reg_c0.value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":119
 *         return self.attr.vport_steering_icm_tx
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def reg_c0_value(self):
 *         return self.attr.reg_c0.value
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVPortAttr.reg_c0_value.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":123
 *         return self.attr.reg_c0.value
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def reg_c0_mask(self):
 *         return self.attr.reg_c0.mask
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_11reg_c0_mask_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_11reg_c0_mask_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_11reg_c0_mask___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_11reg_c0_mask___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":125
 *     @property
 *     def reg_c0_mask(self):
 *         return self.attr.reg_c0.mask             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(__pyx_v_self->attr.reg_c0.mask); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 125, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":123
 *         return self.attr.reg_c0.value
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def reg_c0_mask(self):
 *         return self.attr.reg_c0.mask
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVPortAttr.reg_c0_mask.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_4__reduce_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_Pickling_of_struct_members_such, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVPortAttr.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVPortAttr.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_6__setstate_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_Pickling_of_struct_members_such, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVPortAttr.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":133
 *     device.
 *     """
 *     def __init__(self, flags=0, comp_mask=0, FdArr fds=None):             # <<<<<<<<<<<<<<
 *         super().__init__()
 *         self.attr.flags = flags
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_flags = 0;
  PyObject *__pyx_v_comp_mask = 0;
  struct __pyx_obj_7pyverbs_6device_FdArr *__pyx_v_fds = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_flags,&__pyx_mstate_global->__pyx_n_u_comp_mask,&__pyx_mstate_global->__pyx_n_u_fds,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 133, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 133, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 133, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 133, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(0, 133, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((struct __pyx_obj_7pyverbs_6device_FdArr *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 133, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 133, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 133, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((struct __pyx_obj_7pyverbs_6device_FdArr *)Py_None));
    }
    __pyx_v_flags = values[0];
    __pyx_v_comp_mask = values[1];
    __pyx_v_fds = ((struct __pyx_obj_7pyverbs_6device_FdArr *)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 3, __pyx_nargs); __PYX_ERR(0, 133, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVContextAttr.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fds), __pyx_mstate_global->__pyx_ptype_7pyverbs_6device_FdArr, 1, "fds", 0))) __PYX_ERR(0, 133, __pyx_L1_error)
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr___init__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr *)__pyx_v_self), __pyx_v_flags, __pyx_v_comp_mask, __pyx_v_fds);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr *__pyx_v_self, PyObject *__pyx_v_flags, PyObject *__pyx_v_comp_mask, struct __pyx_obj_7pyverbs_6device_FdArr *__pyx_v_fds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  unsigned int __pyx_t_6;
  unsigned long __pyx_t_7;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":134
 *     """
 *     def __init__(self, flags=0, comp_mask=0, FdArr fds=None):
 *         super().__init__()             # <<<<<<<<<<<<<<
 *         self.attr.flags = flags
 *         self.attr.comp_mask = comp_mask
*/
  __pyx_t_4 = NULL;
  __pyx_t_5 = 1;
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, ((PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr), ((PyObject *)__pyx_v_self)};
    __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_super, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 134, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_t_2 = __pyx_t_3;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_init, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 134, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":135
 *     def __init__(self, flags=0, comp_mask=0, FdArr fds=None):
 *         super().__init__()
 *         self.attr.flags = flags             # <<<<<<<<<<<<<<
 *         self.attr.comp_mask = comp_mask
 *         if fds is not None:
*/
  __pyx_t_6 = __Pyx_PyLong_As_unsigned_int(__pyx_v_flags); if (unlikely((__pyx_t_6 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 135, __pyx_L1_error)
  __pyx_v_self->attr.flags = __pyx_t_6;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":136
 *         super().__init__()
 *         self.attr.flags = flags
 *         self.attr.comp_mask = comp_mask             # <<<<<<<<<<<<<<
 *         if fds is not None:
 *             self.attr.fds = &fds.attr
*/
  __pyx_t_7 = __Pyx_PyLong_As_unsigned_long(__pyx_v_comp_mask); if (unlikely((__pyx_t_7 == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(0, 136, __pyx_L1_error)
  __pyx_v_self->attr.comp_mask = __pyx_t_7;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":137
 *         self.attr.flags = flags
 *         self.attr.comp_mask = comp_mask
 *         if fds is not None:             # <<<<<<<<<<<<<<
 *             self.attr.fds = &fds.attr
 *         self.fds = fds
*/
  __pyx_t_8 = (((PyObject *)__pyx_v_fds) != Py_None);
  if (__pyx_t_8) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":138
 *         self.attr.comp_mask = comp_mask
 *         if fds is not None:
 *             self.attr.fds = &fds.attr             # <<<<<<<<<<<<<<
 *         self.fds = fds
 * 
*/
    __pyx_v_self->attr.fds = (&__pyx_v_fds->attr);

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":137
 *         self.attr.flags = flags
 *         self.attr.comp_mask = comp_mask
 *         if fds is not None:             # <<<<<<<<<<<<<<
 *             self.attr.fds = &fds.attr
 *         self.fds = fds
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":139
 *         if fds is not None:
 *             self.attr.fds = &fds.attr
 *         self.fds = fds             # <<<<<<<<<<<<<<
 * 
 *     def __str__(self):
*/
  __Pyx_INCREF((PyObject *)__pyx_v_fds);
  __Pyx_GIVEREF((PyObject *)__pyx_v_fds);
  __Pyx_GOTREF(__pyx_v_self->fds);
  __Pyx_DECREF(__pyx_v_self->fds);
  __pyx_v_self->fds = ((PyObject *)__pyx_v_fds);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":133
 *     device.
 *     """
 *     def __init__(self, flags=0, comp_mask=0, FdArr fds=None):             # <<<<<<<<<<<<<<
 *         super().__init__()
 *         self.attr.flags = flags
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVContextAttr.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":141
 *         self.fds = fds
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('flags', self.attr.flags) +\
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_3__str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_3__str__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_2__str__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_2__str__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr *__pyx_v_self) {
  PyObject *__pyx_v_print_format = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":142
 * 
 *     def __str__(self):
 *         print_format = '{:20}: {:<20}\n'             # <<<<<<<<<<<<<<
 *         return print_format.format('flags', self.attr.flags) +\
 *                print_format.format('comp_mask', self.attr.comp_mask)
*/
  __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_20_20);
  __pyx_v_print_format = __pyx_mstate_global->__pyx_kp_u_20_20;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":143
 *     def __str__(self):
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('flags', self.attr.flags) +\             # <<<<<<<<<<<<<<
 *                print_format.format('comp_mask', self.attr.comp_mask)
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_unsigned_int(__pyx_v_self->attr.flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_n_u_flags, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":144
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('flags', self.attr.flags) +\
 *                print_format.format('comp_mask', self.attr.comp_mask)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_t_1 = __Pyx_PyLong_From_unsigned_long(__pyx_v_self->attr.comp_mask); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_n_u_comp_mask, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":143
 *     def __str__(self):
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('flags', self.attr.flags) +\             # <<<<<<<<<<<<<<
 *                print_format.format('comp_mask', self.attr.comp_mask)
 * 
*/
  __pyx_t_1 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":141
 *         self.fds = fds
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('flags', self.attr.flags) +\
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVContextAttr.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_print_format);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":146
 *                print_format.format('comp_mask', self.attr.comp_mask)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def flags(self):
 *         return self.attr.flags
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_5flags_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_5flags_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_5flags___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_5flags___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":148
 *     @property
 *     def flags(self):
 *         return self.attr.flags             # <<<<<<<<<<<<<<
 *     @flags.setter
 *     def flags(self, val):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_unsigned_int(__pyx_v_self->attr.flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":146
 *                print_format.format('comp_mask', self.attr.comp_mask)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def flags(self):
 *         return self.attr.flags
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVContextAttr.flags.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":149
 *     def flags(self):
 *         return self.attr.flags
 *     @flags.setter             # <<<<<<<<<<<<<<
 *     def flags(self, val):
 *         self.attr.flags = val
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_5flags_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_5flags_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_5flags_2__set__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr *)__pyx_v_self), ((PyObject *)__pyx_v_val));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_5flags_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr *__pyx_v_self, PyObject *__pyx_v_val) {
  int __pyx_r;
  unsigned int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":151
 *     @flags.setter
 *     def flags(self, val):
 *         self.attr.flags = val             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_t_1 = __Pyx_PyLong_As_unsigned_int(__pyx_v_val); if (unlikely((__pyx_t_1 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 151, __pyx_L1_error)
  __pyx_v_self->attr.flags = __pyx_t_1;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":149
 *     def flags(self):
 *         return self.attr.flags
 *     @flags.setter             # <<<<<<<<<<<<<<
 *     def flags(self, val):
 *         self.attr.flags = val
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVContextAttr.flags.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":153
 *         self.attr.flags = val
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def comp_mask(self):
 *         return self.attr.comp_mask
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_9comp_mask_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_9comp_mask_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_9comp_mask___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_9comp_mask___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":155
 *     @property
 *     def comp_mask(self):
 *         return self.attr.comp_mask             # <<<<<<<<<<<<<<
 *     @comp_mask.setter
 *     def comp_mask(self, val):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_unsigned_long(__pyx_v_self->attr.comp_mask); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":153
 *         self.attr.flags = val
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def comp_mask(self):
 *         return self.attr.comp_mask
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVContextAttr.comp_mask.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":156
 *     def comp_mask(self):
 *         return self.attr.comp_mask
 *     @comp_mask.setter             # <<<<<<<<<<<<<<
 *     def comp_mask(self, val):
 *         self.attr.comp_mask = val
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_9comp_mask_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_9comp_mask_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_9comp_mask_2__set__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr *)__pyx_v_self), ((PyObject *)__pyx_v_val));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_9comp_mask_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr *__pyx_v_self, PyObject *__pyx_v_val) {
  int __pyx_r;
  unsigned long __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":158
 *     @comp_mask.setter
 *     def comp_mask(self, val):
 *         self.attr.comp_mask = val             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_1 = __Pyx_PyLong_As_unsigned_long(__pyx_v_val); if (unlikely((__pyx_t_1 == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(0, 158, __pyx_L1_error)
  __pyx_v_self->attr.comp_mask = __pyx_t_1;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":156
 *     def comp_mask(self):
 *         return self.attr.comp_mask
 *     @comp_mask.setter             # <<<<<<<<<<<<<<
 *     def comp_mask(self, val):
 *         self.attr.comp_mask = val
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVContextAttr.comp_mask.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.attr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_4__reduce_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self.attr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.attr cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_attr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.attr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVContextAttr.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.attr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.attr cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVContextAttr.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_6__setstate_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self.attr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.attr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_attr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.attr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.attr cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVContextAttr.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":165
 *     Represents mlx5dv_devx_obj C struct.
 *     """
 *     def __init__(self, Context context, in_, outlen):             # <<<<<<<<<<<<<<
 *         """
 *         Creates a DevX object.
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj___init__, "\n        Creates a DevX object.\n        If the object was successfully created, the command's output would be\n        stored as a memoryview in self.out_view.\n        :param in_: Bytes of the obj_create command's input data provided in a\n                    device specification format.\n                    (Stream of bytes or __bytes__ is implemented)\n        :param outlen: Expected output length in bytes\n        ");
#if CYTHON_UPDATE_DESCRIPTOR_DOC
struct wrapperbase __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj___init__;
#endif
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_context = 0;
  PyObject *__pyx_v_in_ = 0;
  PyObject *__pyx_v_outlen = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_context,&__pyx_mstate_global->__pyx_n_u_in,&__pyx_mstate_global->__pyx_n_u_outlen,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 165, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 165, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 165, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 165, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(0, 165, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, i); __PYX_ERR(0, 165, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 165, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 165, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 165, __pyx_L3_error)
    }
    __pyx_v_context = ((struct __pyx_obj_7pyverbs_6device_Context *)values[0]);
    __pyx_v_in_ = values[1];
    __pyx_v_outlen = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 165, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxObj.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_context), __pyx_mstate_global->__pyx_ptype_7pyverbs_6device_Context, 1, "context", 0))) __PYX_ERR(0, 165, __pyx_L1_error)
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj___init__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *)__pyx_v_self), __pyx_v_context, __pyx_v_in_, __pyx_v_outlen);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *__pyx_v_self, struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_context, PyObject *__pyx_v_in_, PyObject *__pyx_v_outlen) {
  PyObject *__pyx_v_in_bytes = NULL;
  char *__pyx_v_in_mailbox;
  char *__pyx_v_out_mailbox;
  PyObject *__pyx_v_status = NULL;
  PyObject *__pyx_v_syndrome = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  char *__pyx_t_6;
  Py_ssize_t __pyx_t_7;
  int __pyx_t_8;
  Py_ssize_t __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11[5];
  PyObject *__pyx_t_12 = NULL;
  int __pyx_t_13;
  int __pyx_t_14;
  char const *__pyx_t_15;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  PyObject *__pyx_t_21 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":175
 *         :param outlen: Expected output length in bytes
 *         """
 *         super().__init__()             # <<<<<<<<<<<<<<
 *         in_bytes = bytes(in_)
 *         cdef char *in_mailbox = _prepare_devx_inbox(in_bytes)
*/
  __pyx_t_4 = NULL;
  __pyx_t_5 = 1;
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, ((PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj), ((PyObject *)__pyx_v_self)};
    __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_super, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 175, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_t_2 = __pyx_t_3;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_init, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 175, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":176
 *         """
 *         super().__init__()
 *         in_bytes = bytes(in_)             # <<<<<<<<<<<<<<
 *         cdef char *in_mailbox = _prepare_devx_inbox(in_bytes)
 *         cdef char *out_mailbox = _prepare_devx_outbox(outlen)
*/
  __pyx_t_3 = NULL;
  __pyx_t_5 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_in_};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(&PyBytes_Type), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 176, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_v_in_bytes = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":177
 *         super().__init__()
 *         in_bytes = bytes(in_)
 *         cdef char *in_mailbox = _prepare_devx_inbox(in_bytes)             # <<<<<<<<<<<<<<
 *         cdef char *out_mailbox = _prepare_devx_outbox(outlen)
 *         self.obj = dv.mlx5dv_devx_obj_create(context.context, in_mailbox,
*/
  __pyx_t_6 = __pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv__prepare_devx_inbox(__pyx_v_in_bytes); if (unlikely(__pyx_t_6 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 177, __pyx_L1_error)
  __pyx_v_in_mailbox = __pyx_t_6;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":178
 *         in_bytes = bytes(in_)
 *         cdef char *in_mailbox = _prepare_devx_inbox(in_bytes)
 *         cdef char *out_mailbox = _prepare_devx_outbox(outlen)             # <<<<<<<<<<<<<<
 *         self.obj = dv.mlx5dv_devx_obj_create(context.context, in_mailbox,
 *                                              len(in_bytes), out_mailbox, outlen)
*/
  __pyx_t_6 = __pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv__prepare_devx_outbox(__pyx_v_outlen); if (unlikely(__pyx_t_6 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 178, __pyx_L1_error)
  __pyx_v_out_mailbox = __pyx_t_6;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":180
 *         cdef char *out_mailbox = _prepare_devx_outbox(outlen)
 *         self.obj = dv.mlx5dv_devx_obj_create(context.context, in_mailbox,
 *                                              len(in_bytes), out_mailbox, outlen)             # <<<<<<<<<<<<<<
 *         try:
 *             if self.obj == NULL:
*/
  __pyx_t_7 = __Pyx_PyBytes_GET_SIZE(__pyx_v_in_bytes); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 180, __pyx_L1_error)
  __pyx_t_5 = __Pyx_PyLong_As_size_t(__pyx_v_outlen); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 180, __pyx_L1_error)

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":179
 *         cdef char *in_mailbox = _prepare_devx_inbox(in_bytes)
 *         cdef char *out_mailbox = _prepare_devx_outbox(outlen)
 *         self.obj = dv.mlx5dv_devx_obj_create(context.context, in_mailbox,             # <<<<<<<<<<<<<<
 *                                              len(in_bytes), out_mailbox, outlen)
 *         try:
*/
  __pyx_v_self->obj = mlx5dv_devx_obj_create(__pyx_v_context->context, __pyx_v_in_mailbox, __pyx_t_7, __pyx_v_out_mailbox, __pyx_t_5);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":181
 *         self.obj = dv.mlx5dv_devx_obj_create(context.context, in_mailbox,
 *                                              len(in_bytes), out_mailbox, outlen)
 *         try:             # <<<<<<<<<<<<<<
 *             if self.obj == NULL:
 *                 raise PyverbsRDMAErrno('Failed to create DevX object')
*/
  /*try:*/ {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":182
 *                                              len(in_bytes), out_mailbox, outlen)
 *         try:
 *             if self.obj == NULL:             # <<<<<<<<<<<<<<
 *                 raise PyverbsRDMAErrno('Failed to create DevX object')
 *             self.out_view = memoryview(out_mailbox[:outlen])
*/
    __pyx_t_8 = (__pyx_v_self->obj == NULL);
    if (unlikely(__pyx_t_8)) {

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":183
 *         try:
 *             if self.obj == NULL:
 *                 raise PyverbsRDMAErrno('Failed to create DevX object')             # <<<<<<<<<<<<<<
 *             self.out_view = memoryview(out_mailbox[:outlen])
 *             status = hex(self.out_view[0])
*/
      __pyx_t_3 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_PyverbsRDMAErrno); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 183, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_5 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
        assert(__pyx_t_3);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_2, __pyx__function);
        __pyx_t_5 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_Failed_to_create_DevX_object};
        __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 183, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 183, __pyx_L4_error)

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":182
 *                                              len(in_bytes), out_mailbox, outlen)
 *         try:
 *             if self.obj == NULL:             # <<<<<<<<<<<<<<
 *                 raise PyverbsRDMAErrno('Failed to create DevX object')
 *             self.out_view = memoryview(out_mailbox[:outlen])
*/
    }

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":184
 *             if self.obj == NULL:
 *                 raise PyverbsRDMAErrno('Failed to create DevX object')
 *             self.out_view = memoryview(out_mailbox[:outlen])             # <<<<<<<<<<<<<<
 *             status = hex(self.out_view[0])
 *             syndrome = self.out_view[4:8].hex()
*/
    __Pyx_INCREF(__pyx_v_outlen);
    __pyx_t_1 = __pyx_v_outlen;
    __pyx_t_8 = (__pyx_t_1 == Py_None);
    if (__pyx_t_8) {
      __pyx_t_7 = PY_SSIZE_T_MAX;
    } else {
      __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 184, __pyx_L4_error)
      __pyx_t_7 = __pyx_t_9;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_out_mailbox + 0, __pyx_t_7 - 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 184, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyMemoryView_FromObject(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 184, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GIVEREF(__pyx_t_2);
    __Pyx_GOTREF(__pyx_v_self->out_view);
    __Pyx_DECREF(__pyx_v_self->out_view);
    __pyx_v_self->out_view = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":185
 *                 raise PyverbsRDMAErrno('Failed to create DevX object')
 *             self.out_view = memoryview(out_mailbox[:outlen])
 *             status = hex(self.out_view[0])             # <<<<<<<<<<<<<<
 *             syndrome = self.out_view[4:8].hex()
 *             if status != hex(0):
*/
    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_self->out_view, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 185, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyNumber_Hex(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 185, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_status = ((PyObject*)__pyx_t_1);
    __pyx_t_1 = 0;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":186
 *             self.out_view = memoryview(out_mailbox[:outlen])
 *             status = hex(self.out_view[0])
 *             syndrome = self.out_view[4:8].hex()             # <<<<<<<<<<<<<<
 *             if status != hex(0):
 *                 raise PyverbsRDMAError('Failed to create DevX object with status'
*/
    __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_self->out_view, 4, 8, NULL, NULL, &__pyx_mstate_global->__pyx_slice[0], 1, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 186, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __pyx_t_3;
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_hex, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 186, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __pyx_v_syndrome = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":187
 *             status = hex(self.out_view[0])
 *             syndrome = self.out_view[4:8].hex()
 *             if status != hex(0):             # <<<<<<<<<<<<<<
 *                 raise PyverbsRDMAError('Failed to create DevX object with status'
 *                                        f'({status}) and syndrome (0x{syndrome})')
*/
    __pyx_t_1 = __Pyx_PyNumber_Hex(__pyx_mstate_global->__pyx_int_0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 187, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = (__Pyx_PyUnicode_Equals(__pyx_v_status, __pyx_t_1, Py_NE)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 187, __pyx_L4_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(__pyx_t_8)) {

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":188
 *             syndrome = self.out_view[4:8].hex()
 *             if status != hex(0):
 *                 raise PyverbsRDMAError('Failed to create DevX object with status'             # <<<<<<<<<<<<<<
 *                                        f'({status}) and syndrome (0x{syndrome})')
 *         finally:
*/
      __pyx_t_3 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_PyverbsRDMAError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 188, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_2);

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":189
 *             if status != hex(0):
 *                 raise PyverbsRDMAError('Failed to create DevX object with status'
 *                                        f'({status}) and syndrome (0x{syndrome})')             # <<<<<<<<<<<<<<
 *         finally:
 *             free(in_mailbox)
*/
      __pyx_t_4 = __Pyx_PyUnicode_Unicode(__pyx_v_status); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 189, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_10 = __Pyx_PyObject_FormatSimple(__pyx_v_syndrome, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 189, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_11[0] = __pyx_mstate_global->__pyx_kp_u_Failed_to_create_DevX_object_wit;
      __pyx_t_11[1] = __pyx_t_4;
      __pyx_t_11[2] = __pyx_mstate_global->__pyx_kp_u_and_syndrome_0x;
      __pyx_t_11[3] = __pyx_t_10;
      __pyx_t_11[4] = __pyx_mstate_global->__pyx_kp_u__2;

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":188
 *             syndrome = self.out_view[4:8].hex()
 *             if status != hex(0):
 *                 raise PyverbsRDMAError('Failed to create DevX object with status'             # <<<<<<<<<<<<<<
 *                                        f'({status}) and syndrome (0x{syndrome})')
 *         finally:
*/
      __pyx_t_12 = __Pyx_PyUnicode_Join(__pyx_t_11, 5, 41 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 18 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_10) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_10));
      if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 188, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_5 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
        assert(__pyx_t_3);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_2, __pyx__function);
        __pyx_t_5 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_12};
        __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 188, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 188, __pyx_L4_error)

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":187
 *             status = hex(self.out_view[0])
 *             syndrome = self.out_view[4:8].hex()
 *             if status != hex(0):             # <<<<<<<<<<<<<<
 *                 raise PyverbsRDMAError('Failed to create DevX object with status'
 *                                        f'({status}) and syndrome (0x{syndrome})')
*/
    }
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":191
 *                                        f'({status}) and syndrome (0x{syndrome})')
 *         finally:
 *             free(in_mailbox)             # <<<<<<<<<<<<<<
 *             free(out_mailbox)
 *         self.context = context
*/
  /*finally:*/ {
    /*normal exit:*/{
      free(__pyx_v_in_mailbox);

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":192
 *         finally:
 *             free(in_mailbox)
 *             free(out_mailbox)             # <<<<<<<<<<<<<<
 *         self.context = context
 *         self.context.add_ref(self)
*/
      free(__pyx_v_out_mailbox);
      goto __pyx_L5;
    }
    __pyx_L4_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_ExceptionSwap(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
      if ( unlikely(__Pyx_GetException(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18) < 0)) __Pyx_ErrFetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
      __Pyx_XGOTREF(__pyx_t_16);
      __Pyx_XGOTREF(__pyx_t_17);
      __Pyx_XGOTREF(__pyx_t_18);
      __Pyx_XGOTREF(__pyx_t_19);
      __Pyx_XGOTREF(__pyx_t_20);
      __Pyx_XGOTREF(__pyx_t_21);
      __pyx_t_13 = __pyx_lineno; __pyx_t_14 = __pyx_clineno; __pyx_t_15 = __pyx_filename;
      {

        /* "pyverbs/providers/mlx5/mlx5dv.pyx":191
 *                                        f'({status}) and syndrome (0x{syndrome})')
 *         finally:
 *             free(in_mailbox)             # <<<<<<<<<<<<<<
 *             free(out_mailbox)
 *         self.context = context
*/
        free(__pyx_v_in_mailbox);

        /* "pyverbs/providers/mlx5/mlx5dv.pyx":192
 *         finally:
 *             free(in_mailbox)
 *             free(out_mailbox)             # <<<<<<<<<<<<<<
 *         self.context = context
 *         self.context.add_ref(self)
*/
        free(__pyx_v_out_mailbox);
      }
      __Pyx_XGIVEREF(__pyx_t_19);
      __Pyx_XGIVEREF(__pyx_t_20);
      __Pyx_XGIVEREF(__pyx_t_21);
      __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_20, __pyx_t_21);
      __Pyx_XGIVEREF(__pyx_t_16);
      __Pyx_XGIVEREF(__pyx_t_17);
      __Pyx_XGIVEREF(__pyx_t_18);
      __Pyx_ErrRestore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
      __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
      __pyx_lineno = __pyx_t_13; __pyx_clineno = __pyx_t_14; __pyx_filename = __pyx_t_15;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":193
 *             free(in_mailbox)
 *             free(out_mailbox)
 *         self.context = context             # <<<<<<<<<<<<<<
 *         self.context.add_ref(self)
 *         self.flow_counter_actions = weakref.WeakSet()
*/
  __Pyx_INCREF((PyObject *)__pyx_v_context);
  __Pyx_GIVEREF((PyObject *)__pyx_v_context);
  __Pyx_GOTREF((PyObject *)__pyx_v_self->context);
  __Pyx_DECREF((PyObject *)__pyx_v_self->context);
  __pyx_v_self->context = __pyx_v_context;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":194
 *             free(out_mailbox)
 *         self.context = context
 *         self.context.add_ref(self)             # <<<<<<<<<<<<<<
 *         self.flow_counter_actions = weakref.WeakSet()
 *         self.dest_tir_actions = weakref.WeakSet()
*/
  __pyx_t_1 = ((struct __pyx_vtabstruct_7pyverbs_6device_Context *)__pyx_v_self->context->__pyx_base.__pyx_vtab)->add_ref(__pyx_v_self->context, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":195
 *         self.context = context
 *         self.context.add_ref(self)
 *         self.flow_counter_actions = weakref.WeakSet()             # <<<<<<<<<<<<<<
 *         self.dest_tir_actions = weakref.WeakSet()
 * 
*/
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_weakref); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_WeakSet); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_5 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 195, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->flow_counter_actions);
  __Pyx_DECREF(__pyx_v_self->flow_counter_actions);
  __pyx_v_self->flow_counter_actions = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":196
 *         self.context.add_ref(self)
 *         self.flow_counter_actions = weakref.WeakSet()
 *         self.dest_tir_actions = weakref.WeakSet()             # <<<<<<<<<<<<<<
 * 
 *     def query(self, in_, outlen):
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_weakref); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 196, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_WeakSet); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 196, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_12))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_12);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_12);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_12, __pyx__function);
    __pyx_t_5 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_12, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 196, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->dest_tir_actions);
  __Pyx_DECREF(__pyx_v_self->dest_tir_actions);
  __pyx_v_self->dest_tir_actions = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":165
 *     Represents mlx5dv_devx_obj C struct.
 *     """
 *     def __init__(self, Context context, in_, outlen):             # <<<<<<<<<<<<<<
 *         """
 *         Creates a DevX object.
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxObj.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_in_bytes);
  __Pyx_XDECREF(__pyx_v_status);
  __Pyx_XDECREF(__pyx_v_syndrome);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":198
 *         self.dest_tir_actions = weakref.WeakSet()
 * 
 *     def query(self, in_, outlen):             # <<<<<<<<<<<<<<
 *         """
 *         Queries the DevX object.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_3query(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_2query, "\n        Queries the DevX object.\n        :param in_: Bytes of the obj_query command's input data provided in a\n                    device specification format.\n                    (Stream of bytes or __bytes__ is implemented)\n        :param outlen: Expected output length in bytes\n        :return: Bytes of the command's output\n        ");
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_3query = {"query", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_3query, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_2query};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_3query(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_in_ = 0;
  PyObject *__pyx_v_outlen = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("query (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_in,&__pyx_mstate_global->__pyx_n_u_outlen,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 198, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 198, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 198, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "query", 0) < (0)) __PYX_ERR(0, 198, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("query", 1, 2, 2, i); __PYX_ERR(0, 198, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 198, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 198, __pyx_L3_error)
    }
    __pyx_v_in_ = values[0];
    __pyx_v_outlen = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("query", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 198, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxObj.query", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_2query(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *)__pyx_v_self), __pyx_v_in_, __pyx_v_outlen);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_2query(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *__pyx_v_self, PyObject *__pyx_v_in_, PyObject *__pyx_v_outlen) {
  PyObject *__pyx_v_in_bytes = NULL;
  char *__pyx_v_in_mailbox;
  char *__pyx_v_out_mailbox;
  int __pyx_v_rc;
  PyObject *__pyx_v_out = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  size_t __pyx_t_3;
  char *__pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  Py_ssize_t __pyx_t_9;
  int __pyx_t_10;
  int __pyx_t_11;
  char const *__pyx_t_12;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("query", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":207
 *         :return: Bytes of the command's output
 *         """
 *         in_bytes = bytes(in_)             # <<<<<<<<<<<<<<
 *         cdef char *in_mailbox = _prepare_devx_inbox(in_bytes)
 *         cdef char *out_mailbox = _prepare_devx_outbox(outlen)
*/
  __pyx_t_2 = NULL;
  __pyx_t_3 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_in_};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(&PyBytes_Type), __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 207, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_v_in_bytes = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":208
 *         """
 *         in_bytes = bytes(in_)
 *         cdef char *in_mailbox = _prepare_devx_inbox(in_bytes)             # <<<<<<<<<<<<<<
 *         cdef char *out_mailbox = _prepare_devx_outbox(outlen)
 *         rc = dv.mlx5dv_devx_obj_query(self.obj, in_mailbox, len(in_bytes),
*/
  __pyx_t_4 = __pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv__prepare_devx_inbox(__pyx_v_in_bytes); if (unlikely(__pyx_t_4 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 208, __pyx_L1_error)
  __pyx_v_in_mailbox = __pyx_t_4;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":209
 *         in_bytes = bytes(in_)
 *         cdef char *in_mailbox = _prepare_devx_inbox(in_bytes)
 *         cdef char *out_mailbox = _prepare_devx_outbox(outlen)             # <<<<<<<<<<<<<<
 *         rc = dv.mlx5dv_devx_obj_query(self.obj, in_mailbox, len(in_bytes),
 *                                       out_mailbox, outlen)
*/
  __pyx_t_4 = __pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv__prepare_devx_outbox(__pyx_v_outlen); if (unlikely(__pyx_t_4 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 209, __pyx_L1_error)
  __pyx_v_out_mailbox = __pyx_t_4;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":210
 *         cdef char *in_mailbox = _prepare_devx_inbox(in_bytes)
 *         cdef char *out_mailbox = _prepare_devx_outbox(outlen)
 *         rc = dv.mlx5dv_devx_obj_query(self.obj, in_mailbox, len(in_bytes),             # <<<<<<<<<<<<<<
 *                                       out_mailbox, outlen)
 *         try:
*/
  __pyx_t_5 = __Pyx_PyBytes_GET_SIZE(__pyx_v_in_bytes); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 210, __pyx_L1_error)

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":211
 *         cdef char *out_mailbox = _prepare_devx_outbox(outlen)
 *         rc = dv.mlx5dv_devx_obj_query(self.obj, in_mailbox, len(in_bytes),
 *                                       out_mailbox, outlen)             # <<<<<<<<<<<<<<
 *         try:
 *             if rc:
*/
  __pyx_t_3 = __Pyx_PyLong_As_size_t(__pyx_v_outlen); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 211, __pyx_L1_error)

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":210
 *         cdef char *in_mailbox = _prepare_devx_inbox(in_bytes)
 *         cdef char *out_mailbox = _prepare_devx_outbox(outlen)
 *         rc = dv.mlx5dv_devx_obj_query(self.obj, in_mailbox, len(in_bytes),             # <<<<<<<<<<<<<<
 *                                       out_mailbox, outlen)
 *         try:
*/
  __pyx_v_rc = mlx5dv_devx_obj_query(__pyx_v_self->obj, __pyx_v_in_mailbox, __pyx_t_5, __pyx_v_out_mailbox, __pyx_t_3);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":212
 *         rc = dv.mlx5dv_devx_obj_query(self.obj, in_mailbox, len(in_bytes),
 *                                       out_mailbox, outlen)
 *         try:             # <<<<<<<<<<<<<<
 *             if rc:
 *                 raise PyverbsRDMAError('Failed to query DevX object', rc)
*/
  /*try:*/ {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":213
 *                                       out_mailbox, outlen)
 *         try:
 *             if rc:             # <<<<<<<<<<<<<<
 *                 raise PyverbsRDMAError('Failed to query DevX object', rc)
 *             out = <bytes>out_mailbox[:outlen]
*/
    __pyx_t_6 = (__pyx_v_rc != 0);
    if (unlikely(__pyx_t_6)) {

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":214
 *         try:
 *             if rc:
 *                 raise PyverbsRDMAError('Failed to query DevX object', rc)             # <<<<<<<<<<<<<<
 *             out = <bytes>out_mailbox[:outlen]
 *         finally:
*/
      __pyx_t_2 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_PyverbsRDMAError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 214, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_8 = __Pyx_PyLong_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 214, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_3 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_7))) {
        __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_7);
        assert(__pyx_t_2);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
        __pyx_t_3 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Failed_to_query_DevX_object, __pyx_t_8};
        __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_3, (3-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 214, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 214, __pyx_L4_error)

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":213
 *                                       out_mailbox, outlen)
 *         try:
 *             if rc:             # <<<<<<<<<<<<<<
 *                 raise PyverbsRDMAError('Failed to query DevX object', rc)
 *             out = <bytes>out_mailbox[:outlen]
*/
    }

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":215
 *             if rc:
 *                 raise PyverbsRDMAError('Failed to query DevX object', rc)
 *             out = <bytes>out_mailbox[:outlen]             # <<<<<<<<<<<<<<
 *         finally:
 *             free(in_mailbox)
*/
    __Pyx_INCREF(__pyx_v_outlen);
    __pyx_t_1 = __pyx_v_outlen;
    __pyx_t_6 = (__pyx_t_1 == Py_None);
    if (__pyx_t_6) {
      __pyx_t_5 = PY_SSIZE_T_MAX;
    } else {
      __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 215, __pyx_L4_error)
      __pyx_t_5 = __pyx_t_9;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_out_mailbox + 0, __pyx_t_5 - 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 215, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = __pyx_t_1;
    __Pyx_INCREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_out = ((PyObject*)__pyx_t_7);
    __pyx_t_7 = 0;
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":217
 *             out = <bytes>out_mailbox[:outlen]
 *         finally:
 *             free(in_mailbox)             # <<<<<<<<<<<<<<
 *             free(out_mailbox)
 *         return out
*/
  /*finally:*/ {
    /*normal exit:*/{
      free(__pyx_v_in_mailbox);

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":218
 *         finally:
 *             free(in_mailbox)
 *             free(out_mailbox)             # <<<<<<<<<<<<<<
 *         return out
 * 
*/
      free(__pyx_v_out_mailbox);
      goto __pyx_L5;
    }
    __pyx_L4_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
       __Pyx_ExceptionSwap(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
      if ( unlikely(__Pyx_GetException(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15) < 0)) __Pyx_ErrFetch(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15);
      __Pyx_XGOTREF(__pyx_t_13);
      __Pyx_XGOTREF(__pyx_t_14);
      __Pyx_XGOTREF(__pyx_t_15);
      __Pyx_XGOTREF(__pyx_t_16);
      __Pyx_XGOTREF(__pyx_t_17);
      __Pyx_XGOTREF(__pyx_t_18);
      __pyx_t_10 = __pyx_lineno; __pyx_t_11 = __pyx_clineno; __pyx_t_12 = __pyx_filename;
      {

        /* "pyverbs/providers/mlx5/mlx5dv.pyx":217
 *             out = <bytes>out_mailbox[:outlen]
 *         finally:
 *             free(in_mailbox)             # <<<<<<<<<<<<<<
 *             free(out_mailbox)
 *         return out
*/
        free(__pyx_v_in_mailbox);

        /* "pyverbs/providers/mlx5/mlx5dv.pyx":218
 *         finally:
 *             free(in_mailbox)
 *             free(out_mailbox)             # <<<<<<<<<<<<<<
 *         return out
 * 
*/
        free(__pyx_v_out_mailbox);
      }
      __Pyx_XGIVEREF(__pyx_t_16);
      __Pyx_XGIVEREF(__pyx_t_17);
      __Pyx_XGIVEREF(__pyx_t_18);
      __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18);
      __Pyx_XGIVEREF(__pyx_t_13);
      __Pyx_XGIVEREF(__pyx_t_14);
      __Pyx_XGIVEREF(__pyx_t_15);
      __Pyx_ErrRestore(__pyx_t_13, __pyx_t_14, __pyx_t_15);
      __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0;
      __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_11; __pyx_filename = __pyx_t_12;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":219
 *             free(in_mailbox)
 *             free(out_mailbox)
 *         return out             # <<<<<<<<<<<<<<
 * 
 *     def query_async(self, in_, outlen, wr_id, Mlx5DevxCmdComp cmd_comp):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_out);
  __pyx_r = __pyx_v_out;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":198
 *         self.dest_tir_actions = weakref.WeakSet()
 * 
 *     def query(self, in_, outlen):             # <<<<<<<<<<<<<<
 *         """
 *         Queries the DevX object.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxObj.query", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_in_bytes);
  __Pyx_XDECREF(__pyx_v_out);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":221
 *         return out
 * 
 *     def query_async(self, in_, outlen, wr_id, Mlx5DevxCmdComp cmd_comp):             # <<<<<<<<<<<<<<
 *         """
 *         Queries asynchronously the DevX object.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_5query_async(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_4query_async, "\n        Queries asynchronously the DevX object.\n        :param in_: Bytes of the obj_query command's input data provided in a\n                    device specification format.\n                    (Stream of bytes or __bytes__ is implemented)\n        :param outlen: Expected output length in bytes\n        :param wr_id: Num of command that sent\n        :param cmd_comp: Mlx5DevxCmdComp object\n        :return: Bytes of the command's output\n        ");
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_5query_async = {"query_async", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_5query_async, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_4query_async};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_5query_async(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_in_ = 0;
  PyObject *__pyx_v_outlen = 0;
  PyObject *__pyx_v_wr_id = 0;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *__pyx_v_cmd_comp = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("query_async (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_in,&__pyx_mstate_global->__pyx_n_u_outlen,&__pyx_mstate_global->__pyx_n_u_wr_id,&__pyx_mstate_global->__pyx_n_u_cmd_comp,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 221, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 221, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 221, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 221, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 221, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "query_async", 0) < (0)) __PYX_ERR(0, 221, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 4; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("query_async", 1, 4, 4, i); __PYX_ERR(0, 221, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 4)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 221, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 221, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 221, __pyx_L3_error)
      values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 221, __pyx_L3_error)
    }
    __pyx_v_in_ = values[0];
    __pyx_v_outlen = values[1];
    __pyx_v_wr_id = values[2];
    __pyx_v_cmd_comp = ((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *)values[3]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("query_async", 1, 4, 4, __pyx_nargs); __PYX_ERR(0, 221, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxObj.query_async", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cmd_comp), __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp, 1, "cmd_comp", 0))) __PYX_ERR(0, 221, __pyx_L1_error)
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_4query_async(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *)__pyx_v_self), __pyx_v_in_, __pyx_v_outlen, __pyx_v_wr_id, __pyx_v_cmd_comp);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_4query_async(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *__pyx_v_self, PyObject *__pyx_v_in_, PyObject *__pyx_v_outlen, PyObject *__pyx_v_wr_id, struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *__pyx_v_cmd_comp) {
  PyObject *__pyx_v_in_bytes = NULL;
  char *__pyx_v_in_mailbox;
  int __pyx_v_rc;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  size_t __pyx_t_3;
  char *__pyx_t_4;
  Py_ssize_t __pyx_t_5;
  uint64_t __pyx_t_6;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  int __pyx_t_11;
  char const *__pyx_t_12;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("query_async", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":232
 *         :return: Bytes of the command's output
 *         """
 *         in_bytes = bytes(in_)             # <<<<<<<<<<<<<<
 *         cdef char *in_mailbox = _prepare_devx_inbox(in_bytes)
 *         rc = dv.mlx5dv_devx_obj_query_async(self.obj, in_mailbox, len(in_bytes),
*/
  __pyx_t_2 = NULL;
  __pyx_t_3 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_in_};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(&PyBytes_Type), __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 232, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_v_in_bytes = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":233
 *         """
 *         in_bytes = bytes(in_)
 *         cdef char *in_mailbox = _prepare_devx_inbox(in_bytes)             # <<<<<<<<<<<<<<
 *         rc = dv.mlx5dv_devx_obj_query_async(self.obj, in_mailbox, len(in_bytes),
 *                                             outlen, wr_id, cmd_comp.cmd_comp)
*/
  __pyx_t_4 = __pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv__prepare_devx_inbox(__pyx_v_in_bytes); if (unlikely(__pyx_t_4 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 233, __pyx_L1_error)
  __pyx_v_in_mailbox = __pyx_t_4;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":234
 *         in_bytes = bytes(in_)
 *         cdef char *in_mailbox = _prepare_devx_inbox(in_bytes)
 *         rc = dv.mlx5dv_devx_obj_query_async(self.obj, in_mailbox, len(in_bytes),             # <<<<<<<<<<<<<<
 *                                             outlen, wr_id, cmd_comp.cmd_comp)
 *         try:
*/
  __pyx_t_5 = __Pyx_PyBytes_GET_SIZE(__pyx_v_in_bytes); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 234, __pyx_L1_error)

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":235
 *         cdef char *in_mailbox = _prepare_devx_inbox(in_bytes)
 *         rc = dv.mlx5dv_devx_obj_query_async(self.obj, in_mailbox, len(in_bytes),
 *                                             outlen, wr_id, cmd_comp.cmd_comp)             # <<<<<<<<<<<<<<
 *         try:
 *             if rc:
*/
  __pyx_t_3 = __Pyx_PyLong_As_size_t(__pyx_v_outlen); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 235, __pyx_L1_error)
  __pyx_t_6 = __Pyx_PyLong_As_uint64_t(__pyx_v_wr_id); if (unlikely((__pyx_t_6 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 235, __pyx_L1_error)

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":234
 *         in_bytes = bytes(in_)
 *         cdef char *in_mailbox = _prepare_devx_inbox(in_bytes)
 *         rc = dv.mlx5dv_devx_obj_query_async(self.obj, in_mailbox, len(in_bytes),             # <<<<<<<<<<<<<<
 *                                             outlen, wr_id, cmd_comp.cmd_comp)
 *         try:
*/
  __pyx_v_rc = mlx5dv_devx_obj_query_async(__pyx_v_self->obj, __pyx_v_in_mailbox, __pyx_t_5, __pyx_t_3, __pyx_t_6, __pyx_v_cmd_comp->cmd_comp);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":236
 *         rc = dv.mlx5dv_devx_obj_query_async(self.obj, in_mailbox, len(in_bytes),
 *                                             outlen, wr_id, cmd_comp.cmd_comp)
 *         try:             # <<<<<<<<<<<<<<
 *             if rc:
 *                 raise PyverbsRDMAError('Failed to query DevX object', rc)
*/
  /*try:*/ {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":237
 *                                             outlen, wr_id, cmd_comp.cmd_comp)
 *         try:
 *             if rc:             # <<<<<<<<<<<<<<
 *                 raise PyverbsRDMAError('Failed to query DevX object', rc)
 *         finally:
*/
    __pyx_t_7 = (__pyx_v_rc != 0);
    if (unlikely(__pyx_t_7)) {

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":238
 *         try:
 *             if rc:
 *                 raise PyverbsRDMAError('Failed to query DevX object', rc)             # <<<<<<<<<<<<<<
 *         finally:
 *             free(in_mailbox)
*/
      __pyx_t_2 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_PyverbsRDMAError); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 238, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_9 = __Pyx_PyLong_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 238, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_3 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_8))) {
        __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8);
        assert(__pyx_t_2);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
        __pyx_t_3 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Failed_to_query_DevX_object, __pyx_t_9};
        __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_3, (3-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 238, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 238, __pyx_L4_error)

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":237
 *                                             outlen, wr_id, cmd_comp.cmd_comp)
 *         try:
 *             if rc:             # <<<<<<<<<<<<<<
 *                 raise PyverbsRDMAError('Failed to query DevX object', rc)
 *         finally:
*/
    }
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":240
 *                 raise PyverbsRDMAError('Failed to query DevX object', rc)
 *         finally:
 *             free(in_mailbox)             # <<<<<<<<<<<<<<
 * 
 *     def modify(self, in_, outlen):
*/
  /*finally:*/ {
    /*normal exit:*/{
      free(__pyx_v_in_mailbox);
      goto __pyx_L5;
    }
    __pyx_L4_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
       __Pyx_ExceptionSwap(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
      if ( unlikely(__Pyx_GetException(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15) < 0)) __Pyx_ErrFetch(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15);
      __Pyx_XGOTREF(__pyx_t_13);
      __Pyx_XGOTREF(__pyx_t_14);
      __Pyx_XGOTREF(__pyx_t_15);
      __Pyx_XGOTREF(__pyx_t_16);
      __Pyx_XGOTREF(__pyx_t_17);
      __Pyx_XGOTREF(__pyx_t_18);
      __pyx_t_10 = __pyx_lineno; __pyx_t_11 = __pyx_clineno; __pyx_t_12 = __pyx_filename;
      {
        free(__pyx_v_in_mailbox);
      }
      __Pyx_XGIVEREF(__pyx_t_16);
      __Pyx_XGIVEREF(__pyx_t_17);
      __Pyx_XGIVEREF(__pyx_t_18);
      __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18);
      __Pyx_XGIVEREF(__pyx_t_13);
      __Pyx_XGIVEREF(__pyx_t_14);
      __Pyx_XGIVEREF(__pyx_t_15);
      __Pyx_ErrRestore(__pyx_t_13, __pyx_t_14, __pyx_t_15);
      __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0;
      __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_11; __pyx_filename = __pyx_t_12;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":221
 *         return out
 * 
 *     def query_async(self, in_, outlen, wr_id, Mlx5DevxCmdComp cmd_comp):             # <<<<<<<<<<<<<<
 *         """
 *         Queries asynchronously the DevX object.
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxObj.query_async", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_in_bytes);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":242
 *             free(in_mailbox)
 * 
 *     def modify(self, in_, outlen):             # <<<<<<<<<<<<<<
 *         """
 *         Modifies the DevX object.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_7modify(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_6modify, "\n        Modifies the DevX object.\n        :param in_: Bytes of the obj_modify command's input data provided in a\n                    device specification format.\n                    (Stream of bytes or __bytes__ is implemented)\n        :param outlen: Expected output length in bytes\n        :return: Bytes of the command's output\n        ");
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_7modify = {"modify", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_7modify, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_6modify};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_7modify(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_in_ = 0;
  PyObject *__pyx_v_outlen = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("modify (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_in,&__pyx_mstate_global->__pyx_n_u_outlen,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 242, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 242, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 242, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "modify", 0) < (0)) __PYX_ERR(0, 242, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("modify", 1, 2, 2, i); __PYX_ERR(0, 242, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 242, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 242, __pyx_L3_error)
    }
    __pyx_v_in_ = values[0];
    __pyx_v_outlen = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("modify", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 242, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxObj.modify", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_6modify(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *)__pyx_v_self), __pyx_v_in_, __pyx_v_outlen);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_6modify(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *__pyx_v_self, PyObject *__pyx_v_in_, PyObject *__pyx_v_outlen) {
  PyObject *__pyx_v_in_bytes = NULL;
  char *__pyx_v_in_mailbox;
  char *__pyx_v_out_mailbox;
  int __pyx_v_rc;
  PyObject *__pyx_v_out = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  size_t __pyx_t_3;
  char *__pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  Py_ssize_t __pyx_t_9;
  int __pyx_t_10;
  int __pyx_t_11;
  char const *__pyx_t_12;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("modify", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":251
 *         :return: Bytes of the command's output
 *         """
 *         in_bytes = bytes(in_)             # <<<<<<<<<<<<<<
 *         cdef char *in_mailbox = _prepare_devx_inbox(in_bytes)
 *         cdef char *out_mailbox = _prepare_devx_outbox(outlen)
*/
  __pyx_t_2 = NULL;
  __pyx_t_3 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_in_};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(&PyBytes_Type), __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 251, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_v_in_bytes = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":252
 *         """
 *         in_bytes = bytes(in_)
 *         cdef char *in_mailbox = _prepare_devx_inbox(in_bytes)             # <<<<<<<<<<<<<<
 *         cdef char *out_mailbox = _prepare_devx_outbox(outlen)
 *         rc = dv.mlx5dv_devx_obj_modify(self.obj, in_mailbox, len(in_bytes),
*/
  __pyx_t_4 = __pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv__prepare_devx_inbox(__pyx_v_in_bytes); if (unlikely(__pyx_t_4 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 252, __pyx_L1_error)
  __pyx_v_in_mailbox = __pyx_t_4;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":253
 *         in_bytes = bytes(in_)
 *         cdef char *in_mailbox = _prepare_devx_inbox(in_bytes)
 *         cdef char *out_mailbox = _prepare_devx_outbox(outlen)             # <<<<<<<<<<<<<<
 *         rc = dv.mlx5dv_devx_obj_modify(self.obj, in_mailbox, len(in_bytes),
 *                                        out_mailbox, outlen)
*/
  __pyx_t_4 = __pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv__prepare_devx_outbox(__pyx_v_outlen); if (unlikely(__pyx_t_4 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 253, __pyx_L1_error)
  __pyx_v_out_mailbox = __pyx_t_4;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":254
 *         cdef char *in_mailbox = _prepare_devx_inbox(in_bytes)
 *         cdef char *out_mailbox = _prepare_devx_outbox(outlen)
 *         rc = dv.mlx5dv_devx_obj_modify(self.obj, in_mailbox, len(in_bytes),             # <<<<<<<<<<<<<<
 *                                        out_mailbox, outlen)
 *         try:
*/
  __pyx_t_5 = __Pyx_PyBytes_GET_SIZE(__pyx_v_in_bytes); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 254, __pyx_L1_error)

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":255
 *         cdef char *out_mailbox = _prepare_devx_outbox(outlen)
 *         rc = dv.mlx5dv_devx_obj_modify(self.obj, in_mailbox, len(in_bytes),
 *                                        out_mailbox, outlen)             # <<<<<<<<<<<<<<
 *         try:
 *             if rc:
*/
  __pyx_t_3 = __Pyx_PyLong_As_size_t(__pyx_v_outlen); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 255, __pyx_L1_error)

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":254
 *         cdef char *in_mailbox = _prepare_devx_inbox(in_bytes)
 *         cdef char *out_mailbox = _prepare_devx_outbox(outlen)
 *         rc = dv.mlx5dv_devx_obj_modify(self.obj, in_mailbox, len(in_bytes),             # <<<<<<<<<<<<<<
 *                                        out_mailbox, outlen)
 *         try:
*/
  __pyx_v_rc = mlx5dv_devx_obj_modify(__pyx_v_self->obj, __pyx_v_in_mailbox, __pyx_t_5, __pyx_v_out_mailbox, __pyx_t_3);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":256
 *         rc = dv.mlx5dv_devx_obj_modify(self.obj, in_mailbox, len(in_bytes),
 *                                        out_mailbox, outlen)
 *         try:             # <<<<<<<<<<<<<<
 *             if rc:
 *                 raise PyverbsRDMAError('Failed to modify DevX object', rc)
*/
  /*try:*/ {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":257
 *                                        out_mailbox, outlen)
 *         try:
 *             if rc:             # <<<<<<<<<<<<<<
 *                 raise PyverbsRDMAError('Failed to modify DevX object', rc)
 *             out = <bytes>out_mailbox[:outlen]
*/
    __pyx_t_6 = (__pyx_v_rc != 0);
    if (unlikely(__pyx_t_6)) {

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":258
 *         try:
 *             if rc:
 *                 raise PyverbsRDMAError('Failed to modify DevX object', rc)             # <<<<<<<<<<<<<<
 *             out = <bytes>out_mailbox[:outlen]
 *         finally:
*/
      __pyx_t_2 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_PyverbsRDMAError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 258, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_8 = __Pyx_PyLong_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 258, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_3 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_7))) {
        __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_7);
        assert(__pyx_t_2);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
        __pyx_t_3 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Failed_to_modify_DevX_object, __pyx_t_8};
        __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_3, (3-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 258, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 258, __pyx_L4_error)

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":257
 *                                        out_mailbox, outlen)
 *         try:
 *             if rc:             # <<<<<<<<<<<<<<
 *                 raise PyverbsRDMAError('Failed to modify DevX object', rc)
 *             out = <bytes>out_mailbox[:outlen]
*/
    }

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":259
 *             if rc:
 *                 raise PyverbsRDMAError('Failed to modify DevX object', rc)
 *             out = <bytes>out_mailbox[:outlen]             # <<<<<<<<<<<<<<
 *         finally:
 *             free(in_mailbox)
*/
    __Pyx_INCREF(__pyx_v_outlen);
    __pyx_t_1 = __pyx_v_outlen;
    __pyx_t_6 = (__pyx_t_1 == Py_None);
    if (__pyx_t_6) {
      __pyx_t_5 = PY_SSIZE_T_MAX;
    } else {
      __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 259, __pyx_L4_error)
      __pyx_t_5 = __pyx_t_9;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_out_mailbox + 0, __pyx_t_5 - 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 259, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = __pyx_t_1;
    __Pyx_INCREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_out = ((PyObject*)__pyx_t_7);
    __pyx_t_7 = 0;
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":261
 *             out = <bytes>out_mailbox[:outlen]
 *         finally:
 *             free(in_mailbox)             # <<<<<<<<<<<<<<
 *             free(out_mailbox)
 *         return out
*/
  /*finally:*/ {
    /*normal exit:*/{
      free(__pyx_v_in_mailbox);

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":262
 *         finally:
 *             free(in_mailbox)
 *             free(out_mailbox)             # <<<<<<<<<<<<<<
 *         return out
 * 
*/
      free(__pyx_v_out_mailbox);
      goto __pyx_L5;
    }
    __pyx_L4_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
       __Pyx_ExceptionSwap(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
      if ( unlikely(__Pyx_GetException(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15) < 0)) __Pyx_ErrFetch(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15);
      __Pyx_XGOTREF(__pyx_t_13);
      __Pyx_XGOTREF(__pyx_t_14);
      __Pyx_XGOTREF(__pyx_t_15);
      __Pyx_XGOTREF(__pyx_t_16);
      __Pyx_XGOTREF(__pyx_t_17);
      __Pyx_XGOTREF(__pyx_t_18);
      __pyx_t_10 = __pyx_lineno; __pyx_t_11 = __pyx_clineno; __pyx_t_12 = __pyx_filename;
      {

        /* "pyverbs/providers/mlx5/mlx5dv.pyx":261
 *             out = <bytes>out_mailbox[:outlen]
 *         finally:
 *             free(in_mailbox)             # <<<<<<<<<<<<<<
 *             free(out_mailbox)
 *         return out
*/
        free(__pyx_v_in_mailbox);

        /* "pyverbs/providers/mlx5/mlx5dv.pyx":262
 *         finally:
 *             free(in_mailbox)
 *             free(out_mailbox)             # <<<<<<<<<<<<<<
 *         return out
 * 
*/
        free(__pyx_v_out_mailbox);
      }
      __Pyx_XGIVEREF(__pyx_t_16);
      __Pyx_XGIVEREF(__pyx_t_17);
      __Pyx_XGIVEREF(__pyx_t_18);
      __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18);
      __Pyx_XGIVEREF(__pyx_t_13);
      __Pyx_XGIVEREF(__pyx_t_14);
      __Pyx_XGIVEREF(__pyx_t_15);
      __Pyx_ErrRestore(__pyx_t_13, __pyx_t_14, __pyx_t_15);
      __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0;
      __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_11; __pyx_filename = __pyx_t_12;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":263
 *             free(in_mailbox)
 *             free(out_mailbox)
 *         return out             # <<<<<<<<<<<<<<
 * 
 *     cdef add_ref(self, obj):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_out);
  __pyx_r = __pyx_v_out;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":242
 *             free(in_mailbox)
 * 
 *     def modify(self, in_, outlen):             # <<<<<<<<<<<<<<
 *         """
 *         Modifies the DevX object.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxObj.modify", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_in_bytes);
  __Pyx_XDECREF(__pyx_v_out);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":265
 *         return out
 * 
 *     cdef add_ref(self, obj):             # <<<<<<<<<<<<<<
 *         if isinstance(obj, DrActionFlowCounter):
 *             self.flow_counter_actions.add(obj)
*/

static PyObject *__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_add_ref(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *__pyx_v_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("add_ref", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":266
 * 
 *     cdef add_ref(self, obj):
 *         if isinstance(obj, DrActionFlowCounter):             # <<<<<<<<<<<<<<
 *             self.flow_counter_actions.add(obj)
 *         elif isinstance(obj, DrActionDestTir):
*/
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_obj, __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowCounter); 
  if (__pyx_t_1) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":267
 *     cdef add_ref(self, obj):
 *         if isinstance(obj, DrActionFlowCounter):
 *             self.flow_counter_actions.add(obj)             # <<<<<<<<<<<<<<
 *         elif isinstance(obj, DrActionDestTir):
 *             self.dest_tir_actions.add(obj)
*/
    __pyx_t_3 = __pyx_v_self->flow_counter_actions;
    __Pyx_INCREF(__pyx_t_3);
    __pyx_t_4 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_obj};
      __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_add, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 267, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":266
 * 
 *     cdef add_ref(self, obj):
 *         if isinstance(obj, DrActionFlowCounter):             # <<<<<<<<<<<<<<
 *             self.flow_counter_actions.add(obj)
 *         elif isinstance(obj, DrActionDestTir):
*/
    goto __pyx_L3;
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":268
 *         if isinstance(obj, DrActionFlowCounter):
 *             self.flow_counter_actions.add(obj)
 *         elif isinstance(obj, DrActionDestTir):             # <<<<<<<<<<<<<<
 *             self.dest_tir_actions.add(obj)
 *         else:
*/
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_obj, __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTir); 
  if (likely(__pyx_t_1)) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":269
 *             self.flow_counter_actions.add(obj)
 *         elif isinstance(obj, DrActionDestTir):
 *             self.dest_tir_actions.add(obj)             # <<<<<<<<<<<<<<
 *         else:
 *             raise PyverbsError('Unrecognized object type')
*/
    __pyx_t_3 = __pyx_v_self->dest_tir_actions;
    __Pyx_INCREF(__pyx_t_3);
    __pyx_t_4 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_obj};
      __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_add, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 269, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":268
 *         if isinstance(obj, DrActionFlowCounter):
 *             self.flow_counter_actions.add(obj)
 *         elif isinstance(obj, DrActionDestTir):             # <<<<<<<<<<<<<<
 *             self.dest_tir_actions.add(obj)
 *         else:
*/
    goto __pyx_L3;
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":271
 *             self.dest_tir_actions.add(obj)
 *         else:
 *             raise PyverbsError('Unrecognized object type')             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  /*else*/ {
    __pyx_t_3 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_PyverbsError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 271, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_4 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_Unrecognized_object_type};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 271, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(0, 271, __pyx_L1_error)
  }
  __pyx_L3:;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":265
 *         return out
 * 
 *     cdef add_ref(self, obj):             # <<<<<<<<<<<<<<
 *         if isinstance(obj, DrActionFlowCounter):
 *             self.flow_counter_actions.add(obj)
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxObj.add_ref", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":273
 *             raise PyverbsError('Unrecognized object type')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def out_view(self):
 *         return self.out_view
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_8out_view_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_8out_view_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_8out_view___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_8out_view___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":275
 *     @property
 *     def out_view(self):
 *         return self.out_view             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->out_view);
  __pyx_r = __pyx_v_self->out_view;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":273
 *             raise PyverbsError('Unrecognized object type')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def out_view(self):
 *         return self.out_view
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":277
 *         return self.out_view
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def obj(self):
 *         return <uintptr_t>self.obj
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_3obj_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_3obj_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_3obj___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_3obj___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":279
 *     @property
 *     def obj(self):
 *         return <uintptr_t>self.obj             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_FromSize_t(((uintptr_t)__pyx_v_self->obj)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 279, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":277
 *         return self.out_view
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def obj(self):
 *         return <uintptr_t>self.obj
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxObj.obj.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":281
 *         return <uintptr_t>self.obj
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         self.close()
 * 
*/

/* Python wrapper */
static void __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_9__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_9__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_8__dealloc__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_8__dealloc__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":282
 * 
 *     def __dealloc__(self):
 *         self.close()             # <<<<<<<<<<<<<<
 * 
 *     cpdef close(self):
*/
  __pyx_t_1 = ((struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.close(((struct __pyx_obj_7pyverbs_4base_PyverbsCM *)__pyx_v_self), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 282, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":281
 *         return <uintptr_t>self.obj
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         self.close()
 * 
*/

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxObj.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":284
 *         self.close()
 * 
 *     cpdef close(self):             # <<<<<<<<<<<<<<
 *         if self.obj != NULL:
 *             if self.logger:
*/

static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_11close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyObject *__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *__pyx_v_self, int __pyx_skip_dispatch) {
  int __pyx_v_rc;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("close", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (
  #if !CYTHON_USE_TYPE_SLOTS
  unlikely(Py_TYPE(((PyObject *)__pyx_v_self)) != __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj &&
  __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), Py_TPFLAGS_HAVE_GC))
  #else
  unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0 || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))
  #endif
  ) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_close); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 284, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!__Pyx_IsSameCFunction(__pyx_t_1, (void(*)(void)) __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_11close)) {
        __Pyx_XDECREF(__pyx_r);
        __pyx_t_3 = NULL;
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_4 = __pyx_t_1; 
        __pyx_t_5 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
          assert(__pyx_t_3);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
          __pyx_t_5 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
          __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 284, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
        }
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":285
 * 
 *     cpdef close(self):
 *         if self.obj != NULL:             # <<<<<<<<<<<<<<
 *             if self.logger:
 *                 self.logger.debug('Closing Mlx5DvexObj')
*/
  __pyx_t_6 = (__pyx_v_self->obj != NULL);
  if (__pyx_t_6) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":286
 *     cpdef close(self):
 *         if self.obj != NULL:
 *             if self.logger:             # <<<<<<<<<<<<<<
 *                 self.logger.debug('Closing Mlx5DvexObj')
 *             close_weakrefs([self.flow_counter_actions, self.dest_tir_actions])
*/
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_self->__pyx_base.__pyx_base.logger); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 286, __pyx_L1_error)
    if (__pyx_t_6) {

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":287
 *         if self.obj != NULL:
 *             if self.logger:
 *                 self.logger.debug('Closing Mlx5DvexObj')             # <<<<<<<<<<<<<<
 *             close_weakrefs([self.flow_counter_actions, self.dest_tir_actions])
 *             rc = dv.mlx5dv_devx_obj_destroy(self.obj)
*/
      __pyx_t_2 = __pyx_v_self->__pyx_base.__pyx_base.logger;
      __Pyx_INCREF(__pyx_t_2);
      __pyx_t_5 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Closing_Mlx5DvexObj};
        __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_debug, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 287, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":286
 *     cpdef close(self):
 *         if self.obj != NULL:
 *             if self.logger:             # <<<<<<<<<<<<<<
 *                 self.logger.debug('Closing Mlx5DvexObj')
 *             close_weakrefs([self.flow_counter_actions, self.dest_tir_actions])
*/
    }

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":288
 *             if self.logger:
 *                 self.logger.debug('Closing Mlx5DvexObj')
 *             close_weakrefs([self.flow_counter_actions, self.dest_tir_actions])             # <<<<<<<<<<<<<<
 *             rc = dv.mlx5dv_devx_obj_destroy(self.obj)
 *             if rc:
*/
    __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 288, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_self->flow_counter_actions);
    __Pyx_GIVEREF(__pyx_v_self->flow_counter_actions);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->flow_counter_actions) != (0)) __PYX_ERR(0, 288, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_self->dest_tir_actions);
    __Pyx_GIVEREF(__pyx_v_self->dest_tir_actions);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->dest_tir_actions) != (0)) __PYX_ERR(0, 288, __pyx_L1_error);
    __pyx_t_2 = __pyx_f_7pyverbs_4base_close_weakrefs(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 288, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":289
 *                 self.logger.debug('Closing Mlx5DvexObj')
 *             close_weakrefs([self.flow_counter_actions, self.dest_tir_actions])
 *             rc = dv.mlx5dv_devx_obj_destroy(self.obj)             # <<<<<<<<<<<<<<
 *             if rc:
 *                 raise PyverbsRDMAError('Failed to destroy a DevX object', rc)
*/
    __pyx_v_rc = mlx5dv_devx_obj_destroy(__pyx_v_self->obj);

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":290
 *             close_weakrefs([self.flow_counter_actions, self.dest_tir_actions])
 *             rc = dv.mlx5dv_devx_obj_destroy(self.obj)
 *             if rc:             # <<<<<<<<<<<<<<
 *                 raise PyverbsRDMAError('Failed to destroy a DevX object', rc)
 *             self.obj = NULL
*/
    __pyx_t_6 = (__pyx_v_rc != 0);
    if (unlikely(__pyx_t_6)) {

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":291
 *             rc = dv.mlx5dv_devx_obj_destroy(self.obj)
 *             if rc:
 *                 raise PyverbsRDMAError('Failed to destroy a DevX object', rc)             # <<<<<<<<<<<<<<
 *             self.obj = NULL
 *             self.context = None
*/
      __pyx_t_1 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_PyverbsRDMAError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 291, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 291, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
        assert(__pyx_t_1);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
        __pyx_t_5 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_mstate_global->__pyx_kp_u_Failed_to_destroy_a_DevX_object, __pyx_t_3};
        __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 291, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
      }
      __Pyx_Raise(__pyx_t_2, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __PYX_ERR(0, 291, __pyx_L1_error)

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":290
 *             close_weakrefs([self.flow_counter_actions, self.dest_tir_actions])
 *             rc = dv.mlx5dv_devx_obj_destroy(self.obj)
 *             if rc:             # <<<<<<<<<<<<<<
 *                 raise PyverbsRDMAError('Failed to destroy a DevX object', rc)
 *             self.obj = NULL
*/
    }

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":292
 *             if rc:
 *                 raise PyverbsRDMAError('Failed to destroy a DevX object', rc)
 *             self.obj = NULL             # <<<<<<<<<<<<<<
 *             self.context = None
 * 
*/
    __pyx_v_self->obj = NULL;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":293
 *                 raise PyverbsRDMAError('Failed to destroy a DevX object', rc)
 *             self.obj = NULL
 *             self.context = None             # <<<<<<<<<<<<<<
 * 
 * 
*/
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __Pyx_GOTREF((PyObject *)__pyx_v_self->context);
    __Pyx_DECREF((PyObject *)__pyx_v_self->context);
    __pyx_v_self->context = ((struct __pyx_obj_7pyverbs_6device_Context *)Py_None);

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":285
 * 
 *     cpdef close(self):
 *         if self.obj != NULL:             # <<<<<<<<<<<<<<
 *             if self.logger:
 *                 self.logger.debug('Closing Mlx5DvexObj')
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":284
 *         self.close()
 * 
 *     cpdef close(self):             # <<<<<<<<<<<<<<
 *         if self.obj != NULL:
 *             if self.logger:
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxObj.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_11close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_11close = {"close", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_11close, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_11close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("close (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("close", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("close", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_10close(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_10close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("close", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_close(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 284, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxObj.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.obj cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_13__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_13__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_13__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_13__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_12__reduce_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_12__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self.obj cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.obj cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_obj_cannot_be_converted_to, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.obj cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxObj.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.obj cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.obj cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_15__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_15__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_15__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_15__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxObj.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_14__setstate_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_14__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self.obj cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.obj cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_obj_cannot_be_converted_to, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.obj cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.obj cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxObj.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":300
 *     Represent mlx5 context, which extends Context.
 *     """
 *     def __init__(self, Mlx5DVContextAttr attr not None, name=''):             # <<<<<<<<<<<<<<
 *         """
 *         Open an mlx5 device using the given attributes
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context___init__, "\n        Open an mlx5 device using the given attributes\n        :param name: The RDMA device's name (used by parent class)\n        :param attr: mlx5-specific device attributes\n        :return: None\n        ");
#if CYTHON_UPDATE_DESCRIPTOR_DOC
struct wrapperbase __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context___init__;
#endif
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr *__pyx_v_attr = 0;
  PyObject *__pyx_v_name = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_attr,&__pyx_mstate_global->__pyx_n_u_name,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 300, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 300, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 300, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(0, 300, __pyx_L3_error)
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_kp_u__3));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 2, i); __PYX_ERR(0, 300, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 300, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 300, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_kp_u__3));
    }
    __pyx_v_attr = ((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr *)values[0]);
    __pyx_v_name = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 2, __pyx_nargs); __PYX_ERR(0, 300, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Context.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_attr), __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr, 0, "attr", 0))) __PYX_ERR(0, 300, __pyx_L1_error)
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context___init__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *)__pyx_v_self), __pyx_v_attr, __pyx_v_name);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *__pyx_v_self, struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr *__pyx_v_attr, PyObject *__pyx_v_name) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":307
 *         :return: None
 *         """
 *         super().__init__(name=name, attr=attr)             # <<<<<<<<<<<<<<
 *         if not dv.mlx5dv_is_supported(self.device):
 *             raise PyverbsUserError('This is not an MLX5 device')
*/
  __pyx_t_4 = NULL;
  __pyx_t_5 = 1;
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, ((PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context), ((PyObject *)__pyx_v_self)};
    __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_super, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 307, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_t_2 = __pyx_t_3;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 2 : 0)] = {__pyx_t_2, NULL};
    __pyx_t_4 = __Pyx_MakeVectorcallBuilderKwds(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 307, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_name, __pyx_v_name, __pyx_t_4, __pyx_callargs+1, 0) < (0)) __PYX_ERR(0, 307, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_attr, ((PyObject *)__pyx_v_attr), __pyx_t_4, __pyx_callargs+1, 1) < (0)) __PYX_ERR(0, 307, __pyx_L1_error)
    __pyx_t_1 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_init, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 307, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":308
 *         """
 *         super().__init__(name=name, attr=attr)
 *         if not dv.mlx5dv_is_supported(self.device):             # <<<<<<<<<<<<<<
 *             raise PyverbsUserError('This is not an MLX5 device')
 *         self.context = dv.mlx5dv_open_device(self.device, &attr.attr)
*/
  __pyx_t_6 = (!(mlx5dv_is_supported(__pyx_v_self->__pyx_base.device) != 0));
  if (unlikely(__pyx_t_6)) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":309
 *         super().__init__(name=name, attr=attr)
 *         if not dv.mlx5dv_is_supported(self.device):
 *             raise PyverbsUserError('This is not an MLX5 device')             # <<<<<<<<<<<<<<
 *         self.context = dv.mlx5dv_open_device(self.device, &attr.attr)
 *         if self.context == NULL:
*/
    __pyx_t_3 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_PyverbsUserError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 309, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
      __pyx_t_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_This_is_not_an_MLX5_device};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 309, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(0, 309, __pyx_L1_error)

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":308
 *         """
 *         super().__init__(name=name, attr=attr)
 *         if not dv.mlx5dv_is_supported(self.device):             # <<<<<<<<<<<<<<
 *             raise PyverbsUserError('This is not an MLX5 device')
 *         self.context = dv.mlx5dv_open_device(self.device, &attr.attr)
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":310
 *         if not dv.mlx5dv_is_supported(self.device):
 *             raise PyverbsUserError('This is not an MLX5 device')
 *         self.context = dv.mlx5dv_open_device(self.device, &attr.attr)             # <<<<<<<<<<<<<<
 *         if self.context == NULL:
 *             raise PyverbsRDMAErrno('Failed to open mlx5 context on {dev}'
*/
  __pyx_v_self->__pyx_base.context = mlx5dv_open_device(__pyx_v_self->__pyx_base.device, (&__pyx_v_attr->attr));

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":311
 *             raise PyverbsUserError('This is not an MLX5 device')
 *         self.context = dv.mlx5dv_open_device(self.device, &attr.attr)
 *         if self.context == NULL:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAErrno('Failed to open mlx5 context on {dev}'
 *                                    .format(dev=self.name))
*/
  __pyx_t_6 = (__pyx_v_self->__pyx_base.context == NULL);
  if (unlikely(__pyx_t_6)) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":312
 *         self.context = dv.mlx5dv_open_device(self.device, &attr.attr)
 *         if self.context == NULL:
 *             raise PyverbsRDMAErrno('Failed to open mlx5 context on {dev}'             # <<<<<<<<<<<<<<
 *                                    .format(dev=self.name))
 *         self.devx_umems = weakref.WeakSet()
*/
    __pyx_t_4 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_PyverbsRDMAErrno); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 312, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":313
 *         if self.context == NULL:
 *             raise PyverbsRDMAErrno('Failed to open mlx5 context on {dev}'
 *                                    .format(dev=self.name))             # <<<<<<<<<<<<<<
 *         self.devx_umems = weakref.WeakSet()
 *         self.devx_objs = weakref.WeakSet()
*/
    __pyx_t_7 = __pyx_mstate_global->__pyx_kp_u_Failed_to_open_mlx5_context_on_d;
    __Pyx_INCREF(__pyx_t_7);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_7, NULL};
      __pyx_t_8 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 313, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dev, __pyx_v_self->__pyx_base.name, __pyx_t_8, __pyx_callargs+1, 0) < (0)) __PYX_ERR(0, 313, __pyx_L1_error)
      __pyx_t_2 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_8);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 313, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __pyx_t_5 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      assert(__pyx_t_4);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
      __pyx_t_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_2};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 312, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(0, 312, __pyx_L1_error)

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":311
 *             raise PyverbsUserError('This is not an MLX5 device')
 *         self.context = dv.mlx5dv_open_device(self.device, &attr.attr)
 *         if self.context == NULL:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAErrno('Failed to open mlx5 context on {dev}'
 *                                    .format(dev=self.name))
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":314
 *             raise PyverbsRDMAErrno('Failed to open mlx5 context on {dev}'
 *                                    .format(dev=self.name))
 *         self.devx_umems = weakref.WeakSet()             # <<<<<<<<<<<<<<
 *         self.devx_objs = weakref.WeakSet()
 *         self.devx_eqs = weakref.WeakSet()
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_weakref); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 314, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_WeakSet); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 314, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
    __pyx_t_5 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 314, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->devx_umems);
  __Pyx_DECREF(__pyx_v_self->devx_umems);
  __pyx_v_self->devx_umems = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":315
 *                                    .format(dev=self.name))
 *         self.devx_umems = weakref.WeakSet()
 *         self.devx_objs = weakref.WeakSet()             # <<<<<<<<<<<<<<
 *         self.devx_eqs = weakref.WeakSet()
 *         self.cmd_comps = weakref.WeakSet()
*/
  __pyx_t_4 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_weakref); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 315, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_WeakSet); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 315, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    assert(__pyx_t_4);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_4);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_2, __pyx__function);
    __pyx_t_5 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 315, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->devx_objs);
  __Pyx_DECREF(__pyx_v_self->devx_objs);
  __pyx_v_self->devx_objs = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":316
 *         self.devx_umems = weakref.WeakSet()
 *         self.devx_objs = weakref.WeakSet()
 *         self.devx_eqs = weakref.WeakSet()             # <<<<<<<<<<<<<<
 *         self.cmd_comps = weakref.WeakSet()
 * 
*/
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_weakref); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 316, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_WeakSet); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 316, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_5 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 316, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->devx_eqs);
  __Pyx_DECREF(__pyx_v_self->devx_eqs);
  __pyx_v_self->devx_eqs = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":317
 *         self.devx_objs = weakref.WeakSet()
 *         self.devx_eqs = weakref.WeakSet()
 *         self.cmd_comps = weakref.WeakSet()             # <<<<<<<<<<<<<<
 * 
 *     def query_mlx5_device(self, comp_mask=-1):
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_weakref); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 317, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_WeakSet); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 317, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
    __pyx_t_5 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 317, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->cmd_comps);
  __Pyx_DECREF(__pyx_v_self->cmd_comps);
  __pyx_v_self->cmd_comps = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":300
 *     Represent mlx5 context, which extends Context.
 *     """
 *     def __init__(self, Mlx5DVContextAttr attr not None, name=''):             # <<<<<<<<<<<<<<
 *         """
 *         Open an mlx5 device using the given attributes
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Context.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":319
 *         self.cmd_comps = weakref.WeakSet()
 * 
 *     def query_mlx5_device(self, comp_mask=-1):             # <<<<<<<<<<<<<<
 *         """
 *         Queries the provider for device-specific attributes.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_3query_mlx5_device(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_2query_mlx5_device, "\n        Queries the provider for device-specific attributes.\n        :param comp_mask: Which attributes to query. Default value is -1. If\n                          not changed by user, pyverbs will pass a bitwise OR\n                          of all available enum entries.\n        :return: A Mlx5DVContext containing the attributes.\n        ");
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_3query_mlx5_device = {"query_mlx5_device", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_3query_mlx5_device, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_2query_mlx5_device};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_3query_mlx5_device(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_comp_mask = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("query_mlx5_device (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_comp_mask,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 319, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 319, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "query_mlx5_device", 0) < (0)) __PYX_ERR(0, 319, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_neg_1));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 319, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_neg_1));
    }
    __pyx_v_comp_mask = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("query_mlx5_device", 0, 0, 1, __pyx_nargs); __PYX_ERR(0, 319, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Context.query_mlx5_device", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_2query_mlx5_device(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *)__pyx_v_self), __pyx_v_comp_mask);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_2query_mlx5_device(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *__pyx_v_self, PyObject *__pyx_v_comp_mask) {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_dv_attr = NULL;
  int __pyx_v_rc;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  size_t __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7[3];
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("query_mlx5_device", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":327
 *         :return: A Mlx5DVContext containing the attributes.
 *         """
 *         dv_attr = Mlx5DVContext()             # <<<<<<<<<<<<<<
 *         if comp_mask == -1:
 *             dv_attr.comp_mask = \
*/
  __pyx_t_2 = NULL;
  __pyx_t_3 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 327, __pyx_L1_error)
    __Pyx_GOTREF((PyObject *)__pyx_t_1);
  }
  __pyx_v_dv_attr = ((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":328
 *         """
 *         dv_attr = Mlx5DVContext()
 *         if comp_mask == -1:             # <<<<<<<<<<<<<<
 *             dv_attr.comp_mask = \
 *                 dve.MLX5DV_CONTEXT_MASK_CQE_COMPRESION |\
*/
  __pyx_t_4 = (__Pyx_PyLong_BoolEqObjC(__pyx_v_comp_mask, __pyx_mstate_global->__pyx_int_neg_1, -1L, 0)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 328, __pyx_L1_error)
  if (__pyx_t_4) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":341
 *                 dve.MLX5DV_CONTEXT_MASK_WR_MEMCPY_LENGTH |\
 *                 dve.MLX5DV_CONTEXT_MASK_CRYPTO_OFFLOAD |\
 *                 dve.MLX5DV_CONTEXT_MASK_MAX_DC_RD_ATOM |\             # <<<<<<<<<<<<<<
 *                 dve.MLX5DV_CONTEXT_MASK_OOO_RECV_WRS
 *         else:
*/
    __pyx_t_1 = __Pyx_PyLong_From_int(((((((((((((MLX5DV_CONTEXT_MASK_CQE_COMPRESION | MLX5DV_CONTEXT_MASK_SWP) | MLX5DV_CONTEXT_MASK_STRIDING_RQ) | MLX5DV_CONTEXT_MASK_TUNNEL_OFFLOADS) | MLX5DV_CONTEXT_MASK_DYN_BFREGS) | MLX5DV_CONTEXT_MASK_CLOCK_INFO_UPDATE) | MLX5DV_CONTEXT_MASK_DC_ODP_CAPS) | MLX5DV_CONTEXT_MASK_FLOW_ACTION_FLAGS) | MLX5DV_CONTEXT_MASK_DCI_STREAMS) | MLX5DV_CONTEXT_MASK_WR_MEMCPY_LENGTH) | MLX5DV_CONTEXT_MASK_CRYPTO_OFFLOAD) | MLX5DV_CONTEXT_MASK_MAX_DC_RD_ATOM) | MLX5DV_CONTEXT_MASK_OOO_RECV_WRS)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 341, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":329
 *         dv_attr = Mlx5DVContext()
 *         if comp_mask == -1:
 *             dv_attr.comp_mask = \             # <<<<<<<<<<<<<<
 *                 dve.MLX5DV_CONTEXT_MASK_CQE_COMPRESION |\
 *                 dve.MLX5DV_CONTEXT_MASK_SWP |\
*/
    if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_dv_attr), __pyx_mstate_global->__pyx_n_u_comp_mask, __pyx_t_1) < (0)) __PYX_ERR(0, 329, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":328
 *         """
 *         dv_attr = Mlx5DVContext()
 *         if comp_mask == -1:             # <<<<<<<<<<<<<<
 *             dv_attr.comp_mask = \
 *                 dve.MLX5DV_CONTEXT_MASK_CQE_COMPRESION |\
*/
    goto __pyx_L3;
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":344
 *                 dve.MLX5DV_CONTEXT_MASK_OOO_RECV_WRS
 *         else:
 *             dv_attr.comp_mask = comp_mask             # <<<<<<<<<<<<<<
 *         rc = dv.mlx5dv_query_device(self.context, &dv_attr.dv)
 *         if rc != 0:
*/
  /*else*/ {
    if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_dv_attr), __pyx_mstate_global->__pyx_n_u_comp_mask, __pyx_v_comp_mask) < (0)) __PYX_ERR(0, 344, __pyx_L1_error)
  }
  __pyx_L3:;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":345
 *         else:
 *             dv_attr.comp_mask = comp_mask
 *         rc = dv.mlx5dv_query_device(self.context, &dv_attr.dv)             # <<<<<<<<<<<<<<
 *         if rc != 0:
 *             raise PyverbsRDMAError(f'Failed to query mlx5 device {self.name}.', rc)
*/
  __pyx_v_rc = mlx5dv_query_device(__pyx_v_self->__pyx_base.context, (&__pyx_v_dv_attr->dv));

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":346
 *             dv_attr.comp_mask = comp_mask
 *         rc = dv.mlx5dv_query_device(self.context, &dv_attr.dv)
 *         if rc != 0:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAError(f'Failed to query mlx5 device {self.name}.', rc)
 *         return dv_attr
*/
  __pyx_t_4 = (__pyx_v_rc != 0);
  if (unlikely(__pyx_t_4)) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":347
 *         rc = dv.mlx5dv_query_device(self.context, &dv_attr.dv)
 *         if rc != 0:
 *             raise PyverbsRDMAError(f'Failed to query mlx5 device {self.name}.', rc)             # <<<<<<<<<<<<<<
 *         return dv_attr
 * 
*/
    __pyx_t_2 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_PyverbsRDMAError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 347, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_v_self->__pyx_base.name, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 347, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7[0] = __pyx_mstate_global->__pyx_kp_u_Failed_to_query_mlx5_device;
    __pyx_t_7[1] = __pyx_t_6;
    __pyx_t_7[2] = __pyx_mstate_global->__pyx_kp_u_;
    __pyx_t_8 = __Pyx_PyUnicode_Join(__pyx_t_7, 3, 28 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6));
    if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 347, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_PyLong_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 347, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_3 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_2);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_3 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_t_8, __pyx_t_6};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_3, (3-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 347, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(0, 347, __pyx_L1_error)

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":346
 *             dv_attr.comp_mask = comp_mask
 *         rc = dv.mlx5dv_query_device(self.context, &dv_attr.dv)
 *         if rc != 0:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAError(f'Failed to query mlx5 device {self.name}.', rc)
 *         return dv_attr
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":348
 *         if rc != 0:
 *             raise PyverbsRDMAError(f'Failed to query mlx5 device {self.name}.', rc)
 *         return dv_attr             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_dv_attr);
  __pyx_r = ((PyObject *)__pyx_v_dv_attr);
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":319
 *         self.cmd_comps = weakref.WeakSet()
 * 
 *     def query_mlx5_device(self, comp_mask=-1):             # <<<<<<<<<<<<<<
 *         """
 *         Queries the provider for device-specific attributes.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Context.query_mlx5_device", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_dv_attr);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":350
 *         return dv_attr
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def query_mlx5_port(Context ctx, port_num):
 *         dv_attr = Mlx5DVPortAttr()
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_5query_mlx5_port(CYTHON_UNUSED PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_5query_mlx5_port = {"query_mlx5_port", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_5query_mlx5_port, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_5query_mlx5_port(CYTHON_UNUSED PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_ctx = 0;
  PyObject *__pyx_v_port_num = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("query_mlx5_port (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_ctx,&__pyx_mstate_global->__pyx_n_u_port_num,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 350, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 350, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 350, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "query_mlx5_port", 0) < (0)) __PYX_ERR(0, 350, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("query_mlx5_port", 1, 2, 2, i); __PYX_ERR(0, 350, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 350, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 350, __pyx_L3_error)
    }
    __pyx_v_ctx = ((struct __pyx_obj_7pyverbs_6device_Context *)values[0]);
    __pyx_v_port_num = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("query_mlx5_port", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 350, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Context.query_mlx5_port", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_ctx), __pyx_mstate_global->__pyx_ptype_7pyverbs_6device_Context, 1, "ctx", 0))) __PYX_ERR(0, 351, __pyx_L1_error)
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_4query_mlx5_port(__pyx_v_ctx, __pyx_v_port_num);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_4query_mlx5_port(struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_ctx, PyObject *__pyx_v_port_num) {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr *__pyx_v_dv_attr = NULL;
  int __pyx_v_rc;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  size_t __pyx_t_3;
  uint32_t __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9[5];
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("query_mlx5_port", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":352
 *     @staticmethod
 *     def query_mlx5_port(Context ctx, port_num):
 *         dv_attr = Mlx5DVPortAttr()             # <<<<<<<<<<<<<<
 *         rc = dv.mlx5dv_query_port(ctx.context, port_num, &dv_attr.attr)
 *         if rc != 0:
*/
  __pyx_t_2 = NULL;
  __pyx_t_3 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 352, __pyx_L1_error)
    __Pyx_GOTREF((PyObject *)__pyx_t_1);
  }
  __pyx_v_dv_attr = ((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":353
 *     def query_mlx5_port(Context ctx, port_num):
 *         dv_attr = Mlx5DVPortAttr()
 *         rc = dv.mlx5dv_query_port(ctx.context, port_num, &dv_attr.attr)             # <<<<<<<<<<<<<<
 *         if rc != 0:
 *             raise PyverbsRDMAError(f'Failed to query dv port mlx5 {ctx.name} port {port_num}.', rc)
*/
  __pyx_t_4 = __Pyx_PyLong_As_uint32_t(__pyx_v_port_num); if (unlikely((__pyx_t_4 == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 353, __pyx_L1_error)
  __pyx_v_rc = mlx5dv_query_port(__pyx_v_ctx->context, __pyx_t_4, (&__pyx_v_dv_attr->attr));

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":354
 *         dv_attr = Mlx5DVPortAttr()
 *         rc = dv.mlx5dv_query_port(ctx.context, port_num, &dv_attr.attr)
 *         if rc != 0:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAError(f'Failed to query dv port mlx5 {ctx.name} port {port_num}.', rc)
 *         return dv_attr
*/
  __pyx_t_5 = (__pyx_v_rc != 0);
  if (unlikely(__pyx_t_5)) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":355
 *         rc = dv.mlx5dv_query_port(ctx.context, port_num, &dv_attr.attr)
 *         if rc != 0:
 *             raise PyverbsRDMAError(f'Failed to query dv port mlx5 {ctx.name} port {port_num}.', rc)             # <<<<<<<<<<<<<<
 *         return dv_attr
 * 
*/
    __pyx_t_2 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_PyverbsRDMAError); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_v_ctx->name, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_port_num, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_9[0] = __pyx_mstate_global->__pyx_kp_u_Failed_to_query_dv_port_mlx5;
    __pyx_t_9[1] = __pyx_t_7;
    __pyx_t_9[2] = __pyx_mstate_global->__pyx_kp_u_port;
    __pyx_t_9[3] = __pyx_t_8;
    __pyx_t_9[4] = __pyx_mstate_global->__pyx_kp_u_;
    __pyx_t_10 = __Pyx_PyUnicode_Join(__pyx_t_9, 5, 29 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7) + 6 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8));
    if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = __Pyx_PyLong_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_3 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6);
      assert(__pyx_t_2);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
      __pyx_t_3 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_t_10, __pyx_t_8};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_3, (3-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 355, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(0, 355, __pyx_L1_error)

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":354
 *         dv_attr = Mlx5DVPortAttr()
 *         rc = dv.mlx5dv_query_port(ctx.context, port_num, &dv_attr.attr)
 *         if rc != 0:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAError(f'Failed to query dv port mlx5 {ctx.name} port {port_num}.', rc)
 *         return dv_attr
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":356
 *         if rc != 0:
 *             raise PyverbsRDMAError(f'Failed to query dv port mlx5 {ctx.name} port {port_num}.', rc)
 *         return dv_attr             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_dv_attr);
  __pyx_r = ((PyObject *)__pyx_v_dv_attr);
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":350
 *         return dv_attr
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def query_mlx5_port(Context ctx, port_num):
 *         dv_attr = Mlx5DVPortAttr()
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Context.query_mlx5_port", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_dv_attr);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":358
 *         return dv_attr
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def reserved_qpn_alloc(Context ctx):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_7reserved_qpn_alloc(CYTHON_UNUSED PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_6reserved_qpn_alloc, "\n        Allocate a reserved QP number from firmware.\n        :param ctx: The device context to issue the action on.\n        :return: The reserved QP number.\n        ");
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_7reserved_qpn_alloc = {"reserved_qpn_alloc", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_7reserved_qpn_alloc, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_6reserved_qpn_alloc};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_7reserved_qpn_alloc(CYTHON_UNUSED PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_ctx = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reserved_qpn_alloc (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_ctx,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 358, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 358, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "reserved_qpn_alloc", 0) < (0)) __PYX_ERR(0, 358, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("reserved_qpn_alloc", 1, 1, 1, i); __PYX_ERR(0, 358, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 358, __pyx_L3_error)
    }
    __pyx_v_ctx = ((struct __pyx_obj_7pyverbs_6device_Context *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("reserved_qpn_alloc", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 358, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Context.reserved_qpn_alloc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_ctx), __pyx_mstate_global->__pyx_ptype_7pyverbs_6device_Context, 1, "ctx", 0))) __PYX_ERR(0, 359, __pyx_L1_error)
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_6reserved_qpn_alloc(__pyx_v_ctx);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_6reserved_qpn_alloc(struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_ctx) {
  uint32_t __pyx_v_qpn;
  int __pyx_v_rc;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("reserved_qpn_alloc", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":366
 *         """
 *         cdef uint32_t qpn
 *         rc = dv.mlx5dv_reserved_qpn_alloc(ctx.context, &qpn)             # <<<<<<<<<<<<<<
 *         if rc != 0:
 *             raise PyverbsRDMAError('Failed to alloc reserved QP number.', rc)
*/
  __pyx_v_rc = mlx5dv_reserved_qpn_alloc(__pyx_v_ctx->context, (&__pyx_v_qpn));

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":367
 *         cdef uint32_t qpn
 *         rc = dv.mlx5dv_reserved_qpn_alloc(ctx.context, &qpn)
 *         if rc != 0:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAError('Failed to alloc reserved QP number.', rc)
 *         return qpn
*/
  __pyx_t_1 = (__pyx_v_rc != 0);
  if (unlikely(__pyx_t_1)) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":368
 *         rc = dv.mlx5dv_reserved_qpn_alloc(ctx.context, &qpn)
 *         if rc != 0:
 *             raise PyverbsRDMAError('Failed to alloc reserved QP number.', rc)             # <<<<<<<<<<<<<<
 *         return qpn
 * 
*/
    __pyx_t_3 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_PyverbsRDMAError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 368, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 368, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
      __pyx_t_6 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_Failed_to_alloc_reserved_QP_numb, __pyx_t_5};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 368, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(0, 368, __pyx_L1_error)

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":367
 *         cdef uint32_t qpn
 *         rc = dv.mlx5dv_reserved_qpn_alloc(ctx.context, &qpn)
 *         if rc != 0:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAError('Failed to alloc reserved QP number.', rc)
 *         return qpn
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":369
 *         if rc != 0:
 *             raise PyverbsRDMAError('Failed to alloc reserved QP number.', rc)
 *         return qpn             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_uint32_t(__pyx_v_qpn); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 369, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":358
 *         return dv_attr
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def reserved_qpn_alloc(Context ctx):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Context.reserved_qpn_alloc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":371
 *         return qpn
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def reserved_qpn_dealloc(Context ctx, qpn):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_9reserved_qpn_dealloc(CYTHON_UNUSED PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_8reserved_qpn_dealloc, "\n        Release the reserved QP number to firmware.\n        :param ctx: The device context to issue the action on.\n        :param qpn: The QP number to be deallocated.\n        ");
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_9reserved_qpn_dealloc = {"reserved_qpn_dealloc", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_9reserved_qpn_dealloc, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_8reserved_qpn_dealloc};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_9reserved_qpn_dealloc(CYTHON_UNUSED PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_ctx = 0;
  PyObject *__pyx_v_qpn = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reserved_qpn_dealloc (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_ctx,&__pyx_mstate_global->__pyx_n_u_qpn,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 371, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 371, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 371, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "reserved_qpn_dealloc", 0) < (0)) __PYX_ERR(0, 371, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("reserved_qpn_dealloc", 1, 2, 2, i); __PYX_ERR(0, 371, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 371, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 371, __pyx_L3_error)
    }
    __pyx_v_ctx = ((struct __pyx_obj_7pyverbs_6device_Context *)values[0]);
    __pyx_v_qpn = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("reserved_qpn_dealloc", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 371, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Context.reserved_qpn_dealloc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_ctx), __pyx_mstate_global->__pyx_ptype_7pyverbs_6device_Context, 1, "ctx", 0))) __PYX_ERR(0, 372, __pyx_L1_error)
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_8reserved_qpn_dealloc(__pyx_v_ctx, __pyx_v_qpn);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_8reserved_qpn_dealloc(struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_ctx, PyObject *__pyx_v_qpn) {
  int __pyx_v_rc;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  uint32_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7[3];
  PyObject *__pyx_t_8 = NULL;
  size_t __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("reserved_qpn_dealloc", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":378
 *         :param qpn: The QP number to be deallocated.
 *         """
 *         rc = dv.mlx5dv_reserved_qpn_dealloc(ctx.context, qpn)             # <<<<<<<<<<<<<<
 *         if rc != 0:
 *             raise PyverbsRDMAError(f'Failed to dealloc QP number {qpn}.', rc)
*/
  __pyx_t_1 = __Pyx_PyLong_As_uint32_t(__pyx_v_qpn); if (unlikely((__pyx_t_1 == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 378, __pyx_L1_error)
  __pyx_v_rc = mlx5dv_reserved_qpn_dealloc(__pyx_v_ctx->context, __pyx_t_1);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":379
 *         """
 *         rc = dv.mlx5dv_reserved_qpn_dealloc(ctx.context, qpn)
 *         if rc != 0:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAError(f'Failed to dealloc QP number {qpn}.', rc)
 * 
*/
  __pyx_t_2 = (__pyx_v_rc != 0);
  if (unlikely(__pyx_t_2)) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":380
 *         rc = dv.mlx5dv_reserved_qpn_dealloc(ctx.context, qpn)
 *         if rc != 0:
 *             raise PyverbsRDMAError(f'Failed to dealloc QP number {qpn}.', rc)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
    __pyx_t_4 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_PyverbsRDMAError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 380, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_v_qpn, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 380, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7[0] = __pyx_mstate_global->__pyx_kp_u_Failed_to_dealloc_QP_number;
    __pyx_t_7[1] = __pyx_t_6;
    __pyx_t_7[2] = __pyx_mstate_global->__pyx_kp_u_;
    __pyx_t_8 = __Pyx_PyUnicode_Join(__pyx_t_7, 3, 28 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6));
    if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 380, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_PyLong_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 380, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_9 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_4);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_9 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_8, __pyx_t_6};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_9, (3-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 380, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(0, 380, __pyx_L1_error)

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":379
 *         """
 *         rc = dv.mlx5dv_reserved_qpn_dealloc(ctx.context, qpn)
 *         if rc != 0:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAError(f'Failed to dealloc QP number {qpn}.', rc)
 * 
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":371
 *         return qpn
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def reserved_qpn_dealloc(Context ctx, qpn):
 *         """
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Context.reserved_qpn_dealloc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":382
 *             raise PyverbsRDMAError(f'Failed to dealloc QP number {qpn}.', rc)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def crypto_login(Context ctx, Mlx5CryptoLoginAttr login_attr):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_11crypto_login(CYTHON_UNUSED PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_10crypto_login, "\n        Creates a crypto login session\n        :param ctx: The device context to issue the action on.\n        :param login_attr: Mlx5CryptoLoginAttr object which contains the\n                           credential to login with and the import KEK to be\n                           used for secured communications.\n        ");
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_11crypto_login = {"crypto_login", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_11crypto_login, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_10crypto_login};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_11crypto_login(CYTHON_UNUSED PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_ctx = 0;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoLoginAttr *__pyx_v_login_attr = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("crypto_login (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_ctx,&__pyx_mstate_global->__pyx_n_u_login_attr,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 382, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 382, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 382, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "crypto_login", 0) < (0)) __PYX_ERR(0, 382, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("crypto_login", 1, 2, 2, i); __PYX_ERR(0, 382, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 382, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 382, __pyx_L3_error)
    }
    __pyx_v_ctx = ((struct __pyx_obj_7pyverbs_6device_Context *)values[0]);
    __pyx_v_login_attr = ((struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoLoginAttr *)values[1]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("crypto_login", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 382, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Context.crypto_login", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_ctx), __pyx_mstate_global->__pyx_ptype_7pyverbs_6device_Context, 1, "ctx", 0))) __PYX_ERR(0, 383, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_login_attr), __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoLoginAttr, 1, "login_attr", 0))) __PYX_ERR(0, 383, __pyx_L1_error)
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_10crypto_login(__pyx_v_ctx, __pyx_v_login_attr);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_10crypto_login(struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_ctx, struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoLoginAttr *__pyx_v_login_attr) {
  int __pyx_v_rc;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("crypto_login", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":391
 *                            used for secured communications.
 *         """
 *         rc = dv.mlx5dv_crypto_login(ctx.context, &login_attr.mlx5dv_crypto_login_attr)             # <<<<<<<<<<<<<<
 *         if rc != 0:
 *             raise PyverbsRDMAError(f'Failed to create crypto login session.', rc)
*/
  __pyx_v_rc = mlx5dv_crypto_login(__pyx_v_ctx->context, (&__pyx_v_login_attr->mlx5dv_crypto_login_attr));

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":392
 *         """
 *         rc = dv.mlx5dv_crypto_login(ctx.context, &login_attr.mlx5dv_crypto_login_attr)
 *         if rc != 0:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAError(f'Failed to create crypto login session.', rc)
 * 
*/
  __pyx_t_1 = (__pyx_v_rc != 0);
  if (unlikely(__pyx_t_1)) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":393
 *         rc = dv.mlx5dv_crypto_login(ctx.context, &login_attr.mlx5dv_crypto_login_attr)
 *         if rc != 0:
 *             raise PyverbsRDMAError(f'Failed to create crypto login session.', rc)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
    __pyx_t_3 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_PyverbsRDMAError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 393, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 393, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
      __pyx_t_6 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_Failed_to_create_crypto_login_se, __pyx_t_5};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 393, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(0, 393, __pyx_L1_error)

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":392
 *         """
 *         rc = dv.mlx5dv_crypto_login(ctx.context, &login_attr.mlx5dv_crypto_login_attr)
 *         if rc != 0:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAError(f'Failed to create crypto login session.', rc)
 * 
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":382
 *             raise PyverbsRDMAError(f'Failed to dealloc QP number {qpn}.', rc)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def crypto_login(Context ctx, Mlx5CryptoLoginAttr login_attr):
 *         """
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Context.crypto_login", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":395
 *             raise PyverbsRDMAError(f'Failed to create crypto login session.', rc)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def query_login_state(Context ctx):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_13query_login_state(CYTHON_UNUSED PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_12query_login_state, "\n        Queries the state of the current crypto login session.\n        :param ctx: The device context to issue the action on.\n        :return: The login state.\n        ");
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_13query_login_state = {"query_login_state", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_13query_login_state, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_12query_login_state};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_13query_login_state(CYTHON_UNUSED PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_ctx = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("query_login_state (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_ctx,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 395, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 395, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "query_login_state", 0) < (0)) __PYX_ERR(0, 395, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("query_login_state", 1, 1, 1, i); __PYX_ERR(0, 395, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 395, __pyx_L3_error)
    }
    __pyx_v_ctx = ((struct __pyx_obj_7pyverbs_6device_Context *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("query_login_state", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 395, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Context.query_login_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_ctx), __pyx_mstate_global->__pyx_ptype_7pyverbs_6device_Context, 1, "ctx", 0))) __PYX_ERR(0, 396, __pyx_L1_error)
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_12query_login_state(__pyx_v_ctx);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_12query_login_state(struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_ctx) {
  enum mlx5dv_crypto_login_state __pyx_v_state;
  int __pyx_v_rc;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("query_login_state", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":403
 *         """
 *         cdef dv.mlx5dv_crypto_login_state state
 *         rc = dv.mlx5dv_crypto_login_query_state(ctx.context, &state)             # <<<<<<<<<<<<<<
 *         if rc != 0:
 *             raise PyverbsRDMAError(f'Failed to query the crypto login session state.', rc)
*/
  __pyx_v_rc = mlx5dv_crypto_login_query_state(__pyx_v_ctx->context, (&__pyx_v_state));

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":404
 *         cdef dv.mlx5dv_crypto_login_state state
 *         rc = dv.mlx5dv_crypto_login_query_state(ctx.context, &state)
 *         if rc != 0:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAError(f'Failed to query the crypto login session state.', rc)
 *         return state
*/
  __pyx_t_1 = (__pyx_v_rc != 0);
  if (unlikely(__pyx_t_1)) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":405
 *         rc = dv.mlx5dv_crypto_login_query_state(ctx.context, &state)
 *         if rc != 0:
 *             raise PyverbsRDMAError(f'Failed to query the crypto login session state.', rc)             # <<<<<<<<<<<<<<
 *         return state
 * 
*/
    __pyx_t_3 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_PyverbsRDMAError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 405, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 405, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
      __pyx_t_6 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_Failed_to_query_the_crypto_login, __pyx_t_5};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 405, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(0, 405, __pyx_L1_error)

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":404
 *         cdef dv.mlx5dv_crypto_login_state state
 *         rc = dv.mlx5dv_crypto_login_query_state(ctx.context, &state)
 *         if rc != 0:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAError(f'Failed to query the crypto login session state.', rc)
 *         return state
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":406
 *         if rc != 0:
 *             raise PyverbsRDMAError(f'Failed to query the crypto login session state.', rc)
 *         return state             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(__pyx_v_state); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 406, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":395
 *             raise PyverbsRDMAError(f'Failed to create crypto login session.', rc)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def query_login_state(Context ctx):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Context.query_login_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":408
 *         return state
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def crypto_logout(Context ctx):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_15crypto_logout(CYTHON_UNUSED PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_14crypto_logout, "\n        Logs out from the current crypto login session.\n        :param ctx: The device context to issue the action on.\n        ");
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_15crypto_logout = {"crypto_logout", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_15crypto_logout, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_14crypto_logout};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_15crypto_logout(CYTHON_UNUSED PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_ctx = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("crypto_logout (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_ctx,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 408, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 408, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "crypto_logout", 0) < (0)) __PYX_ERR(0, 408, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("crypto_logout", 1, 1, 1, i); __PYX_ERR(0, 408, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 408, __pyx_L3_error)
    }
    __pyx_v_ctx = ((struct __pyx_obj_7pyverbs_6device_Context *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("crypto_logout", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 408, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Context.crypto_logout", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_ctx), __pyx_mstate_global->__pyx_ptype_7pyverbs_6device_Context, 1, "ctx", 0))) __PYX_ERR(0, 409, __pyx_L1_error)
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_14crypto_logout(__pyx_v_ctx);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_14crypto_logout(struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_ctx) {
  int __pyx_v_rc;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("crypto_logout", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":414
 *         :param ctx: The device context to issue the action on.
 *         """
 *         rc = dv.mlx5dv_crypto_logout(ctx.context)             # <<<<<<<<<<<<<<
 *         if rc != 0:
 *             raise PyverbsRDMAError(f'Failed to logout from crypto login session.', rc)
*/
  __pyx_v_rc = mlx5dv_crypto_logout(__pyx_v_ctx->context);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":415
 *         """
 *         rc = dv.mlx5dv_crypto_logout(ctx.context)
 *         if rc != 0:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAError(f'Failed to logout from crypto login session.', rc)
 * 
*/
  __pyx_t_1 = (__pyx_v_rc != 0);
  if (unlikely(__pyx_t_1)) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":416
 *         rc = dv.mlx5dv_crypto_logout(ctx.context)
 *         if rc != 0:
 *             raise PyverbsRDMAError(f'Failed to logout from crypto login session.', rc)             # <<<<<<<<<<<<<<
 * 
 *     def devx_general_cmd(self, in_, outlen):
*/
    __pyx_t_3 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_PyverbsRDMAError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 416, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 416, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
      __pyx_t_6 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_Failed_to_logout_from_crypto_log, __pyx_t_5};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 416, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(0, 416, __pyx_L1_error)

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":415
 *         """
 *         rc = dv.mlx5dv_crypto_logout(ctx.context)
 *         if rc != 0:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAError(f'Failed to logout from crypto login session.', rc)
 * 
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":408
 *         return state
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def crypto_logout(Context ctx):
 *         """
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Context.crypto_logout", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":418
 *             raise PyverbsRDMAError(f'Failed to logout from crypto login session.', rc)
 * 
 *     def devx_general_cmd(self, in_, outlen):             # <<<<<<<<<<<<<<
 *         """
 *         Executes a DevX general command according to the input mailbox.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_17devx_general_cmd(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_16devx_general_cmd, "\n        Executes a DevX general command according to the input mailbox.\n        :param in_: Bytes of the general command's input data provided in a\n                    device specification format.\n                    (Stream of bytes or __bytes__ is implemented)\n        :param outlen: Expected output length in bytes\n        :return out: Bytes of the general command's output data provided in a\n                     device specification format\n        ");
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_17devx_general_cmd = {"devx_general_cmd", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_17devx_general_cmd, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_16devx_general_cmd};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_17devx_general_cmd(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_in_ = 0;
  PyObject *__pyx_v_outlen = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("devx_general_cmd (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_in,&__pyx_mstate_global->__pyx_n_u_outlen,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 418, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 418, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 418, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "devx_general_cmd", 0) < (0)) __PYX_ERR(0, 418, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("devx_general_cmd", 1, 2, 2, i); __PYX_ERR(0, 418, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 418, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 418, __pyx_L3_error)
    }
    __pyx_v_in_ = values[0];
    __pyx_v_outlen = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("devx_general_cmd", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 418, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Context.devx_general_cmd", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_16devx_general_cmd(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *)__pyx_v_self), __pyx_v_in_, __pyx_v_outlen);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_16devx_general_cmd(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *__pyx_v_self, PyObject *__pyx_v_in_, PyObject *__pyx_v_outlen) {
  PyObject *__pyx_v_in_bytes = NULL;
  char *__pyx_v_in_mailbox;
  char *__pyx_v_out_mailbox;
  int __pyx_v_rc;
  PyObject *__pyx_v_out = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  size_t __pyx_t_3;
  char *__pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  Py_ssize_t __pyx_t_9;
  int __pyx_t_10;
  int __pyx_t_11;
  char const *__pyx_t_12;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("devx_general_cmd", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":428
 *                      device specification format
 *         """
 *         in_bytes = bytes(in_)             # <<<<<<<<<<<<<<
 *         cdef char *in_mailbox = _prepare_devx_inbox(in_bytes)
 *         cdef char *out_mailbox = _prepare_devx_outbox(outlen)
*/
  __pyx_t_2 = NULL;
  __pyx_t_3 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_in_};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(&PyBytes_Type), __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 428, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_v_in_bytes = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":429
 *         """
 *         in_bytes = bytes(in_)
 *         cdef char *in_mailbox = _prepare_devx_inbox(in_bytes)             # <<<<<<<<<<<<<<
 *         cdef char *out_mailbox = _prepare_devx_outbox(outlen)
 *         rc = dv.mlx5dv_devx_general_cmd(self.context, in_mailbox, len(in_bytes),
*/
  __pyx_t_4 = __pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv__prepare_devx_inbox(__pyx_v_in_bytes); if (unlikely(__pyx_t_4 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 429, __pyx_L1_error)
  __pyx_v_in_mailbox = __pyx_t_4;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":430
 *         in_bytes = bytes(in_)
 *         cdef char *in_mailbox = _prepare_devx_inbox(in_bytes)
 *         cdef char *out_mailbox = _prepare_devx_outbox(outlen)             # <<<<<<<<<<<<<<
 *         rc = dv.mlx5dv_devx_general_cmd(self.context, in_mailbox, len(in_bytes),
 *                                         out_mailbox, outlen)
*/
  __pyx_t_4 = __pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv__prepare_devx_outbox(__pyx_v_outlen); if (unlikely(__pyx_t_4 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 430, __pyx_L1_error)
  __pyx_v_out_mailbox = __pyx_t_4;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":431
 *         cdef char *in_mailbox = _prepare_devx_inbox(in_bytes)
 *         cdef char *out_mailbox = _prepare_devx_outbox(outlen)
 *         rc = dv.mlx5dv_devx_general_cmd(self.context, in_mailbox, len(in_bytes),             # <<<<<<<<<<<<<<
 *                                         out_mailbox, outlen)
 *         try:
*/
  __pyx_t_5 = __Pyx_PyBytes_GET_SIZE(__pyx_v_in_bytes); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 431, __pyx_L1_error)

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":432
 *         cdef char *out_mailbox = _prepare_devx_outbox(outlen)
 *         rc = dv.mlx5dv_devx_general_cmd(self.context, in_mailbox, len(in_bytes),
 *                                         out_mailbox, outlen)             # <<<<<<<<<<<<<<
 *         try:
 *             if rc:
*/
  __pyx_t_3 = __Pyx_PyLong_As_size_t(__pyx_v_outlen); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 432, __pyx_L1_error)

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":431
 *         cdef char *in_mailbox = _prepare_devx_inbox(in_bytes)
 *         cdef char *out_mailbox = _prepare_devx_outbox(outlen)
 *         rc = dv.mlx5dv_devx_general_cmd(self.context, in_mailbox, len(in_bytes),             # <<<<<<<<<<<<<<
 *                                         out_mailbox, outlen)
 *         try:
*/
  __pyx_v_rc = mlx5dv_devx_general_cmd(__pyx_v_self->__pyx_base.context, __pyx_v_in_mailbox, __pyx_t_5, __pyx_v_out_mailbox, __pyx_t_3);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":433
 *         rc = dv.mlx5dv_devx_general_cmd(self.context, in_mailbox, len(in_bytes),
 *                                         out_mailbox, outlen)
 *         try:             # <<<<<<<<<<<<<<
 *             if rc:
 *                 raise PyverbsRDMAError("DevX general command failed", rc)
*/
  /*try:*/ {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":434
 *                                         out_mailbox, outlen)
 *         try:
 *             if rc:             # <<<<<<<<<<<<<<
 *                 raise PyverbsRDMAError("DevX general command failed", rc)
 *             out = <bytes>out_mailbox[:outlen]
*/
    __pyx_t_6 = (__pyx_v_rc != 0);
    if (unlikely(__pyx_t_6)) {

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":435
 *         try:
 *             if rc:
 *                 raise PyverbsRDMAError("DevX general command failed", rc)             # <<<<<<<<<<<<<<
 *             out = <bytes>out_mailbox[:outlen]
 *         finally:
*/
      __pyx_t_2 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_PyverbsRDMAError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 435, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_8 = __Pyx_PyLong_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 435, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_3 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_7))) {
        __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_7);
        assert(__pyx_t_2);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
        __pyx_t_3 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_DevX_general_command_failed, __pyx_t_8};
        __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_3, (3-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 435, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 435, __pyx_L4_error)

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":434
 *                                         out_mailbox, outlen)
 *         try:
 *             if rc:             # <<<<<<<<<<<<<<
 *                 raise PyverbsRDMAError("DevX general command failed", rc)
 *             out = <bytes>out_mailbox[:outlen]
*/
    }

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":436
 *             if rc:
 *                 raise PyverbsRDMAError("DevX general command failed", rc)
 *             out = <bytes>out_mailbox[:outlen]             # <<<<<<<<<<<<<<
 *         finally:
 *             free(in_mailbox)
*/
    __Pyx_INCREF(__pyx_v_outlen);
    __pyx_t_1 = __pyx_v_outlen;
    __pyx_t_6 = (__pyx_t_1 == Py_None);
    if (__pyx_t_6) {
      __pyx_t_5 = PY_SSIZE_T_MAX;
    } else {
      __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 436, __pyx_L4_error)
      __pyx_t_5 = __pyx_t_9;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_out_mailbox + 0, __pyx_t_5 - 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 436, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = __pyx_t_1;
    __Pyx_INCREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_out = ((PyObject*)__pyx_t_7);
    __pyx_t_7 = 0;
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":438
 *             out = <bytes>out_mailbox[:outlen]
 *         finally:
 *             free(in_mailbox)             # <<<<<<<<<<<<<<
 *             free(out_mailbox)
 *         return out
*/
  /*finally:*/ {
    /*normal exit:*/{
      free(__pyx_v_in_mailbox);

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":439
 *         finally:
 *             free(in_mailbox)
 *             free(out_mailbox)             # <<<<<<<<<<<<<<
 *         return out
 * 
*/
      free(__pyx_v_out_mailbox);
      goto __pyx_L5;
    }
    __pyx_L4_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
       __Pyx_ExceptionSwap(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
      if ( unlikely(__Pyx_GetException(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15) < 0)) __Pyx_ErrFetch(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15);
      __Pyx_XGOTREF(__pyx_t_13);
      __Pyx_XGOTREF(__pyx_t_14);
      __Pyx_XGOTREF(__pyx_t_15);
      __Pyx_XGOTREF(__pyx_t_16);
      __Pyx_XGOTREF(__pyx_t_17);
      __Pyx_XGOTREF(__pyx_t_18);
      __pyx_t_10 = __pyx_lineno; __pyx_t_11 = __pyx_clineno; __pyx_t_12 = __pyx_filename;
      {

        /* "pyverbs/providers/mlx5/mlx5dv.pyx":438
 *             out = <bytes>out_mailbox[:outlen]
 *         finally:
 *             free(in_mailbox)             # <<<<<<<<<<<<<<
 *             free(out_mailbox)
 *         return out
*/
        free(__pyx_v_in_mailbox);

        /* "pyverbs/providers/mlx5/mlx5dv.pyx":439
 *         finally:
 *             free(in_mailbox)
 *             free(out_mailbox)             # <<<<<<<<<<<<<<
 *         return out
 * 
*/
        free(__pyx_v_out_mailbox);
      }
      __Pyx_XGIVEREF(__pyx_t_16);
      __Pyx_XGIVEREF(__pyx_t_17);
      __Pyx_XGIVEREF(__pyx_t_18);
      __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18);
      __Pyx_XGIVEREF(__pyx_t_13);
      __Pyx_XGIVEREF(__pyx_t_14);
      __Pyx_XGIVEREF(__pyx_t_15);
      __Pyx_ErrRestore(__pyx_t_13, __pyx_t_14, __pyx_t_15);
      __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0;
      __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_11; __pyx_filename = __pyx_t_12;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":440
 *             free(in_mailbox)
 *             free(out_mailbox)
 *         return out             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_out);
  __pyx_r = __pyx_v_out;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":418
 *             raise PyverbsRDMAError(f'Failed to logout from crypto login session.', rc)
 * 
 *     def devx_general_cmd(self, in_, outlen):             # <<<<<<<<<<<<<<
 *         """
 *         Executes a DevX general command according to the input mailbox.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Context.devx_general_cmd", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_in_bytes);
  __Pyx_XDECREF(__pyx_v_out);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":442
 *         return out
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def device_timestamp_to_ns(Context ctx, device_timestamp):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_19device_timestamp_to_ns(CYTHON_UNUSED PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_18device_timestamp_to_ns, "\n        Convert device timestamp from HCA core clock units to the corresponding\n        nanosecond units. The function uses mlx5dv_get_clock_info to get the\n        device clock information.\n        :param ctx: The device context to issue the action on.\n        :param device_timestamp: The device timestamp to convert.\n        :return: Timestamp in nanoseconds\n        ");
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_19device_timestamp_to_ns = {"device_timestamp_to_ns", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_19device_timestamp_to_ns, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_18device_timestamp_to_ns};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_19device_timestamp_to_ns(CYTHON_UNUSED PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_ctx = 0;
  PyObject *__pyx_v_device_timestamp = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("device_timestamp_to_ns (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_ctx,&__pyx_mstate_global->__pyx_n_u_device_timestamp,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 442, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 442, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 442, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "device_timestamp_to_ns", 0) < (0)) __PYX_ERR(0, 442, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("device_timestamp_to_ns", 1, 2, 2, i); __PYX_ERR(0, 442, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 442, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 442, __pyx_L3_error)
    }
    __pyx_v_ctx = ((struct __pyx_obj_7pyverbs_6device_Context *)values[0]);
    __pyx_v_device_timestamp = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("device_timestamp_to_ns", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 442, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Context.device_timestamp_to_ns", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_ctx), __pyx_mstate_global->__pyx_ptype_7pyverbs_6device_Context, 1, "ctx", 0))) __PYX_ERR(0, 443, __pyx_L1_error)
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_18device_timestamp_to_ns(__pyx_v_ctx, __pyx_v_device_timestamp);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_18device_timestamp_to_ns(struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_ctx, PyObject *__pyx_v_device_timestamp) {
  struct mlx5dv_clock_info *__pyx_v_clock_info;
  int __pyx_v_rc;
  uint64_t __pyx_v_ns_time;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  uint64_t __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("device_timestamp_to_ns", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":453
 *         """
 *         cdef dv.mlx5dv_clock_info *clock_info
 *         clock_info = <dv.mlx5dv_clock_info *>calloc(1, sizeof(dv.mlx5dv_clock_info))             # <<<<<<<<<<<<<<
 *         rc = dv.mlx5dv_get_clock_info(ctx.context, clock_info)
 *         if rc != 0:
*/
  __pyx_v_clock_info = ((struct mlx5dv_clock_info *)calloc(1, (sizeof(struct mlx5dv_clock_info))));

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":454
 *         cdef dv.mlx5dv_clock_info *clock_info
 *         clock_info = <dv.mlx5dv_clock_info *>calloc(1, sizeof(dv.mlx5dv_clock_info))
 *         rc = dv.mlx5dv_get_clock_info(ctx.context, clock_info)             # <<<<<<<<<<<<<<
 *         if rc != 0:
 *             raise PyverbsRDMAError(f'Failed to get the clock info', rc)
*/
  __pyx_v_rc = mlx5dv_get_clock_info(__pyx_v_ctx->context, __pyx_v_clock_info);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":455
 *         clock_info = <dv.mlx5dv_clock_info *>calloc(1, sizeof(dv.mlx5dv_clock_info))
 *         rc = dv.mlx5dv_get_clock_info(ctx.context, clock_info)
 *         if rc != 0:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAError(f'Failed to get the clock info', rc)
 * 
*/
  __pyx_t_1 = (__pyx_v_rc != 0);
  if (unlikely(__pyx_t_1)) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":456
 *         rc = dv.mlx5dv_get_clock_info(ctx.context, clock_info)
 *         if rc != 0:
 *             raise PyverbsRDMAError(f'Failed to get the clock info', rc)             # <<<<<<<<<<<<<<
 * 
 *         ns_time = dv.mlx5dv_ts_to_ns(clock_info, device_timestamp)
*/
    __pyx_t_3 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_PyverbsRDMAError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 456, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 456, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
      __pyx_t_6 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_Failed_to_get_the_clock_info, __pyx_t_5};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 456, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(0, 456, __pyx_L1_error)

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":455
 *         clock_info = <dv.mlx5dv_clock_info *>calloc(1, sizeof(dv.mlx5dv_clock_info))
 *         rc = dv.mlx5dv_get_clock_info(ctx.context, clock_info)
 *         if rc != 0:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAError(f'Failed to get the clock info', rc)
 * 
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":458
 *             raise PyverbsRDMAError(f'Failed to get the clock info', rc)
 * 
 *         ns_time = dv.mlx5dv_ts_to_ns(clock_info, device_timestamp)             # <<<<<<<<<<<<<<
 *         free(clock_info)
 *         return ns_time
*/
  __pyx_t_7 = __Pyx_PyLong_As_uint64_t(__pyx_v_device_timestamp); if (unlikely((__pyx_t_7 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 458, __pyx_L1_error)
  __pyx_v_ns_time = mlx5dv_ts_to_ns(__pyx_v_clock_info, __pyx_t_7);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":459
 * 
 *         ns_time = dv.mlx5dv_ts_to_ns(clock_info, device_timestamp)
 *         free(clock_info)             # <<<<<<<<<<<<<<
 *         return ns_time
 * 
*/
  free(__pyx_v_clock_info);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":460
 *         ns_time = dv.mlx5dv_ts_to_ns(clock_info, device_timestamp)
 *         free(clock_info)
 *         return ns_time             # <<<<<<<<<<<<<<
 * 
 *     def devx_query_eqn(self, vector):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_uint64_t(__pyx_v_ns_time); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 460, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":442
 *         return out
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def device_timestamp_to_ns(Context ctx, device_timestamp):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Context.device_timestamp_to_ns", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":462
 *         return ns_time
 * 
 *     def devx_query_eqn(self, vector):             # <<<<<<<<<<<<<<
 *         """
 *         Query EQN for a given vector id.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_21devx_query_eqn(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_20devx_query_eqn, "\n        Query EQN for a given vector id.\n        :param vector: Completion vector number\n        :return: The device EQ number which relates to the given input vector\n        ");
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_21devx_query_eqn = {"devx_query_eqn", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_21devx_query_eqn, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_20devx_query_eqn};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_21devx_query_eqn(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_vector = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("devx_query_eqn (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_vector,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 462, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 462, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "devx_query_eqn", 0) < (0)) __PYX_ERR(0, 462, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("devx_query_eqn", 1, 1, 1, i); __PYX_ERR(0, 462, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 462, __pyx_L3_error)
    }
    __pyx_v_vector = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("devx_query_eqn", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 462, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Context.devx_query_eqn", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_20devx_query_eqn(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *)__pyx_v_self), __pyx_v_vector);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_20devx_query_eqn(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *__pyx_v_self, PyObject *__pyx_v_vector) {
  uint32_t __pyx_v_eqn;
  int __pyx_v_rc;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  uint32_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  size_t __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("devx_query_eqn", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":469
 *         """
 *         cdef uint32_t eqn
 *         rc = dv.mlx5dv_devx_query_eqn(self.context, vector, &eqn)             # <<<<<<<<<<<<<<
 *         if rc:
 *             raise PyverbsRDMAError('Failed to query EQN', rc)
*/
  __pyx_t_1 = __Pyx_PyLong_As_uint32_t(__pyx_v_vector); if (unlikely((__pyx_t_1 == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 469, __pyx_L1_error)
  __pyx_v_rc = mlx5dv_devx_query_eqn(__pyx_v_self->__pyx_base.context, __pyx_t_1, (&__pyx_v_eqn));

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":470
 *         cdef uint32_t eqn
 *         rc = dv.mlx5dv_devx_query_eqn(self.context, vector, &eqn)
 *         if rc:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAError('Failed to query EQN', rc)
 *         return eqn
*/
  __pyx_t_2 = (__pyx_v_rc != 0);
  if (unlikely(__pyx_t_2)) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":471
 *         rc = dv.mlx5dv_devx_query_eqn(self.context, vector, &eqn)
 *         if rc:
 *             raise PyverbsRDMAError('Failed to query EQN', rc)             # <<<<<<<<<<<<<<
 *         return eqn
 * 
*/
    __pyx_t_4 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_PyverbsRDMAError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 471, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyLong_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 471, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_4);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_Failed_to_query_EQN, __pyx_t_6};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 471, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(0, 471, __pyx_L1_error)

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":470
 *         cdef uint32_t eqn
 *         rc = dv.mlx5dv_devx_query_eqn(self.context, vector, &eqn)
 *         if rc:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAError('Failed to query EQN', rc)
 *         return eqn
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":472
 *         if rc:
 *             raise PyverbsRDMAError('Failed to query EQN', rc)
 *         return eqn             # <<<<<<<<<<<<<<
 * 
 *     def get_data_direct_sysfs_path(self, length=512):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyLong_From_uint32_t(__pyx_v_eqn); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 472, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":462
 *         return ns_time
 * 
 *     def devx_query_eqn(self, vector):             # <<<<<<<<<<<<<<
 *         """
 *         Query EQN for a given vector id.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Context.devx_query_eqn", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":474
 *         return eqn
 * 
 *     def get_data_direct_sysfs_path(self, length=512):             # <<<<<<<<<<<<<<
 *         cdef char *buffer = <char *> calloc(1, length)
 *         if buffer == NULL:
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_23get_data_direct_sysfs_path(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_23get_data_direct_sysfs_path = {"get_data_direct_sysfs_path", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_23get_data_direct_sysfs_path, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_23get_data_direct_sysfs_path(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_length = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_data_direct_sysfs_path (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_length,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 474, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 474, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "get_data_direct_sysfs_path", 0) < (0)) __PYX_ERR(0, 474, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_512));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 474, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_512));
    }
    __pyx_v_length = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("get_data_direct_sysfs_path", 0, 0, 1, __pyx_nargs); __PYX_ERR(0, 474, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Context.get_data_direct_sysfs_path", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_22get_data_direct_sysfs_path(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *)__pyx_v_self), __pyx_v_length);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_22get_data_direct_sysfs_path(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *__pyx_v_self, PyObject *__pyx_v_length) {
  char *__pyx_v_buffer;
  int __pyx_v_rc;
  PyObject *__pyx_v_buffer_str = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_data_direct_sysfs_path", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":475
 * 
 *     def get_data_direct_sysfs_path(self, length=512):
 *         cdef char *buffer = <char *> calloc(1, length)             # <<<<<<<<<<<<<<
 *         if buffer == NULL:
 *             raise MemoryError('Failed to allocate memory')
*/
  __pyx_t_1 = __Pyx_PyLong_As_size_t(__pyx_v_length); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 475, __pyx_L1_error)
  __pyx_v_buffer = ((char *)calloc(1, __pyx_t_1));

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":476
 *     def get_data_direct_sysfs_path(self, length=512):
 *         cdef char *buffer = <char *> calloc(1, length)
 *         if buffer == NULL:             # <<<<<<<<<<<<<<
 *             raise MemoryError('Failed to allocate memory')
 *         rc = dv.mlx5dv_get_data_direct_sysfs_path(self.context, buffer, length)
*/
  __pyx_t_2 = (__pyx_v_buffer == NULL);
  if (unlikely(__pyx_t_2)) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":477
 *         cdef char *buffer = <char *> calloc(1, length)
 *         if buffer == NULL:
 *             raise MemoryError('Failed to allocate memory')             # <<<<<<<<<<<<<<
 *         rc = dv.mlx5dv_get_data_direct_sysfs_path(self.context, buffer, length)
 *         if rc:
*/
    __pyx_t_4 = NULL;
    __pyx_t_1 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_Failed_to_allocate_memory};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_MemoryError)), __pyx_callargs+__pyx_t_1, (2-__pyx_t_1) | (__pyx_t_1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 477, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(0, 477, __pyx_L1_error)

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":476
 *     def get_data_direct_sysfs_path(self, length=512):
 *         cdef char *buffer = <char *> calloc(1, length)
 *         if buffer == NULL:             # <<<<<<<<<<<<<<
 *             raise MemoryError('Failed to allocate memory')
 *         rc = dv.mlx5dv_get_data_direct_sysfs_path(self.context, buffer, length)
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":478
 *         if buffer == NULL:
 *             raise MemoryError('Failed to allocate memory')
 *         rc = dv.mlx5dv_get_data_direct_sysfs_path(self.context, buffer, length)             # <<<<<<<<<<<<<<
 *         if rc:
 *             free(buffer)
*/
  __pyx_t_1 = __Pyx_PyLong_As_size_t(__pyx_v_length); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 478, __pyx_L1_error)
  __pyx_v_rc = mlx5dv_get_data_direct_sysfs_path(__pyx_v_self->__pyx_base.context, __pyx_v_buffer, __pyx_t_1);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":479
 *             raise MemoryError('Failed to allocate memory')
 *         rc = dv.mlx5dv_get_data_direct_sysfs_path(self.context, buffer, length)
 *         if rc:             # <<<<<<<<<<<<<<
 *             free(buffer)
 *             raise PyverbsRDMAError('Get data direct sysfs path failed.', rc)
*/
  __pyx_t_2 = (__pyx_v_rc != 0);
  if (unlikely(__pyx_t_2)) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":480
 *         rc = dv.mlx5dv_get_data_direct_sysfs_path(self.context, buffer, length)
 *         if rc:
 *             free(buffer)             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAError('Get data direct sysfs path failed.', rc)
 *         buffer_str = str(buffer.decode())
*/
    free(__pyx_v_buffer);

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":481
 *         if rc:
 *             free(buffer)
 *             raise PyverbsRDMAError('Get data direct sysfs path failed.', rc)             # <<<<<<<<<<<<<<
 *         buffer_str = str(buffer.decode())
 *         free(buffer)
*/
    __pyx_t_4 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_PyverbsRDMAError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 481, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyLong_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 481, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_4);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_1 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_Get_data_direct_sysfs_path_faile, __pyx_t_6};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_1, (3-__pyx_t_1) | (__pyx_t_1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 481, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(0, 481, __pyx_L1_error)

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":479
 *             raise MemoryError('Failed to allocate memory')
 *         rc = dv.mlx5dv_get_data_direct_sysfs_path(self.context, buffer, length)
 *         if rc:             # <<<<<<<<<<<<<<
 *             free(buffer)
 *             raise PyverbsRDMAError('Get data direct sysfs path failed.', rc)
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":482
 *             free(buffer)
 *             raise PyverbsRDMAError('Get data direct sysfs path failed.', rc)
 *         buffer_str = str(buffer.decode())             # <<<<<<<<<<<<<<
 *         free(buffer)
 *         return buffer_str
*/
  __pyx_t_7 = __Pyx_ssize_strlen(__pyx_v_buffer); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 482, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_buffer, 0, __pyx_t_7, NULL, NULL, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 482, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_buffer_str = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":483
 *             raise PyverbsRDMAError('Get data direct sysfs path failed.', rc)
 *         buffer_str = str(buffer.decode())
 *         free(buffer)             # <<<<<<<<<<<<<<
 *         return buffer_str
 * 
*/
  free(__pyx_v_buffer);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":484
 *         buffer_str = str(buffer.decode())
 *         free(buffer)
 *         return buffer_str             # <<<<<<<<<<<<<<
 * 
 *     cdef add_ref(self, obj):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_buffer_str);
  __pyx_r = __pyx_v_buffer_str;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":474
 *         return eqn
 * 
 *     def get_data_direct_sysfs_path(self, length=512):             # <<<<<<<<<<<<<<
 *         cdef char *buffer = <char *> calloc(1, length)
 *         if buffer == NULL:
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Context.get_data_direct_sysfs_path", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_buffer_str);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":486
 *         return buffer_str
 * 
 *     cdef add_ref(self, obj):             # <<<<<<<<<<<<<<
 *         try:
 *             Context.add_ref(self, obj)
*/

static PyObject *__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_add_ref(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *__pyx_v_self, PyObject *__pyx_v_obj) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  size_t __pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("add_ref", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":487
 * 
 *     cdef add_ref(self, obj):
 *         try:             # <<<<<<<<<<<<<<
 *             Context.add_ref(self, obj)
 *         except PyverbsError:
*/
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":488
 *     cdef add_ref(self, obj):
 *         try:
 *             Context.add_ref(self, obj)             # <<<<<<<<<<<<<<
 *         except PyverbsError:
 *             if isinstance(obj, Mlx5UMEM):
*/
      __pyx_t_4 = __pyx_vtabptr_7pyverbs_6device_Context->add_ref(((struct __pyx_obj_7pyverbs_6device_Context *)__pyx_v_self), __pyx_v_obj); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 488, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":487
 * 
 *     cdef add_ref(self, obj):
 *         try:             # <<<<<<<<<<<<<<
 *             Context.add_ref(self, obj)
 *         except PyverbsError:
*/
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":489
 *         try:
 *             Context.add_ref(self, obj)
 *         except PyverbsError:             # <<<<<<<<<<<<<<
 *             if isinstance(obj, Mlx5UMEM):
 *                 self.devx_umems.add(obj)
*/
    __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
    __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_PyverbsError); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 489, __pyx_L5_except_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_4, __pyx_t_7);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_ErrRestore(__pyx_t_4, __pyx_t_5, __pyx_t_6);
    __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0;
    if (__pyx_t_8) {
      __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Context.add_ref", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4) < 0) __PYX_ERR(0, 489, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_4);

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":490
 *             Context.add_ref(self, obj)
 *         except PyverbsError:
 *             if isinstance(obj, Mlx5UMEM):             # <<<<<<<<<<<<<<
 *                 self.devx_umems.add(obj)
 *             elif isinstance(obj, Mlx5DevxObj):
*/
      __pyx_t_9 = __Pyx_TypeCheck(__pyx_v_obj, __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM); 
      if (__pyx_t_9) {

        /* "pyverbs/providers/mlx5/mlx5dv.pyx":491
 *         except PyverbsError:
 *             if isinstance(obj, Mlx5UMEM):
 *                 self.devx_umems.add(obj)             # <<<<<<<<<<<<<<
 *             elif isinstance(obj, Mlx5DevxObj):
 *                 self.devx_objs.add(obj)
*/
        __pyx_t_10 = __pyx_v_self->devx_umems;
        __Pyx_INCREF(__pyx_t_10);
        __pyx_t_11 = 0;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_v_obj};
          __pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_add, __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 491, __pyx_L5_except_error)
          __Pyx_GOTREF(__pyx_t_7);
        }
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

        /* "pyverbs/providers/mlx5/mlx5dv.pyx":490
 *             Context.add_ref(self, obj)
 *         except PyverbsError:
 *             if isinstance(obj, Mlx5UMEM):             # <<<<<<<<<<<<<<
 *                 self.devx_umems.add(obj)
 *             elif isinstance(obj, Mlx5DevxObj):
*/
        goto __pyx_L11;
      }

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":492
 *             if isinstance(obj, Mlx5UMEM):
 *                 self.devx_umems.add(obj)
 *             elif isinstance(obj, Mlx5DevxObj):             # <<<<<<<<<<<<<<
 *                 self.devx_objs.add(obj)
 *             elif isinstance(obj, Mlx5DevxEq):
*/
      __pyx_t_9 = __Pyx_TypeCheck(__pyx_v_obj, __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj); 
      if (__pyx_t_9) {

        /* "pyverbs/providers/mlx5/mlx5dv.pyx":493
 *                 self.devx_umems.add(obj)
 *             elif isinstance(obj, Mlx5DevxObj):
 *                 self.devx_objs.add(obj)             # <<<<<<<<<<<<<<
 *             elif isinstance(obj, Mlx5DevxEq):
 *                 self.devx_eqs.add(obj)
*/
        __pyx_t_10 = __pyx_v_self->devx_objs;
        __Pyx_INCREF(__pyx_t_10);
        __pyx_t_11 = 0;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_v_obj};
          __pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_add, __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 493, __pyx_L5_except_error)
          __Pyx_GOTREF(__pyx_t_7);
        }
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

        /* "pyverbs/providers/mlx5/mlx5dv.pyx":492
 *             if isinstance(obj, Mlx5UMEM):
 *                 self.devx_umems.add(obj)
 *             elif isinstance(obj, Mlx5DevxObj):             # <<<<<<<<<<<<<<
 *                 self.devx_objs.add(obj)
 *             elif isinstance(obj, Mlx5DevxEq):
*/
        goto __pyx_L11;
      }

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":494
 *             elif isinstance(obj, Mlx5DevxObj):
 *                 self.devx_objs.add(obj)
 *             elif isinstance(obj, Mlx5DevxEq):             # <<<<<<<<<<<<<<
 *                 self.devx_eqs.add(obj)
 *             elif isinstance(obj, Mlx5DevxCmdComp):
*/
      __pyx_t_9 = __Pyx_TypeCheck(__pyx_v_obj, __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq); 
      if (__pyx_t_9) {

        /* "pyverbs/providers/mlx5/mlx5dv.pyx":495
 *                 self.devx_objs.add(obj)
 *             elif isinstance(obj, Mlx5DevxEq):
 *                 self.devx_eqs.add(obj)             # <<<<<<<<<<<<<<
 *             elif isinstance(obj, Mlx5DevxCmdComp):
 *                 self.cmd_comps.add(obj)
*/
        __pyx_t_10 = __pyx_v_self->devx_eqs;
        __Pyx_INCREF(__pyx_t_10);
        __pyx_t_11 = 0;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_v_obj};
          __pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_add, __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 495, __pyx_L5_except_error)
          __Pyx_GOTREF(__pyx_t_7);
        }
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

        /* "pyverbs/providers/mlx5/mlx5dv.pyx":494
 *             elif isinstance(obj, Mlx5DevxObj):
 *                 self.devx_objs.add(obj)
 *             elif isinstance(obj, Mlx5DevxEq):             # <<<<<<<<<<<<<<
 *                 self.devx_eqs.add(obj)
 *             elif isinstance(obj, Mlx5DevxCmdComp):
*/
        goto __pyx_L11;
      }

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":496
 *             elif isinstance(obj, Mlx5DevxEq):
 *                 self.devx_eqs.add(obj)
 *             elif isinstance(obj, Mlx5DevxCmdComp):             # <<<<<<<<<<<<<<
 *                 self.cmd_comps.add(obj)
 *             else:
*/
      __pyx_t_9 = __Pyx_TypeCheck(__pyx_v_obj, __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp); 
      if (likely(__pyx_t_9)) {

        /* "pyverbs/providers/mlx5/mlx5dv.pyx":497
 *                 self.devx_eqs.add(obj)
 *             elif isinstance(obj, Mlx5DevxCmdComp):
 *                 self.cmd_comps.add(obj)             # <<<<<<<<<<<<<<
 *             else:
 *                 raise PyverbsError('Unrecognized object type')
*/
        __pyx_t_10 = __pyx_v_self->cmd_comps;
        __Pyx_INCREF(__pyx_t_10);
        __pyx_t_11 = 0;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_v_obj};
          __pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_add, __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 497, __pyx_L5_except_error)
          __Pyx_GOTREF(__pyx_t_7);
        }
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

        /* "pyverbs/providers/mlx5/mlx5dv.pyx":496
 *             elif isinstance(obj, Mlx5DevxEq):
 *                 self.devx_eqs.add(obj)
 *             elif isinstance(obj, Mlx5DevxCmdComp):             # <<<<<<<<<<<<<<
 *                 self.cmd_comps.add(obj)
 *             else:
*/
        goto __pyx_L11;
      }

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":499
 *                 self.cmd_comps.add(obj)
 *             else:
 *                 raise PyverbsError('Unrecognized object type')             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
      /*else*/ {
        __pyx_t_10 = NULL;
        __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_PyverbsError); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 499, __pyx_L5_except_error)
        __Pyx_GOTREF(__pyx_t_12);
        __pyx_t_11 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_12))) {
          __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_12);
          assert(__pyx_t_10);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_12);
          __Pyx_INCREF(__pyx_t_10);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_12, __pyx__function);
          __pyx_t_11 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_mstate_global->__pyx_kp_u_Unrecognized_object_type};
          __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_12, __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 499, __pyx_L5_except_error)
          __Pyx_GOTREF(__pyx_t_7);
        }
        __Pyx_Raise(__pyx_t_7, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __PYX_ERR(0, 499, __pyx_L5_except_error)
      }
      __pyx_L11:;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":487
 * 
 *     cdef add_ref(self, obj):
 *         try:             # <<<<<<<<<<<<<<
 *             Context.add_ref(self, obj)
 *         except PyverbsError:
*/
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L8_try_end:;
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":486
 *         return buffer_str
 * 
 *     cdef add_ref(self, obj):             # <<<<<<<<<<<<<<
 *         try:
 *             Context.add_ref(self, obj)
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Context.add_ref", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":501
 *                 raise PyverbsError('Unrecognized object type')
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         self.close()
 * 
*/

/* Python wrapper */
static void __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_25__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_25__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_24__dealloc__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_24__dealloc__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":502
 * 
 *     def __dealloc__(self):
 *         self.close()             # <<<<<<<<<<<<<<
 * 
 *     cpdef close(self):
*/
  __pyx_t_1 = ((struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.close(((struct __pyx_obj_7pyverbs_4base_PyverbsCM *)__pyx_v_self), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 502, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":501
 *                 raise PyverbsError('Unrecognized object type')
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         self.close()
 * 
*/

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("pyverbs.providers.mlx5.mlx5dv.Mlx5Context.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":504
 *         self.close()
 * 
 *     cpdef close(self):             # <<<<<<<<<<<<<<
 *         if self.context != NULL:
 *             close_weakrefs([self.pps, self.devx_objs, self.devx_umems, self.devx_eqs,
*/

static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_27close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyObject *__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *__pyx_v_self, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("close", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (
  #if !CYTHON_USE_TYPE_SLOTS
  unlikely(Py_TYPE(((PyObject *)__pyx_v_self)) != __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context &&
  __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), Py_TPFLAGS_HAVE_GC))
  #else
  unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0 || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))
  #endif
  ) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_close); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 504, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!__Pyx_IsSameCFunction(__pyx_t_1, (void(*)(void)) __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_27close)) {
        __Pyx_XDECREF(__pyx_r);
        __pyx_t_3 = NULL;
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_4 = __pyx_t_1; 
        __pyx_t_5 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
          assert(__pyx_t_3);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
          __pyx_t_5 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
          __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 504, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
        }
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":505
 * 
 *     cpdef close(self):
 *         if self.context != NULL:             # <<<<<<<<<<<<<<
 *             close_weakrefs([self.pps, self.devx_objs, self.devx_umems, self.devx_eqs,
 *                            self.cmd_comps])
*/
  __pyx_t_6 = (__pyx_v_self->__pyx_base.context != NULL);
  if (__pyx_t_6) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":506
 *     cpdef close(self):
 *         if self.context != NULL:
 *             close_weakrefs([self.pps, self.devx_objs, self.devx_umems, self.devx_eqs,             # <<<<<<<<<<<<<<
 *                            self.cmd_comps])
 *             super(Mlx5Context, self).close()
*/
    __pyx_t_1 = PyList_New(5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 506, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_self->__pyx_base.pps);
    __Pyx_GIVEREF(__pyx_v_self->__pyx_base.pps);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->__pyx_base.pps) != (0)) __PYX_ERR(0, 506, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_self->devx_objs);
    __Pyx_GIVEREF(__pyx_v_self->devx_objs);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->devx_objs) != (0)) __PYX_ERR(0, 506, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_self->devx_umems);
    __Pyx_GIVEREF(__pyx_v_self->devx_umems);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 2, __pyx_v_self->devx_umems) != (0)) __PYX_ERR(0, 506, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_self->devx_eqs);
    __Pyx_GIVEREF(__pyx_v_self->devx_eqs);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 3, __pyx_v_self->devx_eqs) != (0)) __PYX_ERR(0, 506, __pyx_L1_error);
    __Pyx_INCREF(__pyx_v_self->cmd_comps);
    __Pyx_GIVEREF(__pyx_v_self->cmd_comps);
    if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 4, __pyx_v_self->cmd_comps) != (0)) __PYX_ERR(0, 506, __pyx_L1_error);
    __pyx_t_2 = __pyx_f_7pyverbs_4base_close_weakrefs(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 506, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":508
 *             close_weakrefs([self.pps, self.devx_objs, self.devx_umems, self.devx_eqs,
 *                            self.cmd_comps])
 *             super(Mlx5Context, self).close()             # <<<<<<<<<<<<<<
 * 
 * 
*/
    __pyx_t_3 = NULL;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_3, ((PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context), ((PyObject *)__pyx_v_self)};
      __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_super, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 508, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
    }
    __pyx_t_1 = __pyx_t_4;
    __Pyx_INCREF(__pyx_t_1);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
      __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_close, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 508, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":505
 * 
 *     cpdef close(self):
 *         if self.context != NULL:             # <<<<<<<<<<<<<<
 *             close_weakrefs([self.pps, self.devx_objs, self.devx_umems, self.devx_eqs,
 *                            self.cmd_comps])
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":504
 *         self.close()
 * 
 *     cpdef close(self):             # <<<<<<<<<<<<<<
 *         if self.context != NULL:
 *             close_weakrefs([self.pps, self.devx_objs, self.devx_umems, self.devx_eqs,
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Context.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_27close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_27close = {"close", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_27close, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_27close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("close (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("close", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("close", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_26close(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_26close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("close", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_close(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 504, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Context.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.context,self.device cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_29__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_29__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_29__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_29__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_28__reduce_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_28__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self.context,self.device cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.context,self.device cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_context_self_device_cannot, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.context,self.device cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Context.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.context,self.device cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.context,self.device cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_31__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_31__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_31__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_31__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Context.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_30__setstate_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_30__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self.context,self.device cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.context,self.device cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_context_self_device_cannot, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.context,self.device cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.context,self.device cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Context.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":516
 *     reported by mlx5dv_query_device.
 *     """
 *     @property             # <<<<<<<<<<<<<<
 *     def version(self):
 *         return self.dv.version
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_7version_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_7version_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_7version___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_7version___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":518
 *     @property
 *     def version(self):
 *         return self.dv.version             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_unsigned_char(__pyx_v_self->dv.version); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":516
 *     reported by mlx5dv_query_device.
 *     """
 *     @property             # <<<<<<<<<<<<<<
 *     def version(self):
 *         return self.dv.version
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVContext.version.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":520
 *         return self.dv.version
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def flags(self):
 *         return self.dv.flags
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_5flags_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_5flags_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_5flags___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_5flags___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":522
 *     @property
 *     def flags(self):
 *         return self.dv.flags             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_unsigned_long(__pyx_v_self->dv.flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 522, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":520
 *         return self.dv.version
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def flags(self):
 *         return self.dv.flags
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVContext.flags.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":524
 *         return self.dv.flags
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def comp_mask(self):
 *         return self.dv.comp_mask
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_9comp_mask_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_9comp_mask_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_9comp_mask___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_9comp_mask___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":526
 *     @property
 *     def comp_mask(self):
 *         return self.dv.comp_mask             # <<<<<<<<<<<<<<
 *     @comp_mask.setter
 *     def comp_mask(self, val):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_unsigned_long(__pyx_v_self->dv.comp_mask); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 526, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":524
 *         return self.dv.flags
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def comp_mask(self):
 *         return self.dv.comp_mask
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVContext.comp_mask.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":527
 *     def comp_mask(self):
 *         return self.dv.comp_mask
 *     @comp_mask.setter             # <<<<<<<<<<<<<<
 *     def comp_mask(self, val):
 *         self.dv.comp_mask = val
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_9comp_mask_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_9comp_mask_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_9comp_mask_2__set__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *)__pyx_v_self), ((PyObject *)__pyx_v_val));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_9comp_mask_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self, PyObject *__pyx_v_val) {
  int __pyx_r;
  unsigned long __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":529
 *     @comp_mask.setter
 *     def comp_mask(self, val):
 *         self.dv.comp_mask = val             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_t_1 = __Pyx_PyLong_As_unsigned_long(__pyx_v_val); if (unlikely((__pyx_t_1 == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(0, 529, __pyx_L1_error)
  __pyx_v_self->dv.comp_mask = __pyx_t_1;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":527
 *     def comp_mask(self):
 *         return self.dv.comp_mask
 *     @comp_mask.setter             # <<<<<<<<<<<<<<
 *     def comp_mask(self, val):
 *         self.dv.comp_mask = val
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVContext.comp_mask.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":531
 *         self.dv.comp_mask = val
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def cqe_comp_caps(self):
 *         return self.dv.cqe_comp_caps
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_13cqe_comp_caps_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_13cqe_comp_caps_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_13cqe_comp_caps___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_13cqe_comp_caps___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":533
 *     @property
 *     def cqe_comp_caps(self):
 *         return self.dv.cqe_comp_caps             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_convert__to_py_struct__mlx5dv_cqe_comp_caps(__pyx_v_self->dv.cqe_comp_caps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":531
 *         self.dv.comp_mask = val
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def cqe_comp_caps(self):
 *         return self.dv.cqe_comp_caps
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVContext.cqe_comp_caps.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":535
 *         return self.dv.cqe_comp_caps
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def sw_parsing_caps(self):
 *         return self.dv.sw_parsing_caps
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_15sw_parsing_caps_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_15sw_parsing_caps_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_15sw_parsing_caps___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_15sw_parsing_caps___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":537
 *     @property
 *     def sw_parsing_caps(self):
 *         return self.dv.sw_parsing_caps             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_convert__to_py_struct__mlx5dv_sw_parsing_caps(__pyx_v_self->dv.sw_parsing_caps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 537, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":535
 *         return self.dv.cqe_comp_caps
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def sw_parsing_caps(self):
 *         return self.dv.sw_parsing_caps
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVContext.sw_parsing_caps.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":539
 *         return self.dv.sw_parsing_caps
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def striding_rq_caps(self):
 *         return self.dv.striding_rq_caps
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_16striding_rq_caps_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_16striding_rq_caps_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_16striding_rq_caps___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_16striding_rq_caps___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":541
 *     @property
 *     def striding_rq_caps(self):
 *         return self.dv.striding_rq_caps             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_convert__to_py_struct__mlx5dv_striding_rq_caps(__pyx_v_self->dv.striding_rq_caps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 541, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":539
 *         return self.dv.sw_parsing_caps
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def striding_rq_caps(self):
 *         return self.dv.striding_rq_caps
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVContext.striding_rq_caps.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":543
 *         return self.dv.striding_rq_caps
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def tunnel_offload_caps(self):
 *         return self.dv.tunnel_offloads_caps
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_19tunnel_offload_caps_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_19tunnel_offload_caps_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_19tunnel_offload_caps___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_19tunnel_offload_caps___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":545
 *     @property
 *     def tunnel_offload_caps(self):
 *         return self.dv.tunnel_offloads_caps             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_unsigned_int(__pyx_v_self->dv.tunnel_offloads_caps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 545, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":543
 *         return self.dv.striding_rq_caps
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def tunnel_offload_caps(self):
 *         return self.dv.tunnel_offloads_caps
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVContext.tunnel_offload_caps.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":547
 *         return self.dv.tunnel_offloads_caps
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def max_dynamic_bfregs(self):
 *         return self.dv.max_dynamic_bfregs
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_18max_dynamic_bfregs_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_18max_dynamic_bfregs_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_18max_dynamic_bfregs___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_18max_dynamic_bfregs___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":549
 *     @property
 *     def max_dynamic_bfregs(self):
 *         return self.dv.max_dynamic_bfregs             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_unsigned_int(__pyx_v_self->dv.max_dynamic_bfregs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 549, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":547
 *         return self.dv.tunnel_offloads_caps
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def max_dynamic_bfregs(self):
 *         return self.dv.max_dynamic_bfregs
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVContext.max_dynamic_bfregs.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":551
 *         return self.dv.max_dynamic_bfregs
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def max_clock_info_update_nsec(self):
 *         return self.dv.max_clock_info_update_nsec
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_26max_clock_info_update_nsec_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_26max_clock_info_update_nsec_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_26max_clock_info_update_nsec___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_26max_clock_info_update_nsec___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":553
 *     @property
 *     def max_clock_info_update_nsec(self):
 *         return self.dv.max_clock_info_update_nsec             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_unsigned_long(__pyx_v_self->dv.max_clock_info_update_nsec); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 553, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":551
 *         return self.dv.max_dynamic_bfregs
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def max_clock_info_update_nsec(self):
 *         return self.dv.max_clock_info_update_nsec
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVContext.max_clock_info_update_nsec.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":555
 *         return self.dv.max_clock_info_update_nsec
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def flow_action_flags(self):
 *         return self.dv.flow_action_flags
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_17flow_action_flags_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_17flow_action_flags_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_17flow_action_flags___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_17flow_action_flags___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":557
 *     @property
 *     def flow_action_flags(self):
 *         return self.dv.flow_action_flags             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_unsigned_int(__pyx_v_self->dv.flow_action_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 557, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":555
 *         return self.dv.max_clock_info_update_nsec
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def flow_action_flags(self):
 *         return self.dv.flow_action_flags
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVContext.flow_action_flags.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":559
 *         return self.dv.flow_action_flags
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dc_odp_caps(self):
 *         return self.dv.dc_odp_caps
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_11dc_odp_caps_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_11dc_odp_caps_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_11dc_odp_caps___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_11dc_odp_caps___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":561
 *     @property
 *     def dc_odp_caps(self):
 *         return self.dv.dc_odp_caps             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_unsigned_int(__pyx_v_self->dv.dc_odp_caps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 561, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":559
 *         return self.dv.flow_action_flags
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dc_odp_caps(self):
 *         return self.dv.dc_odp_caps
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVContext.dc_odp_caps.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":563
 *         return self.dv.dc_odp_caps
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def crypto_caps(self):
 *         return self.dv.crypto_caps
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_11crypto_caps_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_11crypto_caps_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_11crypto_caps___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_11crypto_caps___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":565
 *     @property
 *     def crypto_caps(self):
 *         return self.dv.crypto_caps             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_convert__to_py_struct__mlx5dv_crypto_caps(__pyx_v_self->dv.crypto_caps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 565, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":563
 *         return self.dv.dc_odp_caps
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def crypto_caps(self):
 *         return self.dv.crypto_caps
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVContext.crypto_caps.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":567
 *         return self.dv.crypto_caps
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def num_lag_ports(self):
 *         return self.dv.num_lag_ports
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_13num_lag_ports_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_13num_lag_ports_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_13num_lag_ports___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_13num_lag_ports___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":569
 *     @property
 *     def num_lag_ports(self):
 *         return self.dv.num_lag_ports             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(__pyx_v_self->dv.num_lag_ports); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 569, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":567
 *         return self.dv.crypto_caps
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def num_lag_ports(self):
 *         return self.dv.num_lag_ports
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVContext.num_lag_ports.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":571
 *         return self.dv.num_lag_ports
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dci_streams_caps(self):
 *         return self.dv.dci_streams_caps
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_16dci_streams_caps_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_16dci_streams_caps_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_16dci_streams_caps___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_16dci_streams_caps___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":573
 *     @property
 *     def dci_streams_caps(self):
 *         return self.dv.dci_streams_caps             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_convert__to_py_struct__mlx5dv_dci_streams_caps(__pyx_v_self->dv.dci_streams_caps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 573, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":571
 *         return self.dv.num_lag_ports
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dci_streams_caps(self):
 *         return self.dv.dci_streams_caps
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVContext.dci_streams_caps.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":575
 *         return self.dv.dci_streams_caps
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def max_wr_memcpy_length(self):
 *         return self.dv.max_wr_memcpy_length
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_20max_wr_memcpy_length_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_20max_wr_memcpy_length_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_20max_wr_memcpy_length___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_20max_wr_memcpy_length___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":577
 *     @property
 *     def max_wr_memcpy_length(self):
 *         return self.dv.max_wr_memcpy_length             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_FromSize_t(__pyx_v_self->dv.max_wr_memcpy_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 577, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":575
 *         return self.dv.dci_streams_caps
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def max_wr_memcpy_length(self):
 *         return self.dv.max_wr_memcpy_length
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVContext.max_wr_memcpy_length.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":579
 *         return self.dv.max_wr_memcpy_length
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def max_dc_rd_atom(self):
 *         return self.dv.max_dc_rd_atom
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_14max_dc_rd_atom_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_14max_dc_rd_atom_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_14max_dc_rd_atom___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_14max_dc_rd_atom___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":581
 *     @property
 *     def max_dc_rd_atom(self):
 *         return self.dv.max_dc_rd_atom             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint64_t(__pyx_v_self->dv.max_dc_rd_atom); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 581, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":579
 *         return self.dv.max_wr_memcpy_length
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def max_dc_rd_atom(self):
 *         return self.dv.max_dc_rd_atom
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVContext.max_dc_rd_atom.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":583
 *         return self.dv.max_dc_rd_atom
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def max_dc_init_rd_atom(self):
 *         return self.dv.max_dc_init_rd_atom
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_19max_dc_init_rd_atom_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_19max_dc_init_rd_atom_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_19max_dc_init_rd_atom___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_19max_dc_init_rd_atom___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":585
 *     @property
 *     def max_dc_init_rd_atom(self):
 *         return self.dv.max_dc_init_rd_atom             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint64_t(__pyx_v_self->dv.max_dc_init_rd_atom); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":583
 *         return self.dv.max_dc_rd_atom
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def max_dc_init_rd_atom(self):
 *         return self.dv.max_dc_init_rd_atom
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVContext.max_dc_init_rd_atom.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":587
 *         return self.dv.max_dc_init_rd_atom
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ooo_recv_wrs_caps(self):
 *         return self.dv.ooo_recv_wrs_caps
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_17ooo_recv_wrs_caps_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_17ooo_recv_wrs_caps_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_17ooo_recv_wrs_caps___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_17ooo_recv_wrs_caps___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":589
 *     @property
 *     def ooo_recv_wrs_caps(self):
 *         return self.dv.ooo_recv_wrs_caps             # <<<<<<<<<<<<<<
 * 
 *     def __str__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_convert__to_py_struct__mlx5dv_ooo_recv_wrs_caps(__pyx_v_self->dv.ooo_recv_wrs_caps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 589, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":587
 *         return self.dv.max_dc_init_rd_atom
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ooo_recv_wrs_caps(self):
 *         return self.dv.ooo_recv_wrs_caps
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVContext.ooo_recv_wrs_caps.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":591
 *         return self.dv.ooo_recv_wrs_caps
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         print_format = '{:20}: {:<20}\n'
 *         ident_format = '  {:20}: {:<20}\n'
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_1__str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_1__str__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext___str__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext___str__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self) {
  PyObject *__pyx_v_print_format = NULL;
  PyObject *__pyx_v_ident_format = NULL;
  PyObject *__pyx_v_cqe = NULL;
  PyObject *__pyx_v_swp = NULL;
  PyObject *__pyx_v_strd = NULL;
  PyObject *__pyx_v_stream = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":592
 * 
 *     def __str__(self):
 *         print_format = '{:20}: {:<20}\n'             # <<<<<<<<<<<<<<
 *         ident_format = '  {:20}: {:<20}\n'
 *         cqe = 'CQE compression caps:\n' +\
*/
  __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_20_20);
  __pyx_v_print_format = __pyx_mstate_global->__pyx_kp_u_20_20;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":593
 *     def __str__(self):
 *         print_format = '{:20}: {:<20}\n'
 *         ident_format = '  {:20}: {:<20}\n'             # <<<<<<<<<<<<<<
 *         cqe = 'CQE compression caps:\n' +\
 *               ident_format.format('max num',
*/
  __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_20_20_2);
  __pyx_v_ident_format = __pyx_mstate_global->__pyx_kp_u_20_20_2;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":596
 *         cqe = 'CQE compression caps:\n' +\
 *               ident_format.format('max num',
 *                                   self.dv.cqe_comp_caps.max_num) +\             # <<<<<<<<<<<<<<
 *               ident_format.format('supported formats',
 *                                   cqe_comp_to_str(self.dv.cqe_comp_caps.supported_format))
*/
  __pyx_t_1 = __Pyx_PyLong_From_unsigned_int(__pyx_v_self->dv.cqe_comp_caps.max_num); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 596, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":595
 *         ident_format = '  {:20}: {:<20}\n'
 *         cqe = 'CQE compression caps:\n' +\
 *               ident_format.format('max num',             # <<<<<<<<<<<<<<
 *                                   self.dv.cqe_comp_caps.max_num) +\
 *               ident_format.format('supported formats',
*/
  __pyx_t_2 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_ident_format, __pyx_mstate_global->__pyx_kp_u_max_num, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 595, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":594
 *         print_format = '{:20}: {:<20}\n'
 *         ident_format = '  {:20}: {:<20}\n'
 *         cqe = 'CQE compression caps:\n' +\             # <<<<<<<<<<<<<<
 *               ident_format.format('max num',
 *                                   self.dv.cqe_comp_caps.max_num) +\
*/
  __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_CQE_compression_caps, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 594, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":598
 *                                   self.dv.cqe_comp_caps.max_num) +\
 *               ident_format.format('supported formats',
 *                                   cqe_comp_to_str(self.dv.cqe_comp_caps.supported_format))             # <<<<<<<<<<<<<<
 *         swp = 'SW parsing caps:\n' +\
 *               ident_format.format('SW parsing offloads',
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_cqe_comp_to_str); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 598, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyLong_From_unsigned_int(__pyx_v_self->dv.cqe_comp_caps.supported_format); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 598, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_5};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 598, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":597
 *               ident_format.format('max num',
 *                                   self.dv.cqe_comp_caps.max_num) +\
 *               ident_format.format('supported formats',             # <<<<<<<<<<<<<<
 *                                   cqe_comp_to_str(self.dv.cqe_comp_caps.supported_format))
 *         swp = 'SW parsing caps:\n' +\
*/
  __pyx_t_4 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_ident_format, __pyx_mstate_global->__pyx_kp_u_supported_formats, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 597, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":596
 *         cqe = 'CQE compression caps:\n' +\
 *               ident_format.format('max num',
 *                                   self.dv.cqe_comp_caps.max_num) +\             # <<<<<<<<<<<<<<
 *               ident_format.format('supported formats',
 *                                   cqe_comp_to_str(self.dv.cqe_comp_caps.supported_format))
*/
  __pyx_t_2 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 596, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_cqe = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":601
 *         swp = 'SW parsing caps:\n' +\
 *               ident_format.format('SW parsing offloads',
 *                                   swp_to_str(self.dv.sw_parsing_caps.sw_parsing_offloads)) +\             # <<<<<<<<<<<<<<
 *               ident_format.format('supported QP types',
 *                                   qpts_to_str(self.dv.sw_parsing_caps.supported_qpts))
*/
  __pyx_t_4 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_swp_to_str); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 601, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyLong_From_unsigned_int(__pyx_v_self->dv.sw_parsing_caps.sw_parsing_offloads); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 601, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
    assert(__pyx_t_4);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_4);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_5};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 601, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":600
 *                                   cqe_comp_to_str(self.dv.cqe_comp_caps.supported_format))
 *         swp = 'SW parsing caps:\n' +\
 *               ident_format.format('SW parsing offloads',             # <<<<<<<<<<<<<<
 *                                   swp_to_str(self.dv.sw_parsing_caps.sw_parsing_offloads)) +\
 *               ident_format.format('supported QP types',
*/
  __pyx_t_1 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_ident_format, __pyx_mstate_global->__pyx_kp_u_SW_parsing_offloads, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 600, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":599
 *               ident_format.format('supported formats',
 *                                   cqe_comp_to_str(self.dv.cqe_comp_caps.supported_format))
 *         swp = 'SW parsing caps:\n' +\             # <<<<<<<<<<<<<<
 *               ident_format.format('SW parsing offloads',
 *                                   swp_to_str(self.dv.sw_parsing_caps.sw_parsing_offloads)) +\
*/
  __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_SW_parsing_caps, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 599, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":603
 *                                   swp_to_str(self.dv.sw_parsing_caps.sw_parsing_offloads)) +\
 *               ident_format.format('supported QP types',
 *                                   qpts_to_str(self.dv.sw_parsing_caps.supported_qpts))             # <<<<<<<<<<<<<<
 *         strd = 'Striding RQ caps:\n' +\
 *                ident_format.format('min single stride log num of bytes',
*/
  __pyx_t_5 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_qpts_to_str); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 603, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyLong_From_unsigned_int(__pyx_v_self->dv.sw_parsing_caps.supported_qpts); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 603, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    assert(__pyx_t_5);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
    __Pyx_INCREF(__pyx_t_5);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 603, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":602
 *               ident_format.format('SW parsing offloads',
 *                                   swp_to_str(self.dv.sw_parsing_caps.sw_parsing_offloads)) +\
 *               ident_format.format('supported QP types',             # <<<<<<<<<<<<<<
 *                                   qpts_to_str(self.dv.sw_parsing_caps.supported_qpts))
 *         strd = 'Striding RQ caps:\n' +\
*/
  __pyx_t_4 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_ident_format, __pyx_mstate_global->__pyx_kp_u_supported_QP_types, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 602, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":601
 *         swp = 'SW parsing caps:\n' +\
 *               ident_format.format('SW parsing offloads',
 *                                   swp_to_str(self.dv.sw_parsing_caps.sw_parsing_offloads)) +\             # <<<<<<<<<<<<<<
 *               ident_format.format('supported QP types',
 *                                   qpts_to_str(self.dv.sw_parsing_caps.supported_qpts))
*/
  __pyx_t_1 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 601, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_swp = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":606
 *         strd = 'Striding RQ caps:\n' +\
 *                ident_format.format('min single stride log num of bytes',
 *                                    self.dv.striding_rq_caps.min_single_stride_log_num_of_bytes) +\             # <<<<<<<<<<<<<<
 *                ident_format.format('max single stride log num of bytes',
 *                                    self.dv.striding_rq_caps.max_single_stride_log_num_of_bytes) +\
*/
  __pyx_t_1 = __Pyx_PyLong_From_unsigned_int(__pyx_v_self->dv.striding_rq_caps.min_single_stride_log_num_of_bytes); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 606, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":605
 *                                   qpts_to_str(self.dv.sw_parsing_caps.supported_qpts))
 *         strd = 'Striding RQ caps:\n' +\
 *                ident_format.format('min single stride log num of bytes',             # <<<<<<<<<<<<<<
 *                                    self.dv.striding_rq_caps.min_single_stride_log_num_of_bytes) +\
 *                ident_format.format('max single stride log num of bytes',
*/
  __pyx_t_4 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_ident_format, __pyx_mstate_global->__pyx_kp_u_min_single_stride_log_num_of_byt, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 605, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":604
 *               ident_format.format('supported QP types',
 *                                   qpts_to_str(self.dv.sw_parsing_caps.supported_qpts))
 *         strd = 'Striding RQ caps:\n' +\             # <<<<<<<<<<<<<<
 *                ident_format.format('min single stride log num of bytes',
 *                                    self.dv.striding_rq_caps.min_single_stride_log_num_of_bytes) +\
*/
  __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_Striding_RQ_caps, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":608
 *                                    self.dv.striding_rq_caps.min_single_stride_log_num_of_bytes) +\
 *                ident_format.format('max single stride log num of bytes',
 *                                    self.dv.striding_rq_caps.max_single_stride_log_num_of_bytes) +\             # <<<<<<<<<<<<<<
 *                ident_format.format('min single wqe log num of strides',
 *                                    self.dv.striding_rq_caps.min_single_wqe_log_num_of_strides) +\
*/
  __pyx_t_4 = __Pyx_PyLong_From_unsigned_int(__pyx_v_self->dv.striding_rq_caps.max_single_stride_log_num_of_bytes); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 608, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":607
 *                ident_format.format('min single stride log num of bytes',
 *                                    self.dv.striding_rq_caps.min_single_stride_log_num_of_bytes) +\
 *                ident_format.format('max single stride log num of bytes',             # <<<<<<<<<<<<<<
 *                                    self.dv.striding_rq_caps.max_single_stride_log_num_of_bytes) +\
 *                ident_format.format('min single wqe log num of strides',
*/
  __pyx_t_2 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_ident_format, __pyx_mstate_global->__pyx_kp_u_max_single_stride_log_num_of_byt, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 607, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":606
 *         strd = 'Striding RQ caps:\n' +\
 *                ident_format.format('min single stride log num of bytes',
 *                                    self.dv.striding_rq_caps.min_single_stride_log_num_of_bytes) +\             # <<<<<<<<<<<<<<
 *                ident_format.format('max single stride log num of bytes',
 *                                    self.dv.striding_rq_caps.max_single_stride_log_num_of_bytes) +\
*/
  __pyx_t_4 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 606, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":610
 *                                    self.dv.striding_rq_caps.max_single_stride_log_num_of_bytes) +\
 *                ident_format.format('min single wqe log num of strides',
 *                                    self.dv.striding_rq_caps.min_single_wqe_log_num_of_strides) +\             # <<<<<<<<<<<<<<
 *                ident_format.format('max single wqe log num of strides',
 *                                    self.dv.striding_rq_caps.max_single_wqe_log_num_of_strides) +\
*/
  __pyx_t_2 = __Pyx_PyLong_From_unsigned_int(__pyx_v_self->dv.striding_rq_caps.min_single_wqe_log_num_of_strides); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 610, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":609
 *                ident_format.format('max single stride log num of bytes',
 *                                    self.dv.striding_rq_caps.max_single_stride_log_num_of_bytes) +\
 *                ident_format.format('min single wqe log num of strides',             # <<<<<<<<<<<<<<
 *                                    self.dv.striding_rq_caps.min_single_wqe_log_num_of_strides) +\
 *                ident_format.format('max single wqe log num of strides',
*/
  __pyx_t_1 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_ident_format, __pyx_mstate_global->__pyx_kp_u_min_single_wqe_log_num_of_stride, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 609, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":608
 *                                    self.dv.striding_rq_caps.min_single_stride_log_num_of_bytes) +\
 *                ident_format.format('max single stride log num of bytes',
 *                                    self.dv.striding_rq_caps.max_single_stride_log_num_of_bytes) +\             # <<<<<<<<<<<<<<
 *                ident_format.format('min single wqe log num of strides',
 *                                    self.dv.striding_rq_caps.min_single_wqe_log_num_of_strides) +\
*/
  __pyx_t_2 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 608, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":612
 *                                    self.dv.striding_rq_caps.min_single_wqe_log_num_of_strides) +\
 *                ident_format.format('max single wqe log num of strides',
 *                                    self.dv.striding_rq_caps.max_single_wqe_log_num_of_strides) +\             # <<<<<<<<<<<<<<
 *                ident_format.format('supported QP types',
 *                                    qpts_to_str(self.dv.striding_rq_caps.supported_qpts))
*/
  __pyx_t_1 = __Pyx_PyLong_From_unsigned_int(__pyx_v_self->dv.striding_rq_caps.max_single_wqe_log_num_of_strides); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 612, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":611
 *                ident_format.format('min single wqe log num of strides',
 *                                    self.dv.striding_rq_caps.min_single_wqe_log_num_of_strides) +\
 *                ident_format.format('max single wqe log num of strides',             # <<<<<<<<<<<<<<
 *                                    self.dv.striding_rq_caps.max_single_wqe_log_num_of_strides) +\
 *                ident_format.format('supported QP types',
*/
  __pyx_t_4 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_ident_format, __pyx_mstate_global->__pyx_kp_u_max_single_wqe_log_num_of_stride, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 611, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":610
 *                                    self.dv.striding_rq_caps.max_single_stride_log_num_of_bytes) +\
 *                ident_format.format('min single wqe log num of strides',
 *                                    self.dv.striding_rq_caps.min_single_wqe_log_num_of_strides) +\             # <<<<<<<<<<<<<<
 *                ident_format.format('max single wqe log num of strides',
 *                                    self.dv.striding_rq_caps.max_single_wqe_log_num_of_strides) +\
*/
  __pyx_t_1 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 610, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":614
 *                                    self.dv.striding_rq_caps.max_single_wqe_log_num_of_strides) +\
 *                ident_format.format('supported QP types',
 *                                    qpts_to_str(self.dv.striding_rq_caps.supported_qpts))             # <<<<<<<<<<<<<<
 *         stream = 'DCI stream caps:\n' +\
 *                   ident_format.format('max log num concurrent streams',
*/
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_qpts_to_str); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 614, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyLong_From_unsigned_int(__pyx_v_self->dv.striding_rq_caps.supported_qpts); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 614, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_5};
    __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 614, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":613
 *                ident_format.format('max single wqe log num of strides',
 *                                    self.dv.striding_rq_caps.max_single_wqe_log_num_of_strides) +\
 *                ident_format.format('supported QP types',             # <<<<<<<<<<<<<<
 *                                    qpts_to_str(self.dv.striding_rq_caps.supported_qpts))
 *         stream = 'DCI stream caps:\n' +\
*/
  __pyx_t_3 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_ident_format, __pyx_mstate_global->__pyx_kp_u_supported_QP_types, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 613, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":612
 *                                    self.dv.striding_rq_caps.min_single_wqe_log_num_of_strides) +\
 *                ident_format.format('max single wqe log num of strides',
 *                                    self.dv.striding_rq_caps.max_single_wqe_log_num_of_strides) +\             # <<<<<<<<<<<<<<
 *                ident_format.format('supported QP types',
 *                                    qpts_to_str(self.dv.striding_rq_caps.supported_qpts))
*/
  __pyx_t_4 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 612, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_strd = ((PyObject*)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":617
 *         stream = 'DCI stream caps:\n' +\
 *                   ident_format.format('max log num concurrent streams',
 *                                       self.dv.dci_streams_caps.max_log_num_concurent) +\             # <<<<<<<<<<<<<<
 *                   ident_format.format('max log num errored streams',
 *                                       self.dv.dci_streams_caps.max_log_num_errored)
*/
  __pyx_t_4 = __Pyx_PyLong_From_uint8_t(__pyx_v_self->dv.dci_streams_caps.max_log_num_concurent); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 617, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":616
 *                                    qpts_to_str(self.dv.striding_rq_caps.supported_qpts))
 *         stream = 'DCI stream caps:\n' +\
 *                   ident_format.format('max log num concurrent streams',             # <<<<<<<<<<<<<<
 *                                       self.dv.dci_streams_caps.max_log_num_concurent) +\
 *                   ident_format.format('max log num errored streams',
*/
  __pyx_t_3 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_ident_format, __pyx_mstate_global->__pyx_kp_u_max_log_num_concurrent_streams, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 616, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":615
 *                ident_format.format('supported QP types',
 *                                    qpts_to_str(self.dv.striding_rq_caps.supported_qpts))
 *         stream = 'DCI stream caps:\n' +\             # <<<<<<<<<<<<<<
 *                   ident_format.format('max log num concurrent streams',
 *                                       self.dv.dci_streams_caps.max_log_num_concurent) +\
*/
  __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_DCI_stream_caps, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 615, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":619
 *                                       self.dv.dci_streams_caps.max_log_num_concurent) +\
 *                   ident_format.format('max log num errored streams',
 *                                       self.dv.dci_streams_caps.max_log_num_errored)             # <<<<<<<<<<<<<<
 *         return print_format.format('Version', self.dv.version) +\
 *                print_format.format('Flags',
*/
  __pyx_t_3 = __Pyx_PyLong_From_uint8_t(__pyx_v_self->dv.dci_streams_caps.max_log_num_errored); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 619, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":618
 *                   ident_format.format('max log num concurrent streams',
 *                                       self.dv.dci_streams_caps.max_log_num_concurent) +\
 *                   ident_format.format('max log num errored streams',             # <<<<<<<<<<<<<<
 *                                       self.dv.dci_streams_caps.max_log_num_errored)
 *         return print_format.format('Version', self.dv.version) +\
*/
  __pyx_t_1 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_ident_format, __pyx_mstate_global->__pyx_kp_u_max_log_num_errored_streams, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 618, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":617
 *         stream = 'DCI stream caps:\n' +\
 *                   ident_format.format('max log num concurrent streams',
 *                                       self.dv.dci_streams_caps.max_log_num_concurent) +\             # <<<<<<<<<<<<<<
 *                   ident_format.format('max log num errored streams',
 *                                       self.dv.dci_streams_caps.max_log_num_errored)
*/
  __pyx_t_3 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 617, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_stream = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":620
 *                   ident_format.format('max log num errored streams',
 *                                       self.dv.dci_streams_caps.max_log_num_errored)
 *         return print_format.format('Version', self.dv.version) +\             # <<<<<<<<<<<<<<
 *                print_format.format('Flags',
 *                                    context_flags_to_str(self.dv.flags)) +\
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyLong_From_unsigned_char(__pyx_v_self->dv.version); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 620, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_n_u_Version, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 620, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":622
 *         return print_format.format('Version', self.dv.version) +\
 *                print_format.format('Flags',
 *                                    context_flags_to_str(self.dv.flags)) +\             # <<<<<<<<<<<<<<
 *                print_format.format('comp mask',
 *                                    context_comp_mask_to_str(self.dv.comp_mask)) +\
*/
  __pyx_t_4 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_context_flags_to_str); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 622, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyLong_From_unsigned_long(__pyx_v_self->dv.flags); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 622, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
    assert(__pyx_t_4);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
    __Pyx_INCREF(__pyx_t_4);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_2};
    __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 622, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":621
 *                                       self.dv.dci_streams_caps.max_log_num_errored)
 *         return print_format.format('Version', self.dv.version) +\
 *                print_format.format('Flags',             # <<<<<<<<<<<<<<
 *                                    context_flags_to_str(self.dv.flags)) +\
 *                print_format.format('comp mask',
*/
  __pyx_t_5 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_n_u_Flags, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 621, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":620
 *                   ident_format.format('max log num errored streams',
 *                                       self.dv.dci_streams_caps.max_log_num_errored)
 *         return print_format.format('Version', self.dv.version) +\             # <<<<<<<<<<<<<<
 *                print_format.format('Flags',
 *                                    context_flags_to_str(self.dv.flags)) +\
*/
  __pyx_t_3 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 620, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":624
 *                                    context_flags_to_str(self.dv.flags)) +\
 *                print_format.format('comp mask',
 *                                    context_comp_mask_to_str(self.dv.comp_mask)) +\             # <<<<<<<<<<<<<<
 *                cqe + swp + strd + stream +\
 *                print_format.format('Tunnel offloads caps',
*/
  __pyx_t_1 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_context_comp_mask_to_str); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 624, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyLong_From_unsigned_long(__pyx_v_self->dv.comp_mask); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 624, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
    assert(__pyx_t_1);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_2, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_4};
    __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 624, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":623
 *                print_format.format('Flags',
 *                                    context_flags_to_str(self.dv.flags)) +\
 *                print_format.format('comp mask',             # <<<<<<<<<<<<<<
 *                                    context_comp_mask_to_str(self.dv.comp_mask)) +\
 *                cqe + swp + strd + stream +\
*/
  __pyx_t_2 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_kp_u_comp_mask_2, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 623, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":622
 *         return print_format.format('Version', self.dv.version) +\
 *                print_format.format('Flags',
 *                                    context_flags_to_str(self.dv.flags)) +\             # <<<<<<<<<<<<<<
 *                print_format.format('comp mask',
 *                                    context_comp_mask_to_str(self.dv.comp_mask)) +\
*/
  __pyx_t_5 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 622, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":624
 *                                    context_flags_to_str(self.dv.flags)) +\
 *                print_format.format('comp mask',
 *                                    context_comp_mask_to_str(self.dv.comp_mask)) +\             # <<<<<<<<<<<<<<
 *                cqe + swp + strd + stream +\
 *                print_format.format('Tunnel offloads caps',
*/
  __pyx_t_2 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_5, __pyx_v_cqe); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 624, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":625
 *                print_format.format('comp mask',
 *                                    context_comp_mask_to_str(self.dv.comp_mask)) +\
 *                cqe + swp + strd + stream +\             # <<<<<<<<<<<<<<
 *                print_format.format('Tunnel offloads caps',
 *                                    tunnel_offloads_to_str(self.dv.tunnel_offloads_caps)) +\
*/
  __pyx_t_5 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_2, __pyx_v_swp); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 625, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_5, __pyx_v_strd); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 625, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_2, __pyx_v_stream); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 625, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":627
 *                cqe + swp + strd + stream +\
 *                print_format.format('Tunnel offloads caps',
 *                                    tunnel_offloads_to_str(self.dv.tunnel_offloads_caps)) +\             # <<<<<<<<<<<<<<
 *                print_format.format('Max dynamic BF registers',
 *                                    self.dv.max_dynamic_bfregs) +\
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_tunnel_offloads_to_str); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 627, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = __Pyx_PyLong_From_unsigned_int(__pyx_v_self->dv.tunnel_offloads_caps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 627, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_1};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 627, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":626
 *                                    context_comp_mask_to_str(self.dv.comp_mask)) +\
 *                cqe + swp + strd + stream +\
 *                print_format.format('Tunnel offloads caps',             # <<<<<<<<<<<<<<
 *                                    tunnel_offloads_to_str(self.dv.tunnel_offloads_caps)) +\
 *                print_format.format('Max dynamic BF registers',
*/
  __pyx_t_4 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_kp_u_Tunnel_offloads_caps, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 626, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":625
 *                print_format.format('comp mask',
 *                                    context_comp_mask_to_str(self.dv.comp_mask)) +\
 *                cqe + swp + strd + stream +\             # <<<<<<<<<<<<<<
 *                print_format.format('Tunnel offloads caps',
 *                                    tunnel_offloads_to_str(self.dv.tunnel_offloads_caps)) +\
*/
  __pyx_t_2 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 625, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":629
 *                                    tunnel_offloads_to_str(self.dv.tunnel_offloads_caps)) +\
 *                print_format.format('Max dynamic BF registers',
 *                                    self.dv.max_dynamic_bfregs) +\             # <<<<<<<<<<<<<<
 *                print_format.format('Max clock info update [nsec]',
 *                                    self.dv.max_clock_info_update_nsec) +\
*/
  __pyx_t_4 = __Pyx_PyLong_From_unsigned_int(__pyx_v_self->dv.max_dynamic_bfregs); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 629, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":628
 *                print_format.format('Tunnel offloads caps',
 *                                    tunnel_offloads_to_str(self.dv.tunnel_offloads_caps)) +\
 *                print_format.format('Max dynamic BF registers',             # <<<<<<<<<<<<<<
 *                                    self.dv.max_dynamic_bfregs) +\
 *                print_format.format('Max clock info update [nsec]',
*/
  __pyx_t_5 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_kp_u_Max_dynamic_BF_registers, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 628, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":627
 *                cqe + swp + strd + stream +\
 *                print_format.format('Tunnel offloads caps',
 *                                    tunnel_offloads_to_str(self.dv.tunnel_offloads_caps)) +\             # <<<<<<<<<<<<<<
 *                print_format.format('Max dynamic BF registers',
 *                                    self.dv.max_dynamic_bfregs) +\
*/
  __pyx_t_4 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 627, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":631
 *                                    self.dv.max_dynamic_bfregs) +\
 *                print_format.format('Max clock info update [nsec]',
 *                                    self.dv.max_clock_info_update_nsec) +\             # <<<<<<<<<<<<<<
 *                print_format.format('Flow action flags',
 *                                    self.dv.flow_action_flags) +\
*/
  __pyx_t_5 = __Pyx_PyLong_From_unsigned_long(__pyx_v_self->dv.max_clock_info_update_nsec); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 631, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":630
 *                print_format.format('Max dynamic BF registers',
 *                                    self.dv.max_dynamic_bfregs) +\
 *                print_format.format('Max clock info update [nsec]',             # <<<<<<<<<<<<<<
 *                                    self.dv.max_clock_info_update_nsec) +\
 *                print_format.format('Flow action flags',
*/
  __pyx_t_2 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_kp_u_Max_clock_info_update_nsec, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 630, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":629
 *                                    tunnel_offloads_to_str(self.dv.tunnel_offloads_caps)) +\
 *                print_format.format('Max dynamic BF registers',
 *                                    self.dv.max_dynamic_bfregs) +\             # <<<<<<<<<<<<<<
 *                print_format.format('Max clock info update [nsec]',
 *                                    self.dv.max_clock_info_update_nsec) +\
*/
  __pyx_t_5 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 629, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":633
 *                                    self.dv.max_clock_info_update_nsec) +\
 *                print_format.format('Flow action flags',
 *                                    self.dv.flow_action_flags) +\             # <<<<<<<<<<<<<<
 *                print_format.format('DC ODP caps', self.dv.dc_odp_caps) +\
 *                print_format.format('Num LAG ports', self.dv.num_lag_ports) +\
*/
  __pyx_t_2 = __Pyx_PyLong_From_unsigned_int(__pyx_v_self->dv.flow_action_flags); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 633, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":632
 *                print_format.format('Max clock info update [nsec]',
 *                                    self.dv.max_clock_info_update_nsec) +\
 *                print_format.format('Flow action flags',             # <<<<<<<<<<<<<<
 *                                    self.dv.flow_action_flags) +\
 *                print_format.format('DC ODP caps', self.dv.dc_odp_caps) +\
*/
  __pyx_t_4 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_kp_u_Flow_action_flags, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 632, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":631
 *                                    self.dv.max_dynamic_bfregs) +\
 *                print_format.format('Max clock info update [nsec]',
 *                                    self.dv.max_clock_info_update_nsec) +\             # <<<<<<<<<<<<<<
 *                print_format.format('Flow action flags',
 *                                    self.dv.flow_action_flags) +\
*/
  __pyx_t_2 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 631, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":634
 *                print_format.format('Flow action flags',
 *                                    self.dv.flow_action_flags) +\
 *                print_format.format('DC ODP caps', self.dv.dc_odp_caps) +\             # <<<<<<<<<<<<<<
 *                print_format.format('Num LAG ports', self.dv.num_lag_ports) +\
 *                print_format.format('Max WR memcpy length', self.dv.max_wr_memcpy_length) +\
*/
  __pyx_t_4 = __Pyx_PyLong_From_unsigned_int(__pyx_v_self->dv.dc_odp_caps); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 634, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_kp_u_DC_ODP_caps, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 634, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":633
 *                                    self.dv.max_clock_info_update_nsec) +\
 *                print_format.format('Flow action flags',
 *                                    self.dv.flow_action_flags) +\             # <<<<<<<<<<<<<<
 *                print_format.format('DC ODP caps', self.dv.dc_odp_caps) +\
 *                print_format.format('Num LAG ports', self.dv.num_lag_ports) +\
*/
  __pyx_t_4 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 633, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":635
 *                                    self.dv.flow_action_flags) +\
 *                print_format.format('DC ODP caps', self.dv.dc_odp_caps) +\
 *                print_format.format('Num LAG ports', self.dv.num_lag_ports) +\             # <<<<<<<<<<<<<<
 *                print_format.format('Max WR memcpy length', self.dv.max_wr_memcpy_length) +\
 *                print_format.format('Max DC Read Atomic', self.dv.max_dc_rd_atomic) +\
*/
  __pyx_t_5 = __Pyx_PyLong_From_uint8_t(__pyx_v_self->dv.num_lag_ports); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 635, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_kp_u_Num_LAG_ports, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 635, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":634
 *                print_format.format('Flow action flags',
 *                                    self.dv.flow_action_flags) +\
 *                print_format.format('DC ODP caps', self.dv.dc_odp_caps) +\             # <<<<<<<<<<<<<<
 *                print_format.format('Num LAG ports', self.dv.num_lag_ports) +\
 *                print_format.format('Max WR memcpy length', self.dv.max_wr_memcpy_length) +\
*/
  __pyx_t_5 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 634, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":636
 *                print_format.format('DC ODP caps', self.dv.dc_odp_caps) +\
 *                print_format.format('Num LAG ports', self.dv.num_lag_ports) +\
 *                print_format.format('Max WR memcpy length', self.dv.max_wr_memcpy_length) +\             # <<<<<<<<<<<<<<
 *                print_format.format('Max DC Read Atomic', self.dv.max_dc_rd_atomic) +\
 *                print_format.format('Max DC Init Read Atomic', self.dv.max_dc_init_rd_atomic)
*/
  __pyx_t_2 = __Pyx_PyLong_FromSize_t(__pyx_v_self->dv.max_wr_memcpy_length); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 636, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_kp_u_Max_WR_memcpy_length, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 636, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":635
 *                                    self.dv.flow_action_flags) +\
 *                print_format.format('DC ODP caps', self.dv.dc_odp_caps) +\
 *                print_format.format('Num LAG ports', self.dv.num_lag_ports) +\             # <<<<<<<<<<<<<<
 *                print_format.format('Max WR memcpy length', self.dv.max_wr_memcpy_length) +\
 *                print_format.format('Max DC Read Atomic', self.dv.max_dc_rd_atomic) +\
*/
  __pyx_t_2 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 635, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":637
 *                print_format.format('Num LAG ports', self.dv.num_lag_ports) +\
 *                print_format.format('Max WR memcpy length', self.dv.max_wr_memcpy_length) +\
 *                print_format.format('Max DC Read Atomic', self.dv.max_dc_rd_atomic) +\             # <<<<<<<<<<<<<<
 *                print_format.format('Max DC Init Read Atomic', self.dv.max_dc_init_rd_atomic)
 * 
*/
  __pyx_t_4 = __pyx_convert__to_py_struct__mlx5dv_context(__pyx_v_self->dv); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 637, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_max_dc_rd_atomic); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 637, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_kp_u_Max_DC_Read_Atomic, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 637, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":636
 *                print_format.format('DC ODP caps', self.dv.dc_odp_caps) +\
 *                print_format.format('Num LAG ports', self.dv.num_lag_ports) +\
 *                print_format.format('Max WR memcpy length', self.dv.max_wr_memcpy_length) +\             # <<<<<<<<<<<<<<
 *                print_format.format('Max DC Read Atomic', self.dv.max_dc_rd_atomic) +\
 *                print_format.format('Max DC Init Read Atomic', self.dv.max_dc_init_rd_atomic)
*/
  __pyx_t_5 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 636, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":638
 *                print_format.format('Max WR memcpy length', self.dv.max_wr_memcpy_length) +\
 *                print_format.format('Max DC Read Atomic', self.dv.max_dc_rd_atomic) +\
 *                print_format.format('Max DC Init Read Atomic', self.dv.max_dc_init_rd_atomic)             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_4 = __pyx_convert__to_py_struct__mlx5dv_context(__pyx_v_self->dv); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 638, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_max_dc_init_rd_atomic); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 638, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_kp_u_Max_DC_Init_Read_Atomic, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 638, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":637
 *                print_format.format('Num LAG ports', self.dv.num_lag_ports) +\
 *                print_format.format('Max WR memcpy length', self.dv.max_wr_memcpy_length) +\
 *                print_format.format('Max DC Read Atomic', self.dv.max_dc_rd_atomic) +\             # <<<<<<<<<<<<<<
 *                print_format.format('Max DC Init Read Atomic', self.dv.max_dc_init_rd_atomic)
 * 
*/
  __pyx_t_2 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 637, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":591
 *         return self.dv.ooo_recv_wrs_caps
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         print_format = '{:20}: {:<20}\n'
 *         ident_format = '  {:20}: {:<20}\n'
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVContext.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_print_format);
  __Pyx_XDECREF(__pyx_v_ident_format);
  __Pyx_XDECREF(__pyx_v_cqe);
  __Pyx_XDECREF(__pyx_v_swp);
  __Pyx_XDECREF(__pyx_v_strd);
  __Pyx_XDECREF(__pyx_v_stream);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "Pickling of struct members such as self.dv must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_3__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_3__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_2__reduce_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "Pickling of struct members such as self.dv must be explicitly requested with @auto_pickle(True)"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "Pickling of struct members such as self.dv must be explicitly requested with @auto_pickle(True)"
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_Pickling_of_struct_members_such_2, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "Pickling of struct members such as self.dv must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVContext.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "Pickling of struct members such as self.dv must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "Pickling of struct members such as self.dv must be explicitly requested with @auto_pickle(True)"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_5__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_5__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVContext.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_4__setstate_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "Pickling of struct members such as self.dv must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "Pickling of struct members such as self.dv must be explicitly requested with @auto_pickle(True)"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_Pickling_of_struct_members_such_2, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "Pickling of struct members such as self.dv must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "Pickling of struct members such as self.dv must be explicitly requested with @auto_pickle(True)"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVContext.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":646
 *     for DC QP creation.
 *     """
 *     def __init__(self, log_num_concurent=0, log_num_errored=0):             # <<<<<<<<<<<<<<
 *         """
 *         Initializes an Mlx5DCIStreamInitAttr object with the given DC
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr___init__, "\n        Initializes an Mlx5DCIStreamInitAttr object with the given DC\n        log_num_concurent and log_num_errored.\n        :param log_num_concurent: Number of dci stream channels.\n        :param log_num_errored: Number of dci error stream channels\n                                before moving DCI to error.\n        :return: An initialized object\n        ");
#if CYTHON_UPDATE_DESCRIPTOR_DOC
struct wrapperbase __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr___init__;
#endif
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_log_num_concurent = 0;
  PyObject *__pyx_v_log_num_errored = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_log_num_concurent,&__pyx_mstate_global->__pyx_n_u_log_num_errored,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 646, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 646, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 646, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(0, 646, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 646, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 646, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
    }
    __pyx_v_log_num_concurent = values[0];
    __pyx_v_log_num_errored = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 2, __pyx_nargs); __PYX_ERR(0, 646, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DCIStreamInitAttr.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr___init__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr *)__pyx_v_self), __pyx_v_log_num_concurent, __pyx_v_log_num_errored);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr *__pyx_v_self, PyObject *__pyx_v_log_num_concurent, PyObject *__pyx_v_log_num_errored) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  uint8_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":655
 *         :return: An initialized object
 *         """
 *         super().__init__()             # <<<<<<<<<<<<<<
 *         self.dci_streams.log_num_concurent = log_num_concurent
 *         self.dci_streams.log_num_errored = log_num_errored
*/
  __pyx_t_4 = NULL;
  __pyx_t_5 = 1;
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, ((PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr), ((PyObject *)__pyx_v_self)};
    __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_super, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 655, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_t_2 = __pyx_t_3;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_init, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 655, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":656
 *         """
 *         super().__init__()
 *         self.dci_streams.log_num_concurent = log_num_concurent             # <<<<<<<<<<<<<<
 *         self.dci_streams.log_num_errored = log_num_errored
 * 
*/
  __pyx_t_6 = __Pyx_PyLong_As_uint8_t(__pyx_v_log_num_concurent); if (unlikely((__pyx_t_6 == ((uint8_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 656, __pyx_L1_error)
  __pyx_v_self->dci_streams.log_num_concurent = __pyx_t_6;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":657
 *         super().__init__()
 *         self.dci_streams.log_num_concurent = log_num_concurent
 *         self.dci_streams.log_num_errored = log_num_errored             # <<<<<<<<<<<<<<
 * 
 *     def __str__(self):
*/
  __pyx_t_6 = __Pyx_PyLong_As_uint8_t(__pyx_v_log_num_errored); if (unlikely((__pyx_t_6 == ((uint8_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 657, __pyx_L1_error)
  __pyx_v_self->dci_streams.log_num_errored = __pyx_t_6;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":646
 *     for DC QP creation.
 *     """
 *     def __init__(self, log_num_concurent=0, log_num_errored=0):             # <<<<<<<<<<<<<<
 *         """
 *         Initializes an Mlx5DCIStreamInitAttr object with the given DC
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DCIStreamInitAttr.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":659
 *         self.dci_streams.log_num_errored = log_num_errored
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('DCI Stream log_num_concurent', self.dci_streams.log_num_concurent) +\
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_3__str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_3__str__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_2__str__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_2__str__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr *__pyx_v_self) {
  PyObject *__pyx_v_print_format = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":660
 * 
 *     def __str__(self):
 *         print_format = '{:20}: {:<20}\n'             # <<<<<<<<<<<<<<
 *         return print_format.format('DCI Stream log_num_concurent', self.dci_streams.log_num_concurent) +\
 *                print_format.format('DCI Stream log_num_errored', self.dci_streams.log_num_errored)
*/
  __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_20_20);
  __pyx_v_print_format = __pyx_mstate_global->__pyx_kp_u_20_20;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":661
 *     def __str__(self):
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('DCI Stream log_num_concurent', self.dci_streams.log_num_concurent) +\             # <<<<<<<<<<<<<<
 *                print_format.format('DCI Stream log_num_errored', self.dci_streams.log_num_errored)
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(__pyx_v_self->dci_streams.log_num_concurent); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 661, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_kp_u_DCI_Stream_log_num_concurent, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 661, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":662
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('DCI Stream log_num_concurent', self.dci_streams.log_num_concurent) +\
 *                print_format.format('DCI Stream log_num_errored', self.dci_streams.log_num_errored)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(__pyx_v_self->dci_streams.log_num_errored); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 662, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_kp_u_DCI_Stream_log_num_errored, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 662, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":661
 *     def __str__(self):
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('DCI Stream log_num_concurent', self.dci_streams.log_num_concurent) +\             # <<<<<<<<<<<<<<
 *                print_format.format('DCI Stream log_num_errored', self.dci_streams.log_num_errored)
 * 
*/
  __pyx_t_1 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 661, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":659
 *         self.dci_streams.log_num_errored = log_num_errored
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('DCI Stream log_num_concurent', self.dci_streams.log_num_concurent) +\
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DCIStreamInitAttr.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_print_format);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":664
 *                print_format.format('DCI Stream log_num_errored', self.dci_streams.log_num_errored)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def log_num_concurent(self):
 *         return self.dci_streams.log_num_concurent
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_17log_num_concurent_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_17log_num_concurent_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_17log_num_concurent___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_17log_num_concurent___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":666
 *     @property
 *     def log_num_concurent(self):
 *         return self.dci_streams.log_num_concurent             # <<<<<<<<<<<<<<
 *     @log_num_concurent.setter
 *     def log_num_concurent(self, val):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(__pyx_v_self->dci_streams.log_num_concurent); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 666, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":664
 *                print_format.format('DCI Stream log_num_errored', self.dci_streams.log_num_errored)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def log_num_concurent(self):
 *         return self.dci_streams.log_num_concurent
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DCIStreamInitAttr.log_num_concurent.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":667
 *     def log_num_concurent(self):
 *         return self.dci_streams.log_num_concurent
 *     @log_num_concurent.setter             # <<<<<<<<<<<<<<
 *     def log_num_concurent(self, val):
 *         self.dci_streams.log_num_concurent=val
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_17log_num_concurent_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_17log_num_concurent_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_17log_num_concurent_2__set__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr *)__pyx_v_self), ((PyObject *)__pyx_v_val));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_17log_num_concurent_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr *__pyx_v_self, PyObject *__pyx_v_val) {
  int __pyx_r;
  uint8_t __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":669
 *     @log_num_concurent.setter
 *     def log_num_concurent(self, val):
 *         self.dci_streams.log_num_concurent=val             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_t_1 = __Pyx_PyLong_As_uint8_t(__pyx_v_val); if (unlikely((__pyx_t_1 == ((uint8_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 669, __pyx_L1_error)
  __pyx_v_self->dci_streams.log_num_concurent = __pyx_t_1;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":667
 *     def log_num_concurent(self):
 *         return self.dci_streams.log_num_concurent
 *     @log_num_concurent.setter             # <<<<<<<<<<<<<<
 *     def log_num_concurent(self, val):
 *         self.dci_streams.log_num_concurent=val
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DCIStreamInitAttr.log_num_concurent.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":671
 *         self.dci_streams.log_num_concurent=val
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def log_num_errored(self):
 *         return self.dci_streams.log_num_errored
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_15log_num_errored_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_15log_num_errored_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_15log_num_errored___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_15log_num_errored___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":673
 *     @property
 *     def log_num_errored(self):
 *         return self.dci_streams.log_num_errored             # <<<<<<<<<<<<<<
 *     @log_num_errored.setter
 *     def log_num_errored(self, val):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(__pyx_v_self->dci_streams.log_num_errored); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 673, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":671
 *         self.dci_streams.log_num_concurent=val
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def log_num_errored(self):
 *         return self.dci_streams.log_num_errored
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DCIStreamInitAttr.log_num_errored.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":674
 *     def log_num_errored(self):
 *         return self.dci_streams.log_num_errored
 *     @log_num_errored.setter             # <<<<<<<<<<<<<<
 *     def log_num_errored(self, val):
 *         self.dci_streams.log_num_errored=val
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_15log_num_errored_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_15log_num_errored_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_15log_num_errored_2__set__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr *)__pyx_v_self), ((PyObject *)__pyx_v_val));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_15log_num_errored_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr *__pyx_v_self, PyObject *__pyx_v_val) {
  int __pyx_r;
  uint8_t __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":676
 *     @log_num_errored.setter
 *     def log_num_errored(self, val):
 *         self.dci_streams.log_num_errored=val             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_1 = __Pyx_PyLong_As_uint8_t(__pyx_v_val); if (unlikely((__pyx_t_1 == ((uint8_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 676, __pyx_L1_error)
  __pyx_v_self->dci_streams.log_num_errored = __pyx_t_1;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":674
 *     def log_num_errored(self):
 *         return self.dci_streams.log_num_errored
 *     @log_num_errored.setter             # <<<<<<<<<<<<<<
 *     def log_num_errored(self, val):
 *         self.dci_streams.log_num_errored=val
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DCIStreamInitAttr.log_num_errored.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "Pickling of struct members such as self.dci_streams must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_4__reduce_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "Pickling of struct members such as self.dci_streams must be explicitly requested with @auto_pickle(True)"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "Pickling of struct members such as self.dci_streams must be explicitly requested with @auto_pickle(True)"
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_Pickling_of_struct_members_such_3, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "Pickling of struct members such as self.dci_streams must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DCIStreamInitAttr.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "Pickling of struct members such as self.dci_streams must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "Pickling of struct members such as self.dci_streams must be explicitly requested with @auto_pickle(True)"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DCIStreamInitAttr.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_6__setstate_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "Pickling of struct members such as self.dci_streams must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "Pickling of struct members such as self.dci_streams must be explicitly requested with @auto_pickle(True)"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_Pickling_of_struct_members_such_3, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "Pickling of struct members such as self.dci_streams must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "Pickling of struct members such as self.dci_streams must be explicitly requested with @auto_pickle(True)"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DCIStreamInitAttr.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":684
 *     for DC QP creation.
 *     """
 *     def __init__(self, dc_type=dve.MLX5DV_DCTYPE_DCI, dct_access_key=0, dci_streams=None):             # <<<<<<<<<<<<<<
 *         """
 *         Initializes an Mlx5DVDCInitAttr object with the given DC type and DCT
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr___init__, "\n        Initializes an Mlx5DVDCInitAttr object with the given DC type and DCT\n        access key.\n        :param dc_type: Which DC QP to create (DCI/DCT).\n        :param dct_access_key: Access key to be used by the DCT\n        :param dci_streams: Mlx5DCIStreamInitAttr\n        :return: An initializes object\n        ");
#if CYTHON_UPDATE_DESCRIPTOR_DOC
struct wrapperbase __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr___init__;
#endif
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_dc_type = 0;
  PyObject *__pyx_v_dct_access_key = 0;
  PyObject *__pyx_v_dci_streams = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_dc_type,&__pyx_mstate_global->__pyx_n_u_dct_access_key,&__pyx_mstate_global->__pyx_n_u_dci_streams,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 684, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 684, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 684, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 684, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(0, 684, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef(__pyx_mstate_global->__pyx_k__4);
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 684, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 684, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 684, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef(__pyx_mstate_global->__pyx_k__4);
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __pyx_v_dc_type = values[0];
    __pyx_v_dct_access_key = values[1];
    __pyx_v_dci_streams = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 3, __pyx_nargs); __PYX_ERR(0, 684, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVDCInitAttr.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr___init__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr *)__pyx_v_self), __pyx_v_dc_type, __pyx_v_dct_access_key, __pyx_v_dci_streams);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr *__pyx_v_self, PyObject *__pyx_v_dc_type, PyObject *__pyx_v_dct_access_key, PyObject *__pyx_v_dci_streams) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  enum mlx5dv_dc_type __pyx_t_6;
  unsigned long __pyx_t_7;
  int __pyx_t_8;
  uint8_t __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":693
 *         :return: An initializes object
 *         """
 *         super().__init__()             # <<<<<<<<<<<<<<
 *         self.attr.dc_type = dc_type
 *         self.attr.dct_access_key = dct_access_key
*/
  __pyx_t_4 = NULL;
  __pyx_t_5 = 1;
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, ((PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr), ((PyObject *)__pyx_v_self)};
    __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_super, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 693, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_t_2 = __pyx_t_3;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_init, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 693, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":694
 *         """
 *         super().__init__()
 *         self.attr.dc_type = dc_type             # <<<<<<<<<<<<<<
 *         self.attr.dct_access_key = dct_access_key
 *         if dci_streams is not None:
*/
  __pyx_t_6 = ((enum mlx5dv_dc_type)__Pyx_PyLong_As_enum__mlx5dv_dc_type(__pyx_v_dc_type)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 694, __pyx_L1_error)
  __pyx_v_self->attr.dc_type = __pyx_t_6;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":695
 *         super().__init__()
 *         self.attr.dc_type = dc_type
 *         self.attr.dct_access_key = dct_access_key             # <<<<<<<<<<<<<<
 *         if dci_streams is not None:
 *             self.attr.dci_streams.log_num_concurent=dci_streams.log_num_concurent
*/
  __pyx_t_7 = __Pyx_PyLong_As_unsigned_long(__pyx_v_dct_access_key); if (unlikely((__pyx_t_7 == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(0, 695, __pyx_L1_error)
  __pyx_v_self->attr.dct_access_key = __pyx_t_7;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":696
 *         self.attr.dc_type = dc_type
 *         self.attr.dct_access_key = dct_access_key
 *         if dci_streams is not None:             # <<<<<<<<<<<<<<
 *             self.attr.dci_streams.log_num_concurent=dci_streams.log_num_concurent
 *             self.attr.dci_streams.log_num_errored=dci_streams.log_num_errored
*/
  __pyx_t_8 = (__pyx_v_dci_streams != Py_None);
  if (__pyx_t_8) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":697
 *         self.attr.dct_access_key = dct_access_key
 *         if dci_streams is not None:
 *             self.attr.dci_streams.log_num_concurent=dci_streams.log_num_concurent             # <<<<<<<<<<<<<<
 *             self.attr.dci_streams.log_num_errored=dci_streams.log_num_errored
 * 
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dci_streams, __pyx_mstate_global->__pyx_n_u_log_num_concurent); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 697, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_9 = __Pyx_PyLong_As_uint8_t(__pyx_t_1); if (unlikely((__pyx_t_9 == ((uint8_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 697, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_self->attr.dci_streams.log_num_concurent = __pyx_t_9;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":698
 *         if dci_streams is not None:
 *             self.attr.dci_streams.log_num_concurent=dci_streams.log_num_concurent
 *             self.attr.dci_streams.log_num_errored=dci_streams.log_num_errored             # <<<<<<<<<<<<<<
 * 
 *     def __str__(self):
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dci_streams, __pyx_mstate_global->__pyx_n_u_log_num_errored); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 698, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_9 = __Pyx_PyLong_As_uint8_t(__pyx_t_1); if (unlikely((__pyx_t_9 == ((uint8_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 698, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_self->attr.dci_streams.log_num_errored = __pyx_t_9;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":696
 *         self.attr.dc_type = dc_type
 *         self.attr.dct_access_key = dct_access_key
 *         if dci_streams is not None:             # <<<<<<<<<<<<<<
 *             self.attr.dci_streams.log_num_concurent=dci_streams.log_num_concurent
 *             self.attr.dci_streams.log_num_errored=dci_streams.log_num_errored
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":684
 *     for DC QP creation.
 *     """
 *     def __init__(self, dc_type=dve.MLX5DV_DCTYPE_DCI, dct_access_key=0, dci_streams=None):             # <<<<<<<<<<<<<<
 *         """
 *         Initializes an Mlx5DVDCInitAttr object with the given DC type and DCT
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVDCInitAttr.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":700
 *             self.attr.dci_streams.log_num_errored=dci_streams.log_num_errored
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('DC type', dc_type_to_str(self.attr.dc_type)) +\
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_3__str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_3__str__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_2__str__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_2__str__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr *__pyx_v_self) {
  PyObject *__pyx_v_print_format = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":701
 * 
 *     def __str__(self):
 *         print_format = '{:20}: {:<20}\n'             # <<<<<<<<<<<<<<
 *         return print_format.format('DC type', dc_type_to_str(self.attr.dc_type)) +\
 *                print_format.format('DCT access key', self.attr.dct_access_key) +\
*/
  __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_20_20);
  __pyx_v_print_format = __pyx_mstate_global->__pyx_kp_u_20_20;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":702
 *     def __str__(self):
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('DC type', dc_type_to_str(self.attr.dc_type)) +\             # <<<<<<<<<<<<<<
 *                print_format.format('DCT access key', self.attr.dct_access_key) +\
 *                print_format.format('DCI Stream log_num_concurent', self.attr.dci_streams.log_num_concurent) +\
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_dc_type_to_str); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 702, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(__pyx_v_self->attr.dc_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 702, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_5 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 702, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_t_3 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_kp_u_DC_type, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 702, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":703
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('DC type', dc_type_to_str(self.attr.dc_type)) +\
 *                print_format.format('DCT access key', self.attr.dct_access_key) +\             # <<<<<<<<<<<<<<
 *                print_format.format('DCI Stream log_num_concurent', self.attr.dci_streams.log_num_concurent) +\
 *                print_format.format('DCI Stream log_num_errored', self.attr.dci_streams.log_num_errored)
*/
  __pyx_t_1 = __Pyx_PyLong_From_unsigned_long(__pyx_v_self->attr.dct_access_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 703, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_kp_u_DCT_access_key, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 703, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":702
 *     def __str__(self):
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('DC type', dc_type_to_str(self.attr.dc_type)) +\             # <<<<<<<<<<<<<<
 *                print_format.format('DCT access key', self.attr.dct_access_key) +\
 *                print_format.format('DCI Stream log_num_concurent', self.attr.dci_streams.log_num_concurent) +\
*/
  __pyx_t_1 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 702, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":704
 *         return print_format.format('DC type', dc_type_to_str(self.attr.dc_type)) +\
 *                print_format.format('DCT access key', self.attr.dct_access_key) +\
 *                print_format.format('DCI Stream log_num_concurent', self.attr.dci_streams.log_num_concurent) +\             # <<<<<<<<<<<<<<
 *                print_format.format('DCI Stream log_num_errored', self.attr.dci_streams.log_num_errored)
 * 
*/
  __pyx_t_4 = __Pyx_PyLong_From_uint8_t(__pyx_v_self->attr.dci_streams.log_num_concurent); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 704, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_kp_u_DCI_Stream_log_num_concurent, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 704, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":703
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('DC type', dc_type_to_str(self.attr.dc_type)) +\
 *                print_format.format('DCT access key', self.attr.dct_access_key) +\             # <<<<<<<<<<<<<<
 *                print_format.format('DCI Stream log_num_concurent', self.attr.dci_streams.log_num_concurent) +\
 *                print_format.format('DCI Stream log_num_errored', self.attr.dci_streams.log_num_errored)
*/
  __pyx_t_4 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 703, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":705
 *                print_format.format('DCT access key', self.attr.dct_access_key) +\
 *                print_format.format('DCI Stream log_num_concurent', self.attr.dci_streams.log_num_concurent) +\
 *                print_format.format('DCI Stream log_num_errored', self.attr.dci_streams.log_num_errored)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_t_3 = __Pyx_PyLong_From_uint8_t(__pyx_v_self->attr.dci_streams.log_num_errored); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 705, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_kp_u_DCI_Stream_log_num_errored, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 705, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":704
 *         return print_format.format('DC type', dc_type_to_str(self.attr.dc_type)) +\
 *                print_format.format('DCT access key', self.attr.dct_access_key) +\
 *                print_format.format('DCI Stream log_num_concurent', self.attr.dci_streams.log_num_concurent) +\             # <<<<<<<<<<<<<<
 *                print_format.format('DCI Stream log_num_errored', self.attr.dci_streams.log_num_errored)
 * 
*/
  __pyx_t_3 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 704, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":700
 *             self.attr.dci_streams.log_num_errored=dci_streams.log_num_errored
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('DC type', dc_type_to_str(self.attr.dc_type)) +\
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVDCInitAttr.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_print_format);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":707
 *                print_format.format('DCI Stream log_num_errored', self.attr.dci_streams.log_num_errored)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dc_type(self):
 *         return self.attr.dc_type
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_7dc_type_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_7dc_type_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_7dc_type___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_7dc_type___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":709
 *     @property
 *     def dc_type(self):
 *         return self.attr.dc_type             # <<<<<<<<<<<<<<
 *     @dc_type.setter
 *     def dc_type(self, val):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(__pyx_v_self->attr.dc_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 709, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":707
 *                print_format.format('DCI Stream log_num_errored', self.attr.dci_streams.log_num_errored)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dc_type(self):
 *         return self.attr.dc_type
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVDCInitAttr.dc_type.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":710
 *     def dc_type(self):
 *         return self.attr.dc_type
 *     @dc_type.setter             # <<<<<<<<<<<<<<
 *     def dc_type(self, val):
 *         self.attr.dc_type = val
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_7dc_type_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_7dc_type_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_7dc_type_2__set__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr *)__pyx_v_self), ((PyObject *)__pyx_v_val));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_7dc_type_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr *__pyx_v_self, PyObject *__pyx_v_val) {
  int __pyx_r;
  enum mlx5dv_dc_type __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":712
 *     @dc_type.setter
 *     def dc_type(self, val):
 *         self.attr.dc_type = val             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_t_1 = ((enum mlx5dv_dc_type)__Pyx_PyLong_As_enum__mlx5dv_dc_type(__pyx_v_val)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 712, __pyx_L1_error)
  __pyx_v_self->attr.dc_type = __pyx_t_1;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":710
 *     def dc_type(self):
 *         return self.attr.dc_type
 *     @dc_type.setter             # <<<<<<<<<<<<<<
 *     def dc_type(self, val):
 *         self.attr.dc_type = val
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVDCInitAttr.dc_type.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":714
 *         self.attr.dc_type = val
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dct_access_key(self):
 *         return self.attr.dct_access_key
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_14dct_access_key_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_14dct_access_key_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_14dct_access_key___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_14dct_access_key___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":716
 *     @property
 *     def dct_access_key(self):
 *         return self.attr.dct_access_key             # <<<<<<<<<<<<<<
 *     @dct_access_key.setter
 *     def dct_access_key(self, val):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_unsigned_long(__pyx_v_self->attr.dct_access_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 716, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":714
 *         self.attr.dc_type = val
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dct_access_key(self):
 *         return self.attr.dct_access_key
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVDCInitAttr.dct_access_key.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":717
 *     def dct_access_key(self):
 *         return self.attr.dct_access_key
 *     @dct_access_key.setter             # <<<<<<<<<<<<<<
 *     def dct_access_key(self, val):
 *         self.attr.dct_access_key = val
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_14dct_access_key_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_14dct_access_key_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_14dct_access_key_2__set__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr *)__pyx_v_self), ((PyObject *)__pyx_v_val));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_14dct_access_key_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr *__pyx_v_self, PyObject *__pyx_v_val) {
  int __pyx_r;
  unsigned long __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":719
 *     @dct_access_key.setter
 *     def dct_access_key(self, val):
 *         self.attr.dct_access_key = val             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_t_1 = __Pyx_PyLong_As_unsigned_long(__pyx_v_val); if (unlikely((__pyx_t_1 == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(0, 719, __pyx_L1_error)
  __pyx_v_self->attr.dct_access_key = __pyx_t_1;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":717
 *     def dct_access_key(self):
 *         return self.attr.dct_access_key
 *     @dct_access_key.setter             # <<<<<<<<<<<<<<
 *     def dct_access_key(self, val):
 *         self.attr.dct_access_key = val
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVDCInitAttr.dct_access_key.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":721
 *         self.attr.dct_access_key = val
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dci_streams(self):
 *         return self.attr.dci_streams
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_11dci_streams_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_11dci_streams_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_11dci_streams___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_11dci_streams___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":723
 *     @property
 *     def dci_streams(self):
 *         return self.attr.dci_streams             # <<<<<<<<<<<<<<
 *     @dci_streams.setter
 *     def dci_streams(self, val):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_convert__to_py_struct__mlx5dv_dci_streams(__pyx_v_self->attr.dci_streams); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 723, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":721
 *         self.attr.dct_access_key = val
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dci_streams(self):
 *         return self.attr.dci_streams
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVDCInitAttr.dci_streams.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":724
 *     def dci_streams(self):
 *         return self.attr.dci_streams
 *     @dci_streams.setter             # <<<<<<<<<<<<<<
 *     def dci_streams(self, val):
 *         self.attr.dci_streams=val
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_11dci_streams_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_11dci_streams_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_11dci_streams_2__set__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr *)__pyx_v_self), ((PyObject *)__pyx_v_val));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_11dci_streams_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr *__pyx_v_self, PyObject *__pyx_v_val) {
  int __pyx_r;
  struct mlx5dv_dci_streams __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":726
 *     @dci_streams.setter
 *     def dci_streams(self, val):
 *         self.attr.dci_streams=val             # <<<<<<<<<<<<<<
 * 
 * cdef class Mlx5DVQPInitAttr(PyverbsObject):
*/
  __pyx_t_1 = __pyx_convert__from_py_struct__mlx5dv_dci_streams(__pyx_v_val); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 726, __pyx_L1_error)
  __pyx_v_self->attr.dci_streams = __pyx_t_1;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":724
 *     def dci_streams(self):
 *         return self.attr.dci_streams
 *     @dci_streams.setter             # <<<<<<<<<<<<<<
 *     def dci_streams(self, val):
 *         self.attr.dci_streams=val
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVDCInitAttr.dci_streams.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_4__reduce_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_Pickling_of_struct_members_such, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVDCInitAttr.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVDCInitAttr.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_6__setstate_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_Pickling_of_struct_members_such, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVDCInitAttr.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":733
 *     creation.
 *     """
 *     def __init__(self, comp_mask=0, create_flags=0,             # <<<<<<<<<<<<<<
 *                  Mlx5DVDCInitAttr dc_init_attr=None, send_ops_flags=0):
 *         """
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr___init__, "\n        Initializes an Mlx5DVQPInitAttr object with the given user data.\n        :param comp_mask: A bitmask specifying which fields are valid\n        :param create_flags: A bitwise OR of mlx5dv_qp_create_flags\n        :param dc_init_attr: Mlx5DVDCInitAttr object\n        :param send_ops_flags: A bitwise OR of mlx5dv_qp_create_send_ops_flags\n        :return: An initialized Mlx5DVQPInitAttr object\n        ");
#if CYTHON_UPDATE_DESCRIPTOR_DOC
struct wrapperbase __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr___init__;
#endif
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_comp_mask = 0;
  PyObject *__pyx_v_create_flags = 0;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr *__pyx_v_dc_init_attr = 0;
  PyObject *__pyx_v_send_ops_flags = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_comp_mask,&__pyx_mstate_global->__pyx_n_u_create_flags,&__pyx_mstate_global->__pyx_n_u_dc_init_attr,&__pyx_mstate_global->__pyx_n_u_send_ops_flags,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 733, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_VARARGS(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 733, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 733, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 733, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 733, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(0, 733, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":734
 *     """
 *     def __init__(self, comp_mask=0, create_flags=0,
 *                  Mlx5DVDCInitAttr dc_init_attr=None, send_ops_flags=0):             # <<<<<<<<<<<<<<
 *         """
 *         Initializes an Mlx5DVQPInitAttr object with the given user data.
*/
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
    } else {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_VARARGS(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 733, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 733, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 733, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 733, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
    }
    __pyx_v_comp_mask = values[0];
    __pyx_v_create_flags = values[1];
    __pyx_v_dc_init_attr = ((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr *)values[2]);
    __pyx_v_send_ops_flags = values[3];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 4, __pyx_nargs); __PYX_ERR(0, 733, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVQPInitAttr.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dc_init_attr), __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr, 1, "dc_init_attr", 0))) __PYX_ERR(0, 734, __pyx_L1_error)
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr___init__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *)__pyx_v_self), __pyx_v_comp_mask, __pyx_v_create_flags, __pyx_v_dc_init_attr, __pyx_v_send_ops_flags);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":733
 *     creation.
 *     """
 *     def __init__(self, comp_mask=0, create_flags=0,             # <<<<<<<<<<<<<<
 *                  Mlx5DVDCInitAttr dc_init_attr=None, send_ops_flags=0):
 *         """
*/

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *__pyx_v_self, PyObject *__pyx_v_comp_mask, PyObject *__pyx_v_create_flags, struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr *__pyx_v_dc_init_attr, PyObject *__pyx_v_send_ops_flags) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  unsigned long __pyx_t_6;
  unsigned int __pyx_t_7;
  int __pyx_t_8;
  enum mlx5dv_dc_type __pyx_t_9;
  struct mlx5dv_dci_streams __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":743
 *         :return: An initialized Mlx5DVQPInitAttr object
 *         """
 *         super().__init__()             # <<<<<<<<<<<<<<
 *         self.attr.comp_mask = comp_mask
 *         self.attr.create_flags = create_flags
*/
  __pyx_t_4 = NULL;
  __pyx_t_5 = 1;
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, ((PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr), ((PyObject *)__pyx_v_self)};
    __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_super, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 743, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_t_2 = __pyx_t_3;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_init, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 743, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":744
 *         """
 *         super().__init__()
 *         self.attr.comp_mask = comp_mask             # <<<<<<<<<<<<<<
 *         self.attr.create_flags = create_flags
 *         self.attr.send_ops_flags = send_ops_flags
*/
  __pyx_t_6 = __Pyx_PyLong_As_unsigned_long(__pyx_v_comp_mask); if (unlikely((__pyx_t_6 == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(0, 744, __pyx_L1_error)
  __pyx_v_self->attr.comp_mask = __pyx_t_6;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":745
 *         super().__init__()
 *         self.attr.comp_mask = comp_mask
 *         self.attr.create_flags = create_flags             # <<<<<<<<<<<<<<
 *         self.attr.send_ops_flags = send_ops_flags
 *         if dc_init_attr is not None:
*/
  __pyx_t_7 = __Pyx_PyLong_As_unsigned_int(__pyx_v_create_flags); if (unlikely((__pyx_t_7 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 745, __pyx_L1_error)
  __pyx_v_self->attr.create_flags = __pyx_t_7;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":746
 *         self.attr.comp_mask = comp_mask
 *         self.attr.create_flags = create_flags
 *         self.attr.send_ops_flags = send_ops_flags             # <<<<<<<<<<<<<<
 *         if dc_init_attr is not None:
 *             self.attr.dc_init_attr.dc_type = dc_init_attr.dc_type
*/
  __pyx_t_6 = __Pyx_PyLong_As_unsigned_long(__pyx_v_send_ops_flags); if (unlikely((__pyx_t_6 == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(0, 746, __pyx_L1_error)
  __pyx_v_self->attr.send_ops_flags = __pyx_t_6;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":747
 *         self.attr.create_flags = create_flags
 *         self.attr.send_ops_flags = send_ops_flags
 *         if dc_init_attr is not None:             # <<<<<<<<<<<<<<
 *             self.attr.dc_init_attr.dc_type = dc_init_attr.dc_type
 *             if comp_mask & dve.MLX5DV_QP_INIT_ATTR_MASK_DCI_STREAMS:
*/
  __pyx_t_8 = (((PyObject *)__pyx_v_dc_init_attr) != Py_None);
  if (__pyx_t_8) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":748
 *         self.attr.send_ops_flags = send_ops_flags
 *         if dc_init_attr is not None:
 *             self.attr.dc_init_attr.dc_type = dc_init_attr.dc_type             # <<<<<<<<<<<<<<
 *             if comp_mask & dve.MLX5DV_QP_INIT_ATTR_MASK_DCI_STREAMS:
 *                 self.attr.dc_init_attr.dci_streams = dc_init_attr.dci_streams
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_dc_init_attr), __pyx_mstate_global->__pyx_n_u_dc_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 748, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_9 = ((enum mlx5dv_dc_type)__Pyx_PyLong_As_enum__mlx5dv_dc_type(__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 748, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_self->attr.dc_init_attr.dc_type = __pyx_t_9;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":749
 *         if dc_init_attr is not None:
 *             self.attr.dc_init_attr.dc_type = dc_init_attr.dc_type
 *             if comp_mask & dve.MLX5DV_QP_INIT_ATTR_MASK_DCI_STREAMS:             # <<<<<<<<<<<<<<
 *                 self.attr.dc_init_attr.dci_streams = dc_init_attr.dci_streams
 *             else:
*/
    __pyx_t_1 = __Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_QP_INIT_ATTR_MASK_DCI_STREAMS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 749, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyNumber_And(__pyx_v_comp_mask, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 749, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 749, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_8) {

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":750
 *             self.attr.dc_init_attr.dc_type = dc_init_attr.dc_type
 *             if comp_mask & dve.MLX5DV_QP_INIT_ATTR_MASK_DCI_STREAMS:
 *                 self.attr.dc_init_attr.dci_streams = dc_init_attr.dci_streams             # <<<<<<<<<<<<<<
 *             else:
 *                 self.attr.dc_init_attr.dct_access_key = dc_init_attr.dct_access_key
*/
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_dc_init_attr), __pyx_mstate_global->__pyx_n_u_dci_streams); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 750, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_10 = __pyx_convert__from_py_struct__mlx5dv_dci_streams(__pyx_t_3); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 750, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_v_self->attr.dc_init_attr.dci_streams = __pyx_t_10;

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":749
 *         if dc_init_attr is not None:
 *             self.attr.dc_init_attr.dc_type = dc_init_attr.dc_type
 *             if comp_mask & dve.MLX5DV_QP_INIT_ATTR_MASK_DCI_STREAMS:             # <<<<<<<<<<<<<<
 *                 self.attr.dc_init_attr.dci_streams = dc_init_attr.dci_streams
 *             else:
*/
      goto __pyx_L4;
    }

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":752
 *                 self.attr.dc_init_attr.dci_streams = dc_init_attr.dci_streams
 *             else:
 *                 self.attr.dc_init_attr.dct_access_key = dc_init_attr.dct_access_key             # <<<<<<<<<<<<<<
 * 
 *     def __str__(self):
*/
    /*else*/ {
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_dc_init_attr), __pyx_mstate_global->__pyx_n_u_dct_access_key); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 752, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_6 = __Pyx_PyLong_As_unsigned_long(__pyx_t_3); if (unlikely((__pyx_t_6 == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(0, 752, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_v_self->attr.dc_init_attr.dct_access_key = __pyx_t_6;
    }
    __pyx_L4:;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":747
 *         self.attr.create_flags = create_flags
 *         self.attr.send_ops_flags = send_ops_flags
 *         if dc_init_attr is not None:             # <<<<<<<<<<<<<<
 *             self.attr.dc_init_attr.dc_type = dc_init_attr.dc_type
 *             if comp_mask & dve.MLX5DV_QP_INIT_ATTR_MASK_DCI_STREAMS:
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":733
 *     creation.
 *     """
 *     def __init__(self, comp_mask=0, create_flags=0,             # <<<<<<<<<<<<<<
 *                  Mlx5DVDCInitAttr dc_init_attr=None, send_ops_flags=0):
 *         """
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVQPInitAttr.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":754
 *                 self.attr.dc_init_attr.dct_access_key = dc_init_attr.dct_access_key
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('Comp mask',
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_3__str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_3__str__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_2__str__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_2__str__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *__pyx_v_self) {
  PyObject *__pyx_v_print_format = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":755
 * 
 *     def __str__(self):
 *         print_format = '{:20}: {:<20}\n'             # <<<<<<<<<<<<<<
 *         return print_format.format('Comp mask',
 *                                    qp_comp_mask_to_str(self.attr.comp_mask)) +\
*/
  __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_20_20);
  __pyx_v_print_format = __pyx_mstate_global->__pyx_kp_u_20_20;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":756
 *     def __str__(self):
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('Comp mask',             # <<<<<<<<<<<<<<
 *                                    qp_comp_mask_to_str(self.attr.comp_mask)) +\
 *                print_format.format('Create flags',
*/
  __Pyx_XDECREF(__pyx_r);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":757
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('Comp mask',
 *                                    qp_comp_mask_to_str(self.attr.comp_mask)) +\             # <<<<<<<<<<<<<<
 *                print_format.format('Create flags',
 *                                    qp_create_flags_to_str(self.attr.create_flags)) +\
*/
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_qp_comp_mask_to_str); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 757, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_From_unsigned_long(__pyx_v_self->attr.comp_mask); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 757, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_5 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 757, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":756
 *     def __str__(self):
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('Comp mask',             # <<<<<<<<<<<<<<
 *                                    qp_comp_mask_to_str(self.attr.comp_mask)) +\
 *                print_format.format('Create flags',
*/
  __pyx_t_3 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_kp_u_Comp_mask, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 756, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":759
 *                                    qp_comp_mask_to_str(self.attr.comp_mask)) +\
 *                print_format.format('Create flags',
 *                                    qp_create_flags_to_str(self.attr.create_flags)) +\             # <<<<<<<<<<<<<<
 *                'DC init attr:\n' +\
 *                print_format.format('  DC type',
*/
  __pyx_t_4 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_qp_create_flags_to_str); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 759, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = __Pyx_PyLong_From_unsigned_int(__pyx_v_self->attr.create_flags); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 759, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    assert(__pyx_t_4);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_4);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_2, __pyx__function);
    __pyx_t_5 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_6};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 759, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":758
 *         return print_format.format('Comp mask',
 *                                    qp_comp_mask_to_str(self.attr.comp_mask)) +\
 *                print_format.format('Create flags',             # <<<<<<<<<<<<<<
 *                                    qp_create_flags_to_str(self.attr.create_flags)) +\
 *                'DC init attr:\n' +\
*/
  __pyx_t_2 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_kp_u_Create_flags, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 758, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":757
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('Comp mask',
 *                                    qp_comp_mask_to_str(self.attr.comp_mask)) +\             # <<<<<<<<<<<<<<
 *                print_format.format('Create flags',
 *                                    qp_create_flags_to_str(self.attr.create_flags)) +\
*/
  __pyx_t_1 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 757, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":759
 *                                    qp_comp_mask_to_str(self.attr.comp_mask)) +\
 *                print_format.format('Create flags',
 *                                    qp_create_flags_to_str(self.attr.create_flags)) +\             # <<<<<<<<<<<<<<
 *                'DC init attr:\n' +\
 *                print_format.format('  DC type',
*/
  __pyx_t_2 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_1, __pyx_mstate_global->__pyx_kp_u_DC_init_attr); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 759, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":762
 *                'DC init attr:\n' +\
 *                print_format.format('  DC type',
 *                                    dc_type_to_str(self.attr.dc_init_attr.dc_type)) +\             # <<<<<<<<<<<<<<
 *                print_format.format('  DCI Stream log_num_concurent',
 *                                    self.attr.dc_init_attr.dci_streams.log_num_concurent) +\
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_dc_type_to_str); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 762, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = __Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(__pyx_v_self->attr.dc_init_attr.dc_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 762, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
    __pyx_t_5 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 762, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":761
 *                                    qp_create_flags_to_str(self.attr.create_flags)) +\
 *                'DC init attr:\n' +\
 *                print_format.format('  DC type',             # <<<<<<<<<<<<<<
 *                                    dc_type_to_str(self.attr.dc_init_attr.dc_type)) +\
 *                print_format.format('  DCI Stream log_num_concurent',
*/
  __pyx_t_6 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_kp_u_DC_type_2, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 761, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":760
 *                print_format.format('Create flags',
 *                                    qp_create_flags_to_str(self.attr.create_flags)) +\
 *                'DC init attr:\n' +\             # <<<<<<<<<<<<<<
 *                print_format.format('  DC type',
 *                                    dc_type_to_str(self.attr.dc_init_attr.dc_type)) +\
*/
  __pyx_t_1 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 760, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":764
 *                                    dc_type_to_str(self.attr.dc_init_attr.dc_type)) +\
 *                print_format.format('  DCI Stream log_num_concurent',
 *                                    self.attr.dc_init_attr.dci_streams.log_num_concurent) +\             # <<<<<<<<<<<<<<
 *                print_format.format('  DCI Stream log_num_errored',
 *                                    self.attr.dc_init_attr.dci_streams.log_num_errored) +\
*/
  __pyx_t_6 = __Pyx_PyLong_From_uint8_t(__pyx_v_self->attr.dc_init_attr.dci_streams.log_num_concurent); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 764, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":763
 *                print_format.format('  DC type',
 *                                    dc_type_to_str(self.attr.dc_init_attr.dc_type)) +\
 *                print_format.format('  DCI Stream log_num_concurent',             # <<<<<<<<<<<<<<
 *                                    self.attr.dc_init_attr.dci_streams.log_num_concurent) +\
 *                print_format.format('  DCI Stream log_num_errored',
*/
  __pyx_t_2 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_kp_u_DCI_Stream_log_num_concurent_2, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 763, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":762
 *                'DC init attr:\n' +\
 *                print_format.format('  DC type',
 *                                    dc_type_to_str(self.attr.dc_init_attr.dc_type)) +\             # <<<<<<<<<<<<<<
 *                print_format.format('  DCI Stream log_num_concurent',
 *                                    self.attr.dc_init_attr.dci_streams.log_num_concurent) +\
*/
  __pyx_t_6 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 762, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":766
 *                                    self.attr.dc_init_attr.dci_streams.log_num_concurent) +\
 *                print_format.format('  DCI Stream log_num_errored',
 *                                    self.attr.dc_init_attr.dci_streams.log_num_errored) +\             # <<<<<<<<<<<<<<
 *                print_format.format('  DCT access key',
 *                                    self.attr.dc_init_attr.dct_access_key) +\
*/
  __pyx_t_2 = __Pyx_PyLong_From_uint8_t(__pyx_v_self->attr.dc_init_attr.dci_streams.log_num_errored); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 766, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":765
 *                print_format.format('  DCI Stream log_num_concurent',
 *                                    self.attr.dc_init_attr.dci_streams.log_num_concurent) +\
 *                print_format.format('  DCI Stream log_num_errored',             # <<<<<<<<<<<<<<
 *                                    self.attr.dc_init_attr.dci_streams.log_num_errored) +\
 *                print_format.format('  DCT access key',
*/
  __pyx_t_1 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_kp_u_DCI_Stream_log_num_errored_2, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 765, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":764
 *                                    dc_type_to_str(self.attr.dc_init_attr.dc_type)) +\
 *                print_format.format('  DCI Stream log_num_concurent',
 *                                    self.attr.dc_init_attr.dci_streams.log_num_concurent) +\             # <<<<<<<<<<<<<<
 *                print_format.format('  DCI Stream log_num_errored',
 *                                    self.attr.dc_init_attr.dci_streams.log_num_errored) +\
*/
  __pyx_t_2 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 764, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":768
 *                                    self.attr.dc_init_attr.dci_streams.log_num_errored) +\
 *                print_format.format('  DCT access key',
 *                                    self.attr.dc_init_attr.dct_access_key) +\             # <<<<<<<<<<<<<<
 *                print_format.format('Send ops flags',
 *                                    send_ops_flags_to_str(self.attr.send_ops_flags))
*/
  __pyx_t_1 = __Pyx_PyLong_From_unsigned_long(__pyx_v_self->attr.dc_init_attr.dct_access_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 768, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":767
 *                print_format.format('  DCI Stream log_num_errored',
 *                                    self.attr.dc_init_attr.dci_streams.log_num_errored) +\
 *                print_format.format('  DCT access key',             # <<<<<<<<<<<<<<
 *                                    self.attr.dc_init_attr.dct_access_key) +\
 *                print_format.format('Send ops flags',
*/
  __pyx_t_6 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_kp_u_DCT_access_key_2, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 767, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":766
 *                                    self.attr.dc_init_attr.dci_streams.log_num_concurent) +\
 *                print_format.format('  DCI Stream log_num_errored',
 *                                    self.attr.dc_init_attr.dci_streams.log_num_errored) +\             # <<<<<<<<<<<<<<
 *                print_format.format('  DCT access key',
 *                                    self.attr.dc_init_attr.dct_access_key) +\
*/
  __pyx_t_1 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 766, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":770
 *                                    self.attr.dc_init_attr.dct_access_key) +\
 *                print_format.format('Send ops flags',
 *                                    send_ops_flags_to_str(self.attr.send_ops_flags))             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_send_ops_flags_to_str); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 770, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyLong_From_unsigned_long(__pyx_v_self->attr.send_ops_flags); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 770, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
    __pyx_t_5 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_3};
    __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 770, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":769
 *                print_format.format('  DCT access key',
 *                                    self.attr.dc_init_attr.dct_access_key) +\
 *                print_format.format('Send ops flags',             # <<<<<<<<<<<<<<
 *                                    send_ops_flags_to_str(self.attr.send_ops_flags))
 * 
*/
  __pyx_t_4 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_kp_u_Send_ops_flags, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 769, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":768
 *                                    self.attr.dc_init_attr.dci_streams.log_num_errored) +\
 *                print_format.format('  DCT access key',
 *                                    self.attr.dc_init_attr.dct_access_key) +\             # <<<<<<<<<<<<<<
 *                print_format.format('Send ops flags',
 *                                    send_ops_flags_to_str(self.attr.send_ops_flags))
*/
  __pyx_t_6 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 768, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_r = __pyx_t_6;
  __pyx_t_6 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":754
 *                 self.attr.dc_init_attr.dct_access_key = dc_init_attr.dct_access_key
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('Comp mask',
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVQPInitAttr.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_print_format);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":772
 *                                    send_ops_flags_to_str(self.attr.send_ops_flags))
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def comp_mask(self):
 *         return self.attr.comp_mask
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_9comp_mask_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_9comp_mask_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_9comp_mask___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_9comp_mask___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":774
 *     @property
 *     def comp_mask(self):
 *         return self.attr.comp_mask             # <<<<<<<<<<<<<<
 *     @comp_mask.setter
 *     def comp_mask(self, val):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_unsigned_long(__pyx_v_self->attr.comp_mask); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 774, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":772
 *                                    send_ops_flags_to_str(self.attr.send_ops_flags))
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def comp_mask(self):
 *         return self.attr.comp_mask
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVQPInitAttr.comp_mask.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":775
 *     def comp_mask(self):
 *         return self.attr.comp_mask
 *     @comp_mask.setter             # <<<<<<<<<<<<<<
 *     def comp_mask(self, val):
 *         self.attr.comp_mask = val
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_9comp_mask_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_9comp_mask_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_9comp_mask_2__set__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *)__pyx_v_self), ((PyObject *)__pyx_v_val));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_9comp_mask_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *__pyx_v_self, PyObject *__pyx_v_val) {
  int __pyx_r;
  unsigned long __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":777
 *     @comp_mask.setter
 *     def comp_mask(self, val):
 *         self.attr.comp_mask = val             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_t_1 = __Pyx_PyLong_As_unsigned_long(__pyx_v_val); if (unlikely((__pyx_t_1 == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(0, 777, __pyx_L1_error)
  __pyx_v_self->attr.comp_mask = __pyx_t_1;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":775
 *     def comp_mask(self):
 *         return self.attr.comp_mask
 *     @comp_mask.setter             # <<<<<<<<<<<<<<
 *     def comp_mask(self, val):
 *         self.attr.comp_mask = val
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVQPInitAttr.comp_mask.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":779
 *         self.attr.comp_mask = val
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def create_flags(self):
 *         return self.attr.create_flags
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_12create_flags_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_12create_flags_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_12create_flags___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_12create_flags___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":781
 *     @property
 *     def create_flags(self):
 *         return self.attr.create_flags             # <<<<<<<<<<<<<<
 *     @create_flags.setter
 *     def create_flags(self, val):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_unsigned_int(__pyx_v_self->attr.create_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 781, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":779
 *         self.attr.comp_mask = val
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def create_flags(self):
 *         return self.attr.create_flags
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVQPInitAttr.create_flags.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":782
 *     def create_flags(self):
 *         return self.attr.create_flags
 *     @create_flags.setter             # <<<<<<<<<<<<<<
 *     def create_flags(self, val):
 *         self.attr.create_flags = val
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_12create_flags_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_12create_flags_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_12create_flags_2__set__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *)__pyx_v_self), ((PyObject *)__pyx_v_val));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_12create_flags_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *__pyx_v_self, PyObject *__pyx_v_val) {
  int __pyx_r;
  unsigned int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":784
 *     @create_flags.setter
 *     def create_flags(self, val):
 *         self.attr.create_flags = val             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_t_1 = __Pyx_PyLong_As_unsigned_int(__pyx_v_val); if (unlikely((__pyx_t_1 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 784, __pyx_L1_error)
  __pyx_v_self->attr.create_flags = __pyx_t_1;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":782
 *     def create_flags(self):
 *         return self.attr.create_flags
 *     @create_flags.setter             # <<<<<<<<<<<<<<
 *     def create_flags(self, val):
 *         self.attr.create_flags = val
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVQPInitAttr.create_flags.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":786
 *         self.attr.create_flags = val
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def send_ops_flags(self):
 *         return self.attr.send_ops_flags
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_14send_ops_flags_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_14send_ops_flags_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_14send_ops_flags___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_14send_ops_flags___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":788
 *     @property
 *     def send_ops_flags(self):
 *         return self.attr.send_ops_flags             # <<<<<<<<<<<<<<
 *     @send_ops_flags.setter
 *     def send_ops_flags(self, val):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_unsigned_long(__pyx_v_self->attr.send_ops_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 788, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":786
 *         self.attr.create_flags = val
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def send_ops_flags(self):
 *         return self.attr.send_ops_flags
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVQPInitAttr.send_ops_flags.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":789
 *     def send_ops_flags(self):
 *         return self.attr.send_ops_flags
 *     @send_ops_flags.setter             # <<<<<<<<<<<<<<
 *     def send_ops_flags(self, val):
 *         self.attr.send_ops_flags = val
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_14send_ops_flags_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_14send_ops_flags_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_14send_ops_flags_2__set__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *)__pyx_v_self), ((PyObject *)__pyx_v_val));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_14send_ops_flags_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *__pyx_v_self, PyObject *__pyx_v_val) {
  int __pyx_r;
  unsigned long __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":791
 *     @send_ops_flags.setter
 *     def send_ops_flags(self, val):
 *         self.attr.send_ops_flags = val             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_t_1 = __Pyx_PyLong_As_unsigned_long(__pyx_v_val); if (unlikely((__pyx_t_1 == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(0, 791, __pyx_L1_error)
  __pyx_v_self->attr.send_ops_flags = __pyx_t_1;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":789
 *     def send_ops_flags(self):
 *         return self.attr.send_ops_flags
 *     @send_ops_flags.setter             # <<<<<<<<<<<<<<
 *     def send_ops_flags(self, val):
 *         self.attr.send_ops_flags = val
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVQPInitAttr.send_ops_flags.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":793
 *         self.attr.send_ops_flags = val
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dc_type(self):
 *         return self.attr.dc_init_attr.dc_type
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_7dc_type_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_7dc_type_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_7dc_type___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_7dc_type___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":795
 *     @property
 *     def dc_type(self):
 *         return self.attr.dc_init_attr.dc_type             # <<<<<<<<<<<<<<
 *     @dc_type.setter
 *     def dc_type(self, val):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(__pyx_v_self->attr.dc_init_attr.dc_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 795, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":793
 *         self.attr.send_ops_flags = val
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dc_type(self):
 *         return self.attr.dc_init_attr.dc_type
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVQPInitAttr.dc_type.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":796
 *     def dc_type(self):
 *         return self.attr.dc_init_attr.dc_type
 *     @dc_type.setter             # <<<<<<<<<<<<<<
 *     def dc_type(self, val):
 *         self.attr.dc_init_attr.dc_type = val
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_7dc_type_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_7dc_type_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_7dc_type_2__set__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *)__pyx_v_self), ((PyObject *)__pyx_v_val));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_7dc_type_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *__pyx_v_self, PyObject *__pyx_v_val) {
  int __pyx_r;
  enum mlx5dv_dc_type __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":798
 *     @dc_type.setter
 *     def dc_type(self, val):
 *         self.attr.dc_init_attr.dc_type = val             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_t_1 = ((enum mlx5dv_dc_type)__Pyx_PyLong_As_enum__mlx5dv_dc_type(__pyx_v_val)); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 798, __pyx_L1_error)
  __pyx_v_self->attr.dc_init_attr.dc_type = __pyx_t_1;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":796
 *     def dc_type(self):
 *         return self.attr.dc_init_attr.dc_type
 *     @dc_type.setter             # <<<<<<<<<<<<<<
 *     def dc_type(self, val):
 *         self.attr.dc_init_attr.dc_type = val
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVQPInitAttr.dc_type.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":800
 *         self.attr.dc_init_attr.dc_type = val
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dct_access_key(self):
 *         return self.attr.dc_init_attr.dct_access_key
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_14dct_access_key_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_14dct_access_key_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_14dct_access_key___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_14dct_access_key___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":802
 *     @property
 *     def dct_access_key(self):
 *         return self.attr.dc_init_attr.dct_access_key             # <<<<<<<<<<<<<<
 *     @dct_access_key.setter
 *     def dct_access_key(self, val):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_unsigned_long(__pyx_v_self->attr.dc_init_attr.dct_access_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 802, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":800
 *         self.attr.dc_init_attr.dc_type = val
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dct_access_key(self):
 *         return self.attr.dc_init_attr.dct_access_key
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVQPInitAttr.dct_access_key.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":803
 *     def dct_access_key(self):
 *         return self.attr.dc_init_attr.dct_access_key
 *     @dct_access_key.setter             # <<<<<<<<<<<<<<
 *     def dct_access_key(self, val):
 *         self.attr.dc_init_attr.dct_access_key = val
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_14dct_access_key_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_14dct_access_key_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_14dct_access_key_2__set__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *)__pyx_v_self), ((PyObject *)__pyx_v_val));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_14dct_access_key_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *__pyx_v_self, PyObject *__pyx_v_val) {
  int __pyx_r;
  unsigned long __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":805
 *     @dct_access_key.setter
 *     def dct_access_key(self, val):
 *         self.attr.dc_init_attr.dct_access_key = val             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_t_1 = __Pyx_PyLong_As_unsigned_long(__pyx_v_val); if (unlikely((__pyx_t_1 == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(0, 805, __pyx_L1_error)
  __pyx_v_self->attr.dc_init_attr.dct_access_key = __pyx_t_1;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":803
 *     def dct_access_key(self):
 *         return self.attr.dc_init_attr.dct_access_key
 *     @dct_access_key.setter             # <<<<<<<<<<<<<<
 *     def dct_access_key(self, val):
 *         self.attr.dc_init_attr.dct_access_key = val
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVQPInitAttr.dct_access_key.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":807
 *         self.attr.dc_init_attr.dct_access_key = val
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dci_streams(self):
 *         return self.attr.dc_init_attr.dci_streams
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_11dci_streams_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_11dci_streams_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_11dci_streams___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_11dci_streams___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":809
 *     @property
 *     def dci_streams(self):
 *         return self.attr.dc_init_attr.dci_streams             # <<<<<<<<<<<<<<
 *     @dci_streams.setter
 *     def dci_streams(self, val):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_convert__to_py_struct__mlx5dv_dci_streams(__pyx_v_self->attr.dc_init_attr.dci_streams); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 809, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":807
 *         self.attr.dc_init_attr.dct_access_key = val
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dci_streams(self):
 *         return self.attr.dc_init_attr.dci_streams
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVQPInitAttr.dci_streams.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":810
 *     def dci_streams(self):
 *         return self.attr.dc_init_attr.dci_streams
 *     @dci_streams.setter             # <<<<<<<<<<<<<<
 *     def dci_streams(self, val):
 *         self.attr.dc_init_attr.dci_streams=val
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_11dci_streams_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_11dci_streams_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_11dci_streams_2__set__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *)__pyx_v_self), ((PyObject *)__pyx_v_val));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_11dci_streams_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *__pyx_v_self, PyObject *__pyx_v_val) {
  int __pyx_r;
  struct mlx5dv_dci_streams __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":812
 *     @dci_streams.setter
 *     def dci_streams(self, val):
 *         self.attr.dc_init_attr.dci_streams=val             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_1 = __pyx_convert__from_py_struct__mlx5dv_dci_streams(__pyx_v_val); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 812, __pyx_L1_error)
  __pyx_v_self->attr.dc_init_attr.dci_streams = __pyx_t_1;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":810
 *     def dci_streams(self):
 *         return self.attr.dc_init_attr.dci_streams
 *     @dci_streams.setter             # <<<<<<<<<<<<<<
 *     def dci_streams(self, val):
 *         self.attr.dc_init_attr.dci_streams=val
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVQPInitAttr.dci_streams.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_4__reduce_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_Pickling_of_struct_members_such, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVQPInitAttr.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVQPInitAttr.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_6__setstate_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_Pickling_of_struct_members_such, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVQPInitAttr.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":815
 * 
 * 
 * cdef copy_mr_interleaved_array(dv.mlx5dv_mr_interleaved *mr_interleaved_p,             # <<<<<<<<<<<<<<
 *                                mr_interleaved_lst):
 *     """
*/

static PyObject *__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_copy_mr_interleaved_array(struct mlx5dv_mr_interleaved *__pyx_v_mr_interleaved_p, PyObject *__pyx_v_mr_interleaved_lst) {
  Py_ssize_t __pyx_v_num_interleaved;
  struct mlx5dv_mr_interleaved *__pyx_v_tmp;
  Py_ssize_t __pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("copy_mr_interleaved_array", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":824
 *     :param mr_interleaved_lst: List of Mlx5MrInterleaved.
 *     """
 *     num_interleaved = len(mr_interleaved_lst)             # <<<<<<<<<<<<<<
 *     cdef dv.mlx5dv_mr_interleaved *tmp
 *     for i in range(num_interleaved):
*/
  __pyx_t_1 = PyObject_Length(__pyx_v_mr_interleaved_lst); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 824, __pyx_L1_error)
  __pyx_v_num_interleaved = __pyx_t_1;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":826
 *     num_interleaved = len(mr_interleaved_lst)
 *     cdef dv.mlx5dv_mr_interleaved *tmp
 *     for i in range(num_interleaved):             # <<<<<<<<<<<<<<
 *         tmp = &(<Mlx5MrInterleaved>mr_interleaved_lst[i]).mlx5dv_mr_interleaved
 *         memcpy(mr_interleaved_p, tmp, sizeof(dv.mlx5dv_mr_interleaved))
*/
  __pyx_t_1 = __pyx_v_num_interleaved;
  __pyx_t_2 = __pyx_t_1;
  for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
    __pyx_v_i = __pyx_t_3;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":827
 *     cdef dv.mlx5dv_mr_interleaved *tmp
 *     for i in range(num_interleaved):
 *         tmp = &(<Mlx5MrInterleaved>mr_interleaved_lst[i]).mlx5dv_mr_interleaved             # <<<<<<<<<<<<<<
 *         memcpy(mr_interleaved_p, tmp, sizeof(dv.mlx5dv_mr_interleaved))
 *         mr_interleaved_p += 1
*/
    __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_mr_interleaved_lst, __pyx_v_i, Py_ssize_t, 1, PyLong_FromSsize_t, 0, 1, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 827, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_v_tmp = (&((struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MrInterleaved *)__pyx_t_4)->mlx5dv_mr_interleaved);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":828
 *     for i in range(num_interleaved):
 *         tmp = &(<Mlx5MrInterleaved>mr_interleaved_lst[i]).mlx5dv_mr_interleaved
 *         memcpy(mr_interleaved_p, tmp, sizeof(dv.mlx5dv_mr_interleaved))             # <<<<<<<<<<<<<<
 *         mr_interleaved_p += 1
 * 
*/
    (void)(memcpy(__pyx_v_mr_interleaved_p, __pyx_v_tmp, (sizeof(struct mlx5dv_mr_interleaved))));

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":829
 *         tmp = &(<Mlx5MrInterleaved>mr_interleaved_lst[i]).mlx5dv_mr_interleaved
 *         memcpy(mr_interleaved_p, tmp, sizeof(dv.mlx5dv_mr_interleaved))
 *         mr_interleaved_p += 1             # <<<<<<<<<<<<<<
 * 
 * 
*/
    __pyx_v_mr_interleaved_p = (__pyx_v_mr_interleaved_p + 1);
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":815
 * 
 * 
 * cdef copy_mr_interleaved_array(dv.mlx5dv_mr_interleaved *mr_interleaved_p,             # <<<<<<<<<<<<<<
 *                                mr_interleaved_lst):
 *     """
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.copy_mr_interleaved_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":833
 * 
 * cdef class Mlx5QP(QPEx):
 *     def __init__(self, Context context, QPInitAttrEx init_attr,             # <<<<<<<<<<<<<<
 *                  Mlx5DVQPInitAttr dv_init_attr):
 *         """
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP___init__, "\n        Initializes an mlx5 QP according to the user-provided data.\n        :param context: Context object\n        :param init_attr: QPInitAttrEx object\n        :param dv_init_attr: Mlx5DVQPInitAttr object\n        :return: An initialized Mlx5QP\n        ");
#if CYTHON_UPDATE_DESCRIPTOR_DOC
struct wrapperbase __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP___init__;
#endif
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_context = 0;
  struct __pyx_obj_7pyverbs_2qp_QPInitAttrEx *__pyx_v_init_attr = 0;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *__pyx_v_dv_init_attr = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_context,&__pyx_mstate_global->__pyx_n_u_init_attr,&__pyx_mstate_global->__pyx_n_u_dv_init_attr,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 833, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 833, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 833, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 833, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(0, 833, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, i); __PYX_ERR(0, 833, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 833, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 833, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 833, __pyx_L3_error)
    }
    __pyx_v_context = ((struct __pyx_obj_7pyverbs_6device_Context *)values[0]);
    __pyx_v_init_attr = ((struct __pyx_obj_7pyverbs_2qp_QPInitAttrEx *)values[1]);
    __pyx_v_dv_init_attr = ((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 833, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_context), __pyx_mstate_global->__pyx_ptype_7pyverbs_6device_Context, 1, "context", 0))) __PYX_ERR(0, 833, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_init_attr), __pyx_mstate_global->__pyx_ptype_7pyverbs_2qp_QPInitAttrEx, 1, "init_attr", 0))) __PYX_ERR(0, 833, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dv_init_attr), __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr, 1, "dv_init_attr", 0))) __PYX_ERR(0, 834, __pyx_L1_error)
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP___init__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *)__pyx_v_self), __pyx_v_context, __pyx_v_init_attr, __pyx_v_dv_init_attr);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *__pyx_v_self, struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_context, struct __pyx_obj_7pyverbs_2qp_QPInitAttrEx *__pyx_v_init_attr, struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr *__pyx_v_dv_init_attr) {
  struct __pyx_obj_7pyverbs_2pd_PD *__pyx_v_pd = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  int __pyx_t_7;
  struct mlx5dv_qp_init_attr *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":847
 *         # the QP is allocated. Allocation can fail, which will lead to exceptions
 *         # thrown during object's teardown.
 *         self.logger = logging.getLogger(self.__class__.__name__)             # <<<<<<<<<<<<<<
 *         self.dc_type = dv_init_attr.dc_type if dv_init_attr else 0
 *         if init_attr.pd is not None:
*/
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_logging); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 847, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_getLogger); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 847, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_class); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 847, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_name_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 847, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_5};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 847, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.logger);
  __Pyx_DECREF(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.logger);
  __pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.logger = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":848
 *         # thrown during object's teardown.
 *         self.logger = logging.getLogger(self.__class__.__name__)
 *         self.dc_type = dv_init_attr.dc_type if dv_init_attr else 0             # <<<<<<<<<<<<<<
 *         if init_attr.pd is not None:
 *             pd = <PD>init_attr.pd
*/
  __pyx_t_7 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_dv_init_attr)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 848, __pyx_L1_error)
  if (__pyx_t_7) {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_dv_init_attr), __pyx_mstate_global->__pyx_n_u_dc_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 848, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_1 = __pyx_t_4;
    __pyx_t_4 = 0;
  } else {
    __Pyx_INCREF(__pyx_mstate_global->__pyx_int_0);
    __pyx_t_1 = __pyx_mstate_global->__pyx_int_0;
  }
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->dc_type);
  __Pyx_DECREF(__pyx_v_self->dc_type);
  __pyx_v_self->dc_type = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":849
 *         self.logger = logging.getLogger(self.__class__.__name__)
 *         self.dc_type = dv_init_attr.dc_type if dv_init_attr else 0
 *         if init_attr.pd is not None:             # <<<<<<<<<<<<<<
 *             pd = <PD>init_attr.pd
 *             pd.add_ref(self)
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_init_attr), __pyx_mstate_global->__pyx_n_u_pd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 849, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = (__pyx_t_1 != Py_None);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_7) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":850
 *         self.dc_type = dv_init_attr.dc_type if dv_init_attr else 0
 *         if init_attr.pd is not None:
 *             pd = <PD>init_attr.pd             # <<<<<<<<<<<<<<
 *             pd.add_ref(self)
 *         self.qp = \
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_init_attr), __pyx_mstate_global->__pyx_n_u_pd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 850, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = __pyx_t_1;
    __Pyx_INCREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_pd = ((struct __pyx_obj_7pyverbs_2pd_PD *)__pyx_t_4);
    __pyx_t_4 = 0;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":851
 *         if init_attr.pd is not None:
 *             pd = <PD>init_attr.pd
 *             pd.add_ref(self)             # <<<<<<<<<<<<<<
 *         self.qp = \
 *             dv.mlx5dv_create_qp(context.context,
*/
    __pyx_t_4 = ((struct __pyx_vtabstruct_7pyverbs_2pd_PD *)__pyx_v_pd->__pyx_base.__pyx_vtab)->add_ref(__pyx_v_pd, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 851, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":849
 *         self.logger = logging.getLogger(self.__class__.__name__)
 *         self.dc_type = dv_init_attr.dc_type if dv_init_attr else 0
 *         if init_attr.pd is not None:             # <<<<<<<<<<<<<<
 *             pd = <PD>init_attr.pd
 *             pd.add_ref(self)
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":855
 *             dv.mlx5dv_create_qp(context.context,
 *                                 &init_attr.attr,
 *                                 &dv_init_attr.attr if dv_init_attr is not None             # <<<<<<<<<<<<<<
 *                                 else NULL)
 *         if self.qp == NULL:
*/
  __pyx_t_7 = (((PyObject *)__pyx_v_dv_init_attr) != Py_None);
  if (__pyx_t_7) {
    __pyx_t_8 = (&__pyx_v_dv_init_attr->attr);
  } else {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":856
 *                                 &init_attr.attr,
 *                                 &dv_init_attr.attr if dv_init_attr is not None
 *                                 else NULL)             # <<<<<<<<<<<<<<
 *         if self.qp == NULL:
 *             raise PyverbsRDMAErrno('Failed to create MLX5 QP.\nQPInitAttrEx '
*/
    __pyx_t_8 = NULL;
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":852
 *             pd = <PD>init_attr.pd
 *             pd.add_ref(self)
 *         self.qp = \             # <<<<<<<<<<<<<<
 *             dv.mlx5dv_create_qp(context.context,
 *                                 &init_attr.attr,
*/
  __pyx_v_self->__pyx_base.__pyx_base.qp = mlx5dv_create_qp(__pyx_v_context->context, (&__pyx_v_init_attr->attr), __pyx_t_8);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":857
 *                                 &dv_init_attr.attr if dv_init_attr is not None
 *                                 else NULL)
 *         if self.qp == NULL:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAErrno('Failed to create MLX5 QP.\nQPInitAttrEx '
 *                                    'attributes:\n{}\nMLX5DVQPInitAttr:\n{}'.
*/
  __pyx_t_7 = (__pyx_v_self->__pyx_base.__pyx_base.qp == NULL);
  if (unlikely(__pyx_t_7)) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":858
 *                                 else NULL)
 *         if self.qp == NULL:
 *             raise PyverbsRDMAErrno('Failed to create MLX5 QP.\nQPInitAttrEx '             # <<<<<<<<<<<<<<
 *                                    'attributes:\n{}\nMLX5DVQPInitAttr:\n{}'.
 *                                    format(init_attr, dv_init_attr))
*/
    __pyx_t_1 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_PyverbsRDMAErrno); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 858, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":860
 *             raise PyverbsRDMAErrno('Failed to create MLX5 QP.\nQPInitAttrEx '
 *                                    'attributes:\n{}\nMLX5DVQPInitAttr:\n{}'.
 *                                    format(init_attr, dv_init_attr))             # <<<<<<<<<<<<<<
 *         super().__init__(context, init_attr)
 * 
*/
    __pyx_t_3 = __pyx_mstate_global->__pyx_kp_u_Failed_to_create_MLX5_QP_QPInitA;
    __Pyx_INCREF(__pyx_t_3);
    __pyx_t_6 = 0;
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_3, ((PyObject *)__pyx_v_init_attr), ((PyObject *)__pyx_v_dv_init_attr)};
      __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 860, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __pyx_t_6 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_1);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_6 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_2};
      __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 858, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(0, 858, __pyx_L1_error)

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":857
 *                                 &dv_init_attr.attr if dv_init_attr is not None
 *                                 else NULL)
 *         if self.qp == NULL:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAErrno('Failed to create MLX5 QP.\nQPInitAttrEx '
 *                                    'attributes:\n{}\nMLX5DVQPInitAttr:\n{}'.
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":861
 *                                    'attributes:\n{}\nMLX5DVQPInitAttr:\n{}'.
 *                                    format(init_attr, dv_init_attr))
 *         super().__init__(context, init_attr)             # <<<<<<<<<<<<<<
 * 
 *     def _get_comp_mask(self, dst):
*/
  __pyx_t_1 = NULL;
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_1, ((PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP), ((PyObject *)__pyx_v_self)};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_super, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 861, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_t_5 = __pyx_t_2;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_6 = 0;
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, ((PyObject *)__pyx_v_context), ((PyObject *)__pyx_v_init_attr)};
    __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_init, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 861, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":833
 * 
 * cdef class Mlx5QP(QPEx):
 *     def __init__(self, Context context, QPInitAttrEx init_attr,             # <<<<<<<<<<<<<<
 *                  Mlx5DVQPInitAttr dv_init_attr):
 *         """
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pd);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":863
 *         super().__init__(context, init_attr)
 * 
 *     def _get_comp_mask(self, dst):             # <<<<<<<<<<<<<<
 *         masks = {dve.MLX5DV_DCTYPE_DCT: {'INIT': e.IBV_QP_PKEY_INDEX |
 *                                          e.IBV_QP_PORT | e.IBV_QP_ACCESS_FLAGS,
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_3_get_comp_mask(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_3_get_comp_mask = {"_get_comp_mask", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_3_get_comp_mask, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_3_get_comp_mask(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dst = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_get_comp_mask (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_dst,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 863, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 863, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "_get_comp_mask", 0) < (0)) __PYX_ERR(0, 863, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_get_comp_mask", 1, 1, 1, i); __PYX_ERR(0, 863, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 863, __pyx_L3_error)
    }
    __pyx_v_dst = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_get_comp_mask", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 863, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP._get_comp_mask", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_2_get_comp_mask(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *)__pyx_v_self), __pyx_v_dst);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_2_get_comp_mask(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *__pyx_v_self, PyObject *__pyx_v_dst) {
  PyObject *__pyx_v_masks = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  size_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_get_comp_mask", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":864
 * 
 *     def _get_comp_mask(self, dst):
 *         masks = {dve.MLX5DV_DCTYPE_DCT: {'INIT': e.IBV_QP_PKEY_INDEX |             # <<<<<<<<<<<<<<
 *                                          e.IBV_QP_PORT | e.IBV_QP_ACCESS_FLAGS,
 *                                          'RTR': e.IBV_QP_AV |\
*/
  __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 864, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_DCTYPE_DCT); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 864, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 864, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":865
 *     def _get_comp_mask(self, dst):
 *         masks = {dve.MLX5DV_DCTYPE_DCT: {'INIT': e.IBV_QP_PKEY_INDEX |
 *                                          e.IBV_QP_PORT | e.IBV_QP_ACCESS_FLAGS,             # <<<<<<<<<<<<<<
 *                                          'RTR': e.IBV_QP_AV |\
 *                                          e.IBV_QP_PATH_MTU |\
*/
  __pyx_t_4 = __Pyx_PyLong_From_int(((IBV_QP_PKEY_INDEX | IBV_QP_PORT) | IBV_QP_ACCESS_FLAGS)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 865, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_INIT, __pyx_t_4) < (0)) __PYX_ERR(0, 864, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":867
 *                                          e.IBV_QP_PORT | e.IBV_QP_ACCESS_FLAGS,
 *                                          'RTR': e.IBV_QP_AV |\
 *                                          e.IBV_QP_PATH_MTU |\             # <<<<<<<<<<<<<<
 *                                          e.IBV_QP_MIN_RNR_TIMER},
 *                  dve.MLX5DV_DCTYPE_DCI: {'INIT': e.IBV_QP_PKEY_INDEX |\
*/
  __pyx_t_4 = __Pyx_PyLong_From_int(((IBV_QP_AV | IBV_QP_PATH_MTU) | IBV_QP_MIN_RNR_TIMER)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 867, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (PyDict_SetItem(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_RTR, __pyx_t_4) < (0)) __PYX_ERR(0, 864, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_t_3) < (0)) __PYX_ERR(0, 864, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":869
 *                                          e.IBV_QP_PATH_MTU |\
 *                                          e.IBV_QP_MIN_RNR_TIMER},
 *                  dve.MLX5DV_DCTYPE_DCI: {'INIT': e.IBV_QP_PKEY_INDEX |\             # <<<<<<<<<<<<<<
 *                                          e.IBV_QP_PORT,
 *                                          'RTR': e.IBV_QP_PATH_MTU,
*/
  __pyx_t_3 = __Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_DCTYPE_DCI); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 869, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 869, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":870
 *                                          e.IBV_QP_MIN_RNR_TIMER},
 *                  dve.MLX5DV_DCTYPE_DCI: {'INIT': e.IBV_QP_PKEY_INDEX |\
 *                                          e.IBV_QP_PORT,             # <<<<<<<<<<<<<<
 *                                          'RTR': e.IBV_QP_PATH_MTU,
 *                                          'RTS': e.IBV_QP_TIMEOUT |\
*/
  __pyx_t_4 = __Pyx_PyLong_From_int((IBV_QP_PKEY_INDEX | IBV_QP_PORT)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 869, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_INIT, __pyx_t_4) < (0)) __PYX_ERR(0, 869, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":871
 *                  dve.MLX5DV_DCTYPE_DCI: {'INIT': e.IBV_QP_PKEY_INDEX |\
 *                                          e.IBV_QP_PORT,
 *                                          'RTR': e.IBV_QP_PATH_MTU,             # <<<<<<<<<<<<<<
 *                                          'RTS': e.IBV_QP_TIMEOUT |\
 *                                          e.IBV_QP_RETRY_CNT |\
*/
  __pyx_t_4 = __Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py(IBV_QP_PATH_MTU); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 871, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_RTR, __pyx_t_4) < (0)) __PYX_ERR(0, 869, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":874
 *                                          'RTS': e.IBV_QP_TIMEOUT |\
 *                                          e.IBV_QP_RETRY_CNT |\
 *                                          e.IBV_QP_RNR_RETRY | e.IBV_QP_SQ_PSN |\             # <<<<<<<<<<<<<<
 *                                          e.IBV_QP_MAX_QP_RD_ATOMIC}}
 *         if self.dc_type == 0:
*/
  __pyx_t_4 = __Pyx_PyLong_From_int(((((IBV_QP_TIMEOUT | IBV_QP_RETRY_CNT) | IBV_QP_RNR_RETRY) | IBV_QP_SQ_PSN) | IBV_QP_MAX_QP_RD_ATOMIC)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 874, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_RTS, __pyx_t_4) < (0)) __PYX_ERR(0, 869, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_3, __pyx_t_2) < (0)) __PYX_ERR(0, 864, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_masks = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":876
 *                                          e.IBV_QP_RNR_RETRY | e.IBV_QP_SQ_PSN |\
 *                                          e.IBV_QP_MAX_QP_RD_ATOMIC}}
 *         if self.dc_type == 0:             # <<<<<<<<<<<<<<
 *             return super()._get_comp_mask(dst)
 *         return masks[self.dc_type][dst] | e.IBV_QP_STATE
*/
  __pyx_t_5 = (__Pyx_PyLong_BoolEqObjC(__pyx_v_self->dc_type, __pyx_mstate_global->__pyx_int_0, 0, 0)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 876, __pyx_L1_error)
  if (__pyx_t_5) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":877
 *                                          e.IBV_QP_MAX_QP_RD_ATOMIC}}
 *         if self.dc_type == 0:
 *             return super()._get_comp_mask(dst)             # <<<<<<<<<<<<<<
 *         return masks[self.dc_type][dst] | e.IBV_QP_STATE
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = NULL;
    __pyx_t_6 = 1;
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_4, ((PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP), ((PyObject *)__pyx_v_self)};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_super, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 877, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __pyx_t_2 = __pyx_t_3;
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_6 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_dst};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_get_comp_mask, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 877, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":876
 *                                          e.IBV_QP_RNR_RETRY | e.IBV_QP_SQ_PSN |\
 *                                          e.IBV_QP_MAX_QP_RD_ATOMIC}}
 *         if self.dc_type == 0:             # <<<<<<<<<<<<<<
 *             return super()._get_comp_mask(dst)
 *         return masks[self.dc_type][dst] | e.IBV_QP_STATE
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":878
 *         if self.dc_type == 0:
 *             return super()._get_comp_mask(dst)
 *         return masks[self.dc_type][dst] | e.IBV_QP_STATE             # <<<<<<<<<<<<<<
 * 
 *     def wr_set_dc_addr(self, AH ah, remote_dctn, remote_dc_key):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_masks, __pyx_v_self->dc_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 878, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_v_dst); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 878, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py(IBV_QP_STATE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 878, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyNumber_Or(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 878, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":863
 *         super().__init__(context, init_attr)
 * 
 *     def _get_comp_mask(self, dst):             # <<<<<<<<<<<<<<
 *         masks = {dve.MLX5DV_DCTYPE_DCT: {'INIT': e.IBV_QP_PKEY_INDEX |
 *                                          e.IBV_QP_PORT | e.IBV_QP_ACCESS_FLAGS,
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP._get_comp_mask", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_masks);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":880
 *         return masks[self.dc_type][dst] | e.IBV_QP_STATE
 * 
 *     def wr_set_dc_addr(self, AH ah, remote_dctn, remote_dc_key):             # <<<<<<<<<<<<<<
 *         """
 *         Attach a DC info to the last work request.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_5wr_set_dc_addr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_4wr_set_dc_addr, "\n        Attach a DC info to the last work request.\n        :param ah: Address Handle to the requested DCT.\n        :param remote_dctn: The remote DCT number.\n        :param remote_dc_key: The remote DC key.\n        ");
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_5wr_set_dc_addr = {"wr_set_dc_addr", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_5wr_set_dc_addr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_4wr_set_dc_addr};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_5wr_set_dc_addr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_7pyverbs_4addr_AH *__pyx_v_ah = 0;
  PyObject *__pyx_v_remote_dctn = 0;
  PyObject *__pyx_v_remote_dc_key = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("wr_set_dc_addr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_ah,&__pyx_mstate_global->__pyx_n_u_remote_dctn,&__pyx_mstate_global->__pyx_n_u_remote_dc_key,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 880, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 880, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 880, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 880, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "wr_set_dc_addr", 0) < (0)) __PYX_ERR(0, 880, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("wr_set_dc_addr", 1, 3, 3, i); __PYX_ERR(0, 880, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 880, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 880, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 880, __pyx_L3_error)
    }
    __pyx_v_ah = ((struct __pyx_obj_7pyverbs_4addr_AH *)values[0]);
    __pyx_v_remote_dctn = values[1];
    __pyx_v_remote_dc_key = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("wr_set_dc_addr", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 880, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.wr_set_dc_addr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_ah), __pyx_mstate_global->__pyx_ptype_7pyverbs_4addr_AH, 1, "ah", 0))) __PYX_ERR(0, 880, __pyx_L1_error)
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_4wr_set_dc_addr(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *)__pyx_v_self), __pyx_v_ah, __pyx_v_remote_dctn, __pyx_v_remote_dc_key);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_4wr_set_dc_addr(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *__pyx_v_self, struct __pyx_obj_7pyverbs_4addr_AH *__pyx_v_ah, PyObject *__pyx_v_remote_dctn, PyObject *__pyx_v_remote_dc_key) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  uint32_t __pyx_t_1;
  uint64_t __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("wr_set_dc_addr", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":888
 *         """
 *         dv.mlx5dv_wr_set_dc_addr(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex),
 *                                  ah.ah, remote_dctn, remote_dc_key)             # <<<<<<<<<<<<<<
 * 
 *     def wr_raw_wqe(self, wqe):
*/
  __pyx_t_1 = __Pyx_PyLong_As_uint32_t(__pyx_v_remote_dctn); if (unlikely((__pyx_t_1 == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 888, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyLong_As_uint64_t(__pyx_v_remote_dc_key); if (unlikely((__pyx_t_2 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 888, __pyx_L1_error)

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":887
 *         :param remote_dc_key: The remote DC key.
 *         """
 *         dv.mlx5dv_wr_set_dc_addr(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex),             # <<<<<<<<<<<<<<
 *                                  ah.ah, remote_dctn, remote_dc_key)
 * 
*/
  mlx5dv_wr_set_dc_addr(mlx5dv_qp_ex_from_ibv_qp_ex(__pyx_v_self->__pyx_base.qp_ex), __pyx_v_ah->ah, __pyx_t_1, __pyx_t_2);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":880
 *         return masks[self.dc_type][dst] | e.IBV_QP_STATE
 * 
 *     def wr_set_dc_addr(self, AH ah, remote_dctn, remote_dc_key):             # <<<<<<<<<<<<<<
 *         """
 *         Attach a DC info to the last work request.
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.wr_set_dc_addr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":890
 *                                  ah.ah, remote_dctn, remote_dc_key)
 * 
 *     def wr_raw_wqe(self, wqe):             # <<<<<<<<<<<<<<
 *         """
 *         Build a raw work request
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_7wr_raw_wqe(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_6wr_raw_wqe, "\n        Build a raw work request\n        :param wqe: A Wqe object\n        ");
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_7wr_raw_wqe = {"wr_raw_wqe", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_7wr_raw_wqe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_6wr_raw_wqe};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_7wr_raw_wqe(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_wqe = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("wr_raw_wqe (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_wqe,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 890, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 890, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "wr_raw_wqe", 0) < (0)) __PYX_ERR(0, 890, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("wr_raw_wqe", 1, 1, 1, i); __PYX_ERR(0, 890, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 890, __pyx_L3_error)
    }
    __pyx_v_wqe = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("wr_raw_wqe", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 890, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.wr_raw_wqe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_6wr_raw_wqe(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *)__pyx_v_self), __pyx_v_wqe);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_6wr_raw_wqe(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *__pyx_v_self, PyObject *__pyx_v_wqe) {
  void *__pyx_v_wqe_ptr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  uintptr_t __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("wr_raw_wqe", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":895
 *         :param wqe: A Wqe object
 *         """
 *         cdef void *wqe_ptr = <void *> <uintptr_t> wqe.address             # <<<<<<<<<<<<<<
 *         dv.mlx5dv_wr_raw_wqe(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex), wqe_ptr)
 * 
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_wqe, __pyx_mstate_global->__pyx_n_u_address); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 895, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyLong_As_size_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((uintptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 895, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_wqe_ptr = ((void *)((uintptr_t)__pyx_t_2));

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":896
 *         """
 *         cdef void *wqe_ptr = <void *> <uintptr_t> wqe.address
 *         dv.mlx5dv_wr_raw_wqe(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex), wqe_ptr)             # <<<<<<<<<<<<<<
 * 
 *     def wr_mr_interleaved(self, Mlx5Mkey mkey, access_flags, repeat_count,
*/
  mlx5dv_wr_raw_wqe(mlx5dv_qp_ex_from_ibv_qp_ex(__pyx_v_self->__pyx_base.qp_ex), __pyx_v_wqe_ptr);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":890
 *                                  ah.ah, remote_dctn, remote_dc_key)
 * 
 *     def wr_raw_wqe(self, wqe):             # <<<<<<<<<<<<<<
 *         """
 *         Build a raw work request
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.wr_raw_wqe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":898
 *         dv.mlx5dv_wr_raw_wqe(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex), wqe_ptr)
 * 
 *     def wr_mr_interleaved(self, Mlx5Mkey mkey, access_flags, repeat_count,             # <<<<<<<<<<<<<<
 *                           mr_interleaved_lst):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_9wr_mr_interleaved(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_8wr_mr_interleaved, "\n        Registers an interleaved memory layout by using an indirect mkey and\n        some interleaved data.\n        :param mkey: A Mlx5Mkey instance to reg this memory.\n        :param access_flags: The mkey access flags.\n        :param repeat_count: Number of times to repeat the interleaved layout.\n        :param mr_interleaved_lst: List of Mlx5MrInterleaved.\n        ");
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_9wr_mr_interleaved = {"wr_mr_interleaved", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_9wr_mr_interleaved, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_8wr_mr_interleaved};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_9wr_mr_interleaved(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5Mkey *__pyx_v_mkey = 0;
  PyObject *__pyx_v_access_flags = 0;
  PyObject *__pyx_v_repeat_count = 0;
  PyObject *__pyx_v_mr_interleaved_lst = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("wr_mr_interleaved (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_mkey,&__pyx_mstate_global->__pyx_n_u_access_flags,&__pyx_mstate_global->__pyx_n_u_repeat_count,&__pyx_mstate_global->__pyx_n_u_mr_interleaved_lst,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 898, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 898, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 898, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 898, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 898, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "wr_mr_interleaved", 0) < (0)) __PYX_ERR(0, 898, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 4; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("wr_mr_interleaved", 1, 4, 4, i); __PYX_ERR(0, 898, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 4)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 898, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 898, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 898, __pyx_L3_error)
      values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 898, __pyx_L3_error)
    }
    __pyx_v_mkey = ((struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5Mkey *)values[0]);
    __pyx_v_access_flags = values[1];
    __pyx_v_repeat_count = values[2];
    __pyx_v_mr_interleaved_lst = values[3];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("wr_mr_interleaved", 1, 4, 4, __pyx_nargs); __PYX_ERR(0, 898, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.wr_mr_interleaved", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mkey), __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5Mkey, 1, "mkey", 0))) __PYX_ERR(0, 898, __pyx_L1_error)
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_8wr_mr_interleaved(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *)__pyx_v_self), __pyx_v_mkey, __pyx_v_access_flags, __pyx_v_repeat_count, __pyx_v_mr_interleaved_lst);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_8wr_mr_interleaved(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *__pyx_v_self, struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5Mkey *__pyx_v_mkey, PyObject *__pyx_v_access_flags, PyObject *__pyx_v_repeat_count, PyObject *__pyx_v_mr_interleaved_lst) {
  PyObject *__pyx_v_num_interleaved = NULL;
  struct mlx5dv_mr_interleaved *__pyx_v_mr_interleaved_p;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_t_5;
  uint32_t __pyx_t_6;
  uint32_t __pyx_t_7;
  uint16_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("wr_mr_interleaved", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":908
 *         :param mr_interleaved_lst: List of Mlx5MrInterleaved.
 *         """
 *         num_interleaved = len(mr_interleaved_lst)             # <<<<<<<<<<<<<<
 *         cdef dv.mlx5dv_mr_interleaved *mr_interleaved_p = \
 *             <dv.mlx5dv_mr_interleaved*>calloc(1, num_interleaved * sizeof(dv.mlx5dv_mr_interleaved))
*/
  __pyx_t_1 = PyObject_Length(__pyx_v_mr_interleaved_lst); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 908, __pyx_L1_error)
  __pyx_t_2 = PyLong_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 908, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_num_interleaved = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":910
 *         num_interleaved = len(mr_interleaved_lst)
 *         cdef dv.mlx5dv_mr_interleaved *mr_interleaved_p = \
 *             <dv.mlx5dv_mr_interleaved*>calloc(1, num_interleaved * sizeof(dv.mlx5dv_mr_interleaved))             # <<<<<<<<<<<<<<
 *         if mr_interleaved_p == NULL:
 *             raise MemoryError('Failed to calloc mr interleaved buffers')
*/
  __pyx_t_2 = __Pyx_PyLong_FromSize_t((sizeof(struct mlx5dv_mr_interleaved))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 910, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyNumber_Multiply(__pyx_v_num_interleaved, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 910, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyLong_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 910, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_mr_interleaved_p = ((struct mlx5dv_mr_interleaved *)calloc(1, __pyx_t_4));

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":911
 *         cdef dv.mlx5dv_mr_interleaved *mr_interleaved_p = \
 *             <dv.mlx5dv_mr_interleaved*>calloc(1, num_interleaved * sizeof(dv.mlx5dv_mr_interleaved))
 *         if mr_interleaved_p == NULL:             # <<<<<<<<<<<<<<
 *             raise MemoryError('Failed to calloc mr interleaved buffers')
 *         copy_mr_interleaved_array(mr_interleaved_p, mr_interleaved_lst)
*/
  __pyx_t_5 = (__pyx_v_mr_interleaved_p == NULL);
  if (unlikely(__pyx_t_5)) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":912
 *             <dv.mlx5dv_mr_interleaved*>calloc(1, num_interleaved * sizeof(dv.mlx5dv_mr_interleaved))
 *         if mr_interleaved_p == NULL:
 *             raise MemoryError('Failed to calloc mr interleaved buffers')             # <<<<<<<<<<<<<<
 *         copy_mr_interleaved_array(mr_interleaved_p, mr_interleaved_lst)
 *         dv.mlx5dv_wr_mr_interleaved(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex),
*/
    __pyx_t_2 = NULL;
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Failed_to_calloc_mr_interleaved};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_MemoryError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 912, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(0, 912, __pyx_L1_error)

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":911
 *         cdef dv.mlx5dv_mr_interleaved *mr_interleaved_p = \
 *             <dv.mlx5dv_mr_interleaved*>calloc(1, num_interleaved * sizeof(dv.mlx5dv_mr_interleaved))
 *         if mr_interleaved_p == NULL:             # <<<<<<<<<<<<<<
 *             raise MemoryError('Failed to calloc mr interleaved buffers')
 *         copy_mr_interleaved_array(mr_interleaved_p, mr_interleaved_lst)
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":913
 *         if mr_interleaved_p == NULL:
 *             raise MemoryError('Failed to calloc mr interleaved buffers')
 *         copy_mr_interleaved_array(mr_interleaved_p, mr_interleaved_lst)             # <<<<<<<<<<<<<<
 *         dv.mlx5dv_wr_mr_interleaved(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex),
 *                                     mkey.mlx5dv_mkey, access_flags, repeat_count,
*/
  __pyx_t_3 = __pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_copy_mr_interleaved_array(__pyx_v_mr_interleaved_p, __pyx_v_mr_interleaved_lst); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 913, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":915
 *         copy_mr_interleaved_array(mr_interleaved_p, mr_interleaved_lst)
 *         dv.mlx5dv_wr_mr_interleaved(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex),
 *                                     mkey.mlx5dv_mkey, access_flags, repeat_count,             # <<<<<<<<<<<<<<
 *                                     num_interleaved, mr_interleaved_p)
 *         free(mr_interleaved_p)
*/
  __pyx_t_6 = __Pyx_PyLong_As_uint32_t(__pyx_v_access_flags); if (unlikely((__pyx_t_6 == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 915, __pyx_L1_error)
  __pyx_t_7 = __Pyx_PyLong_As_uint32_t(__pyx_v_repeat_count); if (unlikely((__pyx_t_7 == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 915, __pyx_L1_error)

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":916
 *         dv.mlx5dv_wr_mr_interleaved(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex),
 *                                     mkey.mlx5dv_mkey, access_flags, repeat_count,
 *                                     num_interleaved, mr_interleaved_p)             # <<<<<<<<<<<<<<
 *         free(mr_interleaved_p)
 * 
*/
  __pyx_t_8 = __Pyx_PyLong_As_uint16_t(__pyx_v_num_interleaved); if (unlikely((__pyx_t_8 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 916, __pyx_L1_error)

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":914
 *             raise MemoryError('Failed to calloc mr interleaved buffers')
 *         copy_mr_interleaved_array(mr_interleaved_p, mr_interleaved_lst)
 *         dv.mlx5dv_wr_mr_interleaved(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex),             # <<<<<<<<<<<<<<
 *                                     mkey.mlx5dv_mkey, access_flags, repeat_count,
 *                                     num_interleaved, mr_interleaved_p)
*/
  mlx5dv_wr_mr_interleaved(mlx5dv_qp_ex_from_ibv_qp_ex(__pyx_v_self->__pyx_base.qp_ex), __pyx_v_mkey->mlx5dv_mkey, __pyx_t_6, __pyx_t_7, __pyx_t_8, __pyx_v_mr_interleaved_p);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":917
 *                                     mkey.mlx5dv_mkey, access_flags, repeat_count,
 *                                     num_interleaved, mr_interleaved_p)
 *         free(mr_interleaved_p)             # <<<<<<<<<<<<<<
 * 
 *     def wr_mr_list(self, Mlx5Mkey mkey, access_flags, sge_list):
*/
  free(__pyx_v_mr_interleaved_p);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":898
 *         dv.mlx5dv_wr_raw_wqe(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex), wqe_ptr)
 * 
 *     def wr_mr_interleaved(self, Mlx5Mkey mkey, access_flags, repeat_count,             # <<<<<<<<<<<<<<
 *                           mr_interleaved_lst):
 *         """
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.wr_mr_interleaved", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_num_interleaved);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":919
 *         free(mr_interleaved_p)
 * 
 *     def wr_mr_list(self, Mlx5Mkey mkey, access_flags, sge_list):             # <<<<<<<<<<<<<<
 *         """
 *         Registers a memory layout based on list of SGE.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_11wr_mr_list(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_10wr_mr_list, "\n        Registers a memory layout based on list of SGE.\n        :param mkey: A Mlx5Mkey instance to reg this memory.\n        :param access_flags: The mkey access flags.\n        :param sge_list: List of SGE.\n        ");
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_11wr_mr_list = {"wr_mr_list", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_11wr_mr_list, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_10wr_mr_list};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_11wr_mr_list(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5Mkey *__pyx_v_mkey = 0;
  PyObject *__pyx_v_access_flags = 0;
  PyObject *__pyx_v_sge_list = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("wr_mr_list (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_mkey,&__pyx_mstate_global->__pyx_n_u_access_flags,&__pyx_mstate_global->__pyx_n_u_sge_list,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 919, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 919, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 919, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 919, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "wr_mr_list", 0) < (0)) __PYX_ERR(0, 919, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("wr_mr_list", 1, 3, 3, i); __PYX_ERR(0, 919, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 919, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 919, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 919, __pyx_L3_error)
    }
    __pyx_v_mkey = ((struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5Mkey *)values[0]);
    __pyx_v_access_flags = values[1];
    __pyx_v_sge_list = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("wr_mr_list", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 919, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.wr_mr_list", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mkey), __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5Mkey, 1, "mkey", 0))) __PYX_ERR(0, 919, __pyx_L1_error)
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_10wr_mr_list(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *)__pyx_v_self), __pyx_v_mkey, __pyx_v_access_flags, __pyx_v_sge_list);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_10wr_mr_list(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *__pyx_v_self, struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5Mkey *__pyx_v_mkey, PyObject *__pyx_v_access_flags, PyObject *__pyx_v_sge_list) {
  PyObject *__pyx_v_num_sges = NULL;
  struct ibv_sge *__pyx_v_sge_p;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_t_5;
  uint32_t __pyx_t_6;
  uint16_t __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("wr_mr_list", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":926
 *         :param sge_list: List of SGE.
 *         """
 *         num_sges = len(sge_list)             # <<<<<<<<<<<<<<
 *         cdef v.ibv_sge *sge_p = <v.ibv_sge*>calloc(1, num_sges * sizeof(v.ibv_sge))
 *         if sge_p == NULL:
*/
  __pyx_t_1 = PyObject_Length(__pyx_v_sge_list); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 926, __pyx_L1_error)
  __pyx_t_2 = PyLong_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 926, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_num_sges = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":927
 *         """
 *         num_sges = len(sge_list)
 *         cdef v.ibv_sge *sge_p = <v.ibv_sge*>calloc(1, num_sges * sizeof(v.ibv_sge))             # <<<<<<<<<<<<<<
 *         if sge_p == NULL:
 *             raise MemoryError('Failed to calloc sge buffers')
*/
  __pyx_t_2 = __Pyx_PyLong_FromSize_t((sizeof(struct ibv_sge))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 927, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyNumber_Multiply(__pyx_v_num_sges, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 927, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyLong_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 927, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_sge_p = ((struct ibv_sge *)calloc(1, __pyx_t_4));

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":928
 *         num_sges = len(sge_list)
 *         cdef v.ibv_sge *sge_p = <v.ibv_sge*>calloc(1, num_sges * sizeof(v.ibv_sge))
 *         if sge_p == NULL:             # <<<<<<<<<<<<<<
 *             raise MemoryError('Failed to calloc sge buffers')
 *         copy_sg_array(sge_p, sge_list, num_sges)
*/
  __pyx_t_5 = (__pyx_v_sge_p == NULL);
  if (unlikely(__pyx_t_5)) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":929
 *         cdef v.ibv_sge *sge_p = <v.ibv_sge*>calloc(1, num_sges * sizeof(v.ibv_sge))
 *         if sge_p == NULL:
 *             raise MemoryError('Failed to calloc sge buffers')             # <<<<<<<<<<<<<<
 *         copy_sg_array(sge_p, sge_list, num_sges)
 *         dv.mlx5dv_wr_mr_list(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex),
*/
    __pyx_t_2 = NULL;
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Failed_to_calloc_sge_buffers};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_MemoryError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 929, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(0, 929, __pyx_L1_error)

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":928
 *         num_sges = len(sge_list)
 *         cdef v.ibv_sge *sge_p = <v.ibv_sge*>calloc(1, num_sges * sizeof(v.ibv_sge))
 *         if sge_p == NULL:             # <<<<<<<<<<<<<<
 *             raise MemoryError('Failed to calloc sge buffers')
 *         copy_sg_array(sge_p, sge_list, num_sges)
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":930
 *         if sge_p == NULL:
 *             raise MemoryError('Failed to calloc sge buffers')
 *         copy_sg_array(sge_p, sge_list, num_sges)             # <<<<<<<<<<<<<<
 *         dv.mlx5dv_wr_mr_list(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex),
 *                              mkey.mlx5dv_mkey, access_flags, num_sges, sge_p)
*/
  __pyx_t_3 = __pyx_f_7pyverbs_2wr_copy_sg_array(__pyx_v_sge_p, __pyx_v_sge_list, __pyx_v_num_sges); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 930, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":932
 *         copy_sg_array(sge_p, sge_list, num_sges)
 *         dv.mlx5dv_wr_mr_list(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex),
 *                              mkey.mlx5dv_mkey, access_flags, num_sges, sge_p)             # <<<<<<<<<<<<<<
 *         free(sge_p)
 * 
*/
  __pyx_t_6 = __Pyx_PyLong_As_uint32_t(__pyx_v_access_flags); if (unlikely((__pyx_t_6 == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 932, __pyx_L1_error)
  __pyx_t_7 = __Pyx_PyLong_As_uint16_t(__pyx_v_num_sges); if (unlikely((__pyx_t_7 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 932, __pyx_L1_error)

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":931
 *             raise MemoryError('Failed to calloc sge buffers')
 *         copy_sg_array(sge_p, sge_list, num_sges)
 *         dv.mlx5dv_wr_mr_list(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex),             # <<<<<<<<<<<<<<
 *                              mkey.mlx5dv_mkey, access_flags, num_sges, sge_p)
 *         free(sge_p)
*/
  mlx5dv_wr_mr_list(mlx5dv_qp_ex_from_ibv_qp_ex(__pyx_v_self->__pyx_base.qp_ex), __pyx_v_mkey->mlx5dv_mkey, __pyx_t_6, __pyx_t_7, __pyx_v_sge_p);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":933
 *         dv.mlx5dv_wr_mr_list(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex),
 *                              mkey.mlx5dv_mkey, access_flags, num_sges, sge_p)
 *         free(sge_p)             # <<<<<<<<<<<<<<
 * 
 *     def wr_mkey_configure(self, Mlx5Mkey mkey, num_setters, Mlx5MkeyConfAttr mkey_config):
*/
  free(__pyx_v_sge_p);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":919
 *         free(mr_interleaved_p)
 * 
 *     def wr_mr_list(self, Mlx5Mkey mkey, access_flags, sge_list):             # <<<<<<<<<<<<<<
 *         """
 *         Registers a memory layout based on list of SGE.
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.wr_mr_list", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_num_sges);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":935
 *         free(sge_p)
 * 
 *     def wr_mkey_configure(self, Mlx5Mkey mkey, num_setters, Mlx5MkeyConfAttr mkey_config):             # <<<<<<<<<<<<<<
 *         """
 *         Create a work request to configure an Mkey
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_13wr_mkey_configure(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_12wr_mkey_configure, "\n        Create a work request to configure an Mkey\n        :param mkey: A Mlx5Mkey instance to configure.\n        :param num_setters: The number of setters that must be called after\n                            this function.\n        :param attr: The Mkey configuration attributes.\n        ");
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_13wr_mkey_configure = {"wr_mkey_configure", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_13wr_mkey_configure, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_12wr_mkey_configure};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_13wr_mkey_configure(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5Mkey *__pyx_v_mkey = 0;
  PyObject *__pyx_v_num_setters = 0;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MkeyConfAttr *__pyx_v_mkey_config = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("wr_mkey_configure (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_mkey,&__pyx_mstate_global->__pyx_n_u_num_setters,&__pyx_mstate_global->__pyx_n_u_mkey_config,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 935, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 935, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 935, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 935, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "wr_mkey_configure", 0) < (0)) __PYX_ERR(0, 935, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("wr_mkey_configure", 1, 3, 3, i); __PYX_ERR(0, 935, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 935, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 935, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 935, __pyx_L3_error)
    }
    __pyx_v_mkey = ((struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5Mkey *)values[0]);
    __pyx_v_num_setters = values[1];
    __pyx_v_mkey_config = ((struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MkeyConfAttr *)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("wr_mkey_configure", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 935, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.wr_mkey_configure", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mkey), __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5Mkey, 1, "mkey", 0))) __PYX_ERR(0, 935, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mkey_config), __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MkeyConfAttr, 1, "mkey_config", 0))) __PYX_ERR(0, 935, __pyx_L1_error)
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_12wr_mkey_configure(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *)__pyx_v_self), __pyx_v_mkey, __pyx_v_num_setters, __pyx_v_mkey_config);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_12wr_mkey_configure(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *__pyx_v_self, struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5Mkey *__pyx_v_mkey, PyObject *__pyx_v_num_setters, struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MkeyConfAttr *__pyx_v_mkey_config) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("wr_mkey_configure", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":944
 *         """
 *         dv.mlx5dv_wr_mkey_configure(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex),
 *                                     mkey.mlx5dv_mkey, num_setters,             # <<<<<<<<<<<<<<
 *                                     &mkey_config.mlx5dv_mkey_conf_attr)
 * 
*/
  __pyx_t_1 = __Pyx_PyLong_As_int(__pyx_v_num_setters); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 944, __pyx_L1_error)

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":943
 *         :param attr: The Mkey configuration attributes.
 *         """
 *         dv.mlx5dv_wr_mkey_configure(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex),             # <<<<<<<<<<<<<<
 *                                     mkey.mlx5dv_mkey, num_setters,
 *                                     &mkey_config.mlx5dv_mkey_conf_attr)
*/
  mlx5dv_wr_mkey_configure(mlx5dv_qp_ex_from_ibv_qp_ex(__pyx_v_self->__pyx_base.qp_ex), __pyx_v_mkey->mlx5dv_mkey, __pyx_t_1, (&__pyx_v_mkey_config->mlx5dv_mkey_conf_attr));

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":935
 *         free(sge_p)
 * 
 *     def wr_mkey_configure(self, Mlx5Mkey mkey, num_setters, Mlx5MkeyConfAttr mkey_config):             # <<<<<<<<<<<<<<
 *         """
 *         Create a work request to configure an Mkey
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.wr_mkey_configure", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":947
 *                                     &mkey_config.mlx5dv_mkey_conf_attr)
 * 
 *     def wr_set_mkey_access_flags(self, access_flags):             # <<<<<<<<<<<<<<
 *         """
 *         Set the memory protection attributes for an Mkey
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_15wr_set_mkey_access_flags(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_14wr_set_mkey_access_flags, "\n        Set the memory protection attributes for an Mkey\n        :param access_flags: The mkey access flags.\n        ");
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_15wr_set_mkey_access_flags = {"wr_set_mkey_access_flags", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_15wr_set_mkey_access_flags, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_14wr_set_mkey_access_flags};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_15wr_set_mkey_access_flags(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_access_flags = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("wr_set_mkey_access_flags (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_access_flags,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 947, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 947, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "wr_set_mkey_access_flags", 0) < (0)) __PYX_ERR(0, 947, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("wr_set_mkey_access_flags", 1, 1, 1, i); __PYX_ERR(0, 947, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 947, __pyx_L3_error)
    }
    __pyx_v_access_flags = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("wr_set_mkey_access_flags", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 947, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.wr_set_mkey_access_flags", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_14wr_set_mkey_access_flags(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *)__pyx_v_self), __pyx_v_access_flags);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_14wr_set_mkey_access_flags(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *__pyx_v_self, PyObject *__pyx_v_access_flags) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  uint32_t __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("wr_set_mkey_access_flags", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":953
 *         """
 *         dv.mlx5dv_wr_set_mkey_access_flags(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex),
 *                                            access_flags)             # <<<<<<<<<<<<<<
 * 
 *     def wr_set_mkey_layout_list(self, sge_list):
*/
  __pyx_t_1 = __Pyx_PyLong_As_uint32_t(__pyx_v_access_flags); if (unlikely((__pyx_t_1 == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 953, __pyx_L1_error)

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":952
 *         :param access_flags: The mkey access flags.
 *         """
 *         dv.mlx5dv_wr_set_mkey_access_flags(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex),             # <<<<<<<<<<<<<<
 *                                            access_flags)
 * 
*/
  mlx5dv_wr_set_mkey_access_flags(mlx5dv_qp_ex_from_ibv_qp_ex(__pyx_v_self->__pyx_base.qp_ex), __pyx_t_1);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":947
 *                                     &mkey_config.mlx5dv_mkey_conf_attr)
 * 
 *     def wr_set_mkey_access_flags(self, access_flags):             # <<<<<<<<<<<<<<
 *         """
 *         Set the memory protection attributes for an Mkey
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.wr_set_mkey_access_flags", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":955
 *                                            access_flags)
 * 
 *     def wr_set_mkey_layout_list(self, sge_list):             # <<<<<<<<<<<<<<
 *         """
 *         Set a memory layout for an Mkey based on SGE list.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_17wr_set_mkey_layout_list(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_16wr_set_mkey_layout_list, "\n        Set a memory layout for an Mkey based on SGE list.\n        :param sge_list: List of SGE.\n        ");
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_17wr_set_mkey_layout_list = {"wr_set_mkey_layout_list", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_17wr_set_mkey_layout_list, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_16wr_set_mkey_layout_list};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_17wr_set_mkey_layout_list(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sge_list = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("wr_set_mkey_layout_list (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_sge_list,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 955, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 955, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "wr_set_mkey_layout_list", 0) < (0)) __PYX_ERR(0, 955, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("wr_set_mkey_layout_list", 1, 1, 1, i); __PYX_ERR(0, 955, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 955, __pyx_L3_error)
    }
    __pyx_v_sge_list = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("wr_set_mkey_layout_list", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 955, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.wr_set_mkey_layout_list", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_16wr_set_mkey_layout_list(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *)__pyx_v_self), __pyx_v_sge_list);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_16wr_set_mkey_layout_list(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *__pyx_v_self, PyObject *__pyx_v_sge_list) {
  PyObject *__pyx_v_num_sges = NULL;
  struct ibv_sge *__pyx_v_sge_p;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_t_5;
  uint16_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("wr_set_mkey_layout_list", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":960
 *         :param sge_list: List of SGE.
 *         """
 *         num_sges = len(sge_list)             # <<<<<<<<<<<<<<
 *         cdef v.ibv_sge *sge_p = <v.ibv_sge*>calloc(1, num_sges * sizeof(v.ibv_sge))
 *         if sge_p == NULL:
*/
  __pyx_t_1 = PyObject_Length(__pyx_v_sge_list); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 960, __pyx_L1_error)
  __pyx_t_2 = PyLong_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 960, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_num_sges = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":961
 *         """
 *         num_sges = len(sge_list)
 *         cdef v.ibv_sge *sge_p = <v.ibv_sge*>calloc(1, num_sges * sizeof(v.ibv_sge))             # <<<<<<<<<<<<<<
 *         if sge_p == NULL:
 *             raise MemoryError('Failed to calloc sge buffers')
*/
  __pyx_t_2 = __Pyx_PyLong_FromSize_t((sizeof(struct ibv_sge))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 961, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyNumber_Multiply(__pyx_v_num_sges, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 961, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyLong_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 961, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_sge_p = ((struct ibv_sge *)calloc(1, __pyx_t_4));

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":962
 *         num_sges = len(sge_list)
 *         cdef v.ibv_sge *sge_p = <v.ibv_sge*>calloc(1, num_sges * sizeof(v.ibv_sge))
 *         if sge_p == NULL:             # <<<<<<<<<<<<<<
 *             raise MemoryError('Failed to calloc sge buffers')
 *         copy_sg_array(sge_p, sge_list, num_sges)
*/
  __pyx_t_5 = (__pyx_v_sge_p == NULL);
  if (unlikely(__pyx_t_5)) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":963
 *         cdef v.ibv_sge *sge_p = <v.ibv_sge*>calloc(1, num_sges * sizeof(v.ibv_sge))
 *         if sge_p == NULL:
 *             raise MemoryError('Failed to calloc sge buffers')             # <<<<<<<<<<<<<<
 *         copy_sg_array(sge_p, sge_list, num_sges)
 *         dv.mlx5dv_wr_set_mkey_layout_list(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex),
*/
    __pyx_t_2 = NULL;
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Failed_to_calloc_sge_buffers};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_MemoryError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 963, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(0, 963, __pyx_L1_error)

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":962
 *         num_sges = len(sge_list)
 *         cdef v.ibv_sge *sge_p = <v.ibv_sge*>calloc(1, num_sges * sizeof(v.ibv_sge))
 *         if sge_p == NULL:             # <<<<<<<<<<<<<<
 *             raise MemoryError('Failed to calloc sge buffers')
 *         copy_sg_array(sge_p, sge_list, num_sges)
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":964
 *         if sge_p == NULL:
 *             raise MemoryError('Failed to calloc sge buffers')
 *         copy_sg_array(sge_p, sge_list, num_sges)             # <<<<<<<<<<<<<<
 *         dv.mlx5dv_wr_set_mkey_layout_list(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex),
 *                                           num_sges, sge_p)
*/
  __pyx_t_3 = __pyx_f_7pyverbs_2wr_copy_sg_array(__pyx_v_sge_p, __pyx_v_sge_list, __pyx_v_num_sges); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 964, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":966
 *         copy_sg_array(sge_p, sge_list, num_sges)
 *         dv.mlx5dv_wr_set_mkey_layout_list(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex),
 *                                           num_sges, sge_p)             # <<<<<<<<<<<<<<
 *         free(sge_p)
 * 
*/
  __pyx_t_6 = __Pyx_PyLong_As_uint16_t(__pyx_v_num_sges); if (unlikely((__pyx_t_6 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 966, __pyx_L1_error)

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":965
 *             raise MemoryError('Failed to calloc sge buffers')
 *         copy_sg_array(sge_p, sge_list, num_sges)
 *         dv.mlx5dv_wr_set_mkey_layout_list(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex),             # <<<<<<<<<<<<<<
 *                                           num_sges, sge_p)
 *         free(sge_p)
*/
  mlx5dv_wr_set_mkey_layout_list(mlx5dv_qp_ex_from_ibv_qp_ex(__pyx_v_self->__pyx_base.qp_ex), __pyx_t_6, __pyx_v_sge_p);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":967
 *         dv.mlx5dv_wr_set_mkey_layout_list(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex),
 *                                           num_sges, sge_p)
 *         free(sge_p)             # <<<<<<<<<<<<<<
 * 
 *     def wr_set_mkey_layout_interleaved(self, repeat_count, mr_interleaved_lst):
*/
  free(__pyx_v_sge_p);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":955
 *                                            access_flags)
 * 
 *     def wr_set_mkey_layout_list(self, sge_list):             # <<<<<<<<<<<<<<
 *         """
 *         Set a memory layout for an Mkey based on SGE list.
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.wr_set_mkey_layout_list", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_num_sges);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":969
 *         free(sge_p)
 * 
 *     def wr_set_mkey_layout_interleaved(self, repeat_count, mr_interleaved_lst):             # <<<<<<<<<<<<<<
 *         """
 *         Set an interleaved memory layout for an Mkey
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_19wr_set_mkey_layout_interleaved(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_18wr_set_mkey_layout_interleaved, "\n        Set an interleaved memory layout for an Mkey\n        :param repeat_count: Number of times to repeat the interleaved layout.\n        :param mr_interleaved_lst: List of Mlx5MrInterleaved.\n        ");
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_19wr_set_mkey_layout_interleaved = {"wr_set_mkey_layout_interleaved", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_19wr_set_mkey_layout_interleaved, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_18wr_set_mkey_layout_interleaved};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_19wr_set_mkey_layout_interleaved(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_repeat_count = 0;
  PyObject *__pyx_v_mr_interleaved_lst = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("wr_set_mkey_layout_interleaved (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_repeat_count,&__pyx_mstate_global->__pyx_n_u_mr_interleaved_lst,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 969, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 969, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 969, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "wr_set_mkey_layout_interleaved", 0) < (0)) __PYX_ERR(0, 969, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("wr_set_mkey_layout_interleaved", 1, 2, 2, i); __PYX_ERR(0, 969, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 969, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 969, __pyx_L3_error)
    }
    __pyx_v_repeat_count = values[0];
    __pyx_v_mr_interleaved_lst = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("wr_set_mkey_layout_interleaved", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 969, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.wr_set_mkey_layout_interleaved", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_18wr_set_mkey_layout_interleaved(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *)__pyx_v_self), __pyx_v_repeat_count, __pyx_v_mr_interleaved_lst);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_18wr_set_mkey_layout_interleaved(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *__pyx_v_self, PyObject *__pyx_v_repeat_count, PyObject *__pyx_v_mr_interleaved_lst) {
  PyObject *__pyx_v_num_interleaved = NULL;
  struct mlx5dv_mr_interleaved *__pyx_v_mr_interleaved_p;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_t_5;
  uint32_t __pyx_t_6;
  uint16_t __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("wr_set_mkey_layout_interleaved", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":975
 *         :param mr_interleaved_lst: List of Mlx5MrInterleaved.
 *         """
 *         num_interleaved = len(mr_interleaved_lst)             # <<<<<<<<<<<<<<
 *         cdef dv.mlx5dv_mr_interleaved *mr_interleaved_p = \
 *             <dv.mlx5dv_mr_interleaved*>calloc(1, num_interleaved * sizeof(dv.mlx5dv_mr_interleaved))
*/
  __pyx_t_1 = PyObject_Length(__pyx_v_mr_interleaved_lst); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 975, __pyx_L1_error)
  __pyx_t_2 = PyLong_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 975, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_num_interleaved = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":977
 *         num_interleaved = len(mr_interleaved_lst)
 *         cdef dv.mlx5dv_mr_interleaved *mr_interleaved_p = \
 *             <dv.mlx5dv_mr_interleaved*>calloc(1, num_interleaved * sizeof(dv.mlx5dv_mr_interleaved))             # <<<<<<<<<<<<<<
 *         if mr_interleaved_p == NULL:
 *             raise MemoryError('Failed to calloc mr interleaved buffers')
*/
  __pyx_t_2 = __Pyx_PyLong_FromSize_t((sizeof(struct mlx5dv_mr_interleaved))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 977, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyNumber_Multiply(__pyx_v_num_interleaved, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 977, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyLong_As_size_t(__pyx_t_3); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 977, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_mr_interleaved_p = ((struct mlx5dv_mr_interleaved *)calloc(1, __pyx_t_4));

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":978
 *         cdef dv.mlx5dv_mr_interleaved *mr_interleaved_p = \
 *             <dv.mlx5dv_mr_interleaved*>calloc(1, num_interleaved * sizeof(dv.mlx5dv_mr_interleaved))
 *         if mr_interleaved_p == NULL:             # <<<<<<<<<<<<<<
 *             raise MemoryError('Failed to calloc mr interleaved buffers')
 *         copy_mr_interleaved_array(mr_interleaved_p, mr_interleaved_lst)
*/
  __pyx_t_5 = (__pyx_v_mr_interleaved_p == NULL);
  if (unlikely(__pyx_t_5)) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":979
 *             <dv.mlx5dv_mr_interleaved*>calloc(1, num_interleaved * sizeof(dv.mlx5dv_mr_interleaved))
 *         if mr_interleaved_p == NULL:
 *             raise MemoryError('Failed to calloc mr interleaved buffers')             # <<<<<<<<<<<<<<
 *         copy_mr_interleaved_array(mr_interleaved_p, mr_interleaved_lst)
 *         dv.mlx5dv_wr_set_mkey_layout_interleaved(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex),
*/
    __pyx_t_2 = NULL;
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Failed_to_calloc_mr_interleaved};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_MemoryError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 979, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(0, 979, __pyx_L1_error)

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":978
 *         cdef dv.mlx5dv_mr_interleaved *mr_interleaved_p = \
 *             <dv.mlx5dv_mr_interleaved*>calloc(1, num_interleaved * sizeof(dv.mlx5dv_mr_interleaved))
 *         if mr_interleaved_p == NULL:             # <<<<<<<<<<<<<<
 *             raise MemoryError('Failed to calloc mr interleaved buffers')
 *         copy_mr_interleaved_array(mr_interleaved_p, mr_interleaved_lst)
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":980
 *         if mr_interleaved_p == NULL:
 *             raise MemoryError('Failed to calloc mr interleaved buffers')
 *         copy_mr_interleaved_array(mr_interleaved_p, mr_interleaved_lst)             # <<<<<<<<<<<<<<
 *         dv.mlx5dv_wr_set_mkey_layout_interleaved(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex),
 *                                                  repeat_count, num_interleaved,
*/
  __pyx_t_3 = __pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_copy_mr_interleaved_array(__pyx_v_mr_interleaved_p, __pyx_v_mr_interleaved_lst); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 980, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":982
 *         copy_mr_interleaved_array(mr_interleaved_p, mr_interleaved_lst)
 *         dv.mlx5dv_wr_set_mkey_layout_interleaved(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex),
 *                                                  repeat_count, num_interleaved,             # <<<<<<<<<<<<<<
 *                                                  mr_interleaved_p)
 *         free(mr_interleaved_p)
*/
  __pyx_t_6 = __Pyx_PyLong_As_uint32_t(__pyx_v_repeat_count); if (unlikely((__pyx_t_6 == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 982, __pyx_L1_error)
  __pyx_t_7 = __Pyx_PyLong_As_uint16_t(__pyx_v_num_interleaved); if (unlikely((__pyx_t_7 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 982, __pyx_L1_error)

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":981
 *             raise MemoryError('Failed to calloc mr interleaved buffers')
 *         copy_mr_interleaved_array(mr_interleaved_p, mr_interleaved_lst)
 *         dv.mlx5dv_wr_set_mkey_layout_interleaved(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex),             # <<<<<<<<<<<<<<
 *                                                  repeat_count, num_interleaved,
 *                                                  mr_interleaved_p)
*/
  mlx5dv_wr_set_mkey_layout_interleaved(mlx5dv_qp_ex_from_ibv_qp_ex(__pyx_v_self->__pyx_base.qp_ex), __pyx_t_6, __pyx_t_7, __pyx_v_mr_interleaved_p);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":984
 *                                                  repeat_count, num_interleaved,
 *                                                  mr_interleaved_p)
 *         free(mr_interleaved_p)             # <<<<<<<<<<<<<<
 * 
 *     def wr_set_mkey_crypto(self, Mlx5CryptoAttr attr):
*/
  free(__pyx_v_mr_interleaved_p);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":969
 *         free(sge_p)
 * 
 *     def wr_set_mkey_layout_interleaved(self, repeat_count, mr_interleaved_lst):             # <<<<<<<<<<<<<<
 *         """
 *         Set an interleaved memory layout for an Mkey
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.wr_set_mkey_layout_interleaved", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_num_interleaved);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":986
 *         free(mr_interleaved_p)
 * 
 *     def wr_set_mkey_crypto(self, Mlx5CryptoAttr attr):             # <<<<<<<<<<<<<<
 *         """
 *         Configure a MKey for crypto operation.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_21wr_set_mkey_crypto(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_20wr_set_mkey_crypto, "\n        Configure a MKey for crypto operation.\n        :param attr: crypto attributes to set for the mkey.\n        ");
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_21wr_set_mkey_crypto = {"wr_set_mkey_crypto", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_21wr_set_mkey_crypto, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_20wr_set_mkey_crypto};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_21wr_set_mkey_crypto(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoAttr *__pyx_v_attr = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("wr_set_mkey_crypto (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_attr,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 986, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 986, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "wr_set_mkey_crypto", 0) < (0)) __PYX_ERR(0, 986, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("wr_set_mkey_crypto", 1, 1, 1, i); __PYX_ERR(0, 986, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 986, __pyx_L3_error)
    }
    __pyx_v_attr = ((struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoAttr *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("wr_set_mkey_crypto", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 986, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.wr_set_mkey_crypto", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_attr), __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoAttr, 1, "attr", 0))) __PYX_ERR(0, 986, __pyx_L1_error)
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_20wr_set_mkey_crypto(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *)__pyx_v_self), __pyx_v_attr);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_20wr_set_mkey_crypto(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *__pyx_v_self, struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoAttr *__pyx_v_attr) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("wr_set_mkey_crypto", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":991
 *         :param attr: crypto attributes to set for the mkey.
 *         """
 *         dv.mlx5dv_wr_set_mkey_crypto(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex),             # <<<<<<<<<<<<<<
 *                                      &attr.mlx5dv_crypto_attr)
 * 
*/
  mlx5dv_wr_set_mkey_crypto(mlx5dv_qp_ex_from_ibv_qp_ex(__pyx_v_self->__pyx_base.qp_ex), (&__pyx_v_attr->mlx5dv_crypto_attr));

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":986
 *         free(mr_interleaved_p)
 * 
 *     def wr_set_mkey_crypto(self, Mlx5CryptoAttr attr):             # <<<<<<<<<<<<<<
 *         """
 *         Configure a MKey for crypto operation.
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":994
 *                                      &attr.mlx5dv_crypto_attr)
 * 
 *     def wr_set_mkey_sig_block(self, Mlx5SigBlockAttr block_attr):             # <<<<<<<<<<<<<<
 *         """
 *         Configure a MKEY for block signature (data integrity) operation.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_23wr_set_mkey_sig_block(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_22wr_set_mkey_sig_block, "\n        Configure a MKEY for block signature (data integrity) operation.\n        :param block_attr: Block signature attributes to set for the mkey.\n        ");
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_23wr_set_mkey_sig_block = {"wr_set_mkey_sig_block", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_23wr_set_mkey_sig_block, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_22wr_set_mkey_sig_block};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_23wr_set_mkey_sig_block(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigBlockAttr *__pyx_v_block_attr = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("wr_set_mkey_sig_block (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_block_attr,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 994, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 994, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "wr_set_mkey_sig_block", 0) < (0)) __PYX_ERR(0, 994, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("wr_set_mkey_sig_block", 1, 1, 1, i); __PYX_ERR(0, 994, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 994, __pyx_L3_error)
    }
    __pyx_v_block_attr = ((struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigBlockAttr *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("wr_set_mkey_sig_block", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 994, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.wr_set_mkey_sig_block", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_block_attr), __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigBlockAttr, 1, "block_attr", 0))) __PYX_ERR(0, 994, __pyx_L1_error)
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_22wr_set_mkey_sig_block(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *)__pyx_v_self), __pyx_v_block_attr);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_22wr_set_mkey_sig_block(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *__pyx_v_self, struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigBlockAttr *__pyx_v_block_attr) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("wr_set_mkey_sig_block", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":999
 *         :param block_attr: Block signature attributes to set for the mkey.
 *         """
 *         dv.mlx5dv_wr_set_mkey_sig_block(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex),             # <<<<<<<<<<<<<<
 *                                         &block_attr.mlx5dv_sig_block_attr)
 * 
*/
  mlx5dv_wr_set_mkey_sig_block(mlx5dv_qp_ex_from_ibv_qp_ex(__pyx_v_self->__pyx_base.qp_ex), (&__pyx_v_block_attr->mlx5dv_sig_block_attr));

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":994
 *                                      &attr.mlx5dv_crypto_attr)
 * 
 *     def wr_set_mkey_sig_block(self, Mlx5SigBlockAttr block_attr):             # <<<<<<<<<<<<<<
 *         """
 *         Configure a MKEY for block signature (data integrity) operation.
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1002
 *                                         &block_attr.mlx5dv_sig_block_attr)
 * 
 *     def wr_memcpy(self, dest_lkey, dest_addr, src_lkey, src_addr, length):             # <<<<<<<<<<<<<<
 *         """
 *         Copies memory data on PCI bus using DMA functionality of the device.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_25wr_memcpy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_24wr_memcpy, "\n        Copies memory data on PCI bus using DMA functionality of the device.\n        :param dest_lkey: Local key of the mkey to copy data to\n        :param dest_addr: Memory address to copy data to\n        :param src_lkey: Local key of the mkey to copy data from\n        :param src_addr: Memory address to copy data from\n        :param length: Length of data to be copied\n        ");
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_25wr_memcpy = {"wr_memcpy", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_25wr_memcpy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_24wr_memcpy};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_25wr_memcpy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dest_lkey = 0;
  PyObject *__pyx_v_dest_addr = 0;
  PyObject *__pyx_v_src_lkey = 0;
  PyObject *__pyx_v_src_addr = 0;
  PyObject *__pyx_v_length = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[5] = {0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("wr_memcpy (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_dest_lkey,&__pyx_mstate_global->__pyx_n_u_dest_addr,&__pyx_mstate_global->__pyx_n_u_src_lkey,&__pyx_mstate_global->__pyx_n_u_src_addr,&__pyx_mstate_global->__pyx_n_u_length,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1002, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 1002, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 1002, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 1002, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1002, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1002, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "wr_memcpy", 0) < (0)) __PYX_ERR(0, 1002, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 5; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("wr_memcpy", 1, 5, 5, i); __PYX_ERR(0, 1002, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 5)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1002, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1002, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 1002, __pyx_L3_error)
      values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 1002, __pyx_L3_error)
      values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 1002, __pyx_L3_error)
    }
    __pyx_v_dest_lkey = values[0];
    __pyx_v_dest_addr = values[1];
    __pyx_v_src_lkey = values[2];
    __pyx_v_src_addr = values[3];
    __pyx_v_length = values[4];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("wr_memcpy", 1, 5, 5, __pyx_nargs); __PYX_ERR(0, 1002, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.wr_memcpy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_24wr_memcpy(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *)__pyx_v_self), __pyx_v_dest_lkey, __pyx_v_dest_addr, __pyx_v_src_lkey, __pyx_v_src_addr, __pyx_v_length);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_24wr_memcpy(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *__pyx_v_self, PyObject *__pyx_v_dest_lkey, PyObject *__pyx_v_dest_addr, PyObject *__pyx_v_src_lkey, PyObject *__pyx_v_src_addr, PyObject *__pyx_v_length) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  uint32_t __pyx_t_1;
  uint64_t __pyx_t_2;
  uint32_t __pyx_t_3;
  uint64_t __pyx_t_4;
  uint64_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("wr_memcpy", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1012
 *         """
 *         dv.mlx5dv_wr_memcpy(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex),
 *                             dest_lkey, dest_addr, src_lkey, src_addr, length)             # <<<<<<<<<<<<<<
 * 
 *     def cancel_posted_send_wrs(self, wr_id):
*/
  __pyx_t_1 = __Pyx_PyLong_As_uint32_t(__pyx_v_dest_lkey); if (unlikely((__pyx_t_1 == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1012, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyLong_As_uint64_t(__pyx_v_dest_addr); if (unlikely((__pyx_t_2 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1012, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyLong_As_uint32_t(__pyx_v_src_lkey); if (unlikely((__pyx_t_3 == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1012, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyLong_As_uint64_t(__pyx_v_src_addr); if (unlikely((__pyx_t_4 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1012, __pyx_L1_error)
  __pyx_t_5 = __Pyx_PyLong_As_uint64_t(__pyx_v_length); if (unlikely((__pyx_t_5 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1012, __pyx_L1_error)

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1011
 *         :param length: Length of data to be copied
 *         """
 *         dv.mlx5dv_wr_memcpy(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex),             # <<<<<<<<<<<<<<
 *                             dest_lkey, dest_addr, src_lkey, src_addr, length)
 * 
*/
  mlx5dv_wr_memcpy(mlx5dv_qp_ex_from_ibv_qp_ex(__pyx_v_self->__pyx_base.qp_ex), __pyx_t_1, __pyx_t_2, __pyx_t_3, __pyx_t_4, __pyx_t_5);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1002
 *                                         &block_attr.mlx5dv_sig_block_attr)
 * 
 *     def wr_memcpy(self, dest_lkey, dest_addr, src_lkey, src_addr, length):             # <<<<<<<<<<<<<<
 *         """
 *         Copies memory data on PCI bus using DMA functionality of the device.
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.wr_memcpy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1014
 *                             dest_lkey, dest_addr, src_lkey, src_addr, length)
 * 
 *     def cancel_posted_send_wrs(self, wr_id):             # <<<<<<<<<<<<<<
 *         """
 *         Cancel all pending send work requests with supplied wr_id in a QP in
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_27cancel_posted_send_wrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_26cancel_posted_send_wrs, "\n        Cancel all pending send work requests with supplied wr_id in a QP in\n        SQD state.\n        :param wr_id: The WRID to cancel.\n        :return: Number of work requests that were canceled.\n        ");
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_27cancel_posted_send_wrs = {"cancel_posted_send_wrs", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_27cancel_posted_send_wrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_26cancel_posted_send_wrs};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_27cancel_posted_send_wrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_wr_id = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cancel_posted_send_wrs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_wr_id,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1014, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1014, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "cancel_posted_send_wrs", 0) < (0)) __PYX_ERR(0, 1014, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("cancel_posted_send_wrs", 1, 1, 1, i); __PYX_ERR(0, 1014, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1014, __pyx_L3_error)
    }
    __pyx_v_wr_id = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cancel_posted_send_wrs", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1014, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.cancel_posted_send_wrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_26cancel_posted_send_wrs(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *)__pyx_v_self), __pyx_v_wr_id);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_26cancel_posted_send_wrs(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *__pyx_v_self, PyObject *__pyx_v_wr_id) {
  PyObject *__pyx_v_rc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  uint64_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  size_t __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cancel_posted_send_wrs", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1022
 *         """
 *         rc = dv.mlx5dv_qp_cancel_posted_send_wrs(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex),
 *                                                  wr_id)             # <<<<<<<<<<<<<<
 *         if rc < 0:
 *             raise PyverbsRDMAError(f'Failed to cancel send WRs', -rc)
*/
  __pyx_t_1 = __Pyx_PyLong_As_uint64_t(__pyx_v_wr_id); if (unlikely((__pyx_t_1 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1022, __pyx_L1_error)

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1021
 *         :return: Number of work requests that were canceled.
 *         """
 *         rc = dv.mlx5dv_qp_cancel_posted_send_wrs(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex),             # <<<<<<<<<<<<<<
 *                                                  wr_id)
 *         if rc < 0:
*/
  __pyx_t_2 = __Pyx_PyLong_From_int(mlx5dv_qp_cancel_posted_send_wrs(mlx5dv_qp_ex_from_ibv_qp_ex(__pyx_v_self->__pyx_base.qp_ex), __pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1021, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_rc = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1023
 *         rc = dv.mlx5dv_qp_cancel_posted_send_wrs(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex),
 *                                                  wr_id)
 *         if rc < 0:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAError(f'Failed to cancel send WRs', -rc)
 *         return rc
*/
  __pyx_t_2 = PyObject_RichCompare(__pyx_v_rc, __pyx_mstate_global->__pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1023, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 1023, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(__pyx_t_3)) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1024
 *                                                  wr_id)
 *         if rc < 0:
 *             raise PyverbsRDMAError(f'Failed to cancel send WRs', -rc)             # <<<<<<<<<<<<<<
 *         return rc
 * 
*/
    __pyx_t_4 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_PyverbsRDMAError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1024, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyNumber_Negative(__pyx_v_rc); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1024, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_4);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_Failed_to_cancel_send_WRs, __pyx_t_6};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1024, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(0, 1024, __pyx_L1_error)

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1023
 *         rc = dv.mlx5dv_qp_cancel_posted_send_wrs(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex),
 *                                                  wr_id)
 *         if rc < 0:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAError(f'Failed to cancel send WRs', -rc)
 *         return rc
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1025
 *         if rc < 0:
 *             raise PyverbsRDMAError(f'Failed to cancel send WRs', -rc)
 *         return rc             # <<<<<<<<<<<<<<
 * 
 *     def wr_set_dc_addr_stream(self, AH ah, remote_dctn, remote_dc_key, stream_id):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rc);
  __pyx_r = __pyx_v_rc;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1014
 *                             dest_lkey, dest_addr, src_lkey, src_addr, length)
 * 
 *     def cancel_posted_send_wrs(self, wr_id):             # <<<<<<<<<<<<<<
 *         """
 *         Cancel all pending send work requests with supplied wr_id in a QP in
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.cancel_posted_send_wrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1027
 *         return rc
 * 
 *     def wr_set_dc_addr_stream(self, AH ah, remote_dctn, remote_dc_key, stream_id):             # <<<<<<<<<<<<<<
 *         """
 *         Attach a DC info to the last work request.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_29wr_set_dc_addr_stream(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_28wr_set_dc_addr_stream, "\n        Attach a DC info to the last work request.\n        :param ah: Address Handle to the requested DCT.\n        :param remote_dctn: The remote DCT number.\n        :param remote_dc_key: The remote DC key.\n        :param stream_id: DCI stream channel_id\n        ");
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_29wr_set_dc_addr_stream = {"wr_set_dc_addr_stream", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_29wr_set_dc_addr_stream, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_28wr_set_dc_addr_stream};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_29wr_set_dc_addr_stream(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_7pyverbs_4addr_AH *__pyx_v_ah = 0;
  PyObject *__pyx_v_remote_dctn = 0;
  PyObject *__pyx_v_remote_dc_key = 0;
  PyObject *__pyx_v_stream_id = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("wr_set_dc_addr_stream (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_ah,&__pyx_mstate_global->__pyx_n_u_remote_dctn,&__pyx_mstate_global->__pyx_n_u_remote_dc_key,&__pyx_mstate_global->__pyx_n_u_stream_id,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1027, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 1027, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 1027, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1027, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1027, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "wr_set_dc_addr_stream", 0) < (0)) __PYX_ERR(0, 1027, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 4; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("wr_set_dc_addr_stream", 1, 4, 4, i); __PYX_ERR(0, 1027, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 4)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1027, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1027, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 1027, __pyx_L3_error)
      values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 1027, __pyx_L3_error)
    }
    __pyx_v_ah = ((struct __pyx_obj_7pyverbs_4addr_AH *)values[0]);
    __pyx_v_remote_dctn = values[1];
    __pyx_v_remote_dc_key = values[2];
    __pyx_v_stream_id = values[3];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("wr_set_dc_addr_stream", 1, 4, 4, __pyx_nargs); __PYX_ERR(0, 1027, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.wr_set_dc_addr_stream", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_ah), __pyx_mstate_global->__pyx_ptype_7pyverbs_4addr_AH, 1, "ah", 0))) __PYX_ERR(0, 1027, __pyx_L1_error)
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_28wr_set_dc_addr_stream(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *)__pyx_v_self), __pyx_v_ah, __pyx_v_remote_dctn, __pyx_v_remote_dc_key, __pyx_v_stream_id);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_28wr_set_dc_addr_stream(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *__pyx_v_self, struct __pyx_obj_7pyverbs_4addr_AH *__pyx_v_ah, PyObject *__pyx_v_remote_dctn, PyObject *__pyx_v_remote_dc_key, PyObject *__pyx_v_stream_id) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  uint32_t __pyx_t_1;
  uint64_t __pyx_t_2;
  uint16_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("wr_set_dc_addr_stream", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1036
 *         """
 *         dv.mlx5dv_wr_set_dc_addr_stream(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex),
 *                                         ah.ah, remote_dctn, remote_dc_key,             # <<<<<<<<<<<<<<
 *                                         stream_id)
 * 
*/
  __pyx_t_1 = __Pyx_PyLong_As_uint32_t(__pyx_v_remote_dctn); if (unlikely((__pyx_t_1 == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1036, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyLong_As_uint64_t(__pyx_v_remote_dc_key); if (unlikely((__pyx_t_2 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1036, __pyx_L1_error)

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1037
 *         dv.mlx5dv_wr_set_dc_addr_stream(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex),
 *                                         ah.ah, remote_dctn, remote_dc_key,
 *                                         stream_id)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
  __pyx_t_3 = __Pyx_PyLong_As_uint16_t(__pyx_v_stream_id); if (unlikely((__pyx_t_3 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1037, __pyx_L1_error)

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1035
 *         :param stream_id: DCI stream channel_id
 *         """
 *         dv.mlx5dv_wr_set_dc_addr_stream(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex),             # <<<<<<<<<<<<<<
 *                                         ah.ah, remote_dctn, remote_dc_key,
 *                                         stream_id)
*/
  mlx5dv_wr_set_dc_addr_stream(mlx5dv_qp_ex_from_ibv_qp_ex(__pyx_v_self->__pyx_base.qp_ex), __pyx_v_ah->ah, __pyx_t_1, __pyx_t_2, __pyx_t_3);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1027
 *         return rc
 * 
 *     def wr_set_dc_addr_stream(self, AH ah, remote_dctn, remote_dc_key, stream_id):             # <<<<<<<<<<<<<<
 *         """
 *         Attach a DC info to the last work request.
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.wr_set_dc_addr_stream", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1039
 *                                         stream_id)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def query_lag_port(QP qp):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_31query_lag_port(CYTHON_UNUSED PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_30query_lag_port, "\n        Queries for port num that the QP desired to use, and the port that\n        is currently used by the bond for this QP.\n        :param qp: Queries the port for this QP.\n        :return: Tuple of the desired port and actual port which used by the HW.\n        ");
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_31query_lag_port = {"query_lag_port", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_31query_lag_port, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_30query_lag_port};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_31query_lag_port(CYTHON_UNUSED PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_7pyverbs_2qp_QP *__pyx_v_qp = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("query_lag_port (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_qp,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1039, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1039, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "query_lag_port", 0) < (0)) __PYX_ERR(0, 1039, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("query_lag_port", 1, 1, 1, i); __PYX_ERR(0, 1039, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1039, __pyx_L3_error)
    }
    __pyx_v_qp = ((struct __pyx_obj_7pyverbs_2qp_QP *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("query_lag_port", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1039, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.query_lag_port", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_qp), __pyx_mstate_global->__pyx_ptype_7pyverbs_2qp_QP, 1, "qp", 0))) __PYX_ERR(0, 1040, __pyx_L1_error)
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_30query_lag_port(__pyx_v_qp);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_30query_lag_port(struct __pyx_obj_7pyverbs_2qp_QP *__pyx_v_qp) {
  uint8_t __pyx_v_port_num;
  uint8_t __pyx_v_active_port_num;
  int __pyx_v_rc;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  size_t __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("query_lag_port", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1049
 *         cdef uint8_t port_num
 *         cdef uint8_t active_port_num
 *         rc = dv.mlx5dv_query_qp_lag_port(qp.qp, &port_num, &active_port_num)             # <<<<<<<<<<<<<<
 *         if rc != 0:
 *             raise PyverbsRDMAError(f'Failed to query QP #{qp.qp.qp_num}', rc)
*/
  __pyx_v_rc = mlx5dv_query_qp_lag_port(__pyx_v_qp->qp, (&__pyx_v_port_num), (&__pyx_v_active_port_num));

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1050
 *         cdef uint8_t active_port_num
 *         rc = dv.mlx5dv_query_qp_lag_port(qp.qp, &port_num, &active_port_num)
 *         if rc != 0:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAError(f'Failed to query QP #{qp.qp.qp_num}', rc)
 *         return port_num, active_port_num
*/
  __pyx_t_1 = (__pyx_v_rc != 0);
  if (unlikely(__pyx_t_1)) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1051
 *         rc = dv.mlx5dv_query_qp_lag_port(qp.qp, &port_num, &active_port_num)
 *         if rc != 0:
 *             raise PyverbsRDMAError(f'Failed to query QP #{qp.qp.qp_num}', rc)             # <<<<<<<<<<<<<<
 *         return port_num, active_port_num
 * 
*/
    __pyx_t_3 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_PyverbsRDMAError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1051, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyUnicode_From_unsigned_int(__pyx_v_qp->qp->qp_num, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1051, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_Failed_to_query_QP, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1051, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1051, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
      __pyx_t_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_6, __pyx_t_5};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1051, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(0, 1051, __pyx_L1_error)

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1050
 *         cdef uint8_t active_port_num
 *         rc = dv.mlx5dv_query_qp_lag_port(qp.qp, &port_num, &active_port_num)
 *         if rc != 0:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAError(f'Failed to query QP #{qp.qp.qp_num}', rc)
 *         return port_num, active_port_num
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1052
 *         if rc != 0:
 *             raise PyverbsRDMAError(f'Failed to query QP #{qp.qp.qp_num}', rc)
 *         return port_num, active_port_num             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_uint8_t(__pyx_v_port_num); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1052, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyLong_From_uint8_t(__pyx_v_active_port_num); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1052, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1052, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2) != (0)) __PYX_ERR(0, 1052, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_4);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4) != (0)) __PYX_ERR(0, 1052, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_t_4 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1039
 *                                         stream_id)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def query_lag_port(QP qp):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.query_lag_port", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1054
 *         return port_num, active_port_num
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def modify_lag_port(QP qp, uint8_t port_num):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_33modify_lag_port(CYTHON_UNUSED PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_32modify_lag_port, "\n        Modifies the lag port num that the QP desires to use.\n        :param qp: Modifies the port for this QP.\n        :param port_num: The desired port to be used by the QP to send traffic\n                         in a LAG configuration.\n        ");
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_33modify_lag_port = {"modify_lag_port", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_33modify_lag_port, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_32modify_lag_port};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_33modify_lag_port(CYTHON_UNUSED PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_7pyverbs_2qp_QP *__pyx_v_qp = 0;
  uint8_t __pyx_v_port_num;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("modify_lag_port (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_qp,&__pyx_mstate_global->__pyx_n_u_port_num,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1054, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1054, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1054, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "modify_lag_port", 0) < (0)) __PYX_ERR(0, 1054, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("modify_lag_port", 1, 2, 2, i); __PYX_ERR(0, 1054, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1054, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1054, __pyx_L3_error)
    }
    __pyx_v_qp = ((struct __pyx_obj_7pyverbs_2qp_QP *)values[0]);
    __pyx_v_port_num = __Pyx_PyLong_As_uint8_t(values[1]); if (unlikely((__pyx_v_port_num == ((uint8_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1055, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("modify_lag_port", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 1054, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.modify_lag_port", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_qp), __pyx_mstate_global->__pyx_ptype_7pyverbs_2qp_QP, 1, "qp", 0))) __PYX_ERR(0, 1055, __pyx_L1_error)
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_32modify_lag_port(__pyx_v_qp, __pyx_v_port_num);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_32modify_lag_port(struct __pyx_obj_7pyverbs_2qp_QP *__pyx_v_qp, uint8_t __pyx_v_port_num) {
  int __pyx_v_rc;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  size_t __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("modify_lag_port", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1062
 *                          in a LAG configuration.
 *         """
 *         rc = dv.mlx5dv_modify_qp_lag_port(qp.qp, port_num)             # <<<<<<<<<<<<<<
 *         if rc != 0:
 *             raise PyverbsRDMAError(f'Failed to modify lag of QP #{qp.qp.qp_num}', rc)
*/
  __pyx_v_rc = mlx5dv_modify_qp_lag_port(__pyx_v_qp->qp, __pyx_v_port_num);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1063
 *         """
 *         rc = dv.mlx5dv_modify_qp_lag_port(qp.qp, port_num)
 *         if rc != 0:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAError(f'Failed to modify lag of QP #{qp.qp.qp_num}', rc)
 * 
*/
  __pyx_t_1 = (__pyx_v_rc != 0);
  if (unlikely(__pyx_t_1)) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1064
 *         rc = dv.mlx5dv_modify_qp_lag_port(qp.qp, port_num)
 *         if rc != 0:
 *             raise PyverbsRDMAError(f'Failed to modify lag of QP #{qp.qp.qp_num}', rc)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
    __pyx_t_3 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_PyverbsRDMAError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1064, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyUnicode_From_unsigned_int(__pyx_v_qp->qp->qp_num, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1064, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_Failed_to_modify_lag_of_QP, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1064, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1064, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
      __pyx_t_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_6, __pyx_t_5};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1064, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(0, 1064, __pyx_L1_error)

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1063
 *         """
 *         rc = dv.mlx5dv_modify_qp_lag_port(qp.qp, port_num)
 *         if rc != 0:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAError(f'Failed to modify lag of QP #{qp.qp.qp_num}', rc)
 * 
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1054
 *         return port_num, active_port_num
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def modify_lag_port(QP qp, uint8_t port_num):
 *         """
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.modify_lag_port", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1066
 *             raise PyverbsRDMAError(f'Failed to modify lag of QP #{qp.qp.qp_num}', rc)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def modify_qp_sched_elem(QP qp, Mlx5dvSchedLeaf req_sched_leaf=None,
 *                              Mlx5dvSchedLeaf resp_sched_leaf=None):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_35modify_qp_sched_elem(CYTHON_UNUSED PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_34modify_qp_sched_elem, "\n        Connect a QP with a requestor and/or a responder scheduling element.\n        :param qp: connect this QP to schedule elements.\n        :param req_sched_leaf: Mlx5dvSchedLeaf for the send queue.\n        :param resp_sched_leaf: Mlx5dvSchedLeaf for the recv queue.\n        ");
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_35modify_qp_sched_elem = {"modify_qp_sched_elem", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_35modify_qp_sched_elem, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_34modify_qp_sched_elem};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_35modify_qp_sched_elem(CYTHON_UNUSED PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_7pyverbs_2qp_QP *__pyx_v_qp = 0;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedLeaf *__pyx_v_req_sched_leaf = 0;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedLeaf *__pyx_v_resp_sched_leaf = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("modify_qp_sched_elem (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_qp,&__pyx_mstate_global->__pyx_n_u_req_sched_leaf,&__pyx_mstate_global->__pyx_n_u_resp_sched_leaf,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1066, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 1066, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1066, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1066, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "modify_qp_sched_elem", 0) < (0)) __PYX_ERR(0, 1066, __pyx_L3_error)

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":1067
 * 
 *     @staticmethod
 *     def modify_qp_sched_elem(QP qp, Mlx5dvSchedLeaf req_sched_leaf=None,             # <<<<<<<<<<<<<<
 *                              Mlx5dvSchedLeaf resp_sched_leaf=None):
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct __pyx_obj_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedLeaf *)Py_None));

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":1068
 *     @staticmethod
 *     def modify_qp_sched_elem(QP qp, Mlx5dvSchedLeaf req_sched_leaf=None,
 *                              Mlx5dvSchedLeaf resp_sched_leaf=None):             # <<<<<<<<<<<<<<
 *         """
 *         Connect a QP with a requestor and/or a responder scheduling element.
*/
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((struct __pyx_obj_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedLeaf *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("modify_qp_sched_elem", 0, 1, 3, i); __PYX_ERR(0, 1066, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 1066, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1066, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1066, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":1067
 * 
 *     @staticmethod
 *     def modify_qp_sched_elem(QP qp, Mlx5dvSchedLeaf req_sched_leaf=None,             # <<<<<<<<<<<<<<
 *                              Mlx5dvSchedLeaf resp_sched_leaf=None):
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef((PyObject *)((struct __pyx_obj_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedLeaf *)Py_None));

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":1068
 *     @staticmethod
 *     def modify_qp_sched_elem(QP qp, Mlx5dvSchedLeaf req_sched_leaf=None,
 *                              Mlx5dvSchedLeaf resp_sched_leaf=None):             # <<<<<<<<<<<<<<
 *         """
 *         Connect a QP with a requestor and/or a responder scheduling element.
*/
      if (!values[2]) values[2] = __Pyx_NewRef((PyObject *)((struct __pyx_obj_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedLeaf *)Py_None));
    }
    __pyx_v_qp = ((struct __pyx_obj_7pyverbs_2qp_QP *)values[0]);
    __pyx_v_req_sched_leaf = ((struct __pyx_obj_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedLeaf *)values[1]);
    __pyx_v_resp_sched_leaf = ((struct __pyx_obj_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedLeaf *)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("modify_qp_sched_elem", 0, 1, 3, __pyx_nargs); __PYX_ERR(0, 1066, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.modify_qp_sched_elem", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_qp), __pyx_mstate_global->__pyx_ptype_7pyverbs_2qp_QP, 1, "qp", 0))) __PYX_ERR(0, 1067, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_req_sched_leaf), __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedLeaf, 1, "req_sched_leaf", 0))) __PYX_ERR(0, 1067, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_resp_sched_leaf), __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedLeaf, 1, "resp_sched_leaf", 0))) __PYX_ERR(0, 1068, __pyx_L1_error)
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_34modify_qp_sched_elem(__pyx_v_qp, __pyx_v_req_sched_leaf, __pyx_v_resp_sched_leaf);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1066
 *             raise PyverbsRDMAError(f'Failed to modify lag of QP #{qp.qp.qp_num}', rc)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def modify_qp_sched_elem(QP qp, Mlx5dvSchedLeaf req_sched_leaf=None,
 *                              Mlx5dvSchedLeaf resp_sched_leaf=None):
*/

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_34modify_qp_sched_elem(struct __pyx_obj_7pyverbs_2qp_QP *__pyx_v_qp, struct __pyx_obj_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedLeaf *__pyx_v_req_sched_leaf, struct __pyx_obj_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedLeaf *__pyx_v_resp_sched_leaf) {
  struct mlx5dv_sched_leaf *__pyx_v_req_se;
  struct mlx5dv_sched_leaf *__pyx_v_resp_se;
  int __pyx_v_rc;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  struct mlx5dv_sched_leaf *__pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7[3];
  PyObject *__pyx_t_8 = NULL;
  size_t __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("modify_qp_sched_elem", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1075
 *         :param resp_sched_leaf: Mlx5dvSchedLeaf for the recv queue.
 *         """
 *         req_se = req_sched_leaf.sched_leaf if req_sched_leaf else NULL             # <<<<<<<<<<<<<<
 *         resp_se = resp_sched_leaf.sched_leaf if resp_sched_leaf else NULL
 *         rc = dv.mlx5dv_modify_qp_sched_elem(qp.qp, req_se, resp_se)
*/
  __pyx_t_2 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_req_sched_leaf)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1075, __pyx_L1_error)
  if (__pyx_t_2) {
    __pyx_t_1 = __pyx_v_req_sched_leaf->sched_leaf;
  } else {
    __pyx_t_1 = NULL;
  }
  __pyx_v_req_se = __pyx_t_1;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1076
 *         """
 *         req_se = req_sched_leaf.sched_leaf if req_sched_leaf else NULL
 *         resp_se = resp_sched_leaf.sched_leaf if resp_sched_leaf else NULL             # <<<<<<<<<<<<<<
 *         rc = dv.mlx5dv_modify_qp_sched_elem(qp.qp, req_se, resp_se)
 *         if rc != 0:
*/
  __pyx_t_2 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_resp_sched_leaf)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1076, __pyx_L1_error)
  if (__pyx_t_2) {
    __pyx_t_1 = __pyx_v_resp_sched_leaf->sched_leaf;
  } else {
    __pyx_t_1 = NULL;
  }
  __pyx_v_resp_se = __pyx_t_1;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1077
 *         req_se = req_sched_leaf.sched_leaf if req_sched_leaf else NULL
 *         resp_se = resp_sched_leaf.sched_leaf if resp_sched_leaf else NULL
 *         rc = dv.mlx5dv_modify_qp_sched_elem(qp.qp, req_se, resp_se)             # <<<<<<<<<<<<<<
 *         if rc != 0:
 *             raise PyverbsRDMAError(f'Failed to modify QP #{qp.qp.qp_num} sched element', rc)
*/
  __pyx_v_rc = mlx5dv_modify_qp_sched_elem(__pyx_v_qp->qp, __pyx_v_req_se, __pyx_v_resp_se);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1078
 *         resp_se = resp_sched_leaf.sched_leaf if resp_sched_leaf else NULL
 *         rc = dv.mlx5dv_modify_qp_sched_elem(qp.qp, req_se, resp_se)
 *         if rc != 0:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAError(f'Failed to modify QP #{qp.qp.qp_num} sched element', rc)
 * 
*/
  __pyx_t_2 = (__pyx_v_rc != 0);
  if (unlikely(__pyx_t_2)) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1079
 *         rc = dv.mlx5dv_modify_qp_sched_elem(qp.qp, req_se, resp_se)
 *         if rc != 0:
 *             raise PyverbsRDMAError(f'Failed to modify QP #{qp.qp.qp_num} sched element', rc)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
    __pyx_t_4 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_PyverbsRDMAError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1079, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyUnicode_From_unsigned_int(__pyx_v_qp->qp->qp_num, 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1079, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7[0] = __pyx_mstate_global->__pyx_kp_u_Failed_to_modify_QP;
    __pyx_t_7[1] = __pyx_t_6;
    __pyx_t_7[2] = __pyx_mstate_global->__pyx_kp_u_sched_element;
    __pyx_t_8 = __Pyx_PyUnicode_Join(__pyx_t_7, 3, 21 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6) + 14, 127);
    if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1079, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_PyLong_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1079, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_9 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_4);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_9 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_8, __pyx_t_6};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_9, (3-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1079, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(0, 1079, __pyx_L1_error)

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1078
 *         resp_se = resp_sched_leaf.sched_leaf if resp_sched_leaf else NULL
 *         rc = dv.mlx5dv_modify_qp_sched_elem(qp.qp, req_se, resp_se)
 *         if rc != 0:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAError(f'Failed to modify QP #{qp.qp.qp_num} sched element', rc)
 * 
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1066
 *             raise PyverbsRDMAError(f'Failed to modify lag of QP #{qp.qp.qp_num}', rc)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def modify_qp_sched_elem(QP qp, Mlx5dvSchedLeaf req_sched_leaf=None,
 *                              Mlx5dvSchedLeaf resp_sched_leaf=None):
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.modify_qp_sched_elem", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1081
 *             raise PyverbsRDMAError(f'Failed to modify QP #{qp.qp.qp_num} sched element', rc)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def modify_udp_sport(QP qp, uint16_t udp_sport):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_37modify_udp_sport(CYTHON_UNUSED PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_36modify_udp_sport, "\n        Modifies the UDP source port of a given QP.\n        :param qp: A QP in RTS state to modify its UDP sport.\n        :param udp_sport: The desired UDP sport to be used by the QP.\n        ");
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_37modify_udp_sport = {"modify_udp_sport", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_37modify_udp_sport, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_36modify_udp_sport};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_37modify_udp_sport(CYTHON_UNUSED PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_7pyverbs_2qp_QP *__pyx_v_qp = 0;
  uint16_t __pyx_v_udp_sport;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("modify_udp_sport (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_qp,&__pyx_mstate_global->__pyx_n_u_udp_sport,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1081, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1081, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1081, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "modify_udp_sport", 0) < (0)) __PYX_ERR(0, 1081, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("modify_udp_sport", 1, 2, 2, i); __PYX_ERR(0, 1081, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1081, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1081, __pyx_L3_error)
    }
    __pyx_v_qp = ((struct __pyx_obj_7pyverbs_2qp_QP *)values[0]);
    __pyx_v_udp_sport = __Pyx_PyLong_As_uint16_t(values[1]); if (unlikely((__pyx_v_udp_sport == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1082, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("modify_udp_sport", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 1081, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.modify_udp_sport", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_qp), __pyx_mstate_global->__pyx_ptype_7pyverbs_2qp_QP, 1, "qp", 0))) __PYX_ERR(0, 1082, __pyx_L1_error)
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_36modify_udp_sport(__pyx_v_qp, __pyx_v_udp_sport);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_36modify_udp_sport(struct __pyx_obj_7pyverbs_2qp_QP *__pyx_v_qp, uint16_t __pyx_v_udp_sport) {
  int __pyx_v_rc;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  size_t __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("modify_udp_sport", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1088
 *         :param udp_sport: The desired UDP sport to be used by the QP.
 *         """
 *         rc = dv.mlx5dv_modify_qp_udp_sport(qp.qp, udp_sport)             # <<<<<<<<<<<<<<
 *         if rc != 0:
 *             raise PyverbsRDMAError(f'Failed to modify UDP source port of QP '
*/
  __pyx_v_rc = mlx5dv_modify_qp_udp_sport(__pyx_v_qp->qp, __pyx_v_udp_sport);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1089
 *         """
 *         rc = dv.mlx5dv_modify_qp_udp_sport(qp.qp, udp_sport)
 *         if rc != 0:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAError(f'Failed to modify UDP source port of QP '
 *                                    f'#{qp.qp.qp_num}', rc)
*/
  __pyx_t_1 = (__pyx_v_rc != 0);
  if (unlikely(__pyx_t_1)) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1090
 *         rc = dv.mlx5dv_modify_qp_udp_sport(qp.qp, udp_sport)
 *         if rc != 0:
 *             raise PyverbsRDMAError(f'Failed to modify UDP source port of QP '             # <<<<<<<<<<<<<<
 *                                    f'#{qp.qp.qp_num}', rc)
 * 
*/
    __pyx_t_3 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_PyverbsRDMAError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1090, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1091
 *         if rc != 0:
 *             raise PyverbsRDMAError(f'Failed to modify UDP source port of QP '
 *                                    f'#{qp.qp.qp_num}', rc)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
    __pyx_t_5 = __Pyx_PyUnicode_From_unsigned_int(__pyx_v_qp->qp->qp_num, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1091, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1090
 *         rc = dv.mlx5dv_modify_qp_udp_sport(qp.qp, udp_sport)
 *         if rc != 0:
 *             raise PyverbsRDMAError(f'Failed to modify UDP source port of QP '             # <<<<<<<<<<<<<<
 *                                    f'#{qp.qp.qp_num}', rc)
 * 
*/
    __pyx_t_6 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_Failed_to_modify_UDP_source_port, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1090, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1091
 *         if rc != 0:
 *             raise PyverbsRDMAError(f'Failed to modify UDP source port of QP '
 *                                    f'#{qp.qp.qp_num}', rc)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
    __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1091, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
      __pyx_t_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_6, __pyx_t_5};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1090, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(0, 1090, __pyx_L1_error)

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1089
 *         """
 *         rc = dv.mlx5dv_modify_qp_udp_sport(qp.qp, udp_sport)
 *         if rc != 0:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAError(f'Failed to modify UDP source port of QP '
 *                                    f'#{qp.qp.qp_num}', rc)
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1081
 *             raise PyverbsRDMAError(f'Failed to modify QP #{qp.qp.qp_num} sched element', rc)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def modify_udp_sport(QP qp, uint16_t udp_sport):
 *         """
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.modify_udp_sport", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1093
 *                                    f'#{qp.qp.qp_num}', rc)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def map_ah_to_qp(AH ah, qp_num):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_39map_ah_to_qp(CYTHON_UNUSED PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_38map_ah_to_qp, "\n        Map the destination path information in ah to the information extracted\n        from the qp.\n        :param ah: The target\342\200\231s address handle.\n        :param qp_num: The traffic initiator QP number.\n        ");
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_39map_ah_to_qp = {"map_ah_to_qp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_39map_ah_to_qp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_38map_ah_to_qp};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_39map_ah_to_qp(CYTHON_UNUSED PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_7pyverbs_4addr_AH *__pyx_v_ah = 0;
  PyObject *__pyx_v_qp_num = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("map_ah_to_qp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_ah,&__pyx_mstate_global->__pyx_n_u_qp_num,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1093, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1093, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1093, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "map_ah_to_qp", 0) < (0)) __PYX_ERR(0, 1093, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("map_ah_to_qp", 1, 2, 2, i); __PYX_ERR(0, 1093, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1093, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1093, __pyx_L3_error)
    }
    __pyx_v_ah = ((struct __pyx_obj_7pyverbs_4addr_AH *)values[0]);
    __pyx_v_qp_num = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("map_ah_to_qp", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 1093, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.map_ah_to_qp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_ah), __pyx_mstate_global->__pyx_ptype_7pyverbs_4addr_AH, 1, "ah", 0))) __PYX_ERR(0, 1094, __pyx_L1_error)
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_38map_ah_to_qp(__pyx_v_ah, __pyx_v_qp_num);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_38map_ah_to_qp(struct __pyx_obj_7pyverbs_4addr_AH *__pyx_v_ah, PyObject *__pyx_v_qp_num) {
  int __pyx_v_rc;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  uint32_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  size_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("map_ah_to_qp", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1101
 *         :param qp_num: The traffic initiator QP number.
 *         """
 *         rc = dv.mlx5dv_map_ah_to_qp(ah.ah, qp_num)             # <<<<<<<<<<<<<<
 *         if rc != 0:
 *             raise PyverbsRDMAError(f'Failed to map AH to QP #{qp_num}', rc)
*/
  __pyx_t_1 = __Pyx_PyLong_As_uint32_t(__pyx_v_qp_num); if (unlikely((__pyx_t_1 == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1101, __pyx_L1_error)
  __pyx_v_rc = mlx5dv_map_ah_to_qp(__pyx_v_ah->ah, __pyx_t_1);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1102
 *         """
 *         rc = dv.mlx5dv_map_ah_to_qp(ah.ah, qp_num)
 *         if rc != 0:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAError(f'Failed to map AH to QP #{qp_num}', rc)
 * 
*/
  __pyx_t_2 = (__pyx_v_rc != 0);
  if (unlikely(__pyx_t_2)) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1103
 *         rc = dv.mlx5dv_map_ah_to_qp(ah.ah, qp_num)
 *         if rc != 0:
 *             raise PyverbsRDMAError(f'Failed to map AH to QP #{qp_num}', rc)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
    __pyx_t_4 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_PyverbsRDMAError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_v_qp_num, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_Failed_to_map_AH_to_QP, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_PyLong_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1103, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_4);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_8 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_7, __pyx_t_6};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1103, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(0, 1103, __pyx_L1_error)

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1102
 *         """
 *         rc = dv.mlx5dv_map_ah_to_qp(ah.ah, qp_num)
 *         if rc != 0:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAError(f'Failed to map AH to QP #{qp_num}', rc)
 * 
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1093
 *                                    f'#{qp.qp.qp_num}', rc)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def map_ah_to_qp(AH ah, qp_num):
 *         """
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.map_ah_to_qp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1105
 *             raise PyverbsRDMAError(f'Failed to map AH to QP #{qp_num}', rc)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def modify_dci_stream_channel_id(QP qp, uint16_t stream_id):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_41modify_dci_stream_channel_id(CYTHON_UNUSED PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_40modify_dci_stream_channel_id, "\n        Reset an errored stream_id in the HW DCI context.\n        :param qp: A DCI QP in RTS state.\n        :param stream_id: The desired stream_id that need to be reset.\n        ");
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_41modify_dci_stream_channel_id = {"modify_dci_stream_channel_id", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_41modify_dci_stream_channel_id, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_40modify_dci_stream_channel_id};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_41modify_dci_stream_channel_id(CYTHON_UNUSED PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_7pyverbs_2qp_QP *__pyx_v_qp = 0;
  uint16_t __pyx_v_stream_id;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("modify_dci_stream_channel_id (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_qp,&__pyx_mstate_global->__pyx_n_u_stream_id,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1105, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1105, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1105, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "modify_dci_stream_channel_id", 0) < (0)) __PYX_ERR(0, 1105, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("modify_dci_stream_channel_id", 1, 2, 2, i); __PYX_ERR(0, 1105, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1105, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1105, __pyx_L3_error)
    }
    __pyx_v_qp = ((struct __pyx_obj_7pyverbs_2qp_QP *)values[0]);
    __pyx_v_stream_id = __Pyx_PyLong_As_uint16_t(values[1]); if (unlikely((__pyx_v_stream_id == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1106, __pyx_L3_error)
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("modify_dci_stream_channel_id", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 1105, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.modify_dci_stream_channel_id", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_qp), __pyx_mstate_global->__pyx_ptype_7pyverbs_2qp_QP, 1, "qp", 0))) __PYX_ERR(0, 1106, __pyx_L1_error)
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_40modify_dci_stream_channel_id(__pyx_v_qp, __pyx_v_stream_id);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_40modify_dci_stream_channel_id(struct __pyx_obj_7pyverbs_2qp_QP *__pyx_v_qp, uint16_t __pyx_v_stream_id) {
  int __pyx_v_rc;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7[4];
  PyObject *__pyx_t_8 = NULL;
  size_t __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("modify_dci_stream_channel_id", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1112
 *         :param stream_id: The desired stream_id that need to be reset.
 *         """
 *         rc = dv.mlx5dv_dci_stream_id_reset(qp.qp, stream_id)             # <<<<<<<<<<<<<<
 *         if rc != 0:
 *             raise PyverbsRDMAError(f'Failed to reset stream_id #{stream_id} for DCI QP'
*/
  __pyx_v_rc = mlx5dv_dci_stream_id_reset(__pyx_v_qp->qp, __pyx_v_stream_id);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1113
 *         """
 *         rc = dv.mlx5dv_dci_stream_id_reset(qp.qp, stream_id)
 *         if rc != 0:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAError(f'Failed to reset stream_id #{stream_id} for DCI QP'
 *                                    f'#{qp.qp.qp_num}', rc)
*/
  __pyx_t_1 = (__pyx_v_rc != 0);
  if (unlikely(__pyx_t_1)) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1114
 *         rc = dv.mlx5dv_dci_stream_id_reset(qp.qp, stream_id)
 *         if rc != 0:
 *             raise PyverbsRDMAError(f'Failed to reset stream_id #{stream_id} for DCI QP'             # <<<<<<<<<<<<<<
 *                                    f'#{qp.qp.qp_num}', rc)
 * 
*/
    __pyx_t_3 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_PyverbsRDMAError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1114, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyUnicode_From_uint16_t(__pyx_v_stream_id, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1114, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1115
 *         if rc != 0:
 *             raise PyverbsRDMAError(f'Failed to reset stream_id #{stream_id} for DCI QP'
 *                                    f'#{qp.qp.qp_num}', rc)             # <<<<<<<<<<<<<<
 * 
 * 
*/
    __pyx_t_6 = __Pyx_PyUnicode_From_unsigned_int(__pyx_v_qp->qp->qp_num, 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1115, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7[0] = __pyx_mstate_global->__pyx_kp_u_Failed_to_reset_stream_id;
    __pyx_t_7[1] = __pyx_t_5;
    __pyx_t_7[2] = __pyx_mstate_global->__pyx_kp_u_for_DCI_QP;
    __pyx_t_7[3] = __pyx_t_6;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1114
 *         rc = dv.mlx5dv_dci_stream_id_reset(qp.qp, stream_id)
 *         if rc != 0:
 *             raise PyverbsRDMAError(f'Failed to reset stream_id #{stream_id} for DCI QP'             # <<<<<<<<<<<<<<
 *                                    f'#{qp.qp.qp_num}', rc)
 * 
*/
    __pyx_t_8 = __Pyx_PyUnicode_Join(__pyx_t_7, 4, 27 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + 12 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6), 127);
    if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1114, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1115
 *         if rc != 0:
 *             raise PyverbsRDMAError(f'Failed to reset stream_id #{stream_id} for DCI QP'
 *                                    f'#{qp.qp.qp_num}', rc)             # <<<<<<<<<<<<<<
 * 
 * 
*/
    __pyx_t_6 = __Pyx_PyLong_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1115, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_9 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
      __pyx_t_9 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_8, __pyx_t_6};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_9, (3-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1114, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(0, 1114, __pyx_L1_error)

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1113
 *         """
 *         rc = dv.mlx5dv_dci_stream_id_reset(qp.qp, stream_id)
 *         if rc != 0:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAError(f'Failed to reset stream_id #{stream_id} for DCI QP'
 *                                    f'#{qp.qp.qp_num}', rc)
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1105
 *             raise PyverbsRDMAError(f'Failed to map AH to QP #{qp_num}', rc)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def modify_dci_stream_channel_id(QP qp, uint16_t stream_id):
 *         """
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.modify_dci_stream_channel_id", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.qp,self.qp_ex cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_43__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_43__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_43__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_43__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_42__reduce_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_42__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self.qp,self.qp_ex cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.qp,self.qp_ex cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_qp_self_qp_ex_cannot_be_con, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.qp,self.qp_ex cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.qp,self.qp_ex cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.qp,self.qp_ex cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_45__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_45__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_45__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_45__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_44__setstate_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_44__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self.qp,self.qp_ex cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.qp,self.qp_ex cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_qp_self_qp_ex_cannot_be_con, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.qp,self.qp_ex cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.qp,self.qp_ex cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5QP.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1123
 *     creation.
 *     """
 *     def __init__(self, comp_mask=0, cqe_comp_res_format=0, flags=0, cqe_size=0):             # <<<<<<<<<<<<<<
 *         """
 *         Initializes an Mlx5CQInitAttr object with zeroes as default values.
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr___init__, "\n        Initializes an Mlx5CQInitAttr object with zeroes as default values.\n        :param comp_mask: Marks which of the following fields should be\n                          considered. Use mlx5dv_cq_init_attr_mask enum.\n        :param cqe_comp_res_format: The various CQE response formats of the\n                                    responder side. Use\n                                    mlx5dv_cqe_comp_res_format enum.\n        :param flags: A bitwise OR of the various values described in\n                      mlx5dv_cq_init_attr_flags.\n        :param cqe_size: Configure the CQE size to be 64 or 128 bytes, other\n                         values will cause the CQ creation process to fail.\n                         Valid when MLX5DV_CQ_INIT_ATTR_MASK_CQE_SIZE is set.\n        :return: None\n        ");
#if CYTHON_UPDATE_DESCRIPTOR_DOC
struct wrapperbase __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr___init__;
#endif
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_comp_mask = 0;
  PyObject *__pyx_v_cqe_comp_res_format = 0;
  PyObject *__pyx_v_flags = 0;
  PyObject *__pyx_v_cqe_size = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_comp_mask,&__pyx_mstate_global->__pyx_n_u_cqe_comp_res_format,&__pyx_mstate_global->__pyx_n_u_flags,&__pyx_mstate_global->__pyx_n_u_cqe_size,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1123, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_VARARGS(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 1123, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 1123, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1123, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1123, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(0, 1123, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
    } else {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_VARARGS(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 1123, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 1123, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1123, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1123, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
    }
    __pyx_v_comp_mask = values[0];
    __pyx_v_cqe_comp_res_format = values[1];
    __pyx_v_flags = values[2];
    __pyx_v_cqe_size = values[3];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 4, __pyx_nargs); __PYX_ERR(0, 1123, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVCQInitAttr.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr___init__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *)__pyx_v_self), __pyx_v_comp_mask, __pyx_v_cqe_comp_res_format, __pyx_v_flags, __pyx_v_cqe_size);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *__pyx_v_self, PyObject *__pyx_v_comp_mask, PyObject *__pyx_v_cqe_comp_res_format, PyObject *__pyx_v_flags, PyObject *__pyx_v_cqe_size) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  unsigned long __pyx_t_6;
  unsigned char __pyx_t_7;
  unsigned int __pyx_t_8;
  unsigned short __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1138
 *         :return: None
 *         """
 *         super().__init__()             # <<<<<<<<<<<<<<
 *         self.attr.comp_mask = comp_mask
 *         self.attr.cqe_comp_res_format = cqe_comp_res_format
*/
  __pyx_t_4 = NULL;
  __pyx_t_5 = 1;
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, ((PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr), ((PyObject *)__pyx_v_self)};
    __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_super, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1138, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_t_2 = __pyx_t_3;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_init, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1138, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1139
 *         """
 *         super().__init__()
 *         self.attr.comp_mask = comp_mask             # <<<<<<<<<<<<<<
 *         self.attr.cqe_comp_res_format = cqe_comp_res_format
 *         self.attr.flags = flags
*/
  __pyx_t_6 = __Pyx_PyLong_As_unsigned_long(__pyx_v_comp_mask); if (unlikely((__pyx_t_6 == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(0, 1139, __pyx_L1_error)
  __pyx_v_self->attr.comp_mask = __pyx_t_6;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1140
 *         super().__init__()
 *         self.attr.comp_mask = comp_mask
 *         self.attr.cqe_comp_res_format = cqe_comp_res_format             # <<<<<<<<<<<<<<
 *         self.attr.flags = flags
 *         self.attr.cqe_size = cqe_size
*/
  __pyx_t_7 = __Pyx_PyLong_As_unsigned_char(__pyx_v_cqe_comp_res_format); if (unlikely((__pyx_t_7 == (unsigned char)-1) && PyErr_Occurred())) __PYX_ERR(0, 1140, __pyx_L1_error)
  __pyx_v_self->attr.cqe_comp_res_format = __pyx_t_7;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1141
 *         self.attr.comp_mask = comp_mask
 *         self.attr.cqe_comp_res_format = cqe_comp_res_format
 *         self.attr.flags = flags             # <<<<<<<<<<<<<<
 *         self.attr.cqe_size = cqe_size
 * 
*/
  __pyx_t_8 = __Pyx_PyLong_As_unsigned_int(__pyx_v_flags); if (unlikely((__pyx_t_8 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1141, __pyx_L1_error)
  __pyx_v_self->attr.flags = __pyx_t_8;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1142
 *         self.attr.cqe_comp_res_format = cqe_comp_res_format
 *         self.attr.flags = flags
 *         self.attr.cqe_size = cqe_size             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_t_9 = __Pyx_PyLong_As_unsigned_short(__pyx_v_cqe_size); if (unlikely((__pyx_t_9 == (unsigned short)-1) && PyErr_Occurred())) __PYX_ERR(0, 1142, __pyx_L1_error)
  __pyx_v_self->attr.cqe_size = __pyx_t_9;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1123
 *     creation.
 *     """
 *     def __init__(self, comp_mask=0, cqe_comp_res_format=0, flags=0, cqe_size=0):             # <<<<<<<<<<<<<<
 *         """
 *         Initializes an Mlx5CQInitAttr object with zeroes as default values.
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVCQInitAttr.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1144
 *         self.attr.cqe_size = cqe_size
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def comp_mask(self):
 *         return self.attr.comp_mask
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_9comp_mask_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_9comp_mask_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_9comp_mask___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_9comp_mask___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1146
 *     @property
 *     def comp_mask(self):
 *         return self.attr.comp_mask             # <<<<<<<<<<<<<<
 *     @comp_mask.setter
 *     def comp_mask(self, val):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_unsigned_long(__pyx_v_self->attr.comp_mask); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1146, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1144
 *         self.attr.cqe_size = cqe_size
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def comp_mask(self):
 *         return self.attr.comp_mask
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVCQInitAttr.comp_mask.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1147
 *     def comp_mask(self):
 *         return self.attr.comp_mask
 *     @comp_mask.setter             # <<<<<<<<<<<<<<
 *     def comp_mask(self, val):
 *         self.attr.comp_mask = val
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_9comp_mask_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_9comp_mask_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_9comp_mask_2__set__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *)__pyx_v_self), ((PyObject *)__pyx_v_val));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_9comp_mask_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *__pyx_v_self, PyObject *__pyx_v_val) {
  int __pyx_r;
  unsigned long __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1149
 *     @comp_mask.setter
 *     def comp_mask(self, val):
 *         self.attr.comp_mask = val             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_t_1 = __Pyx_PyLong_As_unsigned_long(__pyx_v_val); if (unlikely((__pyx_t_1 == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(0, 1149, __pyx_L1_error)
  __pyx_v_self->attr.comp_mask = __pyx_t_1;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1147
 *     def comp_mask(self):
 *         return self.attr.comp_mask
 *     @comp_mask.setter             # <<<<<<<<<<<<<<
 *     def comp_mask(self, val):
 *         self.attr.comp_mask = val
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVCQInitAttr.comp_mask.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1151
 *         self.attr.comp_mask = val
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def cqe_comp_res_format(self):
 *         return self.attr.cqe_comp_res_format
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_19cqe_comp_res_format_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_19cqe_comp_res_format_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_19cqe_comp_res_format___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_19cqe_comp_res_format___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1153
 *     @property
 *     def cqe_comp_res_format(self):
 *         return self.attr.cqe_comp_res_format             # <<<<<<<<<<<<<<
 *     @cqe_comp_res_format.setter
 *     def cqe_comp_res_format(self, val):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_unsigned_char(__pyx_v_self->attr.cqe_comp_res_format); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1151
 *         self.attr.comp_mask = val
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def cqe_comp_res_format(self):
 *         return self.attr.cqe_comp_res_format
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVCQInitAttr.cqe_comp_res_format.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1154
 *     def cqe_comp_res_format(self):
 *         return self.attr.cqe_comp_res_format
 *     @cqe_comp_res_format.setter             # <<<<<<<<<<<<<<
 *     def cqe_comp_res_format(self, val):
 *         self.attr.cqe_comp_res_format = val
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_19cqe_comp_res_format_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_19cqe_comp_res_format_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_19cqe_comp_res_format_2__set__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *)__pyx_v_self), ((PyObject *)__pyx_v_val));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_19cqe_comp_res_format_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *__pyx_v_self, PyObject *__pyx_v_val) {
  int __pyx_r;
  unsigned char __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1156
 *     @cqe_comp_res_format.setter
 *     def cqe_comp_res_format(self, val):
 *         self.attr.cqe_comp_res_format = val             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_t_1 = __Pyx_PyLong_As_unsigned_char(__pyx_v_val); if (unlikely((__pyx_t_1 == (unsigned char)-1) && PyErr_Occurred())) __PYX_ERR(0, 1156, __pyx_L1_error)
  __pyx_v_self->attr.cqe_comp_res_format = __pyx_t_1;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1154
 *     def cqe_comp_res_format(self):
 *         return self.attr.cqe_comp_res_format
 *     @cqe_comp_res_format.setter             # <<<<<<<<<<<<<<
 *     def cqe_comp_res_format(self, val):
 *         self.attr.cqe_comp_res_format = val
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVCQInitAttr.cqe_comp_res_format.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1158
 *         self.attr.cqe_comp_res_format = val
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def flags(self):
 *         return self.attr.flags
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_5flags_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_5flags_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_5flags___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_5flags___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1160
 *     @property
 *     def flags(self):
 *         return self.attr.flags             # <<<<<<<<<<<<<<
 *     @flags.setter
 *     def flags(self, val):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_unsigned_int(__pyx_v_self->attr.flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1158
 *         self.attr.cqe_comp_res_format = val
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def flags(self):
 *         return self.attr.flags
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVCQInitAttr.flags.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1161
 *     def flags(self):
 *         return self.attr.flags
 *     @flags.setter             # <<<<<<<<<<<<<<
 *     def flags(self, val):
 *         self.attr.flags = val
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_5flags_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_5flags_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_5flags_2__set__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *)__pyx_v_self), ((PyObject *)__pyx_v_val));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_5flags_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *__pyx_v_self, PyObject *__pyx_v_val) {
  int __pyx_r;
  unsigned int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1163
 *     @flags.setter
 *     def flags(self, val):
 *         self.attr.flags = val             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_t_1 = __Pyx_PyLong_As_unsigned_int(__pyx_v_val); if (unlikely((__pyx_t_1 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1163, __pyx_L1_error)
  __pyx_v_self->attr.flags = __pyx_t_1;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1161
 *     def flags(self):
 *         return self.attr.flags
 *     @flags.setter             # <<<<<<<<<<<<<<
 *     def flags(self, val):
 *         self.attr.flags = val
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVCQInitAttr.flags.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1165
 *         self.attr.flags = val
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def cqe_size(self):
 *         return self.attr.cqe_size
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_8cqe_size_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_8cqe_size_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_8cqe_size___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_8cqe_size___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1167
 *     @property
 *     def cqe_size(self):
 *         return self.attr.cqe_size             # <<<<<<<<<<<<<<
 *     @cqe_size.setter
 *     def cqe_size(self, val):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_unsigned_short(__pyx_v_self->attr.cqe_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1165
 *         self.attr.flags = val
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def cqe_size(self):
 *         return self.attr.cqe_size
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVCQInitAttr.cqe_size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1168
 *     def cqe_size(self):
 *         return self.attr.cqe_size
 *     @cqe_size.setter             # <<<<<<<<<<<<<<
 *     def cqe_size(self, val):
 *         self.attr.cqe_size = val
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_8cqe_size_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_8cqe_size_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_8cqe_size_2__set__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *)__pyx_v_self), ((PyObject *)__pyx_v_val));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_8cqe_size_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *__pyx_v_self, PyObject *__pyx_v_val) {
  int __pyx_r;
  unsigned short __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1170
 *     @cqe_size.setter
 *     def cqe_size(self, val):
 *         self.attr.cqe_size = val             # <<<<<<<<<<<<<<
 * 
 *     def __str__(self):
*/
  __pyx_t_1 = __Pyx_PyLong_As_unsigned_short(__pyx_v_val); if (unlikely((__pyx_t_1 == (unsigned short)-1) && PyErr_Occurred())) __PYX_ERR(0, 1170, __pyx_L1_error)
  __pyx_v_self->attr.cqe_size = __pyx_t_1;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1168
 *     def cqe_size(self):
 *         return self.attr.cqe_size
 *     @cqe_size.setter             # <<<<<<<<<<<<<<
 *     def cqe_size(self, val):
 *         self.attr.cqe_size = val
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVCQInitAttr.cqe_size.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1172
 *         self.attr.cqe_size = val
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         print_format = '{:22}: {:<20}\n'
 *         flags = {dve.MLX5DV_CQ_INIT_ATTR_FLAGS_CQE_PAD:
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_3__str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_3__str__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_2__str__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_2__str__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *__pyx_v_self) {
  PyObject *__pyx_v_print_format = NULL;
  PyObject *__pyx_v_flags = NULL;
  PyObject *__pyx_v_mask = NULL;
  PyObject *__pyx_v_fmt = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1173
 * 
 *     def __str__(self):
 *         print_format = '{:22}: {:<20}\n'             # <<<<<<<<<<<<<<
 *         flags = {dve.MLX5DV_CQ_INIT_ATTR_FLAGS_CQE_PAD:
 *                      "MLX5DV_CQ_INIT_ATTR_FLAGS_CQE_PAD}"}
*/
  __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_22_20);
  __pyx_v_print_format = __pyx_mstate_global->__pyx_kp_u_22_20;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1174
 *     def __str__(self):
 *         print_format = '{:22}: {:<20}\n'
 *         flags = {dve.MLX5DV_CQ_INIT_ATTR_FLAGS_CQE_PAD:             # <<<<<<<<<<<<<<
 *                      "MLX5DV_CQ_INIT_ATTR_FLAGS_CQE_PAD}"}
 *         mask = {dve.MLX5DV_CQ_INIT_ATTR_MASK_COMPRESSED_CQE:
*/
  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_CQ_INIT_ATTR_FLAGS_CQE_PAD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_MLX5DV_CQ_INIT_ATTR_FLAGS_CQE_PA_2) < (0)) __PYX_ERR(0, 1174, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_flags = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1176
 *         flags = {dve.MLX5DV_CQ_INIT_ATTR_FLAGS_CQE_PAD:
 *                      "MLX5DV_CQ_INIT_ATTR_FLAGS_CQE_PAD}"}
 *         mask = {dve.MLX5DV_CQ_INIT_ATTR_MASK_COMPRESSED_CQE:             # <<<<<<<<<<<<<<
 *                     "MLX5DV_CQ_INIT_ATTR_MASK_COMPRESSED_CQE",
 *                 dve.MLX5DV_CQ_INIT_ATTR_MASK_FLAGS:
*/
  __pyx_t_1 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_CQ_INIT_ATTR_MASK_COMPRESSED_CQE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_n_u_MLX5DV_CQ_INIT_ATTR_MASK_COMPRES) < (0)) __PYX_ERR(0, 1176, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1178
 *         mask = {dve.MLX5DV_CQ_INIT_ATTR_MASK_COMPRESSED_CQE:
 *                     "MLX5DV_CQ_INIT_ATTR_MASK_COMPRESSED_CQE",
 *                 dve.MLX5DV_CQ_INIT_ATTR_MASK_FLAGS:             # <<<<<<<<<<<<<<
 *                     "MLX5DV_CQ_INIT_ATTR_MASK_FLAGS",
 *                 dve.MLX5DV_CQ_INIT_ATTR_MASK_CQE_SIZE:
*/
  __pyx_t_2 = __Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_CQ_INIT_ATTR_MASK_FLAGS); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1178, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_n_u_MLX5DV_CQ_INIT_ATTR_MASK_FLAGS) < (0)) __PYX_ERR(0, 1176, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1180
 *                 dve.MLX5DV_CQ_INIT_ATTR_MASK_FLAGS:
 *                     "MLX5DV_CQ_INIT_ATTR_MASK_FLAGS",
 *                 dve.MLX5DV_CQ_INIT_ATTR_MASK_CQE_SIZE:             # <<<<<<<<<<<<<<
 *                     "MLX5DV_CQ_INIT_ATTR_MASK_CQE_SIZE"}
 *         fmt = {dve.MLX5DV_CQE_RES_FORMAT_HASH: "MLX5DV_CQE_RES_FORMAT_HASH",
*/
  __pyx_t_2 = __Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_CQ_INIT_ATTR_MASK_CQE_SIZE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_n_u_MLX5DV_CQ_INIT_ATTR_MASK_CQE_SIZ) < (0)) __PYX_ERR(0, 1176, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_mask = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1182
 *                 dve.MLX5DV_CQ_INIT_ATTR_MASK_CQE_SIZE:
 *                     "MLX5DV_CQ_INIT_ATTR_MASK_CQE_SIZE"}
 *         fmt = {dve.MLX5DV_CQE_RES_FORMAT_HASH: "MLX5DV_CQE_RES_FORMAT_HASH",             # <<<<<<<<<<<<<<
 *                dve.MLX5DV_CQE_RES_FORMAT_CSUM: "MLX5DV_CQE_RES_FORMAT_CSUM",
 *                dve.MLX5DV_CQE_RES_FORMAT_CSUM_STRIDX:
*/
  __pyx_t_1 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_CQE_RES_FORMAT_HASH); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_n_u_MLX5DV_CQE_RES_FORMAT_HASH) < (0)) __PYX_ERR(0, 1182, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1183
 *                     "MLX5DV_CQ_INIT_ATTR_MASK_CQE_SIZE"}
 *         fmt = {dve.MLX5DV_CQE_RES_FORMAT_HASH: "MLX5DV_CQE_RES_FORMAT_HASH",
 *                dve.MLX5DV_CQE_RES_FORMAT_CSUM: "MLX5DV_CQE_RES_FORMAT_CSUM",             # <<<<<<<<<<<<<<
 *                dve.MLX5DV_CQE_RES_FORMAT_CSUM_STRIDX:
 *                    "MLX5DV_CQE_RES_FORMAT_CSUM_STRIDX"}
*/
  __pyx_t_2 = __Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_CQE_RES_FORMAT_CSUM); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1183, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_n_u_MLX5DV_CQE_RES_FORMAT_CSUM) < (0)) __PYX_ERR(0, 1182, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1184
 *         fmt = {dve.MLX5DV_CQE_RES_FORMAT_HASH: "MLX5DV_CQE_RES_FORMAT_HASH",
 *                dve.MLX5DV_CQE_RES_FORMAT_CSUM: "MLX5DV_CQE_RES_FORMAT_CSUM",
 *                dve.MLX5DV_CQE_RES_FORMAT_CSUM_STRIDX:             # <<<<<<<<<<<<<<
 *                    "MLX5DV_CQE_RES_FORMAT_CSUM_STRIDX"}
 * 
*/
  __pyx_t_2 = __Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_CQE_RES_FORMAT_CSUM_STRIDX); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_n_u_MLX5DV_CQE_RES_FORMAT_CSUM_STRID) < (0)) __PYX_ERR(0, 1182, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_fmt = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1187
 *                    "MLX5DV_CQE_RES_FORMAT_CSUM_STRIDX"}
 * 
 *         return 'Mlx5DVCQInitAttr:\n' +\             # <<<<<<<<<<<<<<
 *                print_format.format('comp_mask', bitmask_to_str(self.comp_mask,
 *                                                                mask)) +\
*/
  __Pyx_XDECREF(__pyx_r);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1188
 * 
 *         return 'Mlx5DVCQInitAttr:\n' +\
 *                print_format.format('comp_mask', bitmask_to_str(self.comp_mask,             # <<<<<<<<<<<<<<
 *                                                                mask)) +\
 *                print_format.format('CQE compression format',
*/
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_bitmask_to_str); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_comp_mask); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1189
 *         return 'Mlx5DVCQInitAttr:\n' +\
 *                print_format.format('comp_mask', bitmask_to_str(self.comp_mask,
 *                                                                mask)) +\             # <<<<<<<<<<<<<<
 *                print_format.format('CQE compression format',
 *                                    bitmask_to_str(self.cqe_comp_res_format,
*/
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_5 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_t_4, __pyx_v_mask};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1188, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1188
 * 
 *         return 'Mlx5DVCQInitAttr:\n' +\
 *                print_format.format('comp_mask', bitmask_to_str(self.comp_mask,             # <<<<<<<<<<<<<<
 *                                                                mask)) +\
 *                print_format.format('CQE compression format',
*/
  __pyx_t_3 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_n_u_comp_mask, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1187
 *                    "MLX5DV_CQE_RES_FORMAT_CSUM_STRIDX"}
 * 
 *         return 'Mlx5DVCQInitAttr:\n' +\             # <<<<<<<<<<<<<<
 *                print_format.format('comp_mask', bitmask_to_str(self.comp_mask,
 *                                                                mask)) +\
*/
  __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_Mlx5DVCQInitAttr, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1191
 *                                                                mask)) +\
 *                print_format.format('CQE compression format',
 *                                    bitmask_to_str(self.cqe_comp_res_format,             # <<<<<<<<<<<<<<
 *                                                   fmt)) +\
 *                print_format.format('flags', bitmask_to_str(self.flags,
*/
  __pyx_t_4 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_bitmask_to_str); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_cqe_comp_res_format); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1192
 *                print_format.format('CQE compression format',
 *                                    bitmask_to_str(self.cqe_comp_res_format,
 *                                                   fmt)) +\             # <<<<<<<<<<<<<<
 *                print_format.format('flags', bitmask_to_str(self.flags,
 *                                                            flags)) + \
*/
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    assert(__pyx_t_4);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_4);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_2, __pyx__function);
    __pyx_t_5 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_6, __pyx_v_fmt};
    __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1191, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1190
 *                print_format.format('comp_mask', bitmask_to_str(self.comp_mask,
 *                                                                mask)) +\
 *                print_format.format('CQE compression format',             # <<<<<<<<<<<<<<
 *                                    bitmask_to_str(self.cqe_comp_res_format,
 *                                                   fmt)) +\
*/
  __pyx_t_2 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_kp_u_CQE_compression_format, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1189
 *         return 'Mlx5DVCQInitAttr:\n' +\
 *                print_format.format('comp_mask', bitmask_to_str(self.comp_mask,
 *                                                                mask)) +\             # <<<<<<<<<<<<<<
 *                print_format.format('CQE compression format',
 *                                    bitmask_to_str(self.cqe_comp_res_format,
*/
  __pyx_t_3 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1193
 *                                    bitmask_to_str(self.cqe_comp_res_format,
 *                                                   fmt)) +\
 *                print_format.format('flags', bitmask_to_str(self.flags,             # <<<<<<<<<<<<<<
 *                                                            flags)) + \
 *                print_format.format('CQE size', self.cqe_size)
*/
  __pyx_t_1 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_bitmask_to_str); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_flags); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1194
 *                                                   fmt)) +\
 *                print_format.format('flags', bitmask_to_str(self.flags,
 *                                                            flags)) + \             # <<<<<<<<<<<<<<
 *                print_format.format('CQE size', self.cqe_size)
 * 
*/
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6);
    assert(__pyx_t_1);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
    __pyx_t_5 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_t_4, __pyx_v_flags};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1193, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1193
 *                                    bitmask_to_str(self.cqe_comp_res_format,
 *                                                   fmt)) +\
 *                print_format.format('flags', bitmask_to_str(self.flags,             # <<<<<<<<<<<<<<
 *                                                            flags)) + \
 *                print_format.format('CQE size', self.cqe_size)
*/
  __pyx_t_6 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_n_u_flags, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1192
 *                print_format.format('CQE compression format',
 *                                    bitmask_to_str(self.cqe_comp_res_format,
 *                                                   fmt)) +\             # <<<<<<<<<<<<<<
 *                print_format.format('flags', bitmask_to_str(self.flags,
 *                                                            flags)) + \
*/
  __pyx_t_2 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1195
 *                print_format.format('flags', bitmask_to_str(self.flags,
 *                                                            flags)) + \
 *                print_format.format('CQE size', self.cqe_size)             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_cqe_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_3 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_kp_u_CQE_size, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1194
 *                                                   fmt)) +\
 *                print_format.format('flags', bitmask_to_str(self.flags,
 *                                                            flags)) + \             # <<<<<<<<<<<<<<
 *                print_format.format('CQE size', self.cqe_size)
 * 
*/
  __pyx_t_6 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_6;
  __pyx_t_6 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1172
 *         self.attr.cqe_size = val
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         print_format = '{:22}: {:<20}\n'
 *         flags = {dve.MLX5DV_CQ_INIT_ATTR_FLAGS_CQE_PAD:
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVCQInitAttr.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_print_format);
  __Pyx_XDECREF(__pyx_v_flags);
  __Pyx_XDECREF(__pyx_v_mask);
  __Pyx_XDECREF(__pyx_v_fmt);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_4__reduce_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_Pickling_of_struct_members_such, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVCQInitAttr.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVCQInitAttr.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_6__setstate_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_Pickling_of_struct_members_such, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DVCQInitAttr.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1199
 * 
 * cdef class Mlx5CQ(CQEX):
 *     def __init__(self, Mlx5Context context, CqInitAttrEx init_attr,             # <<<<<<<<<<<<<<
 *                  Mlx5DVCQInitAttr dv_init_attr):
 *         # Initialize the logger here as the parent's __init__ is called after
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5CQ_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5CQ_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *__pyx_v_context = 0;
  struct __pyx_obj_7pyverbs_2cq_CqInitAttrEx *__pyx_v_init_attr = 0;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *__pyx_v_dv_init_attr = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_context,&__pyx_mstate_global->__pyx_n_u_init_attr,&__pyx_mstate_global->__pyx_n_u_dv_init_attr,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1199, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 1199, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1199, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1199, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(0, 1199, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, i); __PYX_ERR(0, 1199, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1199, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1199, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 1199, __pyx_L3_error)
    }
    __pyx_v_context = ((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *)values[0]);
    __pyx_v_init_attr = ((struct __pyx_obj_7pyverbs_2cq_CqInitAttrEx *)values[1]);
    __pyx_v_dv_init_attr = ((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *)values[2]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 1199, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5CQ.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_context), __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context, 1, "context", 0))) __PYX_ERR(0, 1199, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_init_attr), __pyx_mstate_global->__pyx_ptype_7pyverbs_2cq_CqInitAttrEx, 1, "init_attr", 0))) __PYX_ERR(0, 1199, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dv_init_attr), __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr, 1, "dv_init_attr", 0))) __PYX_ERR(0, 1200, __pyx_L1_error)
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5CQ___init__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ *)__pyx_v_self), __pyx_v_context, __pyx_v_init_attr, __pyx_v_dv_init_attr);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5CQ___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ *__pyx_v_self, struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *__pyx_v_context, struct __pyx_obj_7pyverbs_2cq_CqInitAttrEx *__pyx_v_init_attr, struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr *__pyx_v_dv_init_attr) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  struct mlx5dv_cq_init_attr *__pyx_t_7;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1204
 *         # the CQ is allocated. Allocation can fail, which will lead to exceptions
 *         # thrown during object's teardown.
 *         self.logger = logging.getLogger(self.__class__.__name__)             # <<<<<<<<<<<<<<
 *         self.cq = \
 *             dv.mlx5dv_create_cq(context.context, &init_attr.attr,
*/
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_logging); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1204, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_getLogger); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1204, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_class); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1204, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_name_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1204, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_5};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1204, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.logger);
  __Pyx_DECREF(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.logger);
  __pyx_v_self->__pyx_base.__pyx_base.__pyx_base.logger = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1207
 *         self.cq = \
 *             dv.mlx5dv_create_cq(context.context, &init_attr.attr,
 *                                 &dv_init_attr.attr if dv_init_attr is not None             # <<<<<<<<<<<<<<
 *                                 else NULL)
 *         if self.cq == NULL:
*/
  __pyx_t_8 = (((PyObject *)__pyx_v_dv_init_attr) != Py_None);
  if (__pyx_t_8) {
    __pyx_t_7 = (&__pyx_v_dv_init_attr->attr);
  } else {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1208
 *             dv.mlx5dv_create_cq(context.context, &init_attr.attr,
 *                                 &dv_init_attr.attr if dv_init_attr is not None
 *                                 else NULL)             # <<<<<<<<<<<<<<
 *         if self.cq == NULL:
 *             raise PyverbsRDMAErrno('Failed to create MLX5 CQ.\nCQInitAttrEx:\n'
*/
    __pyx_t_7 = NULL;
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1205
 *         # thrown during object's teardown.
 *         self.logger = logging.getLogger(self.__class__.__name__)
 *         self.cq = \             # <<<<<<<<<<<<<<
 *             dv.mlx5dv_create_cq(context.context, &init_attr.attr,
 *                                 &dv_init_attr.attr if dv_init_attr is not None
*/
  __pyx_v_self->__pyx_base.cq = mlx5dv_create_cq(__pyx_v_context->__pyx_base.context, (&__pyx_v_init_attr->attr), __pyx_t_7);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1209
 *                                 &dv_init_attr.attr if dv_init_attr is not None
 *                                 else NULL)
 *         if self.cq == NULL:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAErrno('Failed to create MLX5 CQ.\nCQInitAttrEx:\n'
 *                                    '{}\nMLX5DVCQInitAttr:\n{}'.
*/
  __pyx_t_8 = (__pyx_v_self->__pyx_base.cq == NULL);
  if (unlikely(__pyx_t_8)) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1210
 *                                 else NULL)
 *         if self.cq == NULL:
 *             raise PyverbsRDMAErrno('Failed to create MLX5 CQ.\nCQInitAttrEx:\n'             # <<<<<<<<<<<<<<
 *                                    '{}\nMLX5DVCQInitAttr:\n{}'.
 *                                    format(init_attr, dv_init_attr))
*/
    __pyx_t_4 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_PyverbsRDMAErrno); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1210, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1212
 *             raise PyverbsRDMAErrno('Failed to create MLX5 CQ.\nCQInitAttrEx:\n'
 *                                    '{}\nMLX5DVCQInitAttr:\n{}'.
 *                                    format(init_attr, dv_init_attr))             # <<<<<<<<<<<<<<
 *         self.ibv_cq = v.ibv_cq_ex_to_cq(self.cq)
 *         self.context = context
*/
    __pyx_t_3 = __pyx_mstate_global->__pyx_kp_u_Failed_to_create_MLX5_CQ_CQInitA;
    __Pyx_INCREF(__pyx_t_3);
    __pyx_t_6 = 0;
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_3, ((PyObject *)__pyx_v_init_attr), ((PyObject *)__pyx_v_dv_init_attr)};
      __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1212, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __pyx_t_6 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_4);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_6 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_2};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1210, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(0, 1210, __pyx_L1_error)

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1209
 *                                 &dv_init_attr.attr if dv_init_attr is not None
 *                                 else NULL)
 *         if self.cq == NULL:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAErrno('Failed to create MLX5 CQ.\nCQInitAttrEx:\n'
 *                                    '{}\nMLX5DVCQInitAttr:\n{}'.
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1213
 *                                    '{}\nMLX5DVCQInitAttr:\n{}'.
 *                                    format(init_attr, dv_init_attr))
 *         self.ibv_cq = v.ibv_cq_ex_to_cq(self.cq)             # <<<<<<<<<<<<<<
 *         self.context = context
 *         context.add_ref(self)
*/
  __pyx_v_self->__pyx_base.ibv_cq = ibv_cq_ex_to_cq(__pyx_v_self->__pyx_base.cq);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1214
 *                                    format(init_attr, dv_init_attr))
 *         self.ibv_cq = v.ibv_cq_ex_to_cq(self.cq)
 *         self.context = context             # <<<<<<<<<<<<<<
 *         context.add_ref(self)
 *         super().__init__(context, init_attr)
*/
  __Pyx_INCREF((PyObject *)__pyx_v_context);
  __Pyx_GIVEREF((PyObject *)__pyx_v_context);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.context);
  __Pyx_DECREF(__pyx_v_self->__pyx_base.context);
  __pyx_v_self->__pyx_base.context = ((PyObject *)__pyx_v_context);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1215
 *         self.ibv_cq = v.ibv_cq_ex_to_cq(self.cq)
 *         self.context = context
 *         context.add_ref(self)             # <<<<<<<<<<<<<<
 *         super().__init__(context, init_attr)
 * 
*/
  __pyx_t_1 = ((struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *)__pyx_v_context->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.add_ref(((struct __pyx_obj_7pyverbs_6device_Context *)__pyx_v_context), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1215, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1216
 *         self.context = context
 *         context.add_ref(self)
 *         super().__init__(context, init_attr)             # <<<<<<<<<<<<<<
 * 
 *     def __str__(self):
*/
  __pyx_t_4 = NULL;
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, ((PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ), ((PyObject *)__pyx_v_self)};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_super, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1216, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_t_5 = __pyx_t_2;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_6 = 0;
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, ((PyObject *)__pyx_v_context), ((PyObject *)__pyx_v_init_attr)};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_init, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1216, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1199
 * 
 * cdef class Mlx5CQ(CQEX):
 *     def __init__(self, Mlx5Context context, CqInitAttrEx init_attr,             # <<<<<<<<<<<<<<
 *                  Mlx5DVCQInitAttr dv_init_attr):
 *         # Initialize the logger here as the parent's __init__ is called after
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5CQ.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1218
 *         super().__init__(context, init_attr)
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         print_format = '{:<22}: {:<20}\n'
 *         return 'Mlx5 CQ:\n' +\
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5CQ_3__str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5CQ_3__str__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5CQ_2__str__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5CQ_2__str__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ *__pyx_v_self) {
  PyObject *__pyx_v_print_format = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1219
 * 
 *     def __str__(self):
 *         print_format = '{:<22}: {:<20}\n'             # <<<<<<<<<<<<<<
 *         return 'Mlx5 CQ:\n' +\
 *                print_format.format('Handle', self.cq.handle) +\
*/
  __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_22_20_2);
  __pyx_v_print_format = __pyx_mstate_global->__pyx_kp_u_22_20_2;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1220
 *     def __str__(self):
 *         print_format = '{:<22}: {:<20}\n'
 *         return 'Mlx5 CQ:\n' +\             # <<<<<<<<<<<<<<
 *                print_format.format('Handle', self.cq.handle) +\
 *                print_format.format('CQEs', self.cq.cqe)
*/
  __Pyx_XDECREF(__pyx_r);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1221
 *         print_format = '{:<22}: {:<20}\n'
 *         return 'Mlx5 CQ:\n' +\
 *                print_format.format('Handle', self.cq.handle) +\             # <<<<<<<<<<<<<<
 *                print_format.format('CQEs', self.cq.cqe)
 * 
*/
  __pyx_t_1 = __Pyx_PyLong_From_unsigned_int(__pyx_v_self->__pyx_base.cq->handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_n_u_Handle, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1220
 *     def __str__(self):
 *         print_format = '{:<22}: {:<20}\n'
 *         return 'Mlx5 CQ:\n' +\             # <<<<<<<<<<<<<<
 *                print_format.format('Handle', self.cq.handle) +\
 *                print_format.format('CQEs', self.cq.cqe)
*/
  __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_Mlx5_CQ, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1222
 *         return 'Mlx5 CQ:\n' +\
 *                print_format.format('Handle', self.cq.handle) +\
 *                print_format.format('CQEs', self.cq.cqe)             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_2 = __Pyx_PyLong_From_int(__pyx_v_self->__pyx_base.cq->cqe); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_n_u_CQEs, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1221
 *         print_format = '{:<22}: {:<20}\n'
 *         return 'Mlx5 CQ:\n' +\
 *                print_format.format('Handle', self.cq.handle) +\             # <<<<<<<<<<<<<<
 *                print_format.format('CQEs', self.cq.cqe)
 * 
*/
  __pyx_t_2 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1218
 *         super().__init__(context, init_attr)
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         print_format = '{:<22}: {:<20}\n'
 *         return 'Mlx5 CQ:\n' +\
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5CQ.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_print_format);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.cq,self.ibv_cq cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5CQ_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5CQ_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5CQ_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5CQ_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5CQ_4__reduce_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5CQ_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self.cq,self.ibv_cq cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.cq,self.ibv_cq cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_cq_self_ibv_cq_cannot_be_co, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.cq,self.ibv_cq cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5CQ.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.cq,self.ibv_cq cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.cq,self.ibv_cq cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5CQ_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5CQ_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5CQ_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5CQ_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5CQ.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5CQ_6__setstate_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5CQ_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self.cq,self.ibv_cq cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.cq,self.ibv_cq cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_cq_self_ibv_cq_cannot_be_co, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.cq,self.ibv_cq cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.cq,self.ibv_cq cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5CQ.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1225
 * 
 * 
 * def qpts_to_str(qp_types):             # <<<<<<<<<<<<<<
 *     numeric_types = qp_types
 *     qpts_str = ''
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_1qpts_to_str(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_1qpts_to_str = {"qpts_to_str", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_1qpts_to_str, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_1qpts_to_str(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_qp_types = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("qpts_to_str (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_qp_types,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1225, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1225, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "qpts_to_str", 0) < (0)) __PYX_ERR(0, 1225, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("qpts_to_str", 1, 1, 1, i); __PYX_ERR(0, 1225, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1225, __pyx_L3_error)
    }
    __pyx_v_qp_types = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("qpts_to_str", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1225, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.qpts_to_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_qpts_to_str(__pyx_self, __pyx_v_qp_types);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_qpts_to_str(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_qp_types) {
  PyObject *__pyx_v_numeric_types = NULL;
  PyObject *__pyx_v_qpts_str = NULL;
  PyObject *__pyx_v_qpts = NULL;
  PyObject *__pyx_v_t = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  size_t __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("qpts_to_str", 0);
  __Pyx_INCREF(__pyx_v_qp_types);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1226
 * 
 * def qpts_to_str(qp_types):
 *     numeric_types = qp_types             # <<<<<<<<<<<<<<
 *     qpts_str = ''
 *     qpts = {e.IBV_QPT_RC: 'RC', e.IBV_QPT_UC: 'UC', e.IBV_QPT_UD: 'UD',
*/
  __Pyx_INCREF(__pyx_v_qp_types);
  __pyx_v_numeric_types = __pyx_v_qp_types;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1227
 * def qpts_to_str(qp_types):
 *     numeric_types = qp_types
 *     qpts_str = ''             # <<<<<<<<<<<<<<
 *     qpts = {e.IBV_QPT_RC: 'RC', e.IBV_QPT_UC: 'UC', e.IBV_QPT_UD: 'UD',
 *             e.IBV_QPT_RAW_PACKET: 'Raw Packet', e.IBV_QPT_XRC_SEND: 'XRC Send',
*/
  __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u__3);
  __pyx_v_qpts_str = __pyx_mstate_global->__pyx_kp_u__3;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1228
 *     numeric_types = qp_types
 *     qpts_str = ''
 *     qpts = {e.IBV_QPT_RC: 'RC', e.IBV_QPT_UC: 'UC', e.IBV_QPT_UD: 'UD',             # <<<<<<<<<<<<<<
 *             e.IBV_QPT_RAW_PACKET: 'Raw Packet', e.IBV_QPT_XRC_SEND: 'XRC Send',
 *             e.IBV_QPT_XRC_RECV: 'XRC Recv', e.IBV_QPT_DRIVER: 'Driver QPT'}
*/
  __pyx_t_1 = __Pyx_PyDict_NewPresized(7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1228, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py(IBV_QPT_RC); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1228, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_n_u_RC) < (0)) __PYX_ERR(0, 1228, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py(IBV_QPT_UC); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1228, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_n_u_UC) < (0)) __PYX_ERR(0, 1228, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py(IBV_QPT_UD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1228, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_n_u_UD) < (0)) __PYX_ERR(0, 1228, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1229
 *     qpts_str = ''
 *     qpts = {e.IBV_QPT_RC: 'RC', e.IBV_QPT_UC: 'UC', e.IBV_QPT_UD: 'UD',
 *             e.IBV_QPT_RAW_PACKET: 'Raw Packet', e.IBV_QPT_XRC_SEND: 'XRC Send',             # <<<<<<<<<<<<<<
 *             e.IBV_QPT_XRC_RECV: 'XRC Recv', e.IBV_QPT_DRIVER: 'Driver QPT'}
 *     for t in qpts.keys():
*/
  __pyx_t_2 = __Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py(IBV_QPT_RAW_PACKET); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Raw_Packet) < (0)) __PYX_ERR(0, 1228, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py(IBV_QPT_XRC_SEND); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_XRC_Send) < (0)) __PYX_ERR(0, 1228, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1230
 *     qpts = {e.IBV_QPT_RC: 'RC', e.IBV_QPT_UC: 'UC', e.IBV_QPT_UD: 'UD',
 *             e.IBV_QPT_RAW_PACKET: 'Raw Packet', e.IBV_QPT_XRC_SEND: 'XRC Send',
 *             e.IBV_QPT_XRC_RECV: 'XRC Recv', e.IBV_QPT_DRIVER: 'Driver QPT'}             # <<<<<<<<<<<<<<
 *     for t in qpts.keys():
 *         if (1 << t) & qp_types:
*/
  __pyx_t_2 = __Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py(IBV_QPT_XRC_RECV); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1230, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_XRC_Recv) < (0)) __PYX_ERR(0, 1228, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py(IBV_QPT_DRIVER); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1230, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Driver_QPT) < (0)) __PYX_ERR(0, 1228, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_qpts = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1231
 *             e.IBV_QPT_RAW_PACKET: 'Raw Packet', e.IBV_QPT_XRC_SEND: 'XRC Send',
 *             e.IBV_QPT_XRC_RECV: 'XRC Recv', e.IBV_QPT_DRIVER: 'Driver QPT'}
 *     for t in qpts.keys():             # <<<<<<<<<<<<<<
 *         if (1 << t) & qp_types:
 *             qpts_str += qpts[t] + ', '
*/
  __pyx_t_3 = 0;
  __pyx_t_2 = __Pyx_dict_iterator(__pyx_v_qpts, 1, __pyx_mstate_global->__pyx_n_u_keys, (&__pyx_t_4), (&__pyx_t_5)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_1);
  __pyx_t_1 = __pyx_t_2;
  __pyx_t_2 = 0;
  while (1) {
    __pyx_t_6 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_4, &__pyx_t_3, &__pyx_t_2, NULL, NULL, __pyx_t_5);
    if (unlikely(__pyx_t_6 == 0)) break;
    if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 1231, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1232
 *             e.IBV_QPT_XRC_RECV: 'XRC Recv', e.IBV_QPT_DRIVER: 'Driver QPT'}
 *     for t in qpts.keys():
 *         if (1 << t) & qp_types:             # <<<<<<<<<<<<<<
 *             qpts_str += qpts[t] + ', '
 *             qp_types -= t
*/
    __pyx_t_2 = PyNumber_Lshift(__pyx_mstate_global->__pyx_int_1, __pyx_v_t); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1232, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = PyNumber_And(__pyx_t_2, __pyx_v_qp_types); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1232, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 1232, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (__pyx_t_8) {

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":1233
 *     for t in qpts.keys():
 *         if (1 << t) & qp_types:
 *             qpts_str += qpts[t] + ', '             # <<<<<<<<<<<<<<
 *             qp_types -= t
 *         if qp_types == 0:
*/
      __pyx_t_7 = __Pyx_PyDict_GetItem(__pyx_v_qpts, __pyx_v_t); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1233, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_2 = PyNumber_Add(__pyx_t_7, __pyx_mstate_global->__pyx_kp_u__5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1233, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = PyNumber_InPlaceAdd(__pyx_v_qpts_str, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1233, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF_SET(__pyx_v_qpts_str, __pyx_t_7);
      __pyx_t_7 = 0;

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":1234
 *         if (1 << t) & qp_types:
 *             qpts_str += qpts[t] + ', '
 *             qp_types -= t             # <<<<<<<<<<<<<<
 *         if qp_types == 0:
 *             break
*/
      __pyx_t_7 = PyNumber_InPlaceSubtract(__pyx_v_qp_types, __pyx_v_t); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1234, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF_SET(__pyx_v_qp_types, __pyx_t_7);
      __pyx_t_7 = 0;

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":1232
 *             e.IBV_QPT_XRC_RECV: 'XRC Recv', e.IBV_QPT_DRIVER: 'Driver QPT'}
 *     for t in qpts.keys():
 *         if (1 << t) & qp_types:             # <<<<<<<<<<<<<<
 *             qpts_str += qpts[t] + ', '
 *             qp_types -= t
*/
    }

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1235
 *             qpts_str += qpts[t] + ', '
 *             qp_types -= t
 *         if qp_types == 0:             # <<<<<<<<<<<<<<
 *             break
 *     return qpts_str[:-2] + ' ({})'.format(numeric_types)
*/
    __pyx_t_8 = (__Pyx_PyLong_BoolEqObjC(__pyx_v_qp_types, __pyx_mstate_global->__pyx_int_0, 0, 0)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 1235, __pyx_L1_error)
    if (__pyx_t_8) {

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":1236
 *             qp_types -= t
 *         if qp_types == 0:
 *             break             # <<<<<<<<<<<<<<
 *     return qpts_str[:-2] + ' ({})'.format(numeric_types)
 * 
*/
      goto __pyx_L4_break;

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":1235
 *             qpts_str += qpts[t] + ', '
 *             qp_types -= t
 *         if qp_types == 0:             # <<<<<<<<<<<<<<
 *             break
 *     return qpts_str[:-2] + ' ({})'.format(numeric_types)
*/
    }
  }
  __pyx_L4_break:;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1237
 *         if qp_types == 0:
 *             break
 *     return qpts_str[:-2] + ' ({})'.format(numeric_types)             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_qpts_str, 0, -2L, NULL, NULL, &__pyx_mstate_global->__pyx_slice[1], 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_mstate_global->__pyx_kp_u__6;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_9 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_numeric_types};
    __pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1237, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
  }
  __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1225
 * 
 * 
 * def qpts_to_str(qp_types):             # <<<<<<<<<<<<<<
 *     numeric_types = qp_types
 *     qpts_str = ''
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.qpts_to_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_numeric_types);
  __Pyx_XDECREF(__pyx_v_qpts_str);
  __Pyx_XDECREF(__pyx_v_qpts);
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XDECREF(__pyx_v_qp_types);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1240
 * 
 * 
 * def bitmask_to_str(bits, values):             # <<<<<<<<<<<<<<
 *     numeric_bits = bits
 *     res = ''
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_3bitmask_to_str(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_3bitmask_to_str = {"bitmask_to_str", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_3bitmask_to_str, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_3bitmask_to_str(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_bits = 0;
  PyObject *__pyx_v_values = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bitmask_to_str (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_bits,&__pyx_mstate_global->__pyx_n_u_values,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1240, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1240, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1240, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "bitmask_to_str", 0) < (0)) __PYX_ERR(0, 1240, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("bitmask_to_str", 1, 2, 2, i); __PYX_ERR(0, 1240, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1240, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1240, __pyx_L3_error)
    }
    __pyx_v_bits = values[0];
    __pyx_v_values = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("bitmask_to_str", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 1240, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.bitmask_to_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_2bitmask_to_str(__pyx_self, __pyx_v_bits, __pyx_v_values);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_2bitmask_to_str(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_bits, PyObject *__pyx_v_values) {
  PyObject *__pyx_v_numeric_bits = NULL;
  PyObject *__pyx_v_res = NULL;
  PyObject *__pyx_v_t = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  size_t __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("bitmask_to_str", 0);
  __Pyx_INCREF(__pyx_v_bits);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1241
 * 
 * def bitmask_to_str(bits, values):
 *     numeric_bits = bits             # <<<<<<<<<<<<<<
 *     res = ''
 *     for t in values.keys():
*/
  __Pyx_INCREF(__pyx_v_bits);
  __pyx_v_numeric_bits = __pyx_v_bits;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1242
 * def bitmask_to_str(bits, values):
 *     numeric_bits = bits
 *     res = ''             # <<<<<<<<<<<<<<
 *     for t in values.keys():
 *         if t & bits:
*/
  __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u__3);
  __pyx_v_res = __pyx_mstate_global->__pyx_kp_u__3;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1243
 *     numeric_bits = bits
 *     res = ''
 *     for t in values.keys():             # <<<<<<<<<<<<<<
 *         if t & bits:
 *             res += values[t] + ', '
*/
  __pyx_t_2 = 0;
  if (unlikely(__pyx_v_values == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "keys");
    __PYX_ERR(0, 1243, __pyx_L1_error)
  }
  __pyx_t_5 = __Pyx_dict_iterator(__pyx_v_values, 0, __pyx_mstate_global->__pyx_n_u_keys, (&__pyx_t_3), (&__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1243, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_1);
  __pyx_t_1 = __pyx_t_5;
  __pyx_t_5 = 0;
  while (1) {
    __pyx_t_6 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_3, &__pyx_t_2, &__pyx_t_5, NULL, NULL, __pyx_t_4);
    if (unlikely(__pyx_t_6 == 0)) break;
    if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 1243, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1244
 *     res = ''
 *     for t in values.keys():
 *         if t & bits:             # <<<<<<<<<<<<<<
 *             res += values[t] + ', '
 *             bits -= t
*/
    __pyx_t_5 = PyNumber_And(__pyx_v_t, __pyx_v_bits); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1244, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1244, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (__pyx_t_7) {

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":1245
 *     for t in values.keys():
 *         if t & bits:
 *             res += values[t] + ', '             # <<<<<<<<<<<<<<
 *             bits -= t
 *         if bits == 0:
*/
      __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_values, __pyx_v_t); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1245, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_8 = PyNumber_Add(__pyx_t_5, __pyx_mstate_global->__pyx_kp_u__5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1245, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = PyNumber_InPlaceAdd(__pyx_v_res, __pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1245, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF_SET(__pyx_v_res, __pyx_t_5);
      __pyx_t_5 = 0;

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":1246
 *         if t & bits:
 *             res += values[t] + ', '
 *             bits -= t             # <<<<<<<<<<<<<<
 *         if bits == 0:
 *             break
*/
      __pyx_t_5 = PyNumber_InPlaceSubtract(__pyx_v_bits, __pyx_v_t); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1246, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF_SET(__pyx_v_bits, __pyx_t_5);
      __pyx_t_5 = 0;

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":1244
 *     res = ''
 *     for t in values.keys():
 *         if t & bits:             # <<<<<<<<<<<<<<
 *             res += values[t] + ', '
 *             bits -= t
*/
    }

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1247
 *             res += values[t] + ', '
 *             bits -= t
 *         if bits == 0:             # <<<<<<<<<<<<<<
 *             break
 *     return res[:-2] + ' ({})'.format(numeric_bits) # Remove last comma and space
*/
    __pyx_t_7 = (__Pyx_PyLong_BoolEqObjC(__pyx_v_bits, __pyx_mstate_global->__pyx_int_0, 0, 0)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1247, __pyx_L1_error)
    if (__pyx_t_7) {

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":1248
 *             bits -= t
 *         if bits == 0:
 *             break             # <<<<<<<<<<<<<<
 *     return res[:-2] + ' ({})'.format(numeric_bits) # Remove last comma and space
 * 
*/
      goto __pyx_L4_break;

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":1247
 *             res += values[t] + ', '
 *             bits -= t
 *         if bits == 0:             # <<<<<<<<<<<<<<
 *             break
 *     return res[:-2] + ' ({})'.format(numeric_bits) # Remove last comma and space
*/
    }
  }
  __pyx_L4_break:;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1249
 *         if bits == 0:
 *             break
 *     return res[:-2] + ' ({})'.format(numeric_bits) # Remove last comma and space             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_res, 0, -2L, NULL, NULL, &__pyx_mstate_global->__pyx_slice[1], 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1249, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __pyx_mstate_global->__pyx_kp_u__6;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_9 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_v_numeric_bits};
    __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1249, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
  }
  __pyx_t_8 = PyNumber_Add(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1249, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_r = __pyx_t_8;
  __pyx_t_8 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1240
 * 
 * 
 * def bitmask_to_str(bits, values):             # <<<<<<<<<<<<<<
 *     numeric_bits = bits
 *     res = ''
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.bitmask_to_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_numeric_bits);
  __Pyx_XDECREF(__pyx_v_res);
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XDECREF(__pyx_v_bits);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1252
 * 
 * 
 * def context_comp_mask_to_str(mask):             # <<<<<<<<<<<<<<
 *     l = {dve.MLX5DV_CONTEXT_MASK_CQE_COMPRESION: 'CQE compression',
 *          dve.MLX5DV_CONTEXT_MASK_SWP: 'SW parsing',
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_5context_comp_mask_to_str(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_5context_comp_mask_to_str = {"context_comp_mask_to_str", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_5context_comp_mask_to_str, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_5context_comp_mask_to_str(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_mask = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("context_comp_mask_to_str (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_mask,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1252, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1252, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "context_comp_mask_to_str", 0) < (0)) __PYX_ERR(0, 1252, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("context_comp_mask_to_str", 1, 1, 1, i); __PYX_ERR(0, 1252, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1252, __pyx_L3_error)
    }
    __pyx_v_mask = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("context_comp_mask_to_str", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1252, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.context_comp_mask_to_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_4context_comp_mask_to_str(__pyx_self, __pyx_v_mask);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_4context_comp_mask_to_str(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_mask) {
  PyObject *__pyx_v_l = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("context_comp_mask_to_str", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1253
 * 
 * def context_comp_mask_to_str(mask):
 *     l = {dve.MLX5DV_CONTEXT_MASK_CQE_COMPRESION: 'CQE compression',             # <<<<<<<<<<<<<<
 *          dve.MLX5DV_CONTEXT_MASK_SWP: 'SW parsing',
 *          dve.MLX5DV_CONTEXT_MASK_STRIDING_RQ: 'Striding RQ',
*/
  __pyx_t_1 = __Pyx_PyDict_NewPresized(7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_CONTEXT_MASK_CQE_COMPRESION); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_CQE_compression) < (0)) __PYX_ERR(0, 1253, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1254
 * def context_comp_mask_to_str(mask):
 *     l = {dve.MLX5DV_CONTEXT_MASK_CQE_COMPRESION: 'CQE compression',
 *          dve.MLX5DV_CONTEXT_MASK_SWP: 'SW parsing',             # <<<<<<<<<<<<<<
 *          dve.MLX5DV_CONTEXT_MASK_STRIDING_RQ: 'Striding RQ',
 *          dve.MLX5DV_CONTEXT_MASK_TUNNEL_OFFLOADS: 'Tunnel offloads',
*/
  __pyx_t_2 = __Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_CONTEXT_MASK_SWP); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1254, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_SW_parsing) < (0)) __PYX_ERR(0, 1253, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1255
 *     l = {dve.MLX5DV_CONTEXT_MASK_CQE_COMPRESION: 'CQE compression',
 *          dve.MLX5DV_CONTEXT_MASK_SWP: 'SW parsing',
 *          dve.MLX5DV_CONTEXT_MASK_STRIDING_RQ: 'Striding RQ',             # <<<<<<<<<<<<<<
 *          dve.MLX5DV_CONTEXT_MASK_TUNNEL_OFFLOADS: 'Tunnel offloads',
 *          dve.MLX5DV_CONTEXT_MASK_DYN_BFREGS: 'Dynamic BF regs',
*/
  __pyx_t_2 = __Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_CONTEXT_MASK_STRIDING_RQ); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Striding_RQ) < (0)) __PYX_ERR(0, 1253, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1256
 *          dve.MLX5DV_CONTEXT_MASK_SWP: 'SW parsing',
 *          dve.MLX5DV_CONTEXT_MASK_STRIDING_RQ: 'Striding RQ',
 *          dve.MLX5DV_CONTEXT_MASK_TUNNEL_OFFLOADS: 'Tunnel offloads',             # <<<<<<<<<<<<<<
 *          dve.MLX5DV_CONTEXT_MASK_DYN_BFREGS: 'Dynamic BF regs',
 *          dve.MLX5DV_CONTEXT_MASK_CLOCK_INFO_UPDATE: 'Clock info update',
*/
  __pyx_t_2 = __Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_CONTEXT_MASK_TUNNEL_OFFLOADS); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Tunnel_offloads) < (0)) __PYX_ERR(0, 1253, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1257
 *          dve.MLX5DV_CONTEXT_MASK_STRIDING_RQ: 'Striding RQ',
 *          dve.MLX5DV_CONTEXT_MASK_TUNNEL_OFFLOADS: 'Tunnel offloads',
 *          dve.MLX5DV_CONTEXT_MASK_DYN_BFREGS: 'Dynamic BF regs',             # <<<<<<<<<<<<<<
 *          dve.MLX5DV_CONTEXT_MASK_CLOCK_INFO_UPDATE: 'Clock info update',
 *          dve.MLX5DV_CONTEXT_MASK_FLOW_ACTION_FLAGS: 'Flow action flags'}
*/
  __pyx_t_2 = __Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_CONTEXT_MASK_DYN_BFREGS); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1257, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Dynamic_BF_regs) < (0)) __PYX_ERR(0, 1253, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1258
 *          dve.MLX5DV_CONTEXT_MASK_TUNNEL_OFFLOADS: 'Tunnel offloads',
 *          dve.MLX5DV_CONTEXT_MASK_DYN_BFREGS: 'Dynamic BF regs',
 *          dve.MLX5DV_CONTEXT_MASK_CLOCK_INFO_UPDATE: 'Clock info update',             # <<<<<<<<<<<<<<
 *          dve.MLX5DV_CONTEXT_MASK_FLOW_ACTION_FLAGS: 'Flow action flags'}
 *     return bitmask_to_str(mask, l)
*/
  __pyx_t_2 = __Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_CONTEXT_MASK_CLOCK_INFO_UPDATE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Clock_info_update) < (0)) __PYX_ERR(0, 1253, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1259
 *          dve.MLX5DV_CONTEXT_MASK_DYN_BFREGS: 'Dynamic BF regs',
 *          dve.MLX5DV_CONTEXT_MASK_CLOCK_INFO_UPDATE: 'Clock info update',
 *          dve.MLX5DV_CONTEXT_MASK_FLOW_ACTION_FLAGS: 'Flow action flags'}             # <<<<<<<<<<<<<<
 *     return bitmask_to_str(mask, l)
 * 
*/
  __pyx_t_2 = __Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_CONTEXT_MASK_FLOW_ACTION_FLAGS); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1259, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Flow_action_flags) < (0)) __PYX_ERR(0, 1253, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_l = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1260
 *          dve.MLX5DV_CONTEXT_MASK_CLOCK_INFO_UPDATE: 'Clock info update',
 *          dve.MLX5DV_CONTEXT_MASK_FLOW_ACTION_FLAGS: 'Flow action flags'}
 *     return bitmask_to_str(mask, l)             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_bitmask_to_str); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1260, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_4 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_v_mask, __pyx_v_l};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_4, (3-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1260, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1252
 * 
 * 
 * def context_comp_mask_to_str(mask):             # <<<<<<<<<<<<<<
 *     l = {dve.MLX5DV_CONTEXT_MASK_CQE_COMPRESION: 'CQE compression',
 *          dve.MLX5DV_CONTEXT_MASK_SWP: 'SW parsing',
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.context_comp_mask_to_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_l);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1263
 * 
 * 
 * def context_flags_to_str(flags):             # <<<<<<<<<<<<<<
 *     l = {dve.MLX5DV_CONTEXT_FLAGS_CQE_V1: 'CQE v1',
 *          dve.MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED: 'Multi packet WQE allowed',
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7context_flags_to_str(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_7context_flags_to_str = {"context_flags_to_str", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7context_flags_to_str, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7context_flags_to_str(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_flags = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("context_flags_to_str (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_flags,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1263, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1263, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "context_flags_to_str", 0) < (0)) __PYX_ERR(0, 1263, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("context_flags_to_str", 1, 1, 1, i); __PYX_ERR(0, 1263, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1263, __pyx_L3_error)
    }
    __pyx_v_flags = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("context_flags_to_str", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1263, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.context_flags_to_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6context_flags_to_str(__pyx_self, __pyx_v_flags);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6context_flags_to_str(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_flags) {
  PyObject *__pyx_v_l = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("context_flags_to_str", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1264
 * 
 * def context_flags_to_str(flags):
 *     l = {dve.MLX5DV_CONTEXT_FLAGS_CQE_V1: 'CQE v1',             # <<<<<<<<<<<<<<
 *          dve.MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED: 'Multi packet WQE allowed',
 *          dve.MLX5DV_CONTEXT_FLAGS_ENHANCED_MPW: 'Enhanced multi packet WQE',
*/
  __pyx_t_1 = __Pyx_PyDict_NewPresized(7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_CONTEXT_FLAGS_CQE_V1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_CQE_v1) < (0)) __PYX_ERR(0, 1264, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1265
 * def context_flags_to_str(flags):
 *     l = {dve.MLX5DV_CONTEXT_FLAGS_CQE_V1: 'CQE v1',
 *          dve.MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED: 'Multi packet WQE allowed',             # <<<<<<<<<<<<<<
 *          dve.MLX5DV_CONTEXT_FLAGS_ENHANCED_MPW: 'Enhanced multi packet WQE',
 *          dve.MLX5DV_CONTEXT_FLAGS_CQE_128B_COMP: 'Support CQE 128B compression',
*/
  __pyx_t_2 = __Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Multi_packet_WQE_allowed) < (0)) __PYX_ERR(0, 1264, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1266
 *     l = {dve.MLX5DV_CONTEXT_FLAGS_CQE_V1: 'CQE v1',
 *          dve.MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED: 'Multi packet WQE allowed',
 *          dve.MLX5DV_CONTEXT_FLAGS_ENHANCED_MPW: 'Enhanced multi packet WQE',             # <<<<<<<<<<<<<<
 *          dve.MLX5DV_CONTEXT_FLAGS_CQE_128B_COMP: 'Support CQE 128B compression',
 *          dve.MLX5DV_CONTEXT_FLAGS_CQE_128B_PAD: 'Support CQE 128B padding',
*/
  __pyx_t_2 = __Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_CONTEXT_FLAGS_ENHANCED_MPW); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Enhanced_multi_packet_WQE) < (0)) __PYX_ERR(0, 1264, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1267
 *          dve.MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED: 'Multi packet WQE allowed',
 *          dve.MLX5DV_CONTEXT_FLAGS_ENHANCED_MPW: 'Enhanced multi packet WQE',
 *          dve.MLX5DV_CONTEXT_FLAGS_CQE_128B_COMP: 'Support CQE 128B compression',             # <<<<<<<<<<<<<<
 *          dve.MLX5DV_CONTEXT_FLAGS_CQE_128B_PAD: 'Support CQE 128B padding',
 *          dve.MLX5DV_CONTEXT_FLAGS_PACKET_BASED_CREDIT_MODE:
*/
  __pyx_t_2 = __Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_CONTEXT_FLAGS_CQE_128B_COMP); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Support_CQE_128B_compression) < (0)) __PYX_ERR(0, 1264, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1268
 *          dve.MLX5DV_CONTEXT_FLAGS_ENHANCED_MPW: 'Enhanced multi packet WQE',
 *          dve.MLX5DV_CONTEXT_FLAGS_CQE_128B_COMP: 'Support CQE 128B compression',
 *          dve.MLX5DV_CONTEXT_FLAGS_CQE_128B_PAD: 'Support CQE 128B padding',             # <<<<<<<<<<<<<<
 *          dve.MLX5DV_CONTEXT_FLAGS_PACKET_BASED_CREDIT_MODE:
 *          'Support packet based credit mode (in RC QP)',
*/
  __pyx_t_2 = __Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_CONTEXT_FLAGS_CQE_128B_PAD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1268, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Support_CQE_128B_padding) < (0)) __PYX_ERR(0, 1264, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1269
 *          dve.MLX5DV_CONTEXT_FLAGS_CQE_128B_COMP: 'Support CQE 128B compression',
 *          dve.MLX5DV_CONTEXT_FLAGS_CQE_128B_PAD: 'Support CQE 128B padding',
 *          dve.MLX5DV_CONTEXT_FLAGS_PACKET_BASED_CREDIT_MODE:             # <<<<<<<<<<<<<<
 *          'Support packet based credit mode (in RC QP)',
 *          dve.MLX5DV_CONTEXT_FLAGS_BLUEFLAME: 'Support BlueFlame'}
*/
  __pyx_t_2 = __Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_CONTEXT_FLAGS_PACKET_BASED_CREDIT_MODE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Support_packet_based_credit_mode) < (0)) __PYX_ERR(0, 1264, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1271
 *          dve.MLX5DV_CONTEXT_FLAGS_PACKET_BASED_CREDIT_MODE:
 *          'Support packet based credit mode (in RC QP)',
 *          dve.MLX5DV_CONTEXT_FLAGS_BLUEFLAME: 'Support BlueFlame'}             # <<<<<<<<<<<<<<
 *     return bitmask_to_str(flags, l)
 * 
*/
  __pyx_t_2 = __Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_CONTEXT_FLAGS_BLUEFLAME); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Support_BlueFlame) < (0)) __PYX_ERR(0, 1264, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_l = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1272
 *          'Support packet based credit mode (in RC QP)',
 *          dve.MLX5DV_CONTEXT_FLAGS_BLUEFLAME: 'Support BlueFlame'}
 *     return bitmask_to_str(flags, l)             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_bitmask_to_str); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1272, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_4 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_v_flags, __pyx_v_l};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_4, (3-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1272, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1263
 * 
 * 
 * def context_flags_to_str(flags):             # <<<<<<<<<<<<<<
 *     l = {dve.MLX5DV_CONTEXT_FLAGS_CQE_V1: 'CQE v1',
 *          dve.MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED: 'Multi packet WQE allowed',
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.context_flags_to_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_l);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1275
 * 
 * 
 * def swp_to_str(swps):             # <<<<<<<<<<<<<<
 *     l = {dve.MLX5DV_SW_PARSING: 'SW Parsing',
 *          dve.MLX5DV_SW_PARSING_CSUM: 'SW Parsing CSUM',
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9swp_to_str(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_9swp_to_str = {"swp_to_str", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9swp_to_str, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9swp_to_str(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_swps = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("swp_to_str (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_swps,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1275, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1275, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "swp_to_str", 0) < (0)) __PYX_ERR(0, 1275, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("swp_to_str", 1, 1, 1, i); __PYX_ERR(0, 1275, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1275, __pyx_L3_error)
    }
    __pyx_v_swps = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("swp_to_str", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1275, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.swp_to_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_8swp_to_str(__pyx_self, __pyx_v_swps);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_8swp_to_str(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_swps) {
  PyObject *__pyx_v_l = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("swp_to_str", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1276
 * 
 * def swp_to_str(swps):
 *     l = {dve.MLX5DV_SW_PARSING: 'SW Parsing',             # <<<<<<<<<<<<<<
 *          dve.MLX5DV_SW_PARSING_CSUM: 'SW Parsing CSUM',
 *          dve.MLX5DV_SW_PARSING_LSO: 'SW Parsing LSO'}
*/
  __pyx_t_1 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_SW_PARSING); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_SW_Parsing) < (0)) __PYX_ERR(0, 1276, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1277
 * def swp_to_str(swps):
 *     l = {dve.MLX5DV_SW_PARSING: 'SW Parsing',
 *          dve.MLX5DV_SW_PARSING_CSUM: 'SW Parsing CSUM',             # <<<<<<<<<<<<<<
 *          dve.MLX5DV_SW_PARSING_LSO: 'SW Parsing LSO'}
 *     return bitmask_to_str(swps, l)
*/
  __pyx_t_2 = __Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_SW_PARSING_CSUM); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_SW_Parsing_CSUM) < (0)) __PYX_ERR(0, 1276, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1278
 *     l = {dve.MLX5DV_SW_PARSING: 'SW Parsing',
 *          dve.MLX5DV_SW_PARSING_CSUM: 'SW Parsing CSUM',
 *          dve.MLX5DV_SW_PARSING_LSO: 'SW Parsing LSO'}             # <<<<<<<<<<<<<<
 *     return bitmask_to_str(swps, l)
 * 
*/
  __pyx_t_2 = __Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_SW_PARSING_LSO); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_SW_Parsing_LSO) < (0)) __PYX_ERR(0, 1276, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_l = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1279
 *          dve.MLX5DV_SW_PARSING_CSUM: 'SW Parsing CSUM',
 *          dve.MLX5DV_SW_PARSING_LSO: 'SW Parsing LSO'}
 *     return bitmask_to_str(swps, l)             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_bitmask_to_str); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1279, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_4 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_v_swps, __pyx_v_l};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_4, (3-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1279, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1275
 * 
 * 
 * def swp_to_str(swps):             # <<<<<<<<<<<<<<
 *     l = {dve.MLX5DV_SW_PARSING: 'SW Parsing',
 *          dve.MLX5DV_SW_PARSING_CSUM: 'SW Parsing CSUM',
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.swp_to_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_l);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1282
 * 
 * 
 * def cqe_comp_to_str(cqe):             # <<<<<<<<<<<<<<
 *     l = {dve.MLX5DV_CQE_RES_FORMAT_HASH: 'with hash',
 *          dve.MLX5DV_CQE_RES_FORMAT_CSUM: 'with RX checksum CSUM',
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11cqe_comp_to_str(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11cqe_comp_to_str = {"cqe_comp_to_str", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11cqe_comp_to_str, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11cqe_comp_to_str(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_cqe = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cqe_comp_to_str (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_cqe,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1282, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1282, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "cqe_comp_to_str", 0) < (0)) __PYX_ERR(0, 1282, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("cqe_comp_to_str", 1, 1, 1, i); __PYX_ERR(0, 1282, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1282, __pyx_L3_error)
    }
    __pyx_v_cqe = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cqe_comp_to_str", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1282, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.cqe_comp_to_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10cqe_comp_to_str(__pyx_self, __pyx_v_cqe);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10cqe_comp_to_str(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_cqe) {
  PyObject *__pyx_v_l = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cqe_comp_to_str", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1283
 * 
 * def cqe_comp_to_str(cqe):
 *     l = {dve.MLX5DV_CQE_RES_FORMAT_HASH: 'with hash',             # <<<<<<<<<<<<<<
 *          dve.MLX5DV_CQE_RES_FORMAT_CSUM: 'with RX checksum CSUM',
 *          dve.MLX5DV_CQE_RES_FORMAT_CSUM_STRIDX: 'with stride index'}
*/
  __pyx_t_1 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_CQE_RES_FORMAT_HASH); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_with_hash) < (0)) __PYX_ERR(0, 1283, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1284
 * def cqe_comp_to_str(cqe):
 *     l = {dve.MLX5DV_CQE_RES_FORMAT_HASH: 'with hash',
 *          dve.MLX5DV_CQE_RES_FORMAT_CSUM: 'with RX checksum CSUM',             # <<<<<<<<<<<<<<
 *          dve.MLX5DV_CQE_RES_FORMAT_CSUM_STRIDX: 'with stride index'}
 *     return bitmask_to_str(cqe, l)
*/
  __pyx_t_2 = __Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_CQE_RES_FORMAT_CSUM); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1284, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_with_RX_checksum_CSUM) < (0)) __PYX_ERR(0, 1283, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1285
 *     l = {dve.MLX5DV_CQE_RES_FORMAT_HASH: 'with hash',
 *          dve.MLX5DV_CQE_RES_FORMAT_CSUM: 'with RX checksum CSUM',
 *          dve.MLX5DV_CQE_RES_FORMAT_CSUM_STRIDX: 'with stride index'}             # <<<<<<<<<<<<<<
 *     return bitmask_to_str(cqe, l)
 * 
*/
  __pyx_t_2 = __Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_CQE_RES_FORMAT_CSUM_STRIDX); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_with_stride_index) < (0)) __PYX_ERR(0, 1283, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_l = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1286
 *          dve.MLX5DV_CQE_RES_FORMAT_CSUM: 'with RX checksum CSUM',
 *          dve.MLX5DV_CQE_RES_FORMAT_CSUM_STRIDX: 'with stride index'}
 *     return bitmask_to_str(cqe, l)             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_bitmask_to_str); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_4 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_v_cqe, __pyx_v_l};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_4, (3-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1286, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1282
 * 
 * 
 * def cqe_comp_to_str(cqe):             # <<<<<<<<<<<<<<
 *     l = {dve.MLX5DV_CQE_RES_FORMAT_HASH: 'with hash',
 *          dve.MLX5DV_CQE_RES_FORMAT_CSUM: 'with RX checksum CSUM',
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.cqe_comp_to_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_l);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1289
 * 
 * 
 * def tunnel_offloads_to_str(tun):             # <<<<<<<<<<<<<<
 *     l = {dve.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_VXLAN: 'VXLAN',
 *          dve.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GRE: 'GRE',
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13tunnel_offloads_to_str(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_13tunnel_offloads_to_str = {"tunnel_offloads_to_str", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13tunnel_offloads_to_str, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13tunnel_offloads_to_str(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_tun = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("tunnel_offloads_to_str (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_tun,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1289, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1289, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "tunnel_offloads_to_str", 0) < (0)) __PYX_ERR(0, 1289, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("tunnel_offloads_to_str", 1, 1, 1, i); __PYX_ERR(0, 1289, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1289, __pyx_L3_error)
    }
    __pyx_v_tun = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("tunnel_offloads_to_str", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1289, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.tunnel_offloads_to_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_12tunnel_offloads_to_str(__pyx_self, __pyx_v_tun);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_12tunnel_offloads_to_str(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_tun) {
  PyObject *__pyx_v_l = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("tunnel_offloads_to_str", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1290
 * 
 * def tunnel_offloads_to_str(tun):
 *     l = {dve.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_VXLAN: 'VXLAN',             # <<<<<<<<<<<<<<
 *          dve.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GRE: 'GRE',
 *          dve.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GENEVE: 'Geneve',
*/
  __pyx_t_1 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_VXLAN); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_n_u_VXLAN) < (0)) __PYX_ERR(0, 1290, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1291
 * def tunnel_offloads_to_str(tun):
 *     l = {dve.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_VXLAN: 'VXLAN',
 *          dve.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GRE: 'GRE',             # <<<<<<<<<<<<<<
 *          dve.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GENEVE: 'Geneve',
 *          dve.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_CW_MPLS_OVER_GRE:\
*/
  __pyx_t_2 = __Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GRE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1291, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_n_u_GRE) < (0)) __PYX_ERR(0, 1290, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1292
 *     l = {dve.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_VXLAN: 'VXLAN',
 *          dve.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GRE: 'GRE',
 *          dve.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GENEVE: 'Geneve',             # <<<<<<<<<<<<<<
 *          dve.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_CW_MPLS_OVER_GRE:\
 *          'Ctrl word + MPLS over GRE',
*/
  __pyx_t_2 = __Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GENEVE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1292, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_n_u_Geneve) < (0)) __PYX_ERR(0, 1290, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1293
 *          dve.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GRE: 'GRE',
 *          dve.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GENEVE: 'Geneve',
 *          dve.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_CW_MPLS_OVER_GRE:\             # <<<<<<<<<<<<<<
 *          'Ctrl word + MPLS over GRE',
 *          dve.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_CW_MPLS_OVER_UDP:\
*/
  __pyx_t_2 = __Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_CW_MPLS_OVER_GRE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1293, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Ctrl_word_MPLS_over_GRE) < (0)) __PYX_ERR(0, 1290, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1295
 *          dve.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_CW_MPLS_OVER_GRE:\
 *          'Ctrl word + MPLS over GRE',
 *          dve.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_CW_MPLS_OVER_UDP:\             # <<<<<<<<<<<<<<
 *          'Ctrl word + MPLS over UDP'}
 *     return bitmask_to_str(tun, l)
*/
  __pyx_t_2 = __Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_CW_MPLS_OVER_UDP); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1295, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Ctrl_word_MPLS_over_UDP) < (0)) __PYX_ERR(0, 1290, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_l = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1297
 *          dve.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_CW_MPLS_OVER_UDP:\
 *          'Ctrl word + MPLS over UDP'}
 *     return bitmask_to_str(tun, l)             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_bitmask_to_str); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1297, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_4 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_v_tun, __pyx_v_l};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_4, (3-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1297, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1289
 * 
 * 
 * def tunnel_offloads_to_str(tun):             # <<<<<<<<<<<<<<
 *     l = {dve.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_VXLAN: 'VXLAN',
 *          dve.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GRE: 'GRE',
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.tunnel_offloads_to_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_l);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1300
 * 
 * 
 * def dc_type_to_str(dctype):             # <<<<<<<<<<<<<<
 *     l = {dve.MLX5DV_DCTYPE_DCT: 'DCT', dve.MLX5DV_DCTYPE_DCI: 'DCI'}
 *     try:
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_15dc_type_to_str(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_15dc_type_to_str = {"dc_type_to_str", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_15dc_type_to_str, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_15dc_type_to_str(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dctype = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dc_type_to_str (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_dctype,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1300, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1300, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "dc_type_to_str", 0) < (0)) __PYX_ERR(0, 1300, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("dc_type_to_str", 1, 1, 1, i); __PYX_ERR(0, 1300, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1300, __pyx_L3_error)
    }
    __pyx_v_dctype = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dc_type_to_str", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1300, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.dc_type_to_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_14dc_type_to_str(__pyx_self, __pyx_v_dctype);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_14dc_type_to_str(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dctype) {
  PyObject *__pyx_v_l = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  size_t __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dc_type_to_str", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1301
 * 
 * def dc_type_to_str(dctype):
 *     l = {dve.MLX5DV_DCTYPE_DCT: 'DCT', dve.MLX5DV_DCTYPE_DCI: 'DCI'}             # <<<<<<<<<<<<<<
 *     try:
 *         return l[dctype]
*/
  __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1301, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_DCTYPE_DCT); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1301, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_n_u_DCT) < (0)) __PYX_ERR(0, 1301, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_DCTYPE_DCI); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1301, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_n_u_DCI) < (0)) __PYX_ERR(0, 1301, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_l = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1302
 * def dc_type_to_str(dctype):
 *     l = {dve.MLX5DV_DCTYPE_DCT: 'DCT', dve.MLX5DV_DCTYPE_DCI: 'DCI'}
 *     try:             # <<<<<<<<<<<<<<
 *         return l[dctype]
 *     except KeyError:
*/
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_5);
    /*try:*/ {

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":1303
 *     l = {dve.MLX5DV_DCTYPE_DCT: 'DCT', dve.MLX5DV_DCTYPE_DCI: 'DCI'}
 *     try:
 *         return l[dctype]             # <<<<<<<<<<<<<<
 *     except KeyError:
 *         return 'Unknown DC type ({dc})'.format(dc=dctype)
*/
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_l, __pyx_v_dctype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1303, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L7_try_return;

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":1302
 * def dc_type_to_str(dctype):
 *     l = {dve.MLX5DV_DCTYPE_DCT: 'DCT', dve.MLX5DV_DCTYPE_DCI: 'DCI'}
 *     try:             # <<<<<<<<<<<<<<
 *         return l[dctype]
 *     except KeyError:
*/
    }
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1304
 *     try:
 *         return l[dctype]
 *     except KeyError:             # <<<<<<<<<<<<<<
 *         return 'Unknown DC type ({dc})'.format(dc=dctype)
 * 
*/
    __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_KeyError))));
    if (__pyx_t_6) {
      __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.dc_type_to_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_7) < 0) __PYX_ERR(0, 1304, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_1);
      __Pyx_XGOTREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_t_7);

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":1305
 *         return l[dctype]
 *     except KeyError:
 *         return 'Unknown DC type ({dc})'.format(dc=dctype)             # <<<<<<<<<<<<<<
 * 
 * 
*/
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_9 = __pyx_mstate_global->__pyx_kp_u_Unknown_DC_type_dc;
      __Pyx_INCREF(__pyx_t_9);
      __pyx_t_10 = 0;
      {
        PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_9, NULL};
        __pyx_t_11 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1305, __pyx_L5_except_error)
        __Pyx_GOTREF(__pyx_t_11);
        if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dc, __pyx_v_dctype, __pyx_t_11, __pyx_callargs+1, 0) < (0)) __PYX_ERR(0, 1305, __pyx_L5_except_error)
        __pyx_t_8 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_10, (1-__pyx_t_10) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_11);
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1305, __pyx_L5_except_error)
        __Pyx_GOTREF(__pyx_t_8);
      }
      __pyx_r = __pyx_t_8;
      __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L6_except_return;
    }
    goto __pyx_L5_except_error;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1302
 * def dc_type_to_str(dctype):
 *     l = {dve.MLX5DV_DCTYPE_DCT: 'DCT', dve.MLX5DV_DCTYPE_DCI: 'DCI'}
 *     try:             # <<<<<<<<<<<<<<
 *         return l[dctype]
 *     except KeyError:
*/
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
    goto __pyx_L1_error;
    __pyx_L7_try_return:;
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
    goto __pyx_L0;
    __pyx_L6_except_return:;
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
    goto __pyx_L0;
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1300
 * 
 * 
 * def dc_type_to_str(dctype):             # <<<<<<<<<<<<<<
 *     l = {dve.MLX5DV_DCTYPE_DCT: 'DCT', dve.MLX5DV_DCTYPE_DCI: 'DCI'}
 *     try:
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.dc_type_to_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_l);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1308
 * 
 * 
 * def qp_comp_mask_to_str(flags):             # <<<<<<<<<<<<<<
 *     l = {dve.MLX5DV_QP_INIT_ATTR_MASK_QP_CREATE_FLAGS: 'Create flags',
 *          dve.MLX5DV_QP_INIT_ATTR_MASK_DC: 'DC',
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17qp_comp_mask_to_str(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_17qp_comp_mask_to_str = {"qp_comp_mask_to_str", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17qp_comp_mask_to_str, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17qp_comp_mask_to_str(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_flags = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("qp_comp_mask_to_str (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_flags,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1308, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1308, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "qp_comp_mask_to_str", 0) < (0)) __PYX_ERR(0, 1308, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("qp_comp_mask_to_str", 1, 1, 1, i); __PYX_ERR(0, 1308, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1308, __pyx_L3_error)
    }
    __pyx_v_flags = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("qp_comp_mask_to_str", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1308, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.qp_comp_mask_to_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16qp_comp_mask_to_str(__pyx_self, __pyx_v_flags);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_16qp_comp_mask_to_str(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_flags) {
  PyObject *__pyx_v_l = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("qp_comp_mask_to_str", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1309
 * 
 * def qp_comp_mask_to_str(flags):
 *     l = {dve.MLX5DV_QP_INIT_ATTR_MASK_QP_CREATE_FLAGS: 'Create flags',             # <<<<<<<<<<<<<<
 *          dve.MLX5DV_QP_INIT_ATTR_MASK_DC: 'DC',
 *          dve.MLX5DV_QP_INIT_ATTR_MASK_SEND_OPS_FLAGS: 'Send ops flags',
*/
  __pyx_t_1 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1309, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_QP_INIT_ATTR_MASK_QP_CREATE_FLAGS); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1309, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Create_flags) < (0)) __PYX_ERR(0, 1309, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1310
 * def qp_comp_mask_to_str(flags):
 *     l = {dve.MLX5DV_QP_INIT_ATTR_MASK_QP_CREATE_FLAGS: 'Create flags',
 *          dve.MLX5DV_QP_INIT_ATTR_MASK_DC: 'DC',             # <<<<<<<<<<<<<<
 *          dve.MLX5DV_QP_INIT_ATTR_MASK_SEND_OPS_FLAGS: 'Send ops flags',
 *          dve.MLX5DV_QP_INIT_ATTR_MASK_DCI_STREAMS: 'DCI Stream'}
*/
  __pyx_t_2 = __Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_QP_INIT_ATTR_MASK_DC); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1310, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_n_u_DC) < (0)) __PYX_ERR(0, 1309, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1311
 *     l = {dve.MLX5DV_QP_INIT_ATTR_MASK_QP_CREATE_FLAGS: 'Create flags',
 *          dve.MLX5DV_QP_INIT_ATTR_MASK_DC: 'DC',
 *          dve.MLX5DV_QP_INIT_ATTR_MASK_SEND_OPS_FLAGS: 'Send ops flags',             # <<<<<<<<<<<<<<
 *          dve.MLX5DV_QP_INIT_ATTR_MASK_DCI_STREAMS: 'DCI Stream'}
 *     return bitmask_to_str(flags, l)
*/
  __pyx_t_2 = __Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_QP_INIT_ATTR_MASK_SEND_OPS_FLAGS); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1311, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Send_ops_flags) < (0)) __PYX_ERR(0, 1309, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1312
 *          dve.MLX5DV_QP_INIT_ATTR_MASK_DC: 'DC',
 *          dve.MLX5DV_QP_INIT_ATTR_MASK_SEND_OPS_FLAGS: 'Send ops flags',
 *          dve.MLX5DV_QP_INIT_ATTR_MASK_DCI_STREAMS: 'DCI Stream'}             # <<<<<<<<<<<<<<
 *     return bitmask_to_str(flags, l)
 * 
*/
  __pyx_t_2 = __Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_QP_INIT_ATTR_MASK_DCI_STREAMS); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1312, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_DCI_Stream) < (0)) __PYX_ERR(0, 1309, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_l = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1313
 *          dve.MLX5DV_QP_INIT_ATTR_MASK_SEND_OPS_FLAGS: 'Send ops flags',
 *          dve.MLX5DV_QP_INIT_ATTR_MASK_DCI_STREAMS: 'DCI Stream'}
 *     return bitmask_to_str(flags, l)             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_bitmask_to_str); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1313, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_4 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_v_flags, __pyx_v_l};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_4, (3-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1313, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1308
 * 
 * 
 * def qp_comp_mask_to_str(flags):             # <<<<<<<<<<<<<<
 *     l = {dve.MLX5DV_QP_INIT_ATTR_MASK_QP_CREATE_FLAGS: 'Create flags',
 *          dve.MLX5DV_QP_INIT_ATTR_MASK_DC: 'DC',
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.qp_comp_mask_to_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_l);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1316
 * 
 * 
 * def qp_create_flags_to_str(flags):             # <<<<<<<<<<<<<<
 *     l = {dve.MLX5DV_QP_CREATE_TUNNEL_OFFLOADS: 'Tunnel offloads',
 *          dve.MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_UC:
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_19qp_create_flags_to_str(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_19qp_create_flags_to_str = {"qp_create_flags_to_str", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_19qp_create_flags_to_str, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_19qp_create_flags_to_str(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_flags = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("qp_create_flags_to_str (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_flags,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1316, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1316, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "qp_create_flags_to_str", 0) < (0)) __PYX_ERR(0, 1316, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("qp_create_flags_to_str", 1, 1, 1, i); __PYX_ERR(0, 1316, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1316, __pyx_L3_error)
    }
    __pyx_v_flags = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("qp_create_flags_to_str", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1316, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.qp_create_flags_to_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_18qp_create_flags_to_str(__pyx_self, __pyx_v_flags);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_18qp_create_flags_to_str(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_flags) {
  PyObject *__pyx_v_l = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("qp_create_flags_to_str", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1317
 * 
 * def qp_create_flags_to_str(flags):
 *     l = {dve.MLX5DV_QP_CREATE_TUNNEL_OFFLOADS: 'Tunnel offloads',             # <<<<<<<<<<<<<<
 *          dve.MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_UC:
 *              'Allow UC self loopback',
*/
  __pyx_t_1 = __Pyx_PyDict_NewPresized(7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1317, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_QP_CREATE_TUNNEL_OFFLOADS); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1317, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Tunnel_offloads) < (0)) __PYX_ERR(0, 1317, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1318
 * def qp_create_flags_to_str(flags):
 *     l = {dve.MLX5DV_QP_CREATE_TUNNEL_OFFLOADS: 'Tunnel offloads',
 *          dve.MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_UC:             # <<<<<<<<<<<<<<
 *              'Allow UC self loopback',
 *          dve.MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_MC:
*/
  __pyx_t_2 = __Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_UC); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Allow_UC_self_loopback) < (0)) __PYX_ERR(0, 1317, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1320
 *          dve.MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_UC:
 *              'Allow UC self loopback',
 *          dve.MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_MC:             # <<<<<<<<<<<<<<
 *              'Allow MC self loopback',
 *          dve.MLX5DV_QP_CREATE_DISABLE_SCATTER_TO_CQE: 'Disable scatter to CQE',
*/
  __pyx_t_2 = __Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_MC); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1320, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Allow_MC_self_loopback) < (0)) __PYX_ERR(0, 1317, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1322
 *          dve.MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_MC:
 *              'Allow MC self loopback',
 *          dve.MLX5DV_QP_CREATE_DISABLE_SCATTER_TO_CQE: 'Disable scatter to CQE',             # <<<<<<<<<<<<<<
 *          dve.MLX5DV_QP_CREATE_ALLOW_SCATTER_TO_CQE: 'Allow scatter to CQE',
 *          dve.MLX5DV_QP_CREATE_PACKET_BASED_CREDIT_MODE:
*/
  __pyx_t_2 = __Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_QP_CREATE_DISABLE_SCATTER_TO_CQE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1322, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Disable_scatter_to_CQE) < (0)) __PYX_ERR(0, 1317, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1323
 *              'Allow MC self loopback',
 *          dve.MLX5DV_QP_CREATE_DISABLE_SCATTER_TO_CQE: 'Disable scatter to CQE',
 *          dve.MLX5DV_QP_CREATE_ALLOW_SCATTER_TO_CQE: 'Allow scatter to CQE',             # <<<<<<<<<<<<<<
 *          dve.MLX5DV_QP_CREATE_PACKET_BASED_CREDIT_MODE:
 *              'Packet based credit mode',
*/
  __pyx_t_2 = __Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_QP_CREATE_ALLOW_SCATTER_TO_CQE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1323, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Allow_scatter_to_CQE) < (0)) __PYX_ERR(0, 1317, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1324
 *          dve.MLX5DV_QP_CREATE_DISABLE_SCATTER_TO_CQE: 'Disable scatter to CQE',
 *          dve.MLX5DV_QP_CREATE_ALLOW_SCATTER_TO_CQE: 'Allow scatter to CQE',
 *          dve.MLX5DV_QP_CREATE_PACKET_BASED_CREDIT_MODE:             # <<<<<<<<<<<<<<
 *              'Packet based credit mode',
 *          dve.MLX5DV_QP_CREATE_SIG_PIPELINING: 'Support signature pipeline support'}
*/
  __pyx_t_2 = __Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_QP_CREATE_PACKET_BASED_CREDIT_MODE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1324, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Packet_based_credit_mode) < (0)) __PYX_ERR(0, 1317, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1326
 *          dve.MLX5DV_QP_CREATE_PACKET_BASED_CREDIT_MODE:
 *              'Packet based credit mode',
 *          dve.MLX5DV_QP_CREATE_SIG_PIPELINING: 'Support signature pipeline support'}             # <<<<<<<<<<<<<<
 *     return bitmask_to_str(flags, l)
 * 
*/
  __pyx_t_2 = __Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_QP_CREATE_SIG_PIPELINING); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1326, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Support_signature_pipeline_suppo) < (0)) __PYX_ERR(0, 1317, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_l = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1327
 *              'Packet based credit mode',
 *          dve.MLX5DV_QP_CREATE_SIG_PIPELINING: 'Support signature pipeline support'}
 *     return bitmask_to_str(flags, l)             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_bitmask_to_str); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1327, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_4 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_v_flags, __pyx_v_l};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_4, (3-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1327, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1316
 * 
 * 
 * def qp_create_flags_to_str(flags):             # <<<<<<<<<<<<<<
 *     l = {dve.MLX5DV_QP_CREATE_TUNNEL_OFFLOADS: 'Tunnel offloads',
 *          dve.MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_UC:
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.qp_create_flags_to_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_l);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1330
 * 
 * 
 * def send_ops_flags_to_str(flags):             # <<<<<<<<<<<<<<
 *     l = {dve.MLX5DV_QP_EX_WITH_MR_INTERLEAVED: 'With MR interleaved',
 *          dve.MLX5DV_QP_EX_WITH_MR_LIST: 'With MR list',
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_21send_ops_flags_to_str(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_21send_ops_flags_to_str = {"send_ops_flags_to_str", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_21send_ops_flags_to_str, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_21send_ops_flags_to_str(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_flags = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("send_ops_flags_to_str (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_flags,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1330, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1330, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "send_ops_flags_to_str", 0) < (0)) __PYX_ERR(0, 1330, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("send_ops_flags_to_str", 1, 1, 1, i); __PYX_ERR(0, 1330, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1330, __pyx_L3_error)
    }
    __pyx_v_flags = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("send_ops_flags_to_str", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1330, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.send_ops_flags_to_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_20send_ops_flags_to_str(__pyx_self, __pyx_v_flags);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_20send_ops_flags_to_str(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_flags) {
  PyObject *__pyx_v_l = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("send_ops_flags_to_str", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1331
 * 
 * def send_ops_flags_to_str(flags):
 *     l = {dve.MLX5DV_QP_EX_WITH_MR_INTERLEAVED: 'With MR interleaved',             # <<<<<<<<<<<<<<
 *          dve.MLX5DV_QP_EX_WITH_MR_LIST: 'With MR list',
 *          dve.MLX5DV_QP_EX_WITH_MKEY_CONFIGURE: 'With Mkey configure'}
*/
  __pyx_t_1 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1331, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_QP_EX_WITH_MR_INTERLEAVED); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1331, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_With_MR_interleaved) < (0)) __PYX_ERR(0, 1331, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1332
 * def send_ops_flags_to_str(flags):
 *     l = {dve.MLX5DV_QP_EX_WITH_MR_INTERLEAVED: 'With MR interleaved',
 *          dve.MLX5DV_QP_EX_WITH_MR_LIST: 'With MR list',             # <<<<<<<<<<<<<<
 *          dve.MLX5DV_QP_EX_WITH_MKEY_CONFIGURE: 'With Mkey configure'}
 *     return bitmask_to_str(flags, l)
*/
  __pyx_t_2 = __Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_QP_EX_WITH_MR_LIST); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1332, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_With_MR_list) < (0)) __PYX_ERR(0, 1331, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1333
 *     l = {dve.MLX5DV_QP_EX_WITH_MR_INTERLEAVED: 'With MR interleaved',
 *          dve.MLX5DV_QP_EX_WITH_MR_LIST: 'With MR list',
 *          dve.MLX5DV_QP_EX_WITH_MKEY_CONFIGURE: 'With Mkey configure'}             # <<<<<<<<<<<<<<
 *     return bitmask_to_str(flags, l)
 * 
*/
  __pyx_t_2 = __Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_QP_EX_WITH_MKEY_CONFIGURE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_mstate_global->__pyx_kp_u_With_Mkey_configure) < (0)) __PYX_ERR(0, 1331, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_l = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1334
 *          dve.MLX5DV_QP_EX_WITH_MR_LIST: 'With MR list',
 *          dve.MLX5DV_QP_EX_WITH_MKEY_CONFIGURE: 'With Mkey configure'}
 *     return bitmask_to_str(flags, l)             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_bitmask_to_str); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1334, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_4 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_v_flags, __pyx_v_l};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_4, (3-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1334, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1330
 * 
 * 
 * def send_ops_flags_to_str(flags):             # <<<<<<<<<<<<<<
 *     l = {dve.MLX5DV_QP_EX_WITH_MR_INTERLEAVED: 'With MR interleaved',
 *          dve.MLX5DV_QP_EX_WITH_MR_LIST: 'With MR list',
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.send_ops_flags_to_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_l);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1338
 * 
 * cdef class Mlx5VAR(PyverbsObject):
 *     def __init__(self, Context context not None, flags=0):             # <<<<<<<<<<<<<<
 *         self.context = context
 *         self.var = dv.mlx5dv_alloc_var(context.context, flags)
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_context = 0;
  PyObject *__pyx_v_flags = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_context,&__pyx_mstate_global->__pyx_n_u_flags,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1338, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1338, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1338, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(0, 1338, __pyx_L3_error)
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 2, i); __PYX_ERR(0, 1338, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1338, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1338, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
    }
    __pyx_v_context = ((struct __pyx_obj_7pyverbs_6device_Context *)values[0]);
    __pyx_v_flags = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 2, __pyx_nargs); __PYX_ERR(0, 1338, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5VAR.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_context), __pyx_mstate_global->__pyx_ptype_7pyverbs_6device_Context, 0, "context", 0))) __PYX_ERR(0, 1338, __pyx_L1_error)
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR___init__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *)__pyx_v_self), __pyx_v_context, __pyx_v_flags);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *__pyx_v_self, struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_context, PyObject *__pyx_v_flags) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  uint32_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1339
 * cdef class Mlx5VAR(PyverbsObject):
 *     def __init__(self, Context context not None, flags=0):
 *         self.context = context             # <<<<<<<<<<<<<<
 *         self.var = dv.mlx5dv_alloc_var(context.context, flags)
 *         if self.var == NULL:
*/
  __Pyx_INCREF((PyObject *)__pyx_v_context);
  __Pyx_GIVEREF((PyObject *)__pyx_v_context);
  __Pyx_GOTREF(__pyx_v_self->context);
  __Pyx_DECREF(__pyx_v_self->context);
  __pyx_v_self->context = ((PyObject *)__pyx_v_context);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1340
 *     def __init__(self, Context context not None, flags=0):
 *         self.context = context
 *         self.var = dv.mlx5dv_alloc_var(context.context, flags)             # <<<<<<<<<<<<<<
 *         if self.var == NULL:
 *             raise PyverbsRDMAErrno('Failed to allocate VAR')
*/
  __pyx_t_1 = __Pyx_PyLong_As_uint32_t(__pyx_v_flags); if (unlikely((__pyx_t_1 == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1340, __pyx_L1_error)
  __pyx_v_self->var = mlx5dv_alloc_var(__pyx_v_context->context, __pyx_t_1);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1341
 *         self.context = context
 *         self.var = dv.mlx5dv_alloc_var(context.context, flags)
 *         if self.var == NULL:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAErrno('Failed to allocate VAR')
 *         context.vars.add(self)
*/
  __pyx_t_2 = (__pyx_v_self->var == NULL);
  if (unlikely(__pyx_t_2)) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1342
 *         self.var = dv.mlx5dv_alloc_var(context.context, flags)
 *         if self.var == NULL:
 *             raise PyverbsRDMAErrno('Failed to allocate VAR')             # <<<<<<<<<<<<<<
 *         context.vars.add(self)
 * 
*/
    __pyx_t_4 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_PyverbsRDMAErrno); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1342, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_4);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_6 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_Failed_to_allocate_VAR};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1342, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(0, 1342, __pyx_L1_error)

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1341
 *         self.context = context
 *         self.var = dv.mlx5dv_alloc_var(context.context, flags)
 *         if self.var == NULL:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAErrno('Failed to allocate VAR')
 *         context.vars.add(self)
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1343
 *         if self.var == NULL:
 *             raise PyverbsRDMAErrno('Failed to allocate VAR')
 *         context.vars.add(self)             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_5 = __pyx_v_context->vars;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_6 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, ((PyObject *)__pyx_v_self)};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_add, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1343, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1338
 * 
 * cdef class Mlx5VAR(PyverbsObject):
 *     def __init__(self, Context context not None, flags=0):             # <<<<<<<<<<<<<<
 *         self.context = context
 *         self.var = dv.mlx5dv_alloc_var(context.context, flags)
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5VAR.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1345
 *         context.vars.add(self)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         self.close()
 * 
*/

/* Python wrapper */
static void __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_2__dealloc__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_2__dealloc__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1346
 * 
 *     def __dealloc__(self):
 *         self.close()             # <<<<<<<<<<<<<<
 * 
 *     cpdef close(self):
*/
  __pyx_t_1 = ((struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *)__pyx_v_self->__pyx_vtab)->close(__pyx_v_self, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1345
 *         context.vars.add(self)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         self.close()
 * 
*/

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("pyverbs.providers.mlx5.mlx5dv.Mlx5VAR.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1348
 *         self.close()
 * 
 *     cpdef close(self):             # <<<<<<<<<<<<<<
 *         if self.var != NULL:
 *             dv.mlx5dv_free_var(self.var)
*/

static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_5close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyObject *__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *__pyx_v_self, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("close", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (
  #if !CYTHON_USE_TYPE_SLOTS
  unlikely(Py_TYPE(((PyObject *)__pyx_v_self)) != __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR &&
  __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), Py_TPFLAGS_HAVE_GC))
  #else
  unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0 || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))
  #endif
  ) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_close); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1348, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!__Pyx_IsSameCFunction(__pyx_t_1, (void(*)(void)) __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_5close)) {
        __Pyx_XDECREF(__pyx_r);
        __pyx_t_3 = NULL;
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_4 = __pyx_t_1; 
        __pyx_t_5 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
          assert(__pyx_t_3);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
          __pyx_t_5 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
          __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1348, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
        }
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1349
 * 
 *     cpdef close(self):
 *         if self.var != NULL:             # <<<<<<<<<<<<<<
 *             dv.mlx5dv_free_var(self.var)
 *             self.var = NULL
*/
  __pyx_t_6 = (__pyx_v_self->var != NULL);
  if (__pyx_t_6) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1350
 *     cpdef close(self):
 *         if self.var != NULL:
 *             dv.mlx5dv_free_var(self.var)             # <<<<<<<<<<<<<<
 *             self.var = NULL
 * 
*/
    mlx5dv_free_var(__pyx_v_self->var);

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1351
 *         if self.var != NULL:
 *             dv.mlx5dv_free_var(self.var)
 *             self.var = NULL             # <<<<<<<<<<<<<<
 * 
 *     def __str__(self):
*/
    __pyx_v_self->var = NULL;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1349
 * 
 *     cpdef close(self):
 *         if self.var != NULL:             # <<<<<<<<<<<<<<
 *             dv.mlx5dv_free_var(self.var)
 *             self.var = NULL
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1348
 *         self.close()
 * 
 *     cpdef close(self):             # <<<<<<<<<<<<<<
 *         if self.var != NULL:
 *             dv.mlx5dv_free_var(self.var)
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5VAR.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_5close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_5close = {"close", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_5close, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_5close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("close (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("close", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("close", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_4close(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_4close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("close", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_close(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1348, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5VAR.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1353
 *             self.var = NULL
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('page id', self.var.page_id) +\
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_7__str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_7__str__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_6__str__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_6__str__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *__pyx_v_self) {
  PyObject *__pyx_v_print_format = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1354
 * 
 *     def __str__(self):
 *         print_format = '{:20}: {:<20}\n'             # <<<<<<<<<<<<<<
 *         return print_format.format('page id', self.var.page_id) +\
 *                print_format.format('length', self.var.length) +\
*/
  __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_20_20);
  __pyx_v_print_format = __pyx_mstate_global->__pyx_kp_u_20_20;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1355
 *     def __str__(self):
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('page id', self.var.page_id) +\             # <<<<<<<<<<<<<<
 *                print_format.format('length', self.var.length) +\
 *                print_format.format('mmap offset', self.var.mmap_off) +\
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(__pyx_v_self->var->page_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1355, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_kp_u_page_id, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1355, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1356
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('page id', self.var.page_id) +\
 *                print_format.format('length', self.var.length) +\             # <<<<<<<<<<<<<<
 *                print_format.format('mmap offset', self.var.mmap_off) +\
 *                print_format.format('compatibility mask', self.var.comp_mask)
*/
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(__pyx_v_self->var->length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1356, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_n_u_length, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1356, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1355
 *     def __str__(self):
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('page id', self.var.page_id) +\             # <<<<<<<<<<<<<<
 *                print_format.format('length', self.var.length) +\
 *                print_format.format('mmap offset', self.var.mmap_off) +\
*/
  __pyx_t_1 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1355, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1357
 *         return print_format.format('page id', self.var.page_id) +\
 *                print_format.format('length', self.var.length) +\
 *                print_format.format('mmap offset', self.var.mmap_off) +\             # <<<<<<<<<<<<<<
 *                print_format.format('compatibility mask', self.var.comp_mask)
 * 
*/
  __pyx_t_3 = __Pyx_PyLong_From_long(__pyx_v_self->var->mmap_off); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_kp_u_mmap_offset, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1356
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('page id', self.var.page_id) +\
 *                print_format.format('length', self.var.length) +\             # <<<<<<<<<<<<<<
 *                print_format.format('mmap offset', self.var.mmap_off) +\
 *                print_format.format('compatibility mask', self.var.comp_mask)
*/
  __pyx_t_3 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1356, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1358
 *                print_format.format('length', self.var.length) +\
 *                print_format.format('mmap offset', self.var.mmap_off) +\
 *                print_format.format('compatibility mask', self.var.comp_mask)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_t_2 = __Pyx_PyLong_From_uint64_t(__pyx_v_self->var->comp_mask); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1358, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_kp_u_compatibility_mask, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1358, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1357
 *         return print_format.format('page id', self.var.page_id) +\
 *                print_format.format('length', self.var.length) +\
 *                print_format.format('mmap offset', self.var.mmap_off) +\             # <<<<<<<<<<<<<<
 *                print_format.format('compatibility mask', self.var.comp_mask)
 * 
*/
  __pyx_t_2 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1353
 *             self.var = NULL
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('page id', self.var.page_id) +\
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5VAR.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_print_format);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1360
 *                print_format.format('compatibility mask', self.var.comp_mask)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def page_id(self):
 *         return self.var.page_id
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_7page_id_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_7page_id_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_7page_id___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_7page_id___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1362
 *     @property
 *     def page_id(self):
 *         return self.var.page_id             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(__pyx_v_self->var->page_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1360
 *                print_format.format('compatibility mask', self.var.comp_mask)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def page_id(self):
 *         return self.var.page_id
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5VAR.page_id.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1364
 *         return self.var.page_id
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def length(self):
 *         return self.var.length
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_6length_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_6length_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_6length___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_6length___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1366
 *     @property
 *     def length(self):
 *         return self.var.length             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(__pyx_v_self->var->length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1364
 *         return self.var.page_id
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def length(self):
 *         return self.var.length
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5VAR.length.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1368
 *         return self.var.length
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def mmap_off(self):
 *         return self.var.mmap_off
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_8mmap_off_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_8mmap_off_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_8mmap_off___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_8mmap_off___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1370
 *     @property
 *     def mmap_off(self):
 *         return self.var.mmap_off             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_long(__pyx_v_self->var->mmap_off); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1370, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1368
 *         return self.var.length
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def mmap_off(self):
 *         return self.var.mmap_off
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5VAR.mmap_off.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1372
 *         return self.var.mmap_off
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def comp_mask(self):
 *         return self.var.comp_mask
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_9comp_mask_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_9comp_mask_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_9comp_mask___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_9comp_mask___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1374
 *     @property
 *     def comp_mask(self):
 *         return self.var.comp_mask             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint64_t(__pyx_v_self->var->comp_mask); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1374, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1372
 *         return self.var.mmap_off
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def comp_mask(self):
 *         return self.var.comp_mask
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5VAR.comp_mask.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.var cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_9__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_9__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_9__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_9__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_8__reduce_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self.var cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.var cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_var_cannot_be_converted_to, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.var cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5VAR.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.var cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.var cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_11__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_11__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_11__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_11__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5VAR.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_10__setstate_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self.var cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.var cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_var_cannot_be_converted_to, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.var cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.var cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5VAR.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1381
 *     Represents mlx5dv_pp, packet pacing struct.
 *     """
 *     def __init__(self, Context context not None, pp_context, flags=0):             # <<<<<<<<<<<<<<
 *         """
 *         Initializes a Mlx5PP object.
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP___init__, "\n        Initializes a Mlx5PP object.\n        :param context: DevX context\n        :param pp_context: Bytes of packet pacing context according to the\n                           device specs. Must be bytes type or implements\n                           __bytes__ method\n        :param flags: Packet pacing allocation flags\n        ");
#if CYTHON_UPDATE_DESCRIPTOR_DOC
struct wrapperbase __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP___init__;
#endif
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_context = 0;
  PyObject *__pyx_v_pp_context = 0;
  PyObject *__pyx_v_flags = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_context,&__pyx_mstate_global->__pyx_n_u_pp_context,&__pyx_mstate_global->__pyx_n_u_flags,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1381, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 1381, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1381, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1381, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(0, 1381, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 3, i); __PYX_ERR(0, 1381, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 1381, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1381, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1381, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
    }
    __pyx_v_context = ((struct __pyx_obj_7pyverbs_6device_Context *)values[0]);
    __pyx_v_pp_context = values[1];
    __pyx_v_flags = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 3, __pyx_nargs); __PYX_ERR(0, 1381, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5PP.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_context), __pyx_mstate_global->__pyx_ptype_7pyverbs_6device_Context, 0, "context", 0))) __PYX_ERR(0, 1381, __pyx_L1_error)
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP___init__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP *)__pyx_v_self), __pyx_v_context, __pyx_v_pp_context, __pyx_v_flags);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP *__pyx_v_self, struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_context, PyObject *__pyx_v_pp_context, PyObject *__pyx_v_flags) {
  PyObject *__pyx_v_pp_ctx_bytes = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  size_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  char *__pyx_t_5;
  uint32_t __pyx_t_6;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1390
 *         :param flags: Packet pacing allocation flags
 *         """
 *         self.context = context             # <<<<<<<<<<<<<<
 *         pp_ctx_bytes = bytes(pp_context)
 *         self.pp = dv.mlx5dv_pp_alloc(context.context, len(pp_ctx_bytes),
*/
  __Pyx_INCREF((PyObject *)__pyx_v_context);
  __Pyx_GIVEREF((PyObject *)__pyx_v_context);
  __Pyx_GOTREF(__pyx_v_self->context);
  __Pyx_DECREF(__pyx_v_self->context);
  __pyx_v_self->context = ((PyObject *)__pyx_v_context);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1391
 *         """
 *         self.context = context
 *         pp_ctx_bytes = bytes(pp_context)             # <<<<<<<<<<<<<<
 *         self.pp = dv.mlx5dv_pp_alloc(context.context, len(pp_ctx_bytes),
 *                                      <char*>pp_ctx_bytes, flags)
*/
  __pyx_t_2 = NULL;
  __pyx_t_3 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_pp_context};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(&PyBytes_Type), __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1391, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_v_pp_ctx_bytes = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1392
 *         self.context = context
 *         pp_ctx_bytes = bytes(pp_context)
 *         self.pp = dv.mlx5dv_pp_alloc(context.context, len(pp_ctx_bytes),             # <<<<<<<<<<<<<<
 *                                      <char*>pp_ctx_bytes, flags)
 *         if self.pp == NULL:
*/
  __pyx_t_4 = __Pyx_PyBytes_GET_SIZE(__pyx_v_pp_ctx_bytes); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1392, __pyx_L1_error)

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1393
 *         pp_ctx_bytes = bytes(pp_context)
 *         self.pp = dv.mlx5dv_pp_alloc(context.context, len(pp_ctx_bytes),
 *                                      <char*>pp_ctx_bytes, flags)             # <<<<<<<<<<<<<<
 *         if self.pp == NULL:
 *             raise PyverbsRDMAErrno('Failed to allocate packet pacing entry')
*/
  __pyx_t_5 = __Pyx_PyBytes_AsWritableString(__pyx_v_pp_ctx_bytes); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 1393, __pyx_L1_error)
  __pyx_t_6 = __Pyx_PyLong_As_uint32_t(__pyx_v_flags); if (unlikely((__pyx_t_6 == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1393, __pyx_L1_error)

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1392
 *         self.context = context
 *         pp_ctx_bytes = bytes(pp_context)
 *         self.pp = dv.mlx5dv_pp_alloc(context.context, len(pp_ctx_bytes),             # <<<<<<<<<<<<<<
 *                                      <char*>pp_ctx_bytes, flags)
 *         if self.pp == NULL:
*/
  __pyx_v_self->pp = mlx5dv_pp_alloc(__pyx_v_context->context, __pyx_t_4, ((char *)__pyx_t_5), __pyx_t_6);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1394
 *         self.pp = dv.mlx5dv_pp_alloc(context.context, len(pp_ctx_bytes),
 *                                      <char*>pp_ctx_bytes, flags)
 *         if self.pp == NULL:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAErrno('Failed to allocate packet pacing entry')
 *         context.pps.add(self)
*/
  __pyx_t_7 = (__pyx_v_self->pp == NULL);
  if (unlikely(__pyx_t_7)) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1395
 *                                      <char*>pp_ctx_bytes, flags)
 *         if self.pp == NULL:
 *             raise PyverbsRDMAErrno('Failed to allocate packet pacing entry')             # <<<<<<<<<<<<<<
 *         context.pps.add(self)
 * 
*/
    __pyx_t_2 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_PyverbsRDMAErrno); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1395, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_3 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8);
      assert(__pyx_t_2);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
      __pyx_t_3 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Failed_to_allocate_packet_pacing};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1395, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(0, 1395, __pyx_L1_error)

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1394
 *         self.pp = dv.mlx5dv_pp_alloc(context.context, len(pp_ctx_bytes),
 *                                      <char*>pp_ctx_bytes, flags)
 *         if self.pp == NULL:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAErrno('Failed to allocate packet pacing entry')
 *         context.pps.add(self)
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1396
 *         if self.pp == NULL:
 *             raise PyverbsRDMAErrno('Failed to allocate packet pacing entry')
 *         context.pps.add(self)             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_8 = __pyx_v_context->pps;
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_8, ((PyObject *)__pyx_v_self)};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_add, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1396, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1381
 *     Represents mlx5dv_pp, packet pacing struct.
 *     """
 *     def __init__(self, Context context not None, pp_context, flags=0):             # <<<<<<<<<<<<<<
 *         """
 *         Initializes a Mlx5PP object.
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5PP.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_pp_ctx_bytes);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1398
 *         context.pps.add(self)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         self.close()
 * 
*/

/* Python wrapper */
static void __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_2__dealloc__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_2__dealloc__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1399
 * 
 *     def __dealloc__(self):
 *         self.close()             # <<<<<<<<<<<<<<
 * 
 *     cpdef close(self):
*/
  __pyx_t_1 = ((struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP *)__pyx_v_self->__pyx_vtab)->close(__pyx_v_self, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1399, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1398
 *         context.pps.add(self)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         self.close()
 * 
*/

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("pyverbs.providers.mlx5.mlx5dv.Mlx5PP.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1401
 *         self.close()
 * 
 *     cpdef close(self):             # <<<<<<<<<<<<<<
 *         if self.pp != NULL:
 *             dv.mlx5dv_pp_free(self.pp)
*/

static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_5close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyObject *__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP *__pyx_v_self, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("close", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (
  #if !CYTHON_USE_TYPE_SLOTS
  unlikely(Py_TYPE(((PyObject *)__pyx_v_self)) != __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP &&
  __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), Py_TPFLAGS_HAVE_GC))
  #else
  unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0 || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))
  #endif
  ) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_close); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1401, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!__Pyx_IsSameCFunction(__pyx_t_1, (void(*)(void)) __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_5close)) {
        __Pyx_XDECREF(__pyx_r);
        __pyx_t_3 = NULL;
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_4 = __pyx_t_1; 
        __pyx_t_5 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
          assert(__pyx_t_3);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
          __pyx_t_5 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
          __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1401, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
        }
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1402
 * 
 *     cpdef close(self):
 *         if self.pp != NULL:             # <<<<<<<<<<<<<<
 *             dv.mlx5dv_pp_free(self.pp)
 *             self.pp = NULL
*/
  __pyx_t_6 = (__pyx_v_self->pp != NULL);
  if (__pyx_t_6) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1403
 *     cpdef close(self):
 *         if self.pp != NULL:
 *             dv.mlx5dv_pp_free(self.pp)             # <<<<<<<<<<<<<<
 *             self.pp = NULL
 * 
*/
    mlx5dv_pp_free(__pyx_v_self->pp);

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1404
 *         if self.pp != NULL:
 *             dv.mlx5dv_pp_free(self.pp)
 *             self.pp = NULL             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
    __pyx_v_self->pp = NULL;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1402
 * 
 *     cpdef close(self):
 *         if self.pp != NULL:             # <<<<<<<<<<<<<<
 *             dv.mlx5dv_pp_free(self.pp)
 *             self.pp = NULL
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1401
 *         self.close()
 * 
 *     cpdef close(self):             # <<<<<<<<<<<<<<
 *         if self.pp != NULL:
 *             dv.mlx5dv_pp_free(self.pp)
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5PP.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_5close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_5close = {"close", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_5close, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_5close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("close (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("close", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("close", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_4close(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_4close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("close", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_close(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5PP.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1406
 *             self.pp = NULL
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def index(self):
 *         return self.pp.index
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_5index_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_5index_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_5index___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_5index___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1408
 *     @property
 *     def index(self):
 *         return self.pp.index             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(__pyx_v_self->pp->index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1408, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1406
 *             self.pp = NULL
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def index(self):
 *         return self.pp.index
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5PP.index.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.pp cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_7__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_7__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_7__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_6__reduce_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self.pp cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.pp cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_pp_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.pp cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5PP.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.pp cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.pp cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_9__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_9__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_9__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5PP.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_8__setstate_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self.pp cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.pp cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_pp_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.pp cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.pp cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5PP.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1412
 * 
 * cdef class Mlx5UAR(PyverbsObject):
 *     def __init__(self, Context context not None, flags=0):             # <<<<<<<<<<<<<<
 *         self.uar = dv.mlx5dv_devx_alloc_uar(context.context, flags)
 *         if self.uar == NULL:
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_context = 0;
  PyObject *__pyx_v_flags = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_context,&__pyx_mstate_global->__pyx_n_u_flags,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1412, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1412, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1412, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(0, 1412, __pyx_L3_error)
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 2, i); __PYX_ERR(0, 1412, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1412, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1412, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
    }
    __pyx_v_context = ((struct __pyx_obj_7pyverbs_6device_Context *)values[0]);
    __pyx_v_flags = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 2, __pyx_nargs); __PYX_ERR(0, 1412, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5UAR.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_context), __pyx_mstate_global->__pyx_ptype_7pyverbs_6device_Context, 0, "context", 0))) __PYX_ERR(0, 1412, __pyx_L1_error)
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR___init__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *)__pyx_v_self), __pyx_v_context, __pyx_v_flags);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *__pyx_v_self, struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_context, PyObject *__pyx_v_flags) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  uint32_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1413
 * cdef class Mlx5UAR(PyverbsObject):
 *     def __init__(self, Context context not None, flags=0):
 *         self.uar = dv.mlx5dv_devx_alloc_uar(context.context, flags)             # <<<<<<<<<<<<<<
 *         if self.uar == NULL:
 *             raise PyverbsRDMAErrno('Failed to allocate UAR')
*/
  __pyx_t_1 = __Pyx_PyLong_As_uint32_t(__pyx_v_flags); if (unlikely((__pyx_t_1 == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1413, __pyx_L1_error)
  __pyx_v_self->uar = mlx5dv_devx_alloc_uar(__pyx_v_context->context, __pyx_t_1);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1414
 *     def __init__(self, Context context not None, flags=0):
 *         self.uar = dv.mlx5dv_devx_alloc_uar(context.context, flags)
 *         if self.uar == NULL:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAErrno('Failed to allocate UAR')
 *         context.uars.add(self)
*/
  __pyx_t_2 = (__pyx_v_self->uar == NULL);
  if (unlikely(__pyx_t_2)) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1415
 *         self.uar = dv.mlx5dv_devx_alloc_uar(context.context, flags)
 *         if self.uar == NULL:
 *             raise PyverbsRDMAErrno('Failed to allocate UAR')             # <<<<<<<<<<<<<<
 *         context.uars.add(self)
 * 
*/
    __pyx_t_4 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_PyverbsRDMAErrno); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1415, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_4);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_6 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_Failed_to_allocate_UAR};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1415, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(0, 1415, __pyx_L1_error)

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1414
 *     def __init__(self, Context context not None, flags=0):
 *         self.uar = dv.mlx5dv_devx_alloc_uar(context.context, flags)
 *         if self.uar == NULL:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAErrno('Failed to allocate UAR')
 *         context.uars.add(self)
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1416
 *         if self.uar == NULL:
 *             raise PyverbsRDMAErrno('Failed to allocate UAR')
 *         context.uars.add(self)             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_5 = __pyx_v_context->uars;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_6 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, ((PyObject *)__pyx_v_self)};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_add, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1416, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1412
 * 
 * cdef class Mlx5UAR(PyverbsObject):
 *     def __init__(self, Context context not None, flags=0):             # <<<<<<<<<<<<<<
 *         self.uar = dv.mlx5dv_devx_alloc_uar(context.context, flags)
 *         if self.uar == NULL:
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5UAR.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1418
 *         context.uars.add(self)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         self.close()
 * 
*/

/* Python wrapper */
static void __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_2__dealloc__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_2__dealloc__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1419
 * 
 *     def __dealloc__(self):
 *         self.close()             # <<<<<<<<<<<<<<
 * 
 *     cpdef close(self):
*/
  __pyx_t_1 = ((struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *)__pyx_v_self->__pyx_vtab)->close(__pyx_v_self, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1419, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1418
 *         context.uars.add(self)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         self.close()
 * 
*/

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("pyverbs.providers.mlx5.mlx5dv.Mlx5UAR.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1421
 *         self.close()
 * 
 *     cpdef close(self):             # <<<<<<<<<<<<<<
 *         if self.uar != NULL:
 *             dv.mlx5dv_devx_free_uar(self.uar)
*/

static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_5close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyObject *__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *__pyx_v_self, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("close", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (
  #if !CYTHON_USE_TYPE_SLOTS
  unlikely(Py_TYPE(((PyObject *)__pyx_v_self)) != __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR &&
  __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), Py_TPFLAGS_HAVE_GC))
  #else
  unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0 || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))
  #endif
  ) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_close); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1421, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!__Pyx_IsSameCFunction(__pyx_t_1, (void(*)(void)) __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_5close)) {
        __Pyx_XDECREF(__pyx_r);
        __pyx_t_3 = NULL;
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_4 = __pyx_t_1; 
        __pyx_t_5 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
          assert(__pyx_t_3);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
          __pyx_t_5 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
          __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1421, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
        }
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1422
 * 
 *     cpdef close(self):
 *         if self.uar != NULL:             # <<<<<<<<<<<<<<
 *             dv.mlx5dv_devx_free_uar(self.uar)
 *             self.uar = NULL
*/
  __pyx_t_6 = (__pyx_v_self->uar != NULL);
  if (__pyx_t_6) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1423
 *     cpdef close(self):
 *         if self.uar != NULL:
 *             dv.mlx5dv_devx_free_uar(self.uar)             # <<<<<<<<<<<<<<
 *             self.uar = NULL
 * 
*/
    mlx5dv_devx_free_uar(__pyx_v_self->uar);

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1424
 *         if self.uar != NULL:
 *             dv.mlx5dv_devx_free_uar(self.uar)
 *             self.uar = NULL             # <<<<<<<<<<<<<<
 * 
 *     def __str__(self):
*/
    __pyx_v_self->uar = NULL;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1422
 * 
 *     cpdef close(self):
 *         if self.uar != NULL:             # <<<<<<<<<<<<<<
 *             dv.mlx5dv_devx_free_uar(self.uar)
 *             self.uar = NULL
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1421
 *         self.close()
 * 
 *     cpdef close(self):             # <<<<<<<<<<<<<<
 *         if self.uar != NULL:
 *             dv.mlx5dv_devx_free_uar(self.uar)
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5UAR.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_5close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_5close = {"close", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_5close, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_5close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("close (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("close", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("close", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_4close(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_4close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("close", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_close(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1421, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5UAR.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1426
 *             self.uar = NULL
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('reg addr', <uintptr_t>self.uar.reg_addr) +\
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_7__str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_7__str__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_6__str__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_6__str__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *__pyx_v_self) {
  PyObject *__pyx_v_print_format = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1427
 * 
 *     def __str__(self):
 *         print_format = '{:20}: {:<20}\n'             # <<<<<<<<<<<<<<
 *         return print_format.format('reg addr', <uintptr_t>self.uar.reg_addr) +\
 *                print_format.format('base addr', <uintptr_t>self.uar.base_addr) +\
*/
  __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_20_20);
  __pyx_v_print_format = __pyx_mstate_global->__pyx_kp_u_20_20;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1428
 *     def __str__(self):
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('reg addr', <uintptr_t>self.uar.reg_addr) +\             # <<<<<<<<<<<<<<
 *                print_format.format('base addr', <uintptr_t>self.uar.base_addr) +\
 *                print_format.format('page id', self.uar.page_id) +\
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_FromSize_t(((uintptr_t)__pyx_v_self->uar->reg_addr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_kp_u_reg_addr, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1429
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('reg addr', <uintptr_t>self.uar.reg_addr) +\
 *                print_format.format('base addr', <uintptr_t>self.uar.base_addr) +\             # <<<<<<<<<<<<<<
 *                print_format.format('page id', self.uar.page_id) +\
 *                print_format.format('mmap off', self.uar.mmap_off) +\
*/
  __pyx_t_1 = __Pyx_PyLong_FromSize_t(((uintptr_t)__pyx_v_self->uar->base_addr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_kp_u_base_addr, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1428
 *     def __str__(self):
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('reg addr', <uintptr_t>self.uar.reg_addr) +\             # <<<<<<<<<<<<<<
 *                print_format.format('base addr', <uintptr_t>self.uar.base_addr) +\
 *                print_format.format('page id', self.uar.page_id) +\
*/
  __pyx_t_1 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1430
 *         return print_format.format('reg addr', <uintptr_t>self.uar.reg_addr) +\
 *                print_format.format('base addr', <uintptr_t>self.uar.base_addr) +\
 *                print_format.format('page id', self.uar.page_id) +\             # <<<<<<<<<<<<<<
 *                print_format.format('mmap off', self.uar.mmap_off) +\
 *                print_format.format('comp mask', self.uar.comp_mask)
*/
  __pyx_t_3 = __Pyx_PyLong_From_uint32_t(__pyx_v_self->uar->page_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_kp_u_page_id, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1429
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('reg addr', <uintptr_t>self.uar.reg_addr) +\
 *                print_format.format('base addr', <uintptr_t>self.uar.base_addr) +\             # <<<<<<<<<<<<<<
 *                print_format.format('page id', self.uar.page_id) +\
 *                print_format.format('mmap off', self.uar.mmap_off) +\
*/
  __pyx_t_3 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1431
 *                print_format.format('base addr', <uintptr_t>self.uar.base_addr) +\
 *                print_format.format('page id', self.uar.page_id) +\
 *                print_format.format('mmap off', self.uar.mmap_off) +\             # <<<<<<<<<<<<<<
 *                print_format.format('comp mask', self.uar.comp_mask)
 * 
*/
  __pyx_t_2 = __Pyx_PyLong_From_long(__pyx_v_self->uar->mmap_off); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1431, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_kp_u_mmap_off, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1431, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1430
 *         return print_format.format('reg addr', <uintptr_t>self.uar.reg_addr) +\
 *                print_format.format('base addr', <uintptr_t>self.uar.base_addr) +\
 *                print_format.format('page id', self.uar.page_id) +\             # <<<<<<<<<<<<<<
 *                print_format.format('mmap off', self.uar.mmap_off) +\
 *                print_format.format('comp mask', self.uar.comp_mask)
*/
  __pyx_t_2 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1432
 *                print_format.format('page id', self.uar.page_id) +\
 *                print_format.format('mmap off', self.uar.mmap_off) +\
 *                print_format.format('comp mask', self.uar.comp_mask)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_t_1 = __Pyx_PyLong_From_uint64_t(__pyx_v_self->uar->comp_mask); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1432, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_kp_u_comp_mask_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1432, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1431
 *                print_format.format('base addr', <uintptr_t>self.uar.base_addr) +\
 *                print_format.format('page id', self.uar.page_id) +\
 *                print_format.format('mmap off', self.uar.mmap_off) +\             # <<<<<<<<<<<<<<
 *                print_format.format('comp mask', self.uar.comp_mask)
 * 
*/
  __pyx_t_1 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1431, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1426
 *             self.uar = NULL
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('reg addr', <uintptr_t>self.uar.reg_addr) +\
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5UAR.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_print_format);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1434
 *                print_format.format('comp mask', self.uar.comp_mask)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def reg_addr(self):
 *         return <uintptr_t>self.uar.reg_addr
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_8reg_addr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_8reg_addr_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_8reg_addr___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_8reg_addr___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1436
 *     @property
 *     def reg_addr(self):
 *         return <uintptr_t>self.uar.reg_addr             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_FromSize_t(((uintptr_t)__pyx_v_self->uar->reg_addr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1436, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1434
 *                print_format.format('comp mask', self.uar.comp_mask)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def reg_addr(self):
 *         return <uintptr_t>self.uar.reg_addr
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5UAR.reg_addr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1438
 *         return <uintptr_t>self.uar.reg_addr
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def base_addr(self):
 *         return <uintptr_t>self.uar.base_addr
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_9base_addr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_9base_addr_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_9base_addr___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_9base_addr___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1440
 *     @property
 *     def base_addr(self):
 *         return <uintptr_t>self.uar.base_addr             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_FromSize_t(((uintptr_t)__pyx_v_self->uar->base_addr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1440, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1438
 *         return <uintptr_t>self.uar.reg_addr
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def base_addr(self):
 *         return <uintptr_t>self.uar.base_addr
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5UAR.base_addr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1442
 *         return <uintptr_t>self.uar.base_addr
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def page_id(self):
 *         return self.uar.page_id
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_7page_id_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_7page_id_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_7page_id___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_7page_id___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1444
 *     @property
 *     def page_id(self):
 *         return self.uar.page_id             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(__pyx_v_self->uar->page_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1444, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1442
 *         return <uintptr_t>self.uar.base_addr
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def page_id(self):
 *         return self.uar.page_id
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5UAR.page_id.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1446
 *         return self.uar.page_id
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def mmap_off(self):
 *         return self.uar.mmap_off
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_8mmap_off_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_8mmap_off_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_8mmap_off___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_8mmap_off___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1448
 *     @property
 *     def mmap_off(self):
 *         return self.uar.mmap_off             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_long(__pyx_v_self->uar->mmap_off); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1448, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1446
 *         return self.uar.page_id
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def mmap_off(self):
 *         return self.uar.mmap_off
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5UAR.mmap_off.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1450
 *         return self.uar.mmap_off
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def comp_mask(self):
 *         return self.uar.comp_mask
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_9comp_mask_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_9comp_mask_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_9comp_mask___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_9comp_mask___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1452
 *     @property
 *     def comp_mask(self):
 *         return self.uar.comp_mask             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint64_t(__pyx_v_self->uar->comp_mask); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1452, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1450
 *         return self.uar.mmap_off
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def comp_mask(self):
 *         return self.uar.comp_mask
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5UAR.comp_mask.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1454
 *         return self.uar.comp_mask
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def uar(self):
 *         return <uintptr_t>self.uar
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_3uar_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_3uar_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_3uar___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_3uar___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1456
 *     @property
 *     def uar(self):
 *         return <uintptr_t>self.uar             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_FromSize_t(((uintptr_t)__pyx_v_self->uar)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1456, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1454
 *         return self.uar.comp_mask
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def uar(self):
 *         return <uintptr_t>self.uar
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5UAR.uar.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.uar cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_9__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_9__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_9__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_9__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_8__reduce_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self.uar cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.uar cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_uar_cannot_be_converted_to, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.uar cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5UAR.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.uar cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.uar cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_11__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_11__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_11__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_11__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5UAR.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_10__setstate_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self.uar cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.uar cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_uar_cannot_be_converted_to, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.uar cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.uar cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5UAR.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1460
 * 
 * cdef class Mlx5DmOpAddr(PyverbsCM):
 *     def __init__(self, DM dm not None, op=0):             # <<<<<<<<<<<<<<
 *         """
 *         Wraps mlx5dv_dm_map_op_addr.
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr___init__, "\n        Wraps mlx5dv_dm_map_op_addr.\n        Gets operation address of a device memory (DM), which must be munmapped by\n        the user when it's no longer needed.\n        :param dm: Device Memory instance\n        :param op: DM operation type\n        :return: An mmaped address to the DM for the requested operation (op).\n        ");
#if CYTHON_UPDATE_DESCRIPTOR_DOC
struct wrapperbase __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr___init__;
#endif
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_7pyverbs_6device_DM *__pyx_v_dm = 0;
  PyObject *__pyx_v_op = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_dm,&__pyx_mstate_global->__pyx_n_u_op,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1460, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1460, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1460, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(0, 1460, __pyx_L3_error)
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 2, i); __PYX_ERR(0, 1460, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1460, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1460, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
    }
    __pyx_v_dm = ((struct __pyx_obj_7pyverbs_6device_DM *)values[0]);
    __pyx_v_op = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 2, __pyx_nargs); __PYX_ERR(0, 1460, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DmOpAddr.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dm), __pyx_mstate_global->__pyx_ptype_7pyverbs_6device_DM, 0, "dm", 0))) __PYX_ERR(0, 1460, __pyx_L1_error)
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr___init__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr *)__pyx_v_self), __pyx_v_dm, __pyx_v_op);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr *__pyx_v_self, struct __pyx_obj_7pyverbs_6device_DM *__pyx_v_dm, PyObject *__pyx_v_op) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  uint8_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1469
 *         :return: An mmaped address to the DM for the requested operation (op).
 *         """
 *         self.addr = dv.mlx5dv_dm_map_op_addr(dm.dm, op)             # <<<<<<<<<<<<<<
 *         if self.addr == NULL:
 *             raise PyverbsRDMAErrno('Failed to get DM operation address')
*/
  __pyx_t_1 = __Pyx_PyLong_As_uint8_t(__pyx_v_op); if (unlikely((__pyx_t_1 == ((uint8_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1469, __pyx_L1_error)
  __pyx_v_self->addr = mlx5dv_dm_map_op_addr(__pyx_v_dm->dm, __pyx_t_1);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1470
 *         """
 *         self.addr = dv.mlx5dv_dm_map_op_addr(dm.dm, op)
 *         if self.addr == NULL:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAErrno('Failed to get DM operation address')
 * 
*/
  __pyx_t_2 = (__pyx_v_self->addr == NULL);
  if (unlikely(__pyx_t_2)) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1471
 *         self.addr = dv.mlx5dv_dm_map_op_addr(dm.dm, op)
 *         if self.addr == NULL:
 *             raise PyverbsRDMAErrno('Failed to get DM operation address')             # <<<<<<<<<<<<<<
 * 
 *     def unmap(self, length):
*/
    __pyx_t_4 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_PyverbsRDMAErrno); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1471, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_4);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_6 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_Failed_to_get_DM_operation_addre};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1471, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(0, 1471, __pyx_L1_error)

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1470
 *         """
 *         self.addr = dv.mlx5dv_dm_map_op_addr(dm.dm, op)
 *         if self.addr == NULL:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAErrno('Failed to get DM operation address')
 * 
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1460
 * 
 * cdef class Mlx5DmOpAddr(PyverbsCM):
 *     def __init__(self, DM dm not None, op=0):             # <<<<<<<<<<<<<<
 *         """
 *         Wraps mlx5dv_dm_map_op_addr.
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DmOpAddr.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1473
 *             raise PyverbsRDMAErrno('Failed to get DM operation address')
 * 
 *     def unmap(self, length):             # <<<<<<<<<<<<<<
 *         munmap(self.addr, length)
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_3unmap(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_3unmap = {"unmap", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_3unmap, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_3unmap(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_length = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("unmap (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_length,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1473, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1473, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "unmap", 0) < (0)) __PYX_ERR(0, 1473, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("unmap", 1, 1, 1, i); __PYX_ERR(0, 1473, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1473, __pyx_L3_error)
    }
    __pyx_v_length = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("unmap", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1473, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DmOpAddr.unmap", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_2unmap(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr *)__pyx_v_self), __pyx_v_length);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_2unmap(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr *__pyx_v_self, PyObject *__pyx_v_length) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("unmap", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1474
 * 
 *     def unmap(self, length):
 *         munmap(self.addr, length)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
  __pyx_t_1 = __Pyx_PyLong_As_size_t(__pyx_v_length); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1474, __pyx_L1_error)
  (void)(munmap(__pyx_v_self->addr, __pyx_t_1));

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1473
 *             raise PyverbsRDMAErrno('Failed to get DM operation address')
 * 
 *     def unmap(self, length):             # <<<<<<<<<<<<<<
 *         munmap(self.addr, length)
 * 
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DmOpAddr.unmap", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1476
 *         munmap(self.addr, length)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef void _cpy(void *dst, void *src, int length):
 *         """
*/

static void __pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr__cpy(void *__pyx_v_dst, void *__pyx_v_src, int __pyx_v_length) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_cpy", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1485
 *         :param length: Length in bytes. (supports: power of two. up to 8 bytes)
 *         """
 *         if length == 1:             # <<<<<<<<<<<<<<
 *             (<uint8_t *> dst)[0] = (<uint8_t *> src)[0]
 *         elif length == 2:
*/
  switch (__pyx_v_length) {
    case 1:

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1486
 *         """
 *         if length == 1:
 *             (<uint8_t *> dst)[0] = (<uint8_t *> src)[0]             # <<<<<<<<<<<<<<
 *         elif length == 2:
 *             (<uint16_t *> dst)[0] = (<uint16_t *> src)[0]
*/
    (((uint8_t *)__pyx_v_dst)[0]) = (((uint8_t *)__pyx_v_src)[0]);

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1485
 *         :param length: Length in bytes. (supports: power of two. up to 8 bytes)
 *         """
 *         if length == 1:             # <<<<<<<<<<<<<<
 *             (<uint8_t *> dst)[0] = (<uint8_t *> src)[0]
 *         elif length == 2:
*/
    break;
    case 2:

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1488
 *             (<uint8_t *> dst)[0] = (<uint8_t *> src)[0]
 *         elif length == 2:
 *             (<uint16_t *> dst)[0] = (<uint16_t *> src)[0]             # <<<<<<<<<<<<<<
 *         elif length == 4:
 *             (<uint32_t *> dst)[0] = (<uint32_t *> src)[0]
*/
    (((uint16_t *)__pyx_v_dst)[0]) = (((uint16_t *)__pyx_v_src)[0]);

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1487
 *         if length == 1:
 *             (<uint8_t *> dst)[0] = (<uint8_t *> src)[0]
 *         elif length == 2:             # <<<<<<<<<<<<<<
 *             (<uint16_t *> dst)[0] = (<uint16_t *> src)[0]
 *         elif length == 4:
*/
    break;
    case 4:

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1490
 *             (<uint16_t *> dst)[0] = (<uint16_t *> src)[0]
 *         elif length == 4:
 *             (<uint32_t *> dst)[0] = (<uint32_t *> src)[0]             # <<<<<<<<<<<<<<
 *         elif length == 8:
 *             (<uint64_t *> dst)[0] = (<uint64_t *> src)[0]
*/
    (((uint32_t *)__pyx_v_dst)[0]) = (((uint32_t *)__pyx_v_src)[0]);

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1489
 *         elif length == 2:
 *             (<uint16_t *> dst)[0] = (<uint16_t *> src)[0]
 *         elif length == 4:             # <<<<<<<<<<<<<<
 *             (<uint32_t *> dst)[0] = (<uint32_t *> src)[0]
 *         elif length == 8:
*/
    break;
    case 8:

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1492
 *             (<uint32_t *> dst)[0] = (<uint32_t *> src)[0]
 *         elif length == 8:
 *             (<uint64_t *> dst)[0] = (<uint64_t *> src)[0]             # <<<<<<<<<<<<<<
 *         elif length == 16:
 *             raise PyverbsUserError('Currently PyVerbs does not support 16 bytes Memic Atomic operations')
*/
    (((uint64_t *)__pyx_v_dst)[0]) = (((uint64_t *)__pyx_v_src)[0]);

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1491
 *         elif length == 4:
 *             (<uint32_t *> dst)[0] = (<uint32_t *> src)[0]
 *         elif length == 8:             # <<<<<<<<<<<<<<
 *             (<uint64_t *> dst)[0] = (<uint64_t *> src)[0]
 *         elif length == 16:
*/
    break;
    case 16:

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1494
 *             (<uint64_t *> dst)[0] = (<uint64_t *> src)[0]
 *         elif length == 16:
 *             raise PyverbsUserError('Currently PyVerbs does not support 16 bytes Memic Atomic operations')             # <<<<<<<<<<<<<<
 *         else:
 *             raise PyverbsUserError(f'Memic Atomic operations do not support with length: {length}')
*/
    __pyx_t_2 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_PyverbsUserError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1494, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
      assert(__pyx_t_2);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
      __pyx_t_4 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Currently_PyVerbs_does_not_suppo};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1494, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(0, 1494, __pyx_L1_error)

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1493
 *         elif length == 8:
 *             (<uint64_t *> dst)[0] = (<uint64_t *> src)[0]
 *         elif length == 16:             # <<<<<<<<<<<<<<
 *             raise PyverbsUserError('Currently PyVerbs does not support 16 bytes Memic Atomic operations')
 *         else:
*/
    break;
    default:

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1496
 *             raise PyverbsUserError('Currently PyVerbs does not support 16 bytes Memic Atomic operations')
 *         else:
 *             raise PyverbsUserError(f'Memic Atomic operations do not support with length: {length}')             # <<<<<<<<<<<<<<
 * 
 *     def write(self, data):
*/
    __pyx_t_3 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_PyverbsUserError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1496, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyUnicode_From_int(__pyx_v_length, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1496, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_Memic_Atomic_operations_do_not_s, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1496, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_4 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_2, __pyx__function);
      __pyx_t_4 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_6};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1496, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(0, 1496, __pyx_L1_error)
    break;
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1476
 *         munmap(self.addr, length)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef void _cpy(void *dst, void *src, int length):
 *         """
*/

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DmOpAddr._cpy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1498
 *             raise PyverbsUserError(f'Memic Atomic operations do not support with length: {length}')
 * 
 *     def write(self, data):             # <<<<<<<<<<<<<<
 *         """
 *         Writes data (bytes) to the DM operation address.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_5write(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_4write, "\n        Writes data (bytes) to the DM operation address.\n        :param data: Bytes of data\n        ");
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_5write = {"write", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_5write, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_4write};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_5write(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_data = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("write (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_data,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1498, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1498, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "write", 0) < (0)) __PYX_ERR(0, 1498, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("write", 1, 1, 1, i); __PYX_ERR(0, 1498, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1498, __pyx_L3_error)
    }
    __pyx_v_data = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("write", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1498, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DmOpAddr.write", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_4write(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr *)__pyx_v_self), __pyx_v_data);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_4write(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr *__pyx_v_self, PyObject *__pyx_v_data) {
  Py_ssize_t __pyx_v_length;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  char *__pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("write", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1503
 *         :param data: Bytes of data
 *         """
 *         length = len(data)             # <<<<<<<<<<<<<<
 *         Mlx5DmOpAddr._cpy(<void *> self.addr, <void *><char *> data, length)
 * 
*/
  __pyx_t_1 = PyObject_Length(__pyx_v_data); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1503, __pyx_L1_error)
  __pyx_v_length = __pyx_t_1;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1504
 *         """
 *         length = len(data)
 *         Mlx5DmOpAddr._cpy(<void *> self.addr, <void *><char *> data, length)             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_2 = __Pyx_PyObject_AsWritableString(__pyx_v_data); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(0, 1504, __pyx_L1_error)
  __pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr__cpy(((void *)__pyx_v_self->addr), ((void *)((char *)__pyx_t_2)), __pyx_v_length); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1504, __pyx_L1_error)

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1498
 *             raise PyverbsUserError(f'Memic Atomic operations do not support with length: {length}')
 * 
 *     def write(self, data):             # <<<<<<<<<<<<<<
 *         """
 *         Writes data (bytes) to the DM operation address.
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DmOpAddr.write", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1507
 * 
 * 
 *     def read(self, length):             # <<<<<<<<<<<<<<
 *         """
 *         Reads 'length' bytes from the DM operation address.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_7read(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_6read, "\n        Reads 'length' bytes from the DM operation address.\n        :param length: Data length to read (in bytes)\n        :return: Read data in bytes\n        ");
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_7read = {"read", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_7read, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_6read};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_7read(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_length = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_length,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1507, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1507, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "read", 0) < (0)) __PYX_ERR(0, 1507, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("read", 1, 1, 1, i); __PYX_ERR(0, 1507, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1507, __pyx_L3_error)
    }
    __pyx_v_length = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("read", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1507, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DmOpAddr.read", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_6read(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr *)__pyx_v_self), __pyx_v_length);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_6read(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr *__pyx_v_self, PyObject *__pyx_v_length) {
  void *__pyx_v_data;
  PyObject *__pyx_v_res = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("read", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1513
 *         :return: Read data in bytes
 *         """
 *         cdef void *data = calloc(length, sizeof(char))             # <<<<<<<<<<<<<<
 *         Mlx5DmOpAddr._cpy(data, <void *>self.addr, length)
 *         res = (<char *> data)[:length]
*/
  __pyx_t_1 = __Pyx_PyLong_As_size_t(__pyx_v_length); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1513, __pyx_L1_error)
  __pyx_v_data = calloc(__pyx_t_1, (sizeof(char)));

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1514
 *         """
 *         cdef void *data = calloc(length, sizeof(char))
 *         Mlx5DmOpAddr._cpy(data, <void *>self.addr, length)             # <<<<<<<<<<<<<<
 *         res = (<char *> data)[:length]
 *         free(data)
*/
  __pyx_t_2 = __Pyx_PyLong_As_int(__pyx_v_length); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1514, __pyx_L1_error)
  __pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr__cpy(__pyx_v_data, ((void *)__pyx_v_self->addr), __pyx_t_2); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1514, __pyx_L1_error)

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1515
 *         cdef void *data = calloc(length, sizeof(char))
 *         Mlx5DmOpAddr._cpy(data, <void *>self.addr, length)
 *         res = (<char *> data)[:length]             # <<<<<<<<<<<<<<
 *         free(data)
 *         return res
*/
  __Pyx_INCREF(__pyx_v_length);
  __pyx_t_3 = __pyx_v_length;
  __pyx_t_5 = (__pyx_t_3 == Py_None);
  if (__pyx_t_5) {
    __pyx_t_4 = PY_SSIZE_T_MAX;
  } else {
    __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1515, __pyx_L1_error)
    __pyx_t_4 = __pyx_t_6;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyBytes_FromStringAndSize(((char *)__pyx_v_data) + 0, __pyx_t_4 - 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1515, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_res = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1516
 *         Mlx5DmOpAddr._cpy(data, <void *>self.addr, length)
 *         res = (<char *> data)[:length]
 *         free(data)             # <<<<<<<<<<<<<<
 *         return res
 * 
*/
  free(__pyx_v_data);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1517
 *         res = (<char *> data)[:length]
 *         free(data)
 *         return res             # <<<<<<<<<<<<<<
 * 
 *     cpdef close(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_res);
  __pyx_r = __pyx_v_res;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1507
 * 
 * 
 *     def read(self, length):             # <<<<<<<<<<<<<<
 *         """
 *         Reads 'length' bytes from the DM operation address.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DmOpAddr.read", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_res);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1519
 *         return res
 * 
 *     cpdef close(self):             # <<<<<<<<<<<<<<
 *         self.addr = NULL
 * 
*/

static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_9close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyObject *__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr *__pyx_v_self, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("close", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (
  #if !CYTHON_USE_TYPE_SLOTS
  unlikely(Py_TYPE(((PyObject *)__pyx_v_self)) != __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr &&
  __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), Py_TPFLAGS_HAVE_GC))
  #else
  unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0 || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))
  #endif
  ) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_close); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1519, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!__Pyx_IsSameCFunction(__pyx_t_1, (void(*)(void)) __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_9close)) {
        __Pyx_XDECREF(__pyx_r);
        __pyx_t_3 = NULL;
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_4 = __pyx_t_1; 
        __pyx_t_5 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
          assert(__pyx_t_3);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
          __pyx_t_5 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
          __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1519, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
        }
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1520
 * 
 *     cpdef close(self):
 *         self.addr = NULL             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_v_self->addr = NULL;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1519
 *         return res
 * 
 *     cpdef close(self):             # <<<<<<<<<<<<<<
 *         self.addr = NULL
 * 
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DmOpAddr.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_9close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_9close = {"close", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_9close, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_9close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("close (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("close", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("close", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_8close(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_8close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("close", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_close(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1519, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DmOpAddr.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1522
 *         self.addr = NULL
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def addr(self):
 *         return <uintptr_t>self.addr
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_4addr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_4addr_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_4addr___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_4addr___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1524
 *     @property
 *     def addr(self):
 *         return <uintptr_t>self.addr             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_FromSize_t(((uintptr_t)__pyx_v_self->addr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1522
 *         self.addr = NULL
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def addr(self):
 *         return <uintptr_t>self.addr
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DmOpAddr.addr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.addr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_11__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_11__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_11__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_11__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_10__reduce_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_10__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self.addr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.addr cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_addr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.addr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DmOpAddr.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.addr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.addr cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_13__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_13__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_13__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_13__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DmOpAddr.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_12__setstate_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_12__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self.addr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.addr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_addr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.addr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.addr cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DmOpAddr.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1534
 *     """
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def sizeof():
 *         return 0
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_1sizeof(CYTHON_UNUSED PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_1sizeof = {"sizeof", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_1sizeof, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_1sizeof(CYTHON_UNUSED PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sizeof (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("sizeof", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("sizeof", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_sizeof();

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_sizeof(void) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sizeof", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1536
 *     @staticmethod
 *     def sizeof():
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     cpdef _copy_to_buffer(self, addr):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_mstate_global->__pyx_int_0);
  __pyx_r = __pyx_mstate_global->__pyx_int_0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1534
 *     """
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def sizeof():
 *         return 0
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1538
 *         return 0
 * 
 *     cpdef _copy_to_buffer(self, addr):             # <<<<<<<<<<<<<<
 *         memcpy(<void *><uintptr_t>addr, <void *>self.segment, self.sizeof())
 * 
*/

static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_3_copy_to_buffer(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyObject *__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg__copy_to_buffer(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg *__pyx_v_self, PyObject *__pyx_v_addr, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  uintptr_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_copy_to_buffer", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (
  #if !CYTHON_USE_TYPE_SLOTS
  unlikely(Py_TYPE(((PyObject *)__pyx_v_self)) != __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg &&
  __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), Py_TPFLAGS_HAVE_GC))
  #else
  unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0 || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))
  #endif
  ) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_copy_to_buffer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1538, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!__Pyx_IsSameCFunction(__pyx_t_1, (void(*)(void)) __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_3_copy_to_buffer)) {
        __Pyx_XDECREF(__pyx_r);
        __pyx_t_3 = NULL;
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_4 = __pyx_t_1; 
        __pyx_t_5 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
          assert(__pyx_t_3);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
          __pyx_t_5 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_addr};
          __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1538, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
        }
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1539
 * 
 *     cpdef _copy_to_buffer(self, addr):
 *         memcpy(<void *><uintptr_t>addr, <void *>self.segment, self.sizeof())             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_6 = __Pyx_PyLong_As_size_t(__pyx_v_addr); if (unlikely((__pyx_t_6 == ((uintptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1539, __pyx_L1_error)
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_sizeof, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1539, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_t_5 = __Pyx_PyLong_As_size_t(__pyx_t_1); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1539, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  (void)(memcpy(((void *)((uintptr_t)__pyx_t_6)), ((void *)__pyx_v_self->segment), __pyx_t_5));

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1538
 *         return 0
 * 
 *     cpdef _copy_to_buffer(self, addr):             # <<<<<<<<<<<<<<
 *         memcpy(<void *><uintptr_t>addr, <void *>self.segment, self.sizeof())
 * 
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeSeg._copy_to_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_3_copy_to_buffer(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_3_copy_to_buffer = {"_copy_to_buffer", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_3_copy_to_buffer, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_3_copy_to_buffer(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_addr = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_copy_to_buffer (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_addr,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1538, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1538, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "_copy_to_buffer", 0) < (0)) __PYX_ERR(0, 1538, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_copy_to_buffer", 1, 1, 1, i); __PYX_ERR(0, 1538, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1538, __pyx_L3_error)
    }
    __pyx_v_addr = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_copy_to_buffer", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1538, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeSeg._copy_to_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_2_copy_to_buffer(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg *)__pyx_v_self), __pyx_v_addr);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_2_copy_to_buffer(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg *__pyx_v_self, PyObject *__pyx_v_addr) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_copy_to_buffer", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg__copy_to_buffer(__pyx_v_self, __pyx_v_addr, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1538, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeSeg._copy_to_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1541
 *         memcpy(<void *><uintptr_t>addr, <void *>self.segment, self.sizeof())
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         self.close()
 * 
*/

/* Python wrapper */
static void __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_5__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_5__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_4__dealloc__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_4__dealloc__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1542
 * 
 *     def __dealloc__(self):
 *         self.close()             # <<<<<<<<<<<<<<
 * 
 *     cpdef close(self):
*/
  __pyx_t_1 = ((struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.close(((struct __pyx_obj_7pyverbs_4base_PyverbsCM *)__pyx_v_self), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1542, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1541
 *         memcpy(<void *><uintptr_t>addr, <void *>self.segment, self.sizeof())
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         self.close()
 * 
*/

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("pyverbs.providers.mlx5.mlx5dv.WqeSeg.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1544
 *         self.close()
 * 
 *     cpdef close(self):             # <<<<<<<<<<<<<<
 *         if self.segment != NULL:
 *             free(self.segment)
*/

static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_7close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyObject *__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg *__pyx_v_self, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("close", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (
  #if !CYTHON_USE_TYPE_SLOTS
  unlikely(Py_TYPE(((PyObject *)__pyx_v_self)) != __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg &&
  __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), Py_TPFLAGS_HAVE_GC))
  #else
  unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0 || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))
  #endif
  ) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_close); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1544, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!__Pyx_IsSameCFunction(__pyx_t_1, (void(*)(void)) __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_7close)) {
        __Pyx_XDECREF(__pyx_r);
        __pyx_t_3 = NULL;
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_4 = __pyx_t_1; 
        __pyx_t_5 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
          assert(__pyx_t_3);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
          __pyx_t_5 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
          __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1544, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
        }
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1545
 * 
 *     cpdef close(self):
 *         if self.segment != NULL:             # <<<<<<<<<<<<<<
 *             free(self.segment)
 *             self.segment = NULL
*/
  __pyx_t_6 = (__pyx_v_self->segment != NULL);
  if (__pyx_t_6) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1546
 *     cpdef close(self):
 *         if self.segment != NULL:
 *             free(self.segment)             # <<<<<<<<<<<<<<
 *             self.segment = NULL
 * 
*/
    free(__pyx_v_self->segment);

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1547
 *         if self.segment != NULL:
 *             free(self.segment)
 *             self.segment = NULL             # <<<<<<<<<<<<<<
 * 
 * 
*/
    __pyx_v_self->segment = NULL;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1545
 * 
 *     cpdef close(self):
 *         if self.segment != NULL:             # <<<<<<<<<<<<<<
 *             free(self.segment)
 *             self.segment = NULL
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1544
 *         self.close()
 * 
 *     cpdef close(self):             # <<<<<<<<<<<<<<
 *         if self.segment != NULL:
 *             free(self.segment)
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeSeg.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_7close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_7close = {"close", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_7close, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_7close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("close (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("close", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("close", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_6close(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_6close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("close", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_close(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1544, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeSeg.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.segment cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_9__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_9__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_9__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_9__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_8__reduce_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self.segment cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.segment cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_segment_cannot_be_converted, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.segment cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeSeg.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.segment cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.segment cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_11__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_11__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_11__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_11__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeSeg.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_10__setstate_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self.segment cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.segment cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_segment_cannot_be_converted, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.segment cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.segment cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeSeg.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1555
 *     """
 * 
 *     def __init__(self, pi=0, opcode=0, opmod=0, qp_num=0, fm_ce_se=0, ds=0,             # <<<<<<<<<<<<<<
 *                  signature=0, imm=0):
 *         """
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg___init__, "\n        Create a WqeCtrlSeg by creating a mlx5_wqe_ctrl_seg and\n        using mlx5dv_set_ctrl_seg, segment values are accessed\n        through the getters/setters.\n        ");
#if CYTHON_UPDATE_DESCRIPTOR_DOC
struct wrapperbase __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg___init__;
#endif
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_pi = 0;
  PyObject *__pyx_v_opcode = 0;
  PyObject *__pyx_v_opmod = 0;
  PyObject *__pyx_v_qp_num = 0;
  PyObject *__pyx_v_fm_ce_se = 0;
  PyObject *__pyx_v_ds = 0;
  PyObject *__pyx_v_signature = 0;
  PyObject *__pyx_v_imm = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[8] = {0,0,0,0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pi,&__pyx_mstate_global->__pyx_n_u_opcode,&__pyx_mstate_global->__pyx_n_u_opmod,&__pyx_mstate_global->__pyx_n_u_qp_num,&__pyx_mstate_global->__pyx_n_u_fm_ce_se,&__pyx_mstate_global->__pyx_n_u_ds,&__pyx_mstate_global->__pyx_n_u_signature,&__pyx_mstate_global->__pyx_n_u_imm,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1555, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  8:
        values[7] = __Pyx_ArgRef_VARARGS(__pyx_args, 7);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[7])) __PYX_ERR(0, 1555, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  7:
        values[6] = __Pyx_ArgRef_VARARGS(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 1555, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_VARARGS(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 1555, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_VARARGS(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 1555, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_VARARGS(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 1555, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 1555, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1555, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1555, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(0, 1555, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
    } else {
      switch (__pyx_nargs) {
        case  8:
        values[7] = __Pyx_ArgRef_VARARGS(__pyx_args, 7);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[7])) __PYX_ERR(0, 1555, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  7:
        values[6] = __Pyx_ArgRef_VARARGS(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 1555, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_VARARGS(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 1555, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_VARARGS(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 1555, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_VARARGS(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 1555, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 1555, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1555, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1555, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
    }
    __pyx_v_pi = values[0];
    __pyx_v_opcode = values[1];
    __pyx_v_opmod = values[2];
    __pyx_v_qp_num = values[3];
    __pyx_v_fm_ce_se = values[4];
    __pyx_v_ds = values[5];
    __pyx_v_signature = values[6];
    __pyx_v_imm = values[7];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 8, __pyx_nargs); __PYX_ERR(0, 1555, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeCtrlSeg.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg___init__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *)__pyx_v_self), __pyx_v_pi, __pyx_v_opcode, __pyx_v_opmod, __pyx_v_qp_num, __pyx_v_fm_ce_se, __pyx_v_ds, __pyx_v_signature, __pyx_v_imm);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *__pyx_v_self, PyObject *__pyx_v_pi, PyObject *__pyx_v_opcode, PyObject *__pyx_v_opmod, PyObject *__pyx_v_qp_num, PyObject *__pyx_v_fm_ce_se, PyObject *__pyx_v_ds, PyObject *__pyx_v_signature, PyObject *__pyx_v_imm) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1562
 *         through the getters/setters.
 *         """
 *         self.segment = calloc(1, sizeof(dv.mlx5_wqe_ctrl_seg))             # <<<<<<<<<<<<<<
 *         self.set_ctrl_seg(pi, opcode, opmod, qp_num, fm_ce_se, ds, signature, imm)
 * 
*/
  __pyx_v_self->__pyx_base.segment = calloc(1, (sizeof(struct mlx5_wqe_ctrl_seg)));

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1563
 *         """
 *         self.segment = calloc(1, sizeof(dv.mlx5_wqe_ctrl_seg))
 *         self.set_ctrl_seg(pi, opcode, opmod, qp_num, fm_ce_se, ds, signature, imm)             # <<<<<<<<<<<<<<
 * 
 *     def __str__(self):
*/
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[9] = {__pyx_t_2, __pyx_v_pi, __pyx_v_opcode, __pyx_v_opmod, __pyx_v_qp_num, __pyx_v_fm_ce_se, __pyx_v_ds, __pyx_v_signature, __pyx_v_imm};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_set_ctrl_seg, __pyx_callargs+__pyx_t_3, (9-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1563, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1555
 *     """
 * 
 *     def __init__(self, pi=0, opcode=0, opmod=0, qp_num=0, fm_ce_se=0, ds=0,             # <<<<<<<<<<<<<<
 *                  signature=0, imm=0):
 *         """
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeCtrlSeg.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1565
 *         self.set_ctrl_seg(pi, opcode, opmod, qp_num, fm_ce_se, ds, signature, imm)
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('opcode',
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_3__str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_3__str__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_2__str__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_2__str__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *__pyx_v_self) {
  PyObject *__pyx_v_print_format = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1566
 * 
 *     def __str__(self):
 *         print_format = '{:20}: {:<20}\n'             # <<<<<<<<<<<<<<
 *         return print_format.format('opcode',
 *                                    (<dv.mlx5_wqe_ctrl_seg *>self.segment).opmod_idx_opcode) + \
*/
  __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_20_20);
  __pyx_v_print_format = __pyx_mstate_global->__pyx_kp_u_20_20;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1567
 *     def __str__(self):
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('opcode',             # <<<<<<<<<<<<<<
 *                                    (<dv.mlx5_wqe_ctrl_seg *>self.segment).opmod_idx_opcode) + \
 *                print_format.format('qpn_ds',
*/
  __Pyx_XDECREF(__pyx_r);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1568
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('opcode',
 *                                    (<dv.mlx5_wqe_ctrl_seg *>self.segment).opmod_idx_opcode) + \             # <<<<<<<<<<<<<<
 *                print_format.format('qpn_ds',
 *                                    (<dv.mlx5_wqe_ctrl_seg *>self.segment).qpn_ds) + \
*/
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(((struct mlx5_wqe_ctrl_seg *)__pyx_v_self->__pyx_base.segment)->opmod_idx_opcode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1568, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1567
 *     def __str__(self):
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('opcode',             # <<<<<<<<<<<<<<
 *                                    (<dv.mlx5_wqe_ctrl_seg *>self.segment).opmod_idx_opcode) + \
 *                print_format.format('qpn_ds',
*/
  __pyx_t_2 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_n_u_opcode, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1567, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1570
 *                                    (<dv.mlx5_wqe_ctrl_seg *>self.segment).opmod_idx_opcode) + \
 *                print_format.format('qpn_ds',
 *                                    (<dv.mlx5_wqe_ctrl_seg *>self.segment).qpn_ds) + \             # <<<<<<<<<<<<<<
 *                print_format.format('signature',
 *                                    (<dv.mlx5_wqe_ctrl_seg *>self.segment).signature) + \
*/
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(((struct mlx5_wqe_ctrl_seg *)__pyx_v_self->__pyx_base.segment)->qpn_ds); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1570, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1569
 *         return print_format.format('opcode',
 *                                    (<dv.mlx5_wqe_ctrl_seg *>self.segment).opmod_idx_opcode) + \
 *                print_format.format('qpn_ds',             # <<<<<<<<<<<<<<
 *                                    (<dv.mlx5_wqe_ctrl_seg *>self.segment).qpn_ds) + \
 *                print_format.format('signature',
*/
  __pyx_t_3 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_n_u_qpn_ds, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1569, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1568
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('opcode',
 *                                    (<dv.mlx5_wqe_ctrl_seg *>self.segment).opmod_idx_opcode) + \             # <<<<<<<<<<<<<<
 *                print_format.format('qpn_ds',
 *                                    (<dv.mlx5_wqe_ctrl_seg *>self.segment).qpn_ds) + \
*/
  __pyx_t_1 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1568, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1572
 *                                    (<dv.mlx5_wqe_ctrl_seg *>self.segment).qpn_ds) + \
 *                print_format.format('signature',
 *                                    (<dv.mlx5_wqe_ctrl_seg *>self.segment).signature) + \             # <<<<<<<<<<<<<<
 *                print_format.format('fm_ce_se',
 *                                    (<dv.mlx5_wqe_ctrl_seg *>self.segment).fm_ce_se) + \
*/
  __pyx_t_3 = __Pyx_PyLong_From_uint8_t(((struct mlx5_wqe_ctrl_seg *)__pyx_v_self->__pyx_base.segment)->signature); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1572, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1571
 *                print_format.format('qpn_ds',
 *                                    (<dv.mlx5_wqe_ctrl_seg *>self.segment).qpn_ds) + \
 *                print_format.format('signature',             # <<<<<<<<<<<<<<
 *                                    (<dv.mlx5_wqe_ctrl_seg *>self.segment).signature) + \
 *                print_format.format('fm_ce_se',
*/
  __pyx_t_2 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_n_u_signature, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1571, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1570
 *                                    (<dv.mlx5_wqe_ctrl_seg *>self.segment).opmod_idx_opcode) + \
 *                print_format.format('qpn_ds',
 *                                    (<dv.mlx5_wqe_ctrl_seg *>self.segment).qpn_ds) + \             # <<<<<<<<<<<<<<
 *                print_format.format('signature',
 *                                    (<dv.mlx5_wqe_ctrl_seg *>self.segment).signature) + \
*/
  __pyx_t_3 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1570, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1574
 *                                    (<dv.mlx5_wqe_ctrl_seg *>self.segment).signature) + \
 *                print_format.format('fm_ce_se',
 *                                    (<dv.mlx5_wqe_ctrl_seg *>self.segment).fm_ce_se) + \             # <<<<<<<<<<<<<<
 *                print_format.format('imm',
 *                                    (<dv.mlx5_wqe_ctrl_seg *>self.segment).imm)
*/
  __pyx_t_2 = __Pyx_PyLong_From_uint8_t(((struct mlx5_wqe_ctrl_seg *)__pyx_v_self->__pyx_base.segment)->fm_ce_se); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1574, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1573
 *                print_format.format('signature',
 *                                    (<dv.mlx5_wqe_ctrl_seg *>self.segment).signature) + \
 *                print_format.format('fm_ce_se',             # <<<<<<<<<<<<<<
 *                                    (<dv.mlx5_wqe_ctrl_seg *>self.segment).fm_ce_se) + \
 *                print_format.format('imm',
*/
  __pyx_t_1 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_n_u_fm_ce_se, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1573, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1572
 *                                    (<dv.mlx5_wqe_ctrl_seg *>self.segment).qpn_ds) + \
 *                print_format.format('signature',
 *                                    (<dv.mlx5_wqe_ctrl_seg *>self.segment).signature) + \             # <<<<<<<<<<<<<<
 *                print_format.format('fm_ce_se',
 *                                    (<dv.mlx5_wqe_ctrl_seg *>self.segment).fm_ce_se) + \
*/
  __pyx_t_2 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1572, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1576
 *                                    (<dv.mlx5_wqe_ctrl_seg *>self.segment).fm_ce_se) + \
 *                print_format.format('imm',
 *                                    (<dv.mlx5_wqe_ctrl_seg *>self.segment).imm)             # <<<<<<<<<<<<<<
 * 
 *     def set_ctrl_seg(self, pi, opcode, opmod, qp_num, fm_ce_se, ds, signature, imm):
*/
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(((struct mlx5_wqe_ctrl_seg *)__pyx_v_self->__pyx_base.segment)->imm); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1576, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1575
 *                print_format.format('fm_ce_se',
 *                                    (<dv.mlx5_wqe_ctrl_seg *>self.segment).fm_ce_se) + \
 *                print_format.format('imm',             # <<<<<<<<<<<<<<
 *                                    (<dv.mlx5_wqe_ctrl_seg *>self.segment).imm)
 * 
*/
  __pyx_t_3 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_n_u_imm, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1575, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1574
 *                                    (<dv.mlx5_wqe_ctrl_seg *>self.segment).signature) + \
 *                print_format.format('fm_ce_se',
 *                                    (<dv.mlx5_wqe_ctrl_seg *>self.segment).fm_ce_se) + \             # <<<<<<<<<<<<<<
 *                print_format.format('imm',
 *                                    (<dv.mlx5_wqe_ctrl_seg *>self.segment).imm)
*/
  __pyx_t_1 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1574, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1565
 *         self.set_ctrl_seg(pi, opcode, opmod, qp_num, fm_ce_se, ds, signature, imm)
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('opcode',
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeCtrlSeg.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_print_format);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1578
 *                                    (<dv.mlx5_wqe_ctrl_seg *>self.segment).imm)
 * 
 *     def set_ctrl_seg(self, pi, opcode, opmod, qp_num, fm_ce_se, ds, signature, imm):             # <<<<<<<<<<<<<<
 *         dv.mlx5dv_set_ctrl_seg(<dv.mlx5_wqe_ctrl_seg *>self.segment, pi, opcode,
 *                                opmod, qp_num, fm_ce_se, ds, signature, imm)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_5set_ctrl_seg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_5set_ctrl_seg = {"set_ctrl_seg", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_5set_ctrl_seg, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_5set_ctrl_seg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_pi = 0;
  PyObject *__pyx_v_opcode = 0;
  PyObject *__pyx_v_opmod = 0;
  PyObject *__pyx_v_qp_num = 0;
  PyObject *__pyx_v_fm_ce_se = 0;
  PyObject *__pyx_v_ds = 0;
  PyObject *__pyx_v_signature = 0;
  PyObject *__pyx_v_imm = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[8] = {0,0,0,0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_ctrl_seg (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pi,&__pyx_mstate_global->__pyx_n_u_opcode,&__pyx_mstate_global->__pyx_n_u_opmod,&__pyx_mstate_global->__pyx_n_u_qp_num,&__pyx_mstate_global->__pyx_n_u_fm_ce_se,&__pyx_mstate_global->__pyx_n_u_ds,&__pyx_mstate_global->__pyx_n_u_signature,&__pyx_mstate_global->__pyx_n_u_imm,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1578, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  8:
        values[7] = __Pyx_ArgRef_FASTCALL(__pyx_args, 7);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[7])) __PYX_ERR(0, 1578, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  7:
        values[6] = __Pyx_ArgRef_FASTCALL(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 1578, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 1578, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 1578, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 1578, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 1578, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1578, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1578, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "set_ctrl_seg", 0) < (0)) __PYX_ERR(0, 1578, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 8; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("set_ctrl_seg", 1, 8, 8, i); __PYX_ERR(0, 1578, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 8)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1578, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1578, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 1578, __pyx_L3_error)
      values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 1578, __pyx_L3_error)
      values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 1578, __pyx_L3_error)
      values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 1578, __pyx_L3_error)
      values[6] = __Pyx_ArgRef_FASTCALL(__pyx_args, 6);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 1578, __pyx_L3_error)
      values[7] = __Pyx_ArgRef_FASTCALL(__pyx_args, 7);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[7])) __PYX_ERR(0, 1578, __pyx_L3_error)
    }
    __pyx_v_pi = values[0];
    __pyx_v_opcode = values[1];
    __pyx_v_opmod = values[2];
    __pyx_v_qp_num = values[3];
    __pyx_v_fm_ce_se = values[4];
    __pyx_v_ds = values[5];
    __pyx_v_signature = values[6];
    __pyx_v_imm = values[7];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_ctrl_seg", 1, 8, 8, __pyx_nargs); __PYX_ERR(0, 1578, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeCtrlSeg.set_ctrl_seg", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_4set_ctrl_seg(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *)__pyx_v_self), __pyx_v_pi, __pyx_v_opcode, __pyx_v_opmod, __pyx_v_qp_num, __pyx_v_fm_ce_se, __pyx_v_ds, __pyx_v_signature, __pyx_v_imm);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_4set_ctrl_seg(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *__pyx_v_self, PyObject *__pyx_v_pi, PyObject *__pyx_v_opcode, PyObject *__pyx_v_opmod, PyObject *__pyx_v_qp_num, PyObject *__pyx_v_fm_ce_se, PyObject *__pyx_v_ds, PyObject *__pyx_v_signature, PyObject *__pyx_v_imm) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  uint16_t __pyx_t_1;
  uint8_t __pyx_t_2;
  uint8_t __pyx_t_3;
  uint32_t __pyx_t_4;
  uint8_t __pyx_t_5;
  uint8_t __pyx_t_6;
  uint8_t __pyx_t_7;
  uint32_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_ctrl_seg", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1579
 * 
 *     def set_ctrl_seg(self, pi, opcode, opmod, qp_num, fm_ce_se, ds, signature, imm):
 *         dv.mlx5dv_set_ctrl_seg(<dv.mlx5_wqe_ctrl_seg *>self.segment, pi, opcode,             # <<<<<<<<<<<<<<
 *                                opmod, qp_num, fm_ce_se, ds, signature, imm)
 * 
*/
  __pyx_t_1 = __Pyx_PyLong_As_uint16_t(__pyx_v_pi); if (unlikely((__pyx_t_1 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1579, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyLong_As_uint8_t(__pyx_v_opcode); if (unlikely((__pyx_t_2 == ((uint8_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1579, __pyx_L1_error)

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1580
 *     def set_ctrl_seg(self, pi, opcode, opmod, qp_num, fm_ce_se, ds, signature, imm):
 *         dv.mlx5dv_set_ctrl_seg(<dv.mlx5_wqe_ctrl_seg *>self.segment, pi, opcode,
 *                                opmod, qp_num, fm_ce_se, ds, signature, imm)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
  __pyx_t_3 = __Pyx_PyLong_As_uint8_t(__pyx_v_opmod); if (unlikely((__pyx_t_3 == ((uint8_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1580, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyLong_As_uint32_t(__pyx_v_qp_num); if (unlikely((__pyx_t_4 == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1580, __pyx_L1_error)
  __pyx_t_5 = __Pyx_PyLong_As_uint8_t(__pyx_v_fm_ce_se); if (unlikely((__pyx_t_5 == ((uint8_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1580, __pyx_L1_error)
  __pyx_t_6 = __Pyx_PyLong_As_uint8_t(__pyx_v_ds); if (unlikely((__pyx_t_6 == ((uint8_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1580, __pyx_L1_error)
  __pyx_t_7 = __Pyx_PyLong_As_uint8_t(__pyx_v_signature); if (unlikely((__pyx_t_7 == ((uint8_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1580, __pyx_L1_error)
  __pyx_t_8 = __Pyx_PyLong_As_uint32_t(__pyx_v_imm); if (unlikely((__pyx_t_8 == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1580, __pyx_L1_error)

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1579
 * 
 *     def set_ctrl_seg(self, pi, opcode, opmod, qp_num, fm_ce_se, ds, signature, imm):
 *         dv.mlx5dv_set_ctrl_seg(<dv.mlx5_wqe_ctrl_seg *>self.segment, pi, opcode,             # <<<<<<<<<<<<<<
 *                                opmod, qp_num, fm_ce_se, ds, signature, imm)
 * 
*/
  mlx5dv_set_ctrl_seg(((struct mlx5_wqe_ctrl_seg *)__pyx_v_self->__pyx_base.segment), __pyx_t_1, __pyx_t_2, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, __pyx_t_7, __pyx_t_8);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1578
 *                                    (<dv.mlx5_wqe_ctrl_seg *>self.segment).imm)
 * 
 *     def set_ctrl_seg(self, pi, opcode, opmod, qp_num, fm_ce_se, ds, signature, imm):             # <<<<<<<<<<<<<<
 *         dv.mlx5dv_set_ctrl_seg(<dv.mlx5_wqe_ctrl_seg *>self.segment, pi, opcode,
 *                                opmod, qp_num, fm_ce_se, ds, signature, imm)
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeCtrlSeg.set_ctrl_seg", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1582
 *                                opmod, qp_num, fm_ce_se, ds, signature, imm)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def sizeof():
 *         return sizeof(dv.mlx5_wqe_ctrl_seg)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_7sizeof(CYTHON_UNUSED PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_7sizeof = {"sizeof", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_7sizeof, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_7sizeof(CYTHON_UNUSED PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sizeof (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("sizeof", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("sizeof", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_6sizeof();

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_6sizeof(void) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sizeof", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1584
 *     @staticmethod
 *     def sizeof():
 *         return sizeof(dv.mlx5_wqe_ctrl_seg)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_FromSize_t((sizeof(struct mlx5_wqe_ctrl_seg))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1584, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1582
 *                                opmod, qp_num, fm_ce_se, ds, signature, imm)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def sizeof():
 *         return sizeof(dv.mlx5_wqe_ctrl_seg)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeCtrlSeg.sizeof", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1586
 *         return sizeof(dv.mlx5_wqe_ctrl_seg)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def addr(self):
 *         return <uintptr_t>self.segment
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_4addr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_4addr_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_4addr___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_4addr___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1588
 *     @property
 *     def addr(self):
 *         return <uintptr_t>self.segment             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_FromSize_t(((uintptr_t)__pyx_v_self->__pyx_base.segment)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1588, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1586
 *         return sizeof(dv.mlx5_wqe_ctrl_seg)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def addr(self):
 *         return <uintptr_t>self.segment
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeCtrlSeg.addr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1590
 *         return <uintptr_t>self.segment
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def opmod_idx_opcode(self):
 *         return be32toh((<dv.mlx5_wqe_ctrl_seg *>self.segment).opmod_idx_opcode)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_16opmod_idx_opcode_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_16opmod_idx_opcode_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_16opmod_idx_opcode___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_16opmod_idx_opcode___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1592
 *     @property
 *     def opmod_idx_opcode(self):
 *         return be32toh((<dv.mlx5_wqe_ctrl_seg *>self.segment).opmod_idx_opcode)             # <<<<<<<<<<<<<<
 *     @opmod_idx_opcode.setter
 *     def opmod_idx_opcode(self, val):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_unsigned_long(be32toh(((struct mlx5_wqe_ctrl_seg *)__pyx_v_self->__pyx_base.segment)->opmod_idx_opcode)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1592, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1590
 *         return <uintptr_t>self.segment
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def opmod_idx_opcode(self):
 *         return be32toh((<dv.mlx5_wqe_ctrl_seg *>self.segment).opmod_idx_opcode)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeCtrlSeg.opmod_idx_opcode.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1593
 *     def opmod_idx_opcode(self):
 *         return be32toh((<dv.mlx5_wqe_ctrl_seg *>self.segment).opmod_idx_opcode)
 *     @opmod_idx_opcode.setter             # <<<<<<<<<<<<<<
 *     def opmod_idx_opcode(self, val):
 *         (<dv.mlx5_wqe_ctrl_seg *>self.segment).opmod_idx_opcode = htobe32(val)
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_16opmod_idx_opcode_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_16opmod_idx_opcode_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_16opmod_idx_opcode_2__set__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *)__pyx_v_self), ((PyObject *)__pyx_v_val));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_16opmod_idx_opcode_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *__pyx_v_self, PyObject *__pyx_v_val) {
  int __pyx_r;
  unsigned long __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1595
 *     @opmod_idx_opcode.setter
 *     def opmod_idx_opcode(self, val):
 *         (<dv.mlx5_wqe_ctrl_seg *>self.segment).opmod_idx_opcode = htobe32(val)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_t_1 = __Pyx_PyLong_As_unsigned_long(__pyx_v_val); if (unlikely((__pyx_t_1 == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(0, 1595, __pyx_L1_error)
  ((struct mlx5_wqe_ctrl_seg *)__pyx_v_self->__pyx_base.segment)->opmod_idx_opcode = htobe32(__pyx_t_1);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1593
 *     def opmod_idx_opcode(self):
 *         return be32toh((<dv.mlx5_wqe_ctrl_seg *>self.segment).opmod_idx_opcode)
 *     @opmod_idx_opcode.setter             # <<<<<<<<<<<<<<
 *     def opmod_idx_opcode(self, val):
 *         (<dv.mlx5_wqe_ctrl_seg *>self.segment).opmod_idx_opcode = htobe32(val)
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeCtrlSeg.opmod_idx_opcode.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1597
 *         (<dv.mlx5_wqe_ctrl_seg *>self.segment).opmod_idx_opcode = htobe32(val)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def qpn_ds(self):
 *         return be32toh((<dv.mlx5_wqe_ctrl_seg *>self.segment).qpn_ds)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_6qpn_ds_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_6qpn_ds_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_6qpn_ds___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_6qpn_ds___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1599
 *     @property
 *     def qpn_ds(self):
 *         return be32toh((<dv.mlx5_wqe_ctrl_seg *>self.segment).qpn_ds)             # <<<<<<<<<<<<<<
 *     @qpn_ds.setter
 *     def qpn_ds(self, val):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_unsigned_long(be32toh(((struct mlx5_wqe_ctrl_seg *)__pyx_v_self->__pyx_base.segment)->qpn_ds)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1599, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1597
 *         (<dv.mlx5_wqe_ctrl_seg *>self.segment).opmod_idx_opcode = htobe32(val)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def qpn_ds(self):
 *         return be32toh((<dv.mlx5_wqe_ctrl_seg *>self.segment).qpn_ds)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeCtrlSeg.qpn_ds.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1600
 *     def qpn_ds(self):
 *         return be32toh((<dv.mlx5_wqe_ctrl_seg *>self.segment).qpn_ds)
 *     @qpn_ds.setter             # <<<<<<<<<<<<<<
 *     def qpn_ds(self, val):
 *         (<dv.mlx5_wqe_ctrl_seg *>self.segment).qpn_ds = htobe32(val)
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_6qpn_ds_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_6qpn_ds_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_6qpn_ds_2__set__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *)__pyx_v_self), ((PyObject *)__pyx_v_val));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_6qpn_ds_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *__pyx_v_self, PyObject *__pyx_v_val) {
  int __pyx_r;
  unsigned long __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1602
 *     @qpn_ds.setter
 *     def qpn_ds(self, val):
 *         (<dv.mlx5_wqe_ctrl_seg *>self.segment).qpn_ds = htobe32(val)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_t_1 = __Pyx_PyLong_As_unsigned_long(__pyx_v_val); if (unlikely((__pyx_t_1 == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(0, 1602, __pyx_L1_error)
  ((struct mlx5_wqe_ctrl_seg *)__pyx_v_self->__pyx_base.segment)->qpn_ds = htobe32(__pyx_t_1);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1600
 *     def qpn_ds(self):
 *         return be32toh((<dv.mlx5_wqe_ctrl_seg *>self.segment).qpn_ds)
 *     @qpn_ds.setter             # <<<<<<<<<<<<<<
 *     def qpn_ds(self, val):
 *         (<dv.mlx5_wqe_ctrl_seg *>self.segment).qpn_ds = htobe32(val)
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeCtrlSeg.qpn_ds.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1604
 *         (<dv.mlx5_wqe_ctrl_seg *>self.segment).qpn_ds = htobe32(val)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def signature(self):
 *         return (<dv.mlx5_wqe_ctrl_seg *>self.segment).signature
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_9signature_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_9signature_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_9signature___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_9signature___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1606
 *     @property
 *     def signature(self):
 *         return (<dv.mlx5_wqe_ctrl_seg *>self.segment).signature             # <<<<<<<<<<<<<<
 *     @signature.setter
 *     def signature(self, val):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(((struct mlx5_wqe_ctrl_seg *)__pyx_v_self->__pyx_base.segment)->signature); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1606, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1604
 *         (<dv.mlx5_wqe_ctrl_seg *>self.segment).qpn_ds = htobe32(val)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def signature(self):
 *         return (<dv.mlx5_wqe_ctrl_seg *>self.segment).signature
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeCtrlSeg.signature.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1607
 *     def signature(self):
 *         return (<dv.mlx5_wqe_ctrl_seg *>self.segment).signature
 *     @signature.setter             # <<<<<<<<<<<<<<
 *     def signature(self, val):
 *         (<dv.mlx5_wqe_ctrl_seg *>self.segment).signature = val
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_9signature_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_9signature_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_9signature_2__set__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *)__pyx_v_self), ((PyObject *)__pyx_v_val));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_9signature_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *__pyx_v_self, PyObject *__pyx_v_val) {
  int __pyx_r;
  uint8_t __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1609
 *     @signature.setter
 *     def signature(self, val):
 *         (<dv.mlx5_wqe_ctrl_seg *>self.segment).signature = val             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_t_1 = __Pyx_PyLong_As_uint8_t(__pyx_v_val); if (unlikely((__pyx_t_1 == ((uint8_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1609, __pyx_L1_error)
  ((struct mlx5_wqe_ctrl_seg *)__pyx_v_self->__pyx_base.segment)->signature = __pyx_t_1;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1607
 *     def signature(self):
 *         return (<dv.mlx5_wqe_ctrl_seg *>self.segment).signature
 *     @signature.setter             # <<<<<<<<<<<<<<
 *     def signature(self, val):
 *         (<dv.mlx5_wqe_ctrl_seg *>self.segment).signature = val
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeCtrlSeg.signature.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1611
 *         (<dv.mlx5_wqe_ctrl_seg *>self.segment).signature = val
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def fm_ce_se(self):
 *         return (<dv.mlx5_wqe_ctrl_seg *>self.segment).fm_ce_se
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_8fm_ce_se_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_8fm_ce_se_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_8fm_ce_se___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_8fm_ce_se___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1613
 *     @property
 *     def fm_ce_se(self):
 *         return (<dv.mlx5_wqe_ctrl_seg *>self.segment).fm_ce_se             # <<<<<<<<<<<<<<
 *     @fm_ce_se.setter
 *     def fm_ce_se(self, val):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(((struct mlx5_wqe_ctrl_seg *)__pyx_v_self->__pyx_base.segment)->fm_ce_se); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1613, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1611
 *         (<dv.mlx5_wqe_ctrl_seg *>self.segment).signature = val
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def fm_ce_se(self):
 *         return (<dv.mlx5_wqe_ctrl_seg *>self.segment).fm_ce_se
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeCtrlSeg.fm_ce_se.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1614
 *     def fm_ce_se(self):
 *         return (<dv.mlx5_wqe_ctrl_seg *>self.segment).fm_ce_se
 *     @fm_ce_se.setter             # <<<<<<<<<<<<<<
 *     def fm_ce_se(self, val):
 *         (<dv.mlx5_wqe_ctrl_seg *>self.segment).fm_ce_se = val
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_8fm_ce_se_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_8fm_ce_se_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_8fm_ce_se_2__set__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *)__pyx_v_self), ((PyObject *)__pyx_v_val));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_8fm_ce_se_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *__pyx_v_self, PyObject *__pyx_v_val) {
  int __pyx_r;
  uint8_t __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1616
 *     @fm_ce_se.setter
 *     def fm_ce_se(self, val):
 *         (<dv.mlx5_wqe_ctrl_seg *>self.segment).fm_ce_se = val             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_t_1 = __Pyx_PyLong_As_uint8_t(__pyx_v_val); if (unlikely((__pyx_t_1 == ((uint8_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1616, __pyx_L1_error)
  ((struct mlx5_wqe_ctrl_seg *)__pyx_v_self->__pyx_base.segment)->fm_ce_se = __pyx_t_1;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1614
 *     def fm_ce_se(self):
 *         return (<dv.mlx5_wqe_ctrl_seg *>self.segment).fm_ce_se
 *     @fm_ce_se.setter             # <<<<<<<<<<<<<<
 *     def fm_ce_se(self, val):
 *         (<dv.mlx5_wqe_ctrl_seg *>self.segment).fm_ce_se = val
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeCtrlSeg.fm_ce_se.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1618
 *         (<dv.mlx5_wqe_ctrl_seg *>self.segment).fm_ce_se = val
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def imm(self):
 *         return be32toh((<dv.mlx5_wqe_ctrl_seg *>self.segment).imm)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_3imm_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_3imm_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_3imm___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_3imm___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1620
 *     @property
 *     def imm(self):
 *         return be32toh((<dv.mlx5_wqe_ctrl_seg *>self.segment).imm)             # <<<<<<<<<<<<<<
 *     @imm.setter
 *     def imm(self, val):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_unsigned_long(be32toh(((struct mlx5_wqe_ctrl_seg *)__pyx_v_self->__pyx_base.segment)->imm)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1620, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1618
 *         (<dv.mlx5_wqe_ctrl_seg *>self.segment).fm_ce_se = val
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def imm(self):
 *         return be32toh((<dv.mlx5_wqe_ctrl_seg *>self.segment).imm)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeCtrlSeg.imm.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1621
 *     def imm(self):
 *         return be32toh((<dv.mlx5_wqe_ctrl_seg *>self.segment).imm)
 *     @imm.setter             # <<<<<<<<<<<<<<
 *     def imm(self, val):
 *         (<dv.mlx5_wqe_ctrl_seg *>self.segment).imm = htobe32(val)
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_3imm_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_3imm_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_3imm_2__set__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *)__pyx_v_self), ((PyObject *)__pyx_v_val));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_3imm_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *__pyx_v_self, PyObject *__pyx_v_val) {
  int __pyx_r;
  unsigned long __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1623
 *     @imm.setter
 *     def imm(self, val):
 *         (<dv.mlx5_wqe_ctrl_seg *>self.segment).imm = htobe32(val)             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_1 = __Pyx_PyLong_As_unsigned_long(__pyx_v_val); if (unlikely((__pyx_t_1 == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(0, 1623, __pyx_L1_error)
  ((struct mlx5_wqe_ctrl_seg *)__pyx_v_self->__pyx_base.segment)->imm = htobe32(__pyx_t_1);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1621
 *     def imm(self):
 *         return be32toh((<dv.mlx5_wqe_ctrl_seg *>self.segment).imm)
 *     @imm.setter             # <<<<<<<<<<<<<<
 *     def imm(self, val):
 *         (<dv.mlx5_wqe_ctrl_seg *>self.segment).imm = htobe32(val)
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeCtrlSeg.imm.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.segment cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_9__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_9__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_9__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_9__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_8__reduce_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self.segment cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.segment cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_segment_cannot_be_converted, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.segment cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeCtrlSeg.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.segment cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.segment cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_11__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_11__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_11__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_11__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeCtrlSeg.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_10__setstate_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self.segment cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.segment cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_segment_cannot_be_converted, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.segment cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.segment cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeCtrlSeg.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1628
 * cdef class WqeDataSeg(WqeSeg):
 * 
 *     def __init__(self, length=0, lkey=0, addr=0):             # <<<<<<<<<<<<<<
 *         """
 *         Create a dv.mlx5_wqe_data_seg by allocating it and using
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg___init__, "\n        Create a dv.mlx5_wqe_data_seg by allocating it and using\n        dv.mlx5dv_set_data_seg with the values received in init\n        ");
#if CYTHON_UPDATE_DESCRIPTOR_DOC
struct wrapperbase __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg___init__;
#endif
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_length = 0;
  PyObject *__pyx_v_lkey = 0;
  PyObject *__pyx_v_addr = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_length,&__pyx_mstate_global->__pyx_n_u_lkey,&__pyx_mstate_global->__pyx_n_u_addr,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1628, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 1628, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1628, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1628, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(0, 1628, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
    } else {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 1628, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1628, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1628, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
    }
    __pyx_v_length = values[0];
    __pyx_v_lkey = values[1];
    __pyx_v_addr = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 3, __pyx_nargs); __PYX_ERR(0, 1628, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeDataSeg.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg___init__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg *)__pyx_v_self), __pyx_v_length, __pyx_v_lkey, __pyx_v_addr);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg *__pyx_v_self, PyObject *__pyx_v_length, PyObject *__pyx_v_lkey, PyObject *__pyx_v_addr) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1633
 *         dv.mlx5dv_set_data_seg with the values received in init
 *         """
 *         self.segment = calloc(1, sizeof(dv.mlx5_wqe_data_seg))             # <<<<<<<<<<<<<<
 *         self.set_data_seg(length, lkey, addr)
 * 
*/
  __pyx_v_self->__pyx_base.segment = calloc(1, (sizeof(struct mlx5_wqe_data_seg)));

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1634
 *         """
 *         self.segment = calloc(1, sizeof(dv.mlx5_wqe_data_seg))
 *         self.set_data_seg(length, lkey, addr)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_2, __pyx_v_length, __pyx_v_lkey, __pyx_v_addr};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_set_data_seg, __pyx_callargs+__pyx_t_3, (4-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1634, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1628
 * cdef class WqeDataSeg(WqeSeg):
 * 
 *     def __init__(self, length=0, lkey=0, addr=0):             # <<<<<<<<<<<<<<
 *         """
 *         Create a dv.mlx5_wqe_data_seg by allocating it and using
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeDataSeg.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1636
 *         self.set_data_seg(length, lkey, addr)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def sizeof():
 *         return sizeof(dv.mlx5_wqe_data_seg)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_3sizeof(CYTHON_UNUSED PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_3sizeof = {"sizeof", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_3sizeof, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_3sizeof(CYTHON_UNUSED PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sizeof (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("sizeof", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("sizeof", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_2sizeof();

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_2sizeof(void) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sizeof", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1638
 *     @staticmethod
 *     def sizeof():
 *         return sizeof(dv.mlx5_wqe_data_seg)             # <<<<<<<<<<<<<<
 * 
 *     def __str__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_FromSize_t((sizeof(struct mlx5_wqe_data_seg))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1638, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1636
 *         self.set_data_seg(length, lkey, addr)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def sizeof():
 *         return sizeof(dv.mlx5_wqe_data_seg)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeDataSeg.sizeof", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1640
 *         return sizeof(dv.mlx5_wqe_data_seg)
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('byte_count',
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_5__str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_5__str__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_4__str__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_4__str__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg *__pyx_v_self) {
  PyObject *__pyx_v_print_format = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1641
 * 
 *     def __str__(self):
 *         print_format = '{:20}: {:<20}\n'             # <<<<<<<<<<<<<<
 *         return print_format.format('byte_count',
 *                                    (<dv.mlx5_wqe_data_seg *>self.segment).byte_count) + \
*/
  __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_20_20);
  __pyx_v_print_format = __pyx_mstate_global->__pyx_kp_u_20_20;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1642
 *     def __str__(self):
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('byte_count',             # <<<<<<<<<<<<<<
 *                                    (<dv.mlx5_wqe_data_seg *>self.segment).byte_count) + \
 *                print_format.format('lkey', (<dv.mlx5_wqe_data_seg *>self.segment).lkey) + \
*/
  __Pyx_XDECREF(__pyx_r);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1643
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('byte_count',
 *                                    (<dv.mlx5_wqe_data_seg *>self.segment).byte_count) + \             # <<<<<<<<<<<<<<
 *                print_format.format('lkey', (<dv.mlx5_wqe_data_seg *>self.segment).lkey) + \
 *                print_format.format('addr', (<dv.mlx5_wqe_data_seg *>self.segment).addr)
*/
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(((struct mlx5_wqe_data_seg *)__pyx_v_self->__pyx_base.segment)->byte_count); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1643, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1642
 *     def __str__(self):
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('byte_count',             # <<<<<<<<<<<<<<
 *                                    (<dv.mlx5_wqe_data_seg *>self.segment).byte_count) + \
 *                print_format.format('lkey', (<dv.mlx5_wqe_data_seg *>self.segment).lkey) + \
*/
  __pyx_t_2 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_n_u_byte_count, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1642, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1644
 *         return print_format.format('byte_count',
 *                                    (<dv.mlx5_wqe_data_seg *>self.segment).byte_count) + \
 *                print_format.format('lkey', (<dv.mlx5_wqe_data_seg *>self.segment).lkey) + \             # <<<<<<<<<<<<<<
 *                print_format.format('addr', (<dv.mlx5_wqe_data_seg *>self.segment).addr)
 * 
*/
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(((struct mlx5_wqe_data_seg *)__pyx_v_self->__pyx_base.segment)->lkey); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1644, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_n_u_lkey, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1644, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1643
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('byte_count',
 *                                    (<dv.mlx5_wqe_data_seg *>self.segment).byte_count) + \             # <<<<<<<<<<<<<<
 *                print_format.format('lkey', (<dv.mlx5_wqe_data_seg *>self.segment).lkey) + \
 *                print_format.format('addr', (<dv.mlx5_wqe_data_seg *>self.segment).addr)
*/
  __pyx_t_1 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1643, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1645
 *                                    (<dv.mlx5_wqe_data_seg *>self.segment).byte_count) + \
 *                print_format.format('lkey', (<dv.mlx5_wqe_data_seg *>self.segment).lkey) + \
 *                print_format.format('addr', (<dv.mlx5_wqe_data_seg *>self.segment).addr)             # <<<<<<<<<<<<<<
 * 
 *     def set_data_seg(self, length, lkey, addr):
*/
  __pyx_t_3 = __Pyx_PyLong_From_uint64_t(((struct mlx5_wqe_data_seg *)__pyx_v_self->__pyx_base.segment)->addr); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1645, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_n_u_addr, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1645, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1644
 *         return print_format.format('byte_count',
 *                                    (<dv.mlx5_wqe_data_seg *>self.segment).byte_count) + \
 *                print_format.format('lkey', (<dv.mlx5_wqe_data_seg *>self.segment).lkey) + \             # <<<<<<<<<<<<<<
 *                print_format.format('addr', (<dv.mlx5_wqe_data_seg *>self.segment).addr)
 * 
*/
  __pyx_t_3 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1644, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1640
 *         return sizeof(dv.mlx5_wqe_data_seg)
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('byte_count',
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeDataSeg.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_print_format);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1647
 *                print_format.format('addr', (<dv.mlx5_wqe_data_seg *>self.segment).addr)
 * 
 *     def set_data_seg(self, length, lkey, addr):             # <<<<<<<<<<<<<<
 *         dv.mlx5dv_set_data_seg(<dv.mlx5_wqe_data_seg *>self.segment,
 *                                length, lkey, addr)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_7set_data_seg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_7set_data_seg = {"set_data_seg", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_7set_data_seg, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_7set_data_seg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_length = 0;
  PyObject *__pyx_v_lkey = 0;
  PyObject *__pyx_v_addr = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_data_seg (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_length,&__pyx_mstate_global->__pyx_n_u_lkey,&__pyx_mstate_global->__pyx_n_u_addr,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1647, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 1647, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1647, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1647, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "set_data_seg", 0) < (0)) __PYX_ERR(0, 1647, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("set_data_seg", 1, 3, 3, i); __PYX_ERR(0, 1647, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1647, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1647, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 1647, __pyx_L3_error)
    }
    __pyx_v_length = values[0];
    __pyx_v_lkey = values[1];
    __pyx_v_addr = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_data_seg", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 1647, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeDataSeg.set_data_seg", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_6set_data_seg(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg *)__pyx_v_self), __pyx_v_length, __pyx_v_lkey, __pyx_v_addr);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_6set_data_seg(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg *__pyx_v_self, PyObject *__pyx_v_length, PyObject *__pyx_v_lkey, PyObject *__pyx_v_addr) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  uint32_t __pyx_t_1;
  uint32_t __pyx_t_2;
  uintptr_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_data_seg", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1649
 *     def set_data_seg(self, length, lkey, addr):
 *         dv.mlx5dv_set_data_seg(<dv.mlx5_wqe_data_seg *>self.segment,
 *                                length, lkey, addr)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_t_1 = __Pyx_PyLong_As_uint32_t(__pyx_v_length); if (unlikely((__pyx_t_1 == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1649, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyLong_As_uint32_t(__pyx_v_lkey); if (unlikely((__pyx_t_2 == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1649, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyLong_As_size_t(__pyx_v_addr); if (unlikely((__pyx_t_3 == ((uintptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1649, __pyx_L1_error)

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1648
 * 
 *     def set_data_seg(self, length, lkey, addr):
 *         dv.mlx5dv_set_data_seg(<dv.mlx5_wqe_data_seg *>self.segment,             # <<<<<<<<<<<<<<
 *                                length, lkey, addr)
 * 
*/
  mlx5dv_set_data_seg(((struct mlx5_wqe_data_seg *)__pyx_v_self->__pyx_base.segment), __pyx_t_1, __pyx_t_2, __pyx_t_3);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1647
 *                print_format.format('addr', (<dv.mlx5_wqe_data_seg *>self.segment).addr)
 * 
 *     def set_data_seg(self, length, lkey, addr):             # <<<<<<<<<<<<<<
 *         dv.mlx5dv_set_data_seg(<dv.mlx5_wqe_data_seg *>self.segment,
 *                                length, lkey, addr)
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeDataSeg.set_data_seg", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1651
 *                                length, lkey, addr)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def byte_count(self):
 *         return be32toh((<dv.mlx5_wqe_data_seg *>self.segment).byte_count)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_10byte_count_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_10byte_count_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_10byte_count___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_10byte_count___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1653
 *     @property
 *     def byte_count(self):
 *         return be32toh((<dv.mlx5_wqe_data_seg *>self.segment).byte_count)             # <<<<<<<<<<<<<<
 *     @byte_count.setter
 *     def byte_count(self, val):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_unsigned_long(be32toh(((struct mlx5_wqe_data_seg *)__pyx_v_self->__pyx_base.segment)->byte_count)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1653, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1651
 *                                length, lkey, addr)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def byte_count(self):
 *         return be32toh((<dv.mlx5_wqe_data_seg *>self.segment).byte_count)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeDataSeg.byte_count.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1654
 *     def byte_count(self):
 *         return be32toh((<dv.mlx5_wqe_data_seg *>self.segment).byte_count)
 *     @byte_count.setter             # <<<<<<<<<<<<<<
 *     def byte_count(self, val):
 *         (<dv.mlx5_wqe_data_seg *>self.segment).byte_count = htobe32(val)
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_10byte_count_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_10byte_count_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_10byte_count_2__set__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg *)__pyx_v_self), ((PyObject *)__pyx_v_val));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_10byte_count_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg *__pyx_v_self, PyObject *__pyx_v_val) {
  int __pyx_r;
  unsigned long __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1656
 *     @byte_count.setter
 *     def byte_count(self, val):
 *         (<dv.mlx5_wqe_data_seg *>self.segment).byte_count = htobe32(val)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_t_1 = __Pyx_PyLong_As_unsigned_long(__pyx_v_val); if (unlikely((__pyx_t_1 == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(0, 1656, __pyx_L1_error)
  ((struct mlx5_wqe_data_seg *)__pyx_v_self->__pyx_base.segment)->byte_count = htobe32(__pyx_t_1);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1654
 *     def byte_count(self):
 *         return be32toh((<dv.mlx5_wqe_data_seg *>self.segment).byte_count)
 *     @byte_count.setter             # <<<<<<<<<<<<<<
 *     def byte_count(self, val):
 *         (<dv.mlx5_wqe_data_seg *>self.segment).byte_count = htobe32(val)
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeDataSeg.byte_count.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1658
 *         (<dv.mlx5_wqe_data_seg *>self.segment).byte_count = htobe32(val)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def lkey(self):
 *         return be32toh((<dv.mlx5_wqe_data_seg *>self.segment).lkey)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_4lkey_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_4lkey_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_4lkey___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_4lkey___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1660
 *     @property
 *     def lkey(self):
 *         return be32toh((<dv.mlx5_wqe_data_seg *>self.segment).lkey)             # <<<<<<<<<<<<<<
 *     @lkey.setter
 *     def lkey(self, val):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_unsigned_long(be32toh(((struct mlx5_wqe_data_seg *)__pyx_v_self->__pyx_base.segment)->lkey)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1660, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1658
 *         (<dv.mlx5_wqe_data_seg *>self.segment).byte_count = htobe32(val)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def lkey(self):
 *         return be32toh((<dv.mlx5_wqe_data_seg *>self.segment).lkey)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeDataSeg.lkey.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1661
 *     def lkey(self):
 *         return be32toh((<dv.mlx5_wqe_data_seg *>self.segment).lkey)
 *     @lkey.setter             # <<<<<<<<<<<<<<
 *     def lkey(self, val):
 *         (<dv.mlx5_wqe_data_seg *>self.segment).lkey = htobe32(val)
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_4lkey_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_4lkey_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_4lkey_2__set__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg *)__pyx_v_self), ((PyObject *)__pyx_v_val));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_4lkey_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg *__pyx_v_self, PyObject *__pyx_v_val) {
  int __pyx_r;
  unsigned long __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1663
 *     @lkey.setter
 *     def lkey(self, val):
 *         (<dv.mlx5_wqe_data_seg *>self.segment).lkey = htobe32(val)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_t_1 = __Pyx_PyLong_As_unsigned_long(__pyx_v_val); if (unlikely((__pyx_t_1 == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(0, 1663, __pyx_L1_error)
  ((struct mlx5_wqe_data_seg *)__pyx_v_self->__pyx_base.segment)->lkey = htobe32(__pyx_t_1);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1661
 *     def lkey(self):
 *         return be32toh((<dv.mlx5_wqe_data_seg *>self.segment).lkey)
 *     @lkey.setter             # <<<<<<<<<<<<<<
 *     def lkey(self, val):
 *         (<dv.mlx5_wqe_data_seg *>self.segment).lkey = htobe32(val)
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeDataSeg.lkey.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1665
 *         (<dv.mlx5_wqe_data_seg *>self.segment).lkey = htobe32(val)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def addr(self):
 *         return be64toh((<dv.mlx5_wqe_data_seg *>self.segment).addr)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_4addr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_4addr_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_4addr___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_4addr___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1667
 *     @property
 *     def addr(self):
 *         return be64toh((<dv.mlx5_wqe_data_seg *>self.segment).addr)             # <<<<<<<<<<<<<<
 *     @addr.setter
 *     def addr(self, val):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_unsigned_long(be64toh(((struct mlx5_wqe_data_seg *)__pyx_v_self->__pyx_base.segment)->addr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1667, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1665
 *         (<dv.mlx5_wqe_data_seg *>self.segment).lkey = htobe32(val)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def addr(self):
 *         return be64toh((<dv.mlx5_wqe_data_seg *>self.segment).addr)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeDataSeg.addr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1668
 *     def addr(self):
 *         return be64toh((<dv.mlx5_wqe_data_seg *>self.segment).addr)
 *     @addr.setter             # <<<<<<<<<<<<<<
 *     def addr(self, val):
 *         (<dv.mlx5_wqe_data_seg *>self.segment).addr = htobe64(val)
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_4addr_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_4addr_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_4addr_2__set__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg *)__pyx_v_self), ((PyObject *)__pyx_v_val));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_4addr_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg *__pyx_v_self, PyObject *__pyx_v_val) {
  int __pyx_r;
  unsigned long __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1670
 *     @addr.setter
 *     def addr(self, val):
 *         (<dv.mlx5_wqe_data_seg *>self.segment).addr = htobe64(val)             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_t_1 = __Pyx_PyLong_As_unsigned_long(__pyx_v_val); if (unlikely((__pyx_t_1 == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(0, 1670, __pyx_L1_error)
  ((struct mlx5_wqe_data_seg *)__pyx_v_self->__pyx_base.segment)->addr = htobe64(__pyx_t_1);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1668
 *     def addr(self):
 *         return be64toh((<dv.mlx5_wqe_data_seg *>self.segment).addr)
 *     @addr.setter             # <<<<<<<<<<<<<<
 *     def addr(self, val):
 *         (<dv.mlx5_wqe_data_seg *>self.segment).addr = htobe64(val)
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeDataSeg.addr.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.segment cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_9__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_9__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_9__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_9__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_8__reduce_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self.segment cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.segment cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_segment_cannot_be_converted, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.segment cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeDataSeg.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.segment cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.segment cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_11__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_11__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_11__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_11__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeDataSeg.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_10__setstate_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self.segment cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.segment cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_segment_cannot_be_converted, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.segment cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.segment cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.WqeDataSeg.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1678
 *     """
 * 
 *     def __init__(self, segments, addr=0):             # <<<<<<<<<<<<<<
 *         """
 *         Create a Wqe with <segments>, in case an address <addr> was not passed
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe___init__, "\n        Create a Wqe with <segments>, in case an address <addr> was not passed\n        by the user, memory would be allocated according to the size needed and\n        the segments are copied over to the buffer.\n        :param segments: The segments (ctrl, data) of the Wqe as PRM format or\n                         WqeSeg instance.\n        :param addr: User address to write the WQE on (Optional)\n        ");
#if CYTHON_UPDATE_DESCRIPTOR_DOC
struct wrapperbase __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe___init__;
#endif
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_segments = 0;
  PyObject *__pyx_v_addr = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_segments,&__pyx_mstate_global->__pyx_n_u_addr,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1678, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1678, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1678, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(0, 1678, __pyx_L3_error)
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 2, i); __PYX_ERR(0, 1678, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1678, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1678, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
    }
    __pyx_v_segments = values[0];
    __pyx_v_addr = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 2, __pyx_nargs); __PYX_ERR(0, 1678, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Wqe.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe___init__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe *)__pyx_v_self), __pyx_v_segments, __pyx_v_addr);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1693
 *         else:
 *             self.is_user_addr = False
 *             allocation_size = sum(map(lambda x: x.sizeof() if isinstance(x, WqeSeg) else len(x),             # <<<<<<<<<<<<<<
 *                                       self.segments))
 *             self.addr = calloc(1, allocation_size)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_8__init___lambda(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_8__init___lambda = {"lambda", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_8__init___lambda, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_8__init___lambda(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_x = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("lambda (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_x,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1693, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1693, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "lambda", 0) < (0)) __PYX_ERR(0, 1693, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("lambda", 1, 1, 1, i); __PYX_ERR(0, 1693, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1693, __pyx_L3_error)
    }
    __pyx_v_x = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("lambda", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1693, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Wqe.__init__.lambda", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_lambda_funcdef_lambda(__pyx_self, __pyx_v_x);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_lambda_funcdef_lambda(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("lambda", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_x, __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg); 
  if (__pyx_t_2) {
    __pyx_t_4 = __pyx_v_x;
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_sizeof, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1693, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {
    __pyx_t_6 = PyObject_Length(__pyx_v_x); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1693, __pyx_L1_error)
    __pyx_t_3 = PyLong_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1693, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Wqe.__init__.lambda", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1678
 *     """
 * 
 *     def __init__(self, segments, addr=0):             # <<<<<<<<<<<<<<
 *         """
 *         Create a Wqe with <segments>, in case an address <addr> was not passed
*/

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe *__pyx_v_self, PyObject *__pyx_v_segments, PyObject *__pyx_v_addr) {
  PyObject *__pyx_v_allocation_size = NULL;
  PyObject *__pyx_v_seg = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  uintptr_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  size_t __pyx_t_8;
  Py_ssize_t __pyx_t_9;
  PyObject *(*__pyx_t_10)(PyObject *);
  uintptr_t __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);
  __Pyx_INCREF(__pyx_v_addr);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1687
 *         :param addr: User address to write the WQE on (Optional)
 *         """
 *         self.segments = segments             # <<<<<<<<<<<<<<
 *         if addr:
 *             self.is_user_addr = True
*/
  __Pyx_INCREF(__pyx_v_segments);
  __Pyx_GIVEREF(__pyx_v_segments);
  __Pyx_GOTREF(__pyx_v_self->segments);
  __Pyx_DECREF(__pyx_v_self->segments);
  __pyx_v_self->segments = __pyx_v_segments;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1688
 *         """
 *         self.segments = segments
 *         if addr:             # <<<<<<<<<<<<<<
 *             self.is_user_addr = True
 *             self.addr = <void*><uintptr_t> addr
*/
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_addr); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 1688, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1689
 *         self.segments = segments
 *         if addr:
 *             self.is_user_addr = True             # <<<<<<<<<<<<<<
 *             self.addr = <void*><uintptr_t> addr
 *         else:
*/
    __pyx_v_self->is_user_addr = 1;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1690
 *         if addr:
 *             self.is_user_addr = True
 *             self.addr = <void*><uintptr_t> addr             # <<<<<<<<<<<<<<
 *         else:
 *             self.is_user_addr = False
*/
    __pyx_t_2 = __Pyx_PyLong_As_size_t(__pyx_v_addr); if (unlikely((__pyx_t_2 == ((uintptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1690, __pyx_L1_error)
    __pyx_v_self->addr = ((void *)((uintptr_t)__pyx_t_2));

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1688
 *         """
 *         self.segments = segments
 *         if addr:             # <<<<<<<<<<<<<<
 *             self.is_user_addr = True
 *             self.addr = <void*><uintptr_t> addr
*/
    goto __pyx_L3;
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1692
 *             self.addr = <void*><uintptr_t> addr
 *         else:
 *             self.is_user_addr = False             # <<<<<<<<<<<<<<
 *             allocation_size = sum(map(lambda x: x.sizeof() if isinstance(x, WqeSeg) else len(x),
 *                                       self.segments))
*/
  /*else*/ {
    __pyx_v_self->is_user_addr = 0;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1693
 *         else:
 *             self.is_user_addr = False
 *             allocation_size = sum(map(lambda x: x.sizeof() if isinstance(x, WqeSeg) else len(x),             # <<<<<<<<<<<<<<
 *                                       self.segments))
 *             self.addr = calloc(1, allocation_size)
*/
    __pyx_t_4 = NULL;
    __pyx_t_6 = NULL;
    __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_8__init___lambda, 0, __pyx_mstate_global->__pyx_n_u_init___locals_lambda, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[0])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1693, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1694
 *             self.is_user_addr = False
 *             allocation_size = sum(map(lambda x: x.sizeof() if isinstance(x, WqeSeg) else len(x),
 *                                       self.segments))             # <<<<<<<<<<<<<<
 *             self.addr = calloc(1, allocation_size)
 *         addr = <uintptr_t>self.addr
*/
    __pyx_t_8 = 1;
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_7, __pyx_v_self->segments};
      __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_map, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1693, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    }
    __pyx_t_8 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_5};
      __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_sum, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1693, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __pyx_v_allocation_size = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1695
 *             allocation_size = sum(map(lambda x: x.sizeof() if isinstance(x, WqeSeg) else len(x),
 *                                       self.segments))
 *             self.addr = calloc(1, allocation_size)             # <<<<<<<<<<<<<<
 *         addr = <uintptr_t>self.addr
 *         for seg in self.segments:
*/
    __pyx_t_8 = __Pyx_PyLong_As_size_t(__pyx_v_allocation_size); if (unlikely((__pyx_t_8 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1695, __pyx_L1_error)
    __pyx_v_self->addr = calloc(1, __pyx_t_8);
  }
  __pyx_L3:;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1696
 *                                       self.segments))
 *             self.addr = calloc(1, allocation_size)
 *         addr = <uintptr_t>self.addr             # <<<<<<<<<<<<<<
 *         for seg in self.segments:
 *             if isinstance(seg, WqeSeg):
*/
  __pyx_t_3 = __Pyx_PyLong_FromSize_t(((uintptr_t)__pyx_v_self->addr)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1696, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF_SET(__pyx_v_addr, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1697
 *             self.addr = calloc(1, allocation_size)
 *         addr = <uintptr_t>self.addr
 *         for seg in self.segments:             # <<<<<<<<<<<<<<
 *             if isinstance(seg, WqeSeg):
 *                 seg._copy_to_buffer(addr)
*/
  if (likely(PyList_CheckExact(__pyx_v_self->segments)) || PyTuple_CheckExact(__pyx_v_self->segments)) {
    __pyx_t_3 = __pyx_v_self->segments; __Pyx_INCREF(__pyx_t_3);
    __pyx_t_9 = 0;
    __pyx_t_10 = NULL;
  } else {
    __pyx_t_9 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_self->segments); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1697, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_10 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1697, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_10)) {
      if (likely(PyList_CheckExact(__pyx_t_3))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1697, __pyx_L1_error)
          #endif
          if (__pyx_t_9 >= __pyx_temp) break;
        }
        __pyx_t_5 = __Pyx_PyList_GetItemRefFast(__pyx_t_3, __pyx_t_9, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_9;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1697, __pyx_L1_error)
          #endif
          if (__pyx_t_9 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_9));
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_9);
        #endif
        ++__pyx_t_9;
      }
      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1697, __pyx_L1_error)
    } else {
      __pyx_t_5 = __pyx_t_10(__pyx_t_3);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 1697, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_XDECREF_SET(__pyx_v_seg, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1698
 *         addr = <uintptr_t>self.addr
 *         for seg in self.segments:
 *             if isinstance(seg, WqeSeg):             # <<<<<<<<<<<<<<
 *                 seg._copy_to_buffer(addr)
 *                 addr += seg.sizeof()
*/
    __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_seg, __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg); 
    if (__pyx_t_1) {

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":1699
 *         for seg in self.segments:
 *             if isinstance(seg, WqeSeg):
 *                 seg._copy_to_buffer(addr)             # <<<<<<<<<<<<<<
 *                 addr += seg.sizeof()
 *             else:  # PRM format
*/
      __pyx_t_4 = __pyx_v_seg;
      __Pyx_INCREF(__pyx_t_4);
      __pyx_t_8 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_addr};
        __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_copy_to_buffer, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1699, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
      }
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":1700
 *             if isinstance(seg, WqeSeg):
 *                 seg._copy_to_buffer(addr)
 *                 addr += seg.sizeof()             # <<<<<<<<<<<<<<
 *             else:  # PRM format
 *                 addr = copy_data_to_addr(addr, seg)
*/
      __pyx_t_4 = __pyx_v_seg;
      __Pyx_INCREF(__pyx_t_4);
      __pyx_t_8 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
        __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_sizeof, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1700, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
      }
      __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_addr, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1700, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF_SET(__pyx_v_addr, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":1698
 *         addr = <uintptr_t>self.addr
 *         for seg in self.segments:
 *             if isinstance(seg, WqeSeg):             # <<<<<<<<<<<<<<
 *                 seg._copy_to_buffer(addr)
 *                 addr += seg.sizeof()
*/
      goto __pyx_L6;
    }

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1702
 *                 addr += seg.sizeof()
 *             else:  # PRM format
 *                 addr = copy_data_to_addr(addr, seg)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
    /*else*/ {
      __pyx_t_2 = __Pyx_PyLong_As_size_t(__pyx_v_addr); if (unlikely((__pyx_t_2 == ((uintptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1702, __pyx_L1_error)
      __pyx_t_11 = __pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_copy_data_to_addr(__pyx_t_2, __pyx_v_seg); if (unlikely(__pyx_t_11 == ((uintptr_t)-1L) && PyErr_Occurred())) __PYX_ERR(0, 1702, __pyx_L1_error)
      __pyx_t_4 = __Pyx_PyLong_FromSize_t(__pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1702, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF_SET(__pyx_v_addr, __pyx_t_4);
      __pyx_t_4 = 0;
    }
    __pyx_L6:;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1697
 *             self.addr = calloc(1, allocation_size)
 *         addr = <uintptr_t>self.addr
 *         for seg in self.segments:             # <<<<<<<<<<<<<<
 *             if isinstance(seg, WqeSeg):
 *                 seg._copy_to_buffer(addr)
*/
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1678
 *     """
 * 
 *     def __init__(self, segments, addr=0):             # <<<<<<<<<<<<<<
 *         """
 *         Create a Wqe with <segments>, in case an address <addr> was not passed
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Wqe.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_allocation_size);
  __Pyx_XDECREF(__pyx_v_seg);
  __Pyx_XDECREF(__pyx_v_addr);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1704
 *                 addr = copy_data_to_addr(addr, seg)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def address(self):
 *         return <uintptr_t>self.addr
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_7address_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_7address_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_7address___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_7address___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1706
 *     @property
 *     def address(self):
 *         return <uintptr_t>self.addr             # <<<<<<<<<<<<<<
 * 
 *     def __str__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_FromSize_t(((uintptr_t)__pyx_v_self->addr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1706, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1704
 *                 addr = copy_data_to_addr(addr, seg)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def address(self):
 *         return <uintptr_t>self.addr
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Wqe.address.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1708
 *         return <uintptr_t>self.addr
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         ret_str = ''
 *         i = 0
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_3__str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_3__str__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_2__str__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_2__str__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe *__pyx_v_self) {
  PyObject *__pyx_v_ret_str = NULL;
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_v_segment = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6[5];
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1709
 * 
 *     def __str__(self):
 *         ret_str = ''             # <<<<<<<<<<<<<<
 *         i = 0
 *         for segment in self.segments:
*/
  __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u__3);
  __pyx_v_ret_str = __pyx_mstate_global->__pyx_kp_u__3;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1710
 *     def __str__(self):
 *         ret_str = ''
 *         i = 0             # <<<<<<<<<<<<<<
 *         for segment in self.segments:
 *             ret_str += f'Segment type {type(segment)} #{i}:\n' + str(segment)
*/
  __Pyx_INCREF(__pyx_mstate_global->__pyx_int_0);
  __pyx_v_i = __pyx_mstate_global->__pyx_int_0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1711
 *         ret_str = ''
 *         i = 0
 *         for segment in self.segments:             # <<<<<<<<<<<<<<
 *             ret_str += f'Segment type {type(segment)} #{i}:\n' + str(segment)
 *             i += 1
*/
  if (likely(PyList_CheckExact(__pyx_v_self->segments)) || PyTuple_CheckExact(__pyx_v_self->segments)) {
    __pyx_t_1 = __pyx_v_self->segments; __Pyx_INCREF(__pyx_t_1);
    __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_self->segments); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1711, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1711, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1711, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        __pyx_t_4 = __Pyx_PyList_GetItemRefFast(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference);
        ++__pyx_t_2;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1711, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2));
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2);
        #endif
        ++__pyx_t_2;
      }
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1711, __pyx_L1_error)
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 1711, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_XDECREF_SET(__pyx_v_segment, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1712
 *         i = 0
 *         for segment in self.segments:
 *             ret_str += f'Segment type {type(segment)} #{i}:\n' + str(segment)             # <<<<<<<<<<<<<<
 *             i += 1
 *         return ret_str
*/
    __pyx_t_4 = __Pyx_PyObject_FormatSimple(((PyObject *)Py_TYPE(__pyx_v_segment)), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1712, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_i, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1712, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6[0] = __pyx_mstate_global->__pyx_kp_u_Segment_type;
    __pyx_t_6[1] = __pyx_t_4;
    __pyx_t_6[2] = __pyx_mstate_global->__pyx_kp_u__7;
    __pyx_t_6[3] = __pyx_t_5;
    __pyx_t_6[4] = __pyx_mstate_global->__pyx_kp_u__8;
    __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_6, 5, 13 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 2 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5));
    if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1712, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyObject_Unicode(__pyx_v_segment); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1712, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1712, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_v_ret_str, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1712, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF_SET(__pyx_v_ret_str, ((PyObject*)__pyx_t_5));
    __pyx_t_5 = 0;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1713
 *         for segment in self.segments:
 *             ret_str += f'Segment type {type(segment)} #{i}:\n' + str(segment)
 *             i += 1             # <<<<<<<<<<<<<<
 *         return ret_str
 * 
*/
    __pyx_t_5 = __Pyx_PyLong_AddObjC(__pyx_v_i, __pyx_mstate_global->__pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1713, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF_SET(__pyx_v_i, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1711
 *         ret_str = ''
 *         i = 0
 *         for segment in self.segments:             # <<<<<<<<<<<<<<
 *             ret_str += f'Segment type {type(segment)} #{i}:\n' + str(segment)
 *             i += 1
*/
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1714
 *             ret_str += f'Segment type {type(segment)} #{i}:\n' + str(segment)
 *             i += 1
 *         return ret_str             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_ret_str);
  __pyx_r = __pyx_v_ret_str;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1708
 *         return <uintptr_t>self.addr
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         ret_str = ''
 *         i = 0
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Wqe.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ret_str);
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_segment);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1716
 *         return ret_str
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         self.close()
 * 
*/

/* Python wrapper */
static void __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_5__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_5__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_4__dealloc__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_4__dealloc__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1717
 * 
 *     def __dealloc__(self):
 *         self.close()             # <<<<<<<<<<<<<<
 * 
 *     cpdef close(self):
*/
  __pyx_t_1 = ((struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.close(((struct __pyx_obj_7pyverbs_4base_PyverbsCM *)__pyx_v_self), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1717, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1716
 *         return ret_str
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         self.close()
 * 
*/

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("pyverbs.providers.mlx5.mlx5dv.Wqe.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1719
 *         self.close()
 * 
 *     cpdef close(self):             # <<<<<<<<<<<<<<
 *         if self.addr != NULL:
 *             if not self.is_user_addr:
*/

static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_7close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyObject *__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe *__pyx_v_self, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("close", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (
  #if !CYTHON_USE_TYPE_SLOTS
  unlikely(Py_TYPE(((PyObject *)__pyx_v_self)) != __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe &&
  __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), Py_TPFLAGS_HAVE_GC))
  #else
  unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0 || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))
  #endif
  ) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_close); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1719, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!__Pyx_IsSameCFunction(__pyx_t_1, (void(*)(void)) __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_7close)) {
        __Pyx_XDECREF(__pyx_r);
        __pyx_t_3 = NULL;
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_4 = __pyx_t_1; 
        __pyx_t_5 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
          assert(__pyx_t_3);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
          __pyx_t_5 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
          __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1719, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
        }
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1720
 * 
 *     cpdef close(self):
 *         if self.addr != NULL:             # <<<<<<<<<<<<<<
 *             if not self.is_user_addr:
 *                 free(self.addr)
*/
  __pyx_t_6 = (__pyx_v_self->addr != NULL);
  if (__pyx_t_6) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1721
 *     cpdef close(self):
 *         if self.addr != NULL:
 *             if not self.is_user_addr:             # <<<<<<<<<<<<<<
 *                 free(self.addr)
 *             self.addr = NULL
*/
    __pyx_t_6 = (!(__pyx_v_self->is_user_addr != 0));
    if (__pyx_t_6) {

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":1722
 *         if self.addr != NULL:
 *             if not self.is_user_addr:
 *                 free(self.addr)             # <<<<<<<<<<<<<<
 *             self.addr = NULL
 * 
*/
      free(__pyx_v_self->addr);

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":1721
 *     cpdef close(self):
 *         if self.addr != NULL:
 *             if not self.is_user_addr:             # <<<<<<<<<<<<<<
 *                 free(self.addr)
 *             self.addr = NULL
*/
    }

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1723
 *             if not self.is_user_addr:
 *                 free(self.addr)
 *             self.addr = NULL             # <<<<<<<<<<<<<<
 * 
 * 
*/
    __pyx_v_self->addr = NULL;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1720
 * 
 *     cpdef close(self):
 *         if self.addr != NULL:             # <<<<<<<<<<<<<<
 *             if not self.is_user_addr:
 *                 free(self.addr)
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1719
 *         self.close()
 * 
 *     cpdef close(self):             # <<<<<<<<<<<<<<
 *         if self.addr != NULL:
 *             if not self.is_user_addr:
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Wqe.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_7close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_7close = {"close", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_7close, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_7close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("close (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("close", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("close", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_6close(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_6close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("close", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_close(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1719, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Wqe.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.addr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_9__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_9__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_9__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_9__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_8__reduce_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self.addr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.addr cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_addr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.addr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Wqe.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.addr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.addr cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_11__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_11__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_11__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_11__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Wqe.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_10__setstate_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self.addr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.addr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_addr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.addr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.addr cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Wqe.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1727
 * 
 * cdef class Mlx5UMEM(PyverbsCM):
 *     def __init__(self, Context context not None, size, addr=None, alignment=64,             # <<<<<<<<<<<<<<
 *                  access=0, pgsz_bitmap=0, comp_mask=0, dmabuf_fd=0):
 *         """
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM___init__, "\n        User memory object to be used by the DevX interface.\n        If pgsz_bitmap or comp_mask were passed, the extended umem registration\n        will be used.\n        :param context: RDMA device context to create the action on\n        :param size: The size of the addr buffer (or the internal buffer to be\n                     allocated if addr is None)\n        :param alignment: The alignment of the internally allocated buffer\n                          (Valid if addr is None)\n        :param addr: The memory start address to register (if None, the address\n                     will be allocated internally)\n        :param access: The desired memory protection attributes (default: 0)\n        :param pgsz_bitmap: Represents the required page sizes\n        :param comp_mask: Compatibility mask\n        :param dmabuf_fd: FD of a dmabuf\n        ");
#if CYTHON_UPDATE_DESCRIPTOR_DOC
struct wrapperbase __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM___init__;
#endif
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_context = 0;
  PyObject *__pyx_v_size = 0;
  PyObject *__pyx_v_addr = 0;
  PyObject *__pyx_v_alignment = 0;
  PyObject *__pyx_v_access = 0;
  PyObject *__pyx_v_pgsz_bitmap = 0;
  PyObject *__pyx_v_comp_mask = 0;
  PyObject *__pyx_v_dmabuf_fd = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[8] = {0,0,0,0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_context,&__pyx_mstate_global->__pyx_n_u_size,&__pyx_mstate_global->__pyx_n_u_addr,&__pyx_mstate_global->__pyx_n_u_alignment,&__pyx_mstate_global->__pyx_n_u_access,&__pyx_mstate_global->__pyx_n_u_pgsz_bitmap,&__pyx_mstate_global->__pyx_n_u_comp_mask,&__pyx_mstate_global->__pyx_n_u_dmabuf_fd,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1727, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  8:
        values[7] = __Pyx_ArgRef_VARARGS(__pyx_args, 7);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[7])) __PYX_ERR(0, 1727, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  7:
        values[6] = __Pyx_ArgRef_VARARGS(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 1727, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_VARARGS(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 1727, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_VARARGS(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 1727, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_VARARGS(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 1727, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 1727, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1727, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1727, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(0, 1727, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_64));
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 8, i); __PYX_ERR(0, 1727, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  8:
        values[7] = __Pyx_ArgRef_VARARGS(__pyx_args, 7);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[7])) __PYX_ERR(0, 1727, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  7:
        values[6] = __Pyx_ArgRef_VARARGS(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 1727, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_VARARGS(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 1727, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_VARARGS(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 1727, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_VARARGS(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 1727, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 1727, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1727, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1727, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_64));
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
      if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
    }
    __pyx_v_context = ((struct __pyx_obj_7pyverbs_6device_Context *)values[0]);
    __pyx_v_size = values[1];
    __pyx_v_addr = values[2];
    __pyx_v_alignment = values[3];
    __pyx_v_access = values[4];
    __pyx_v_pgsz_bitmap = values[5];
    __pyx_v_comp_mask = values[6];
    __pyx_v_dmabuf_fd = values[7];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 8, __pyx_nargs); __PYX_ERR(0, 1727, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5UMEM.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_context), __pyx_mstate_global->__pyx_ptype_7pyverbs_6device_Context, 0, "context", 0))) __PYX_ERR(0, 1727, __pyx_L1_error)
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM___init__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM *)__pyx_v_self), __pyx_v_context, __pyx_v_size, __pyx_v_addr, __pyx_v_alignment, __pyx_v_access, __pyx_v_pgsz_bitmap, __pyx_v_comp_mask, __pyx_v_dmabuf_fd);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM *__pyx_v_self, struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_context, PyObject *__pyx_v_size, PyObject *__pyx_v_addr, PyObject *__pyx_v_alignment, PyObject *__pyx_v_access, PyObject *__pyx_v_pgsz_bitmap, PyObject *__pyx_v_comp_mask, PyObject *__pyx_v_dmabuf_fd) {
  struct mlx5dv_devx_umem_in __pyx_v_umem_in;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_t_6;
  uintptr_t __pyx_t_7;
  int __pyx_t_8;
  void *__pyx_t_9;
  uint32_t __pyx_t_10;
  uint64_t __pyx_t_11;
  int __pyx_t_12;
  unsigned long __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1745
 *         :param dmabuf_fd: FD of a dmabuf
 *         """
 *         super().__init__()             # <<<<<<<<<<<<<<
 *         cdef dv.mlx5dv_devx_umem_in umem_in
 * 
*/
  __pyx_t_4 = NULL;
  __pyx_t_5 = 1;
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, ((PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM), ((PyObject *)__pyx_v_self)};
    __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_super, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1745, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_t_2 = __pyx_t_3;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_init, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1745, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1748
 *         cdef dv.mlx5dv_devx_umem_in umem_in
 * 
 *         if addr is not None:             # <<<<<<<<<<<<<<
 *             self.addr = <void*><uintptr_t>addr
 *             self.is_user_addr = True
*/
  __pyx_t_6 = (__pyx_v_addr != Py_None);
  if (__pyx_t_6) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1749
 * 
 *         if addr is not None:
 *             self.addr = <void*><uintptr_t>addr             # <<<<<<<<<<<<<<
 *             self.is_user_addr = True
 *         else:
*/
    __pyx_t_7 = __Pyx_PyLong_As_size_t(__pyx_v_addr); if (unlikely((__pyx_t_7 == ((uintptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1749, __pyx_L1_error)
    __pyx_v_self->addr = ((void *)((uintptr_t)__pyx_t_7));

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1750
 *         if addr is not None:
 *             self.addr = <void*><uintptr_t>addr
 *             self.is_user_addr = True             # <<<<<<<<<<<<<<
 *         else:
 *             self.addr = <void*><uintptr_t>posix_memalign(size, alignment)
*/
    __Pyx_INCREF(Py_True);
    __Pyx_GIVEREF(Py_True);
    __Pyx_GOTREF(__pyx_v_self->is_user_addr);
    __Pyx_DECREF(__pyx_v_self->is_user_addr);
    __pyx_v_self->is_user_addr = Py_True;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1748
 *         cdef dv.mlx5dv_devx_umem_in umem_in
 * 
 *         if addr is not None:             # <<<<<<<<<<<<<<
 *             self.addr = <void*><uintptr_t>addr
 *             self.is_user_addr = True
*/
    goto __pyx_L3;
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1752
 *             self.is_user_addr = True
 *         else:
 *             self.addr = <void*><uintptr_t>posix_memalign(size, alignment)             # <<<<<<<<<<<<<<
 *             memset(self.addr, 0, size)
 *             self.is_user_addr = False
*/
  /*else*/ {
    __pyx_t_3 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_posix_memalign); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1752, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_2, __pyx__function);
      __pyx_t_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_v_size, __pyx_v_alignment};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1752, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __pyx_t_7 = __Pyx_PyLong_As_size_t(__pyx_t_1); if (unlikely((__pyx_t_7 == ((uintptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1752, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_self->addr = ((void *)((uintptr_t)__pyx_t_7));

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1753
 *         else:
 *             self.addr = <void*><uintptr_t>posix_memalign(size, alignment)
 *             memset(self.addr, 0, size)             # <<<<<<<<<<<<<<
 *             self.is_user_addr = False
 * 
*/
    __pyx_t_5 = __Pyx_PyLong_As_size_t(__pyx_v_size); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1753, __pyx_L1_error)
    (void)(memset(__pyx_v_self->addr, 0, __pyx_t_5));

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1754
 *             self.addr = <void*><uintptr_t>posix_memalign(size, alignment)
 *             memset(self.addr, 0, size)
 *             self.is_user_addr = False             # <<<<<<<<<<<<<<
 * 
 *         if pgsz_bitmap or comp_mask:
*/
    __Pyx_INCREF(Py_False);
    __Pyx_GIVEREF(Py_False);
    __Pyx_GOTREF(__pyx_v_self->is_user_addr);
    __Pyx_DECREF(__pyx_v_self->is_user_addr);
    __pyx_v_self->is_user_addr = Py_False;
  }
  __pyx_L3:;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1756
 *             self.is_user_addr = False
 * 
 *         if pgsz_bitmap or comp_mask:             # <<<<<<<<<<<<<<
 *             umem_in.addr = self.addr
 *             umem_in.size = size
*/
  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_pgsz_bitmap); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 1756, __pyx_L1_error)
  if (!__pyx_t_8) {
  } else {
    __pyx_t_6 = __pyx_t_8;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_comp_mask); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 1756, __pyx_L1_error)
  __pyx_t_6 = __pyx_t_8;
  __pyx_L5_bool_binop_done:;
  if (__pyx_t_6) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1757
 * 
 *         if pgsz_bitmap or comp_mask:
 *             umem_in.addr = self.addr             # <<<<<<<<<<<<<<
 *             umem_in.size = size
 *             umem_in.access = access
*/
    __pyx_t_9 = __pyx_v_self->addr;
    __pyx_v_umem_in.addr = __pyx_t_9;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1758
 *         if pgsz_bitmap or comp_mask:
 *             umem_in.addr = self.addr
 *             umem_in.size = size             # <<<<<<<<<<<<<<
 *             umem_in.access = access
 *             umem_in.pgsz_bitmap = pgsz_bitmap
*/
    __pyx_t_5 = __Pyx_PyLong_As_size_t(__pyx_v_size); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1758, __pyx_L1_error)
    __pyx_v_umem_in.size = __pyx_t_5;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1759
 *             umem_in.addr = self.addr
 *             umem_in.size = size
 *             umem_in.access = access             # <<<<<<<<<<<<<<
 *             umem_in.pgsz_bitmap = pgsz_bitmap
 *             umem_in.comp_mask = comp_mask
*/
    __pyx_t_10 = __Pyx_PyLong_As_uint32_t(__pyx_v_access); if (unlikely((__pyx_t_10 == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1759, __pyx_L1_error)
    __pyx_v_umem_in.access = __pyx_t_10;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1760
 *             umem_in.size = size
 *             umem_in.access = access
 *             umem_in.pgsz_bitmap = pgsz_bitmap             # <<<<<<<<<<<<<<
 *             umem_in.comp_mask = comp_mask
 *             umem_in.dmabuf_fd = dmabuf_fd
*/
    __pyx_t_11 = __Pyx_PyLong_As_uint64_t(__pyx_v_pgsz_bitmap); if (unlikely((__pyx_t_11 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1760, __pyx_L1_error)
    __pyx_v_umem_in.pgsz_bitmap = __pyx_t_11;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1761
 *             umem_in.access = access
 *             umem_in.pgsz_bitmap = pgsz_bitmap
 *             umem_in.comp_mask = comp_mask             # <<<<<<<<<<<<<<
 *             umem_in.dmabuf_fd = dmabuf_fd
 *             self.umem = dv.mlx5dv_devx_umem_reg_ex(context.context, &umem_in)
*/
    __pyx_t_11 = __Pyx_PyLong_As_uint64_t(__pyx_v_comp_mask); if (unlikely((__pyx_t_11 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1761, __pyx_L1_error)
    __pyx_v_umem_in.comp_mask = __pyx_t_11;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1762
 *             umem_in.pgsz_bitmap = pgsz_bitmap
 *             umem_in.comp_mask = comp_mask
 *             umem_in.dmabuf_fd = dmabuf_fd             # <<<<<<<<<<<<<<
 *             self.umem = dv.mlx5dv_devx_umem_reg_ex(context.context, &umem_in)
 *         else:
*/
    __pyx_t_12 = __Pyx_PyLong_As_int(__pyx_v_dmabuf_fd); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1762, __pyx_L1_error)
    __pyx_v_umem_in.dmabuf_fd = __pyx_t_12;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1763
 *             umem_in.comp_mask = comp_mask
 *             umem_in.dmabuf_fd = dmabuf_fd
 *             self.umem = dv.mlx5dv_devx_umem_reg_ex(context.context, &umem_in)             # <<<<<<<<<<<<<<
 *         else:
 *             self.umem = dv.mlx5dv_devx_umem_reg(context.context, self.addr,
*/
    __pyx_v_self->umem = mlx5dv_devx_umem_reg_ex(__pyx_v_context->context, (&__pyx_v_umem_in));

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1756
 *             self.is_user_addr = False
 * 
 *         if pgsz_bitmap or comp_mask:             # <<<<<<<<<<<<<<
 *             umem_in.addr = self.addr
 *             umem_in.size = size
*/
    goto __pyx_L4;
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1765
 *             self.umem = dv.mlx5dv_devx_umem_reg_ex(context.context, &umem_in)
 *         else:
 *             self.umem = dv.mlx5dv_devx_umem_reg(context.context, self.addr,             # <<<<<<<<<<<<<<
 *                                                 size, access)
 *         if self.umem == NULL:
*/
  /*else*/ {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1766
 *         else:
 *             self.umem = dv.mlx5dv_devx_umem_reg(context.context, self.addr,
 *                                                 size, access)             # <<<<<<<<<<<<<<
 *         if self.umem == NULL:
 *             raise PyverbsRDMAErrno("Failed to register a UMEM.")
*/
    __pyx_t_5 = __Pyx_PyLong_As_size_t(__pyx_v_size); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1766, __pyx_L1_error)
    __pyx_t_13 = __Pyx_PyLong_As_unsigned_long(__pyx_v_access); if (unlikely((__pyx_t_13 == (unsigned long)-1) && PyErr_Occurred())) __PYX_ERR(0, 1766, __pyx_L1_error)

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1765
 *             self.umem = dv.mlx5dv_devx_umem_reg_ex(context.context, &umem_in)
 *         else:
 *             self.umem = dv.mlx5dv_devx_umem_reg(context.context, self.addr,             # <<<<<<<<<<<<<<
 *                                                 size, access)
 *         if self.umem == NULL:
*/
    __pyx_v_self->umem = mlx5dv_devx_umem_reg(__pyx_v_context->context, __pyx_v_self->addr, __pyx_t_5, __pyx_t_13);
  }
  __pyx_L4:;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1767
 *             self.umem = dv.mlx5dv_devx_umem_reg(context.context, self.addr,
 *                                                 size, access)
 *         if self.umem == NULL:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAErrno("Failed to register a UMEM.")
 *         self.context = context
*/
  __pyx_t_6 = (__pyx_v_self->umem == NULL);
  if (unlikely(__pyx_t_6)) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1768
 *                                                 size, access)
 *         if self.umem == NULL:
 *             raise PyverbsRDMAErrno("Failed to register a UMEM.")             # <<<<<<<<<<<<<<
 *         self.context = context
 *         self.context.add_ref(self)
*/
    __pyx_t_2 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_PyverbsRDMAErrno); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1768, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
      assert(__pyx_t_2);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
      __pyx_t_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Failed_to_register_a_UMEM};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1768, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(0, 1768, __pyx_L1_error)

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1767
 *             self.umem = dv.mlx5dv_devx_umem_reg(context.context, self.addr,
 *                                                 size, access)
 *         if self.umem == NULL:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAErrno("Failed to register a UMEM.")
 *         self.context = context
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1769
 *         if self.umem == NULL:
 *             raise PyverbsRDMAErrno("Failed to register a UMEM.")
 *         self.context = context             # <<<<<<<<<<<<<<
 *         self.context.add_ref(self)
 * 
*/
  __Pyx_INCREF((PyObject *)__pyx_v_context);
  __Pyx_GIVEREF((PyObject *)__pyx_v_context);
  __Pyx_GOTREF((PyObject *)__pyx_v_self->context);
  __Pyx_DECREF((PyObject *)__pyx_v_self->context);
  __pyx_v_self->context = __pyx_v_context;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1770
 *             raise PyverbsRDMAErrno("Failed to register a UMEM.")
 *         self.context = context
 *         self.context.add_ref(self)             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_1 = ((struct __pyx_vtabstruct_7pyverbs_6device_Context *)__pyx_v_self->context->__pyx_base.__pyx_vtab)->add_ref(__pyx_v_self->context, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1770, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1727
 * 
 * cdef class Mlx5UMEM(PyverbsCM):
 *     def __init__(self, Context context not None, size, addr=None, alignment=64,             # <<<<<<<<<<<<<<
 *                  access=0, pgsz_bitmap=0, comp_mask=0, dmabuf_fd=0):
 *         """
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5UMEM.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1772
 *         self.context.add_ref(self)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         self.close()
 * 
*/

/* Python wrapper */
static void __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_2__dealloc__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_2__dealloc__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1773
 * 
 *     def __dealloc__(self):
 *         self.close()             # <<<<<<<<<<<<<<
 * 
 *     cpdef close(self):
*/
  __pyx_t_1 = ((struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.close(((struct __pyx_obj_7pyverbs_4base_PyverbsCM *)__pyx_v_self), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1773, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1772
 *         self.context.add_ref(self)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         self.close()
 * 
*/

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("pyverbs.providers.mlx5.mlx5dv.Mlx5UMEM.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1775
 *         self.close()
 * 
 *     cpdef close(self):             # <<<<<<<<<<<<<<
 *         if self.umem != NULL:
 *             if self.logger:
*/

static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_5close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyObject *__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM *__pyx_v_self, int __pyx_skip_dispatch) {
  int __pyx_v_rc;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  int __pyx_t_8;
  int __pyx_t_9;
  char const *__pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("close", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (
  #if !CYTHON_USE_TYPE_SLOTS
  unlikely(Py_TYPE(((PyObject *)__pyx_v_self)) != __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM &&
  __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), Py_TPFLAGS_HAVE_GC))
  #else
  unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0 || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))
  #endif
  ) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_close); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1775, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!__Pyx_IsSameCFunction(__pyx_t_1, (void(*)(void)) __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_5close)) {
        __Pyx_XDECREF(__pyx_r);
        __pyx_t_3 = NULL;
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_4 = __pyx_t_1; 
        __pyx_t_5 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
          assert(__pyx_t_3);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
          __pyx_t_5 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
          __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1775, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
        }
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1776
 * 
 *     cpdef close(self):
 *         if self.umem != NULL:             # <<<<<<<<<<<<<<
 *             if self.logger:
 *                 self.logger.debug('Closing Mlx5UMEM')
*/
  __pyx_t_6 = (__pyx_v_self->umem != NULL);
  if (__pyx_t_6) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1777
 *     cpdef close(self):
 *         if self.umem != NULL:
 *             if self.logger:             # <<<<<<<<<<<<<<
 *                 self.logger.debug('Closing Mlx5UMEM')
 *             rc = dv.mlx5dv_devx_umem_dereg(self.umem)
*/
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_self->__pyx_base.__pyx_base.logger); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 1777, __pyx_L1_error)
    if (__pyx_t_6) {

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":1778
 *         if self.umem != NULL:
 *             if self.logger:
 *                 self.logger.debug('Closing Mlx5UMEM')             # <<<<<<<<<<<<<<
 *             rc = dv.mlx5dv_devx_umem_dereg(self.umem)
 *             try:
*/
      __pyx_t_2 = __pyx_v_self->__pyx_base.__pyx_base.logger;
      __Pyx_INCREF(__pyx_t_2);
      __pyx_t_5 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Closing_Mlx5UMEM};
        __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_debug, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1778, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":1777
 *     cpdef close(self):
 *         if self.umem != NULL:
 *             if self.logger:             # <<<<<<<<<<<<<<
 *                 self.logger.debug('Closing Mlx5UMEM')
 *             rc = dv.mlx5dv_devx_umem_dereg(self.umem)
*/
    }

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1779
 *             if self.logger:
 *                 self.logger.debug('Closing Mlx5UMEM')
 *             rc = dv.mlx5dv_devx_umem_dereg(self.umem)             # <<<<<<<<<<<<<<
 *             try:
 *                 if rc:
*/
    __pyx_v_rc = mlx5dv_devx_umem_dereg(__pyx_v_self->umem);

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1780
 *                 self.logger.debug('Closing Mlx5UMEM')
 *             rc = dv.mlx5dv_devx_umem_dereg(self.umem)
 *             try:             # <<<<<<<<<<<<<<
 *                 if rc:
 *                     raise PyverbsError("Failed to dereg UMEM.", rc)
*/
    /*try:*/ {

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":1781
 *             rc = dv.mlx5dv_devx_umem_dereg(self.umem)
 *             try:
 *                 if rc:             # <<<<<<<<<<<<<<
 *                     raise PyverbsError("Failed to dereg UMEM.", rc)
 *             finally:
*/
      __pyx_t_6 = (__pyx_v_rc != 0);
      if (unlikely(__pyx_t_6)) {

        /* "pyverbs/providers/mlx5/mlx5dv.pyx":1782
 *             try:
 *                 if rc:
 *                     raise PyverbsError("Failed to dereg UMEM.", rc)             # <<<<<<<<<<<<<<
 *             finally:
 *                 if not self.is_user_addr:
*/
        __pyx_t_2 = NULL;
        __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_PyverbsError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1782, __pyx_L6_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1782, __pyx_L6_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_5 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
          assert(__pyx_t_2);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_2);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
          __pyx_t_5 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Failed_to_dereg_UMEM, __pyx_t_3};
          __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1782, __pyx_L6_error)
          __Pyx_GOTREF(__pyx_t_1);
        }
        __Pyx_Raise(__pyx_t_1, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __PYX_ERR(0, 1782, __pyx_L6_error)

        /* "pyverbs/providers/mlx5/mlx5dv.pyx":1781
 *             rc = dv.mlx5dv_devx_umem_dereg(self.umem)
 *             try:
 *                 if rc:             # <<<<<<<<<<<<<<
 *                     raise PyverbsError("Failed to dereg UMEM.", rc)
 *             finally:
*/
      }
    }

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1784
 *                     raise PyverbsError("Failed to dereg UMEM.", rc)
 *             finally:
 *                 if not self.is_user_addr:             # <<<<<<<<<<<<<<
 *                     free(self.addr)
 *             self.umem = NULL
*/
    /*finally:*/ {
      /*normal exit:*/{
        __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_self->is_user_addr); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 1784, __pyx_L1_error)
        __pyx_t_7 = (!__pyx_t_6);
        if (__pyx_t_7) {

          /* "pyverbs/providers/mlx5/mlx5dv.pyx":1785
 *             finally:
 *                 if not self.is_user_addr:
 *                     free(self.addr)             # <<<<<<<<<<<<<<
 *             self.umem = NULL
 *             self.context = None
*/
          free(__pyx_v_self->addr);

          /* "pyverbs/providers/mlx5/mlx5dv.pyx":1784
 *                     raise PyverbsError("Failed to dereg UMEM.", rc)
 *             finally:
 *                 if not self.is_user_addr:             # <<<<<<<<<<<<<<
 *                     free(self.addr)
 *             self.umem = NULL
*/
        }
        goto __pyx_L7;
      }
      __pyx_L6_error:;
      /*exception exit:*/{
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
         __Pyx_ExceptionSwap(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
        if ( unlikely(__Pyx_GetException(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13) < 0)) __Pyx_ErrFetch(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
        __Pyx_XGOTREF(__pyx_t_11);
        __Pyx_XGOTREF(__pyx_t_12);
        __Pyx_XGOTREF(__pyx_t_13);
        __Pyx_XGOTREF(__pyx_t_14);
        __Pyx_XGOTREF(__pyx_t_15);
        __Pyx_XGOTREF(__pyx_t_16);
        __pyx_t_8 = __pyx_lineno; __pyx_t_9 = __pyx_clineno; __pyx_t_10 = __pyx_filename;
        {
          __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_self->is_user_addr); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1784, __pyx_L11_error)
          __pyx_t_6 = (!__pyx_t_7);
          if (__pyx_t_6) {

            /* "pyverbs/providers/mlx5/mlx5dv.pyx":1785
 *             finally:
 *                 if not self.is_user_addr:
 *                     free(self.addr)             # <<<<<<<<<<<<<<
 *             self.umem = NULL
 *             self.context = None
*/
            free(__pyx_v_self->addr);

            /* "pyverbs/providers/mlx5/mlx5dv.pyx":1784
 *                     raise PyverbsError("Failed to dereg UMEM.", rc)
 *             finally:
 *                 if not self.is_user_addr:             # <<<<<<<<<<<<<<
 *                     free(self.addr)
 *             self.umem = NULL
*/
          }
        }
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_XGIVEREF(__pyx_t_15);
        __Pyx_XGIVEREF(__pyx_t_16);
        __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_ErrRestore(__pyx_t_11, __pyx_t_12, __pyx_t_13);
        __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0;
        __pyx_lineno = __pyx_t_8; __pyx_clineno = __pyx_t_9; __pyx_filename = __pyx_t_10;
        goto __pyx_L1_error;
        __pyx_L11_error:;
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_XGIVEREF(__pyx_t_15);
        __Pyx_XGIVEREF(__pyx_t_16);
        __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
        __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0;
        goto __pyx_L1_error;
      }
      __pyx_L7:;
    }

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1786
 *                 if not self.is_user_addr:
 *                     free(self.addr)
 *             self.umem = NULL             # <<<<<<<<<<<<<<
 *             self.context = None
 * 
*/
    __pyx_v_self->umem = NULL;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1787
 *                     free(self.addr)
 *             self.umem = NULL
 *             self.context = None             # <<<<<<<<<<<<<<
 * 
 *     def __str__(self):
*/
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __Pyx_GOTREF((PyObject *)__pyx_v_self->context);
    __Pyx_DECREF((PyObject *)__pyx_v_self->context);
    __pyx_v_self->context = ((struct __pyx_obj_7pyverbs_6device_Context *)Py_None);

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1776
 * 
 *     cpdef close(self):
 *         if self.umem != NULL:             # <<<<<<<<<<<<<<
 *             if self.logger:
 *                 self.logger.debug('Closing Mlx5UMEM')
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1775
 *         self.close()
 * 
 *     cpdef close(self):             # <<<<<<<<<<<<<<
 *         if self.umem != NULL:
 *             if self.logger:
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5UMEM.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_5close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_5close = {"close", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_5close, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_5close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("close (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("close", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("close", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_4close(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_4close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("close", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_close(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1775, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5UMEM.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1789
 *             self.context = None
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('umem id', self.umem_id) + \
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_7__str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_7__str__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_6__str__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_6__str__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM *__pyx_v_self) {
  PyObject *__pyx_v_print_format = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1790
 * 
 *     def __str__(self):
 *         print_format = '{:20}: {:<20}\n'             # <<<<<<<<<<<<<<
 *         return print_format.format('umem id', self.umem_id) + \
 *                print_format.format('reg addr', self.umem_addr)
*/
  __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_20_20);
  __pyx_v_print_format = __pyx_mstate_global->__pyx_kp_u_20_20;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1791
 *     def __str__(self):
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('umem id', self.umem_id) + \             # <<<<<<<<<<<<<<
 *                print_format.format('reg addr', self.umem_addr)
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_umem_id_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_kp_u_umem_id, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1792
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('umem id', self.umem_id) + \
 *                print_format.format('reg addr', self.umem_addr)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_umem_addr); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_kp_u_reg_addr, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1791
 *     def __str__(self):
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('umem id', self.umem_id) + \             # <<<<<<<<<<<<<<
 *                print_format.format('reg addr', self.umem_addr)
 * 
*/
  __pyx_t_1 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1789
 *             self.context = None
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('umem id', self.umem_id) + \
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5UMEM.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_print_format);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1794
 *                print_format.format('reg addr', self.umem_addr)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def umem_id(self):
 *         return self.umem.umem_id
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_7umem_id_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_7umem_id_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_7umem_id___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_7umem_id___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1796
 *     @property
 *     def umem_id(self):
 *         return self.umem.umem_id             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(__pyx_v_self->umem->umem_id); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1796, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1794
 *                print_format.format('reg addr', self.umem_addr)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def umem_id(self):
 *         return self.umem.umem_id
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5UMEM.umem_id.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1798
 *         return self.umem.umem_id
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def umem_addr(self):
 *         if self.addr:
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_9umem_addr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_9umem_addr_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_9umem_addr___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_9umem_addr___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1800
 *     @property
 *     def umem_addr(self):
 *         if self.addr:             # <<<<<<<<<<<<<<
 *             return <uintptr_t><void*>self.addr
 * 
*/
  __pyx_t_1 = (__pyx_v_self->addr != 0);
  if (__pyx_t_1) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1801
 *     def umem_addr(self):
 *         if self.addr:
 *             return <uintptr_t><void*>self.addr             # <<<<<<<<<<<<<<
 * 
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyLong_FromSize_t(((uintptr_t)((void *)__pyx_v_self->addr))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1801, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1800
 *     @property
 *     def umem_addr(self):
 *         if self.addr:             # <<<<<<<<<<<<<<
 *             return <uintptr_t><void*>self.addr
 * 
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1798
 *         return self.umem.umem_id
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def umem_addr(self):
 *         if self.addr:
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5UMEM.umem_addr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.addr,self.umem cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_9__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_9__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_9__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_9__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_8__reduce_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self.addr,self.umem cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.addr,self.umem cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_addr_self_umem_cannot_be_co, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.addr,self.umem cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5UMEM.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.addr,self.umem cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.addr,self.umem cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_11__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_11__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_11__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_11__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5UMEM.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_10__setstate_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self.addr,self.umem cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.addr,self.umem cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_addr_self_umem_cannot_be_co, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.addr,self.umem cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.addr,self.umem cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5UMEM.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1805
 * 
 * cdef class Mlx5Cqe64(PyverbsObject):
 *     def __init__(self, addr):             # <<<<<<<<<<<<<<
 *         self.cqe = <dv.mlx5_cqe64*><uintptr_t> addr
 * 
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_addr = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_addr,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1805, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1805, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(0, 1805, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, i); __PYX_ERR(0, 1805, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1805, __pyx_L3_error)
    }
    __pyx_v_addr = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1805, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Cqe64.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64___init__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *)__pyx_v_self), __pyx_v_addr);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *__pyx_v_self, PyObject *__pyx_v_addr) {
  int __pyx_r;
  uintptr_t __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1806
 * cdef class Mlx5Cqe64(PyverbsObject):
 *     def __init__(self, addr):
 *         self.cqe = <dv.mlx5_cqe64*><uintptr_t> addr             # <<<<<<<<<<<<<<
 * 
 *     def dump(self):
*/
  __pyx_t_1 = __Pyx_PyLong_As_size_t(__pyx_v_addr); if (unlikely((__pyx_t_1 == ((uintptr_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1806, __pyx_L1_error)
  __pyx_v_self->cqe = ((struct mlx5_cqe64 *)((uintptr_t)__pyx_t_1));

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1805
 * 
 * cdef class Mlx5Cqe64(PyverbsObject):
 *     def __init__(self, addr):             # <<<<<<<<<<<<<<
 *         self.cqe = <dv.mlx5_cqe64*><uintptr_t> addr
 * 
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Cqe64.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1808
 *         self.cqe = <dv.mlx5_cqe64*><uintptr_t> addr
 * 
 *     def dump(self):             # <<<<<<<<<<<<<<
 *         dump_format = '{:08x} {:08x} {:08x} {:08x}\n'
 *         str = ''
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_3dump(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_3dump = {"dump", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_3dump, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_3dump(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dump (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("dump", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("dump", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_2dump(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_2dump(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *__pyx_v_self) {
  PyObject *__pyx_v_dump_format = NULL;
  PyObject *__pyx_v_str = NULL;
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  size_t __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dump", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1809
 * 
 *     def dump(self):
 *         dump_format = '{:08x} {:08x} {:08x} {:08x}\n'             # <<<<<<<<<<<<<<
 *         str = ''
 *         for i in range(0, 16, 4):
*/
  __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_08x_08x_08x_08x);
  __pyx_v_dump_format = __pyx_mstate_global->__pyx_kp_u_08x_08x_08x_08x;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1810
 *     def dump(self):
 *         dump_format = '{:08x} {:08x} {:08x} {:08x}\n'
 *         str = ''             # <<<<<<<<<<<<<<
 *         for i in range(0, 16, 4):
 *             str += dump_format.format(be32toh((<uint32_t*>self.cqe)[i]),
*/
  __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u__3);
  __pyx_v_str = __pyx_mstate_global->__pyx_kp_u__3;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1811
 *         dump_format = '{:08x} {:08x} {:08x} {:08x}\n'
 *         str = ''
 *         for i in range(0, 16, 4):             # <<<<<<<<<<<<<<
 *             str += dump_format.format(be32toh((<uint32_t*>self.cqe)[i]),
 *                                       be32toh((<uint32_t*>self.cqe)[i + 1]),
*/
  for (__pyx_t_1 = 0; __pyx_t_1 < 16; __pyx_t_1+=4) {
    __pyx_t_2 = PyLong_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1811, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1812
 *         str = ''
 *         for i in range(0, 16, 4):
 *             str += dump_format.format(be32toh((<uint32_t*>self.cqe)[i]),             # <<<<<<<<<<<<<<
 *                                       be32toh((<uint32_t*>self.cqe)[i + 1]),
 *                                       be32toh((<uint32_t*>self.cqe)[i + 2]),
*/
    __pyx_t_3 = __pyx_v_dump_format;
    __Pyx_INCREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_4 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1812, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyLong_From_unsigned_long(be32toh((((uint32_t *)__pyx_v_self->cqe)[__pyx_t_4]))); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1812, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1813
 *         for i in range(0, 16, 4):
 *             str += dump_format.format(be32toh((<uint32_t*>self.cqe)[i]),
 *                                       be32toh((<uint32_t*>self.cqe)[i + 1]),             # <<<<<<<<<<<<<<
 *                                       be32toh((<uint32_t*>self.cqe)[i + 2]),
 *                                       be32toh((<uint32_t*>self.cqe)[i + 3]))
*/
    __pyx_t_6 = __Pyx_PyLong_AddObjC(__pyx_v_i, __pyx_mstate_global->__pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1813, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_4 = __Pyx_PyIndex_AsSsize_t(__pyx_t_6); if (unlikely((__pyx_t_4 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1813, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_PyLong_From_unsigned_long(be32toh((((uint32_t *)__pyx_v_self->cqe)[__pyx_t_4]))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1813, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1814
 *             str += dump_format.format(be32toh((<uint32_t*>self.cqe)[i]),
 *                                       be32toh((<uint32_t*>self.cqe)[i + 1]),
 *                                       be32toh((<uint32_t*>self.cqe)[i + 2]),             # <<<<<<<<<<<<<<
 *                                       be32toh((<uint32_t*>self.cqe)[i + 3]))
 *         return str
*/
    __pyx_t_7 = __Pyx_PyLong_AddObjC(__pyx_v_i, __pyx_mstate_global->__pyx_int_2, 2, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1814, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_4 = __Pyx_PyIndex_AsSsize_t(__pyx_t_7); if (unlikely((__pyx_t_4 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1814, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = __Pyx_PyLong_From_unsigned_long(be32toh((((uint32_t *)__pyx_v_self->cqe)[__pyx_t_4]))); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1814, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1815
 *                                       be32toh((<uint32_t*>self.cqe)[i + 1]),
 *                                       be32toh((<uint32_t*>self.cqe)[i + 2]),
 *                                       be32toh((<uint32_t*>self.cqe)[i + 3]))             # <<<<<<<<<<<<<<
 *         return str
 * 
*/
    __pyx_t_8 = __Pyx_PyLong_AddObjC(__pyx_v_i, __pyx_mstate_global->__pyx_int_3, 3, 0, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1815, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_4 = __Pyx_PyIndex_AsSsize_t(__pyx_t_8); if (unlikely((__pyx_t_4 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1815, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = __Pyx_PyLong_From_unsigned_long(be32toh((((uint32_t *)__pyx_v_self->cqe)[__pyx_t_4]))); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1815, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_9 = 0;
    {
      PyObject *__pyx_callargs[5] = {__pyx_t_3, __pyx_t_5, __pyx_t_6, __pyx_t_7, __pyx_t_8};
      __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_9, (5-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1812, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1812
 *         str = ''
 *         for i in range(0, 16, 4):
 *             str += dump_format.format(be32toh((<uint32_t*>self.cqe)[i]),             # <<<<<<<<<<<<<<
 *                                       be32toh((<uint32_t*>self.cqe)[i + 1]),
 *                                       be32toh((<uint32_t*>self.cqe)[i + 2]),
*/
    __pyx_t_8 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlaceSafe(__pyx_v_str, __pyx_t_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1812, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_str, ((PyObject*)__pyx_t_8));
    __pyx_t_8 = 0;
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1816
 *                                       be32toh((<uint32_t*>self.cqe)[i + 2]),
 *                                       be32toh((<uint32_t*>self.cqe)[i + 3]))
 *         return str             # <<<<<<<<<<<<<<
 * 
 *     def is_empty(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_str);
  __pyx_r = __pyx_v_str;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1808
 *         self.cqe = <dv.mlx5_cqe64*><uintptr_t> addr
 * 
 *     def dump(self):             # <<<<<<<<<<<<<<
 *         dump_format = '{:08x} {:08x} {:08x} {:08x}\n'
 *         str = ''
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Cqe64.dump", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_dump_format);
  __Pyx_XDECREF(__pyx_v_str);
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1818
 *         return str
 * 
 *     def is_empty(self):             # <<<<<<<<<<<<<<
 *         for i in range(16):
 *             if be32toh((<uint32_t*>self.cqe)[i]) != 0:
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_5is_empty(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_5is_empty = {"is_empty", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_5is_empty, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_5is_empty(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_empty (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_empty", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_empty", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_4is_empty(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_4is_empty(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *__pyx_v_self) {
  long __pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  long __pyx_t_1;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("is_empty", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1819
 * 
 *     def is_empty(self):
 *         for i in range(16):             # <<<<<<<<<<<<<<
 *             if be32toh((<uint32_t*>self.cqe)[i]) != 0:
 *                 return False
*/
  for (__pyx_t_1 = 0; __pyx_t_1 < 16; __pyx_t_1+=1) {
    __pyx_v_i = __pyx_t_1;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1820
 *     def is_empty(self):
 *         for i in range(16):
 *             if be32toh((<uint32_t*>self.cqe)[i]) != 0:             # <<<<<<<<<<<<<<
 *                 return False
 *         return True
*/
    __pyx_t_2 = (be32toh((((uint32_t *)__pyx_v_self->cqe)[__pyx_v_i])) != 0);
    if (__pyx_t_2) {

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":1821
 *         for i in range(16):
 *             if be32toh((<uint32_t*>self.cqe)[i]) != 0:
 *                 return False             # <<<<<<<<<<<<<<
 *         return True
 * 
*/
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(Py_False);
      __pyx_r = Py_False;
      goto __pyx_L0;

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":1820
 *     def is_empty(self):
 *         for i in range(16):
 *             if be32toh((<uint32_t*>self.cqe)[i]) != 0:             # <<<<<<<<<<<<<<
 *                 return False
 *         return True
*/
    }
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1822
 *             if be32toh((<uint32_t*>self.cqe)[i]) != 0:
 *                 return False
 *         return True             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_True);
  __pyx_r = Py_True;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1818
 *         return str
 * 
 *     def is_empty(self):             # <<<<<<<<<<<<<<
 *         for i in range(16):
 *             if be32toh((<uint32_t*>self.cqe)[i]) != 0:
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1824
 *         return True
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def owner(self):
 *         return dv.mlx5dv_get_cqe_owner(self.cqe)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_5owner_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_5owner_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_5owner___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_5owner___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1826
 *     @property
 *     def owner(self):
 *         return dv.mlx5dv_get_cqe_owner(self.cqe)             # <<<<<<<<<<<<<<
 *     @owner.setter
 *     def owner(self, val):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(mlx5dv_get_cqe_owner(__pyx_v_self->cqe)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1826, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1824
 *         return True
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def owner(self):
 *         return dv.mlx5dv_get_cqe_owner(self.cqe)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Cqe64.owner.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1827
 *     def owner(self):
 *         return dv.mlx5dv_get_cqe_owner(self.cqe)
 *     @owner.setter             # <<<<<<<<<<<<<<
 *     def owner(self, val):
 *         dv.mlx5dv_set_cqe_owner(self.cqe, <uint8_t> val)
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_5owner_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_5owner_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_5owner_2__set__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *)__pyx_v_self), ((PyObject *)__pyx_v_val));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_5owner_2__set__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *__pyx_v_self, PyObject *__pyx_v_val) {
  int __pyx_r;
  uint8_t __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1829
 *     @owner.setter
 *     def owner(self, val):
 *         dv.mlx5dv_set_cqe_owner(self.cqe, <uint8_t> val)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_t_1 = __Pyx_PyLong_As_uint8_t(__pyx_v_val); if (unlikely((__pyx_t_1 == ((uint8_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1829, __pyx_L1_error)
  mlx5dv_set_cqe_owner(__pyx_v_self->cqe, ((uint8_t)__pyx_t_1));

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1827
 *     def owner(self):
 *         return dv.mlx5dv_get_cqe_owner(self.cqe)
 *     @owner.setter             # <<<<<<<<<<<<<<
 *     def owner(self, val):
 *         dv.mlx5dv_set_cqe_owner(self.cqe, <uint8_t> val)
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Cqe64.owner.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1831
 *         dv.mlx5dv_set_cqe_owner(self.cqe, <uint8_t> val)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def se(self):
 *         return dv.mlx5dv_get_cqe_se(self.cqe)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_2se_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_2se_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_2se___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_2se___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1833
 *     @property
 *     def se(self):
 *         return dv.mlx5dv_get_cqe_se(self.cqe)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(mlx5dv_get_cqe_se(__pyx_v_self->cqe)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1833, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1831
 *         dv.mlx5dv_set_cqe_owner(self.cqe, <uint8_t> val)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def se(self):
 *         return dv.mlx5dv_get_cqe_se(self.cqe)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Cqe64.se.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1835
 *         return dv.mlx5dv_get_cqe_se(self.cqe)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def format(self):
 *         return dv.mlx5dv_get_cqe_format(self.cqe)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_6format_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_6format_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_6format___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_6format___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1837
 *     @property
 *     def format(self):
 *         return dv.mlx5dv_get_cqe_format(self.cqe)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(mlx5dv_get_cqe_format(__pyx_v_self->cqe)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1837, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1835
 *         return dv.mlx5dv_get_cqe_se(self.cqe)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def format(self):
 *         return dv.mlx5dv_get_cqe_format(self.cqe)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Cqe64.format.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1839
 *         return dv.mlx5dv_get_cqe_format(self.cqe)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def opcode(self):
 *         return dv.mlx5dv_get_cqe_opcode(self.cqe)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_6opcode_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_6opcode_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_6opcode___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_6opcode___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1841
 *     @property
 *     def opcode(self):
 *         return dv.mlx5dv_get_cqe_opcode(self.cqe)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(mlx5dv_get_cqe_opcode(__pyx_v_self->cqe)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1841, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1839
 *         return dv.mlx5dv_get_cqe_format(self.cqe)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def opcode(self):
 *         return dv.mlx5dv_get_cqe_opcode(self.cqe)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Cqe64.opcode.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1843
 *         return dv.mlx5dv_get_cqe_opcode(self.cqe)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def imm_inval_pkey(self):
 *         return be32toh(self.cqe.imm_inval_pkey)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_14imm_inval_pkey_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_14imm_inval_pkey_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_14imm_inval_pkey___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_14imm_inval_pkey___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1845
 *     @property
 *     def imm_inval_pkey(self):
 *         return be32toh(self.cqe.imm_inval_pkey)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_unsigned_long(be32toh(__pyx_v_self->cqe->imm_inval_pkey)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1845, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1843
 *         return dv.mlx5dv_get_cqe_opcode(self.cqe)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def imm_inval_pkey(self):
 *         return be32toh(self.cqe.imm_inval_pkey)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Cqe64.imm_inval_pkey.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1847
 *         return be32toh(self.cqe.imm_inval_pkey)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def wqe_id(self):
 *         return be16toh(self.cqe.wqe_id)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_6wqe_id_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_6wqe_id_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_6wqe_id___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_6wqe_id___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1849
 *     @property
 *     def wqe_id(self):
 *         return be16toh(self.cqe.wqe_id)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_unsigned_long(be16toh(__pyx_v_self->cqe->wqe_id)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1849, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1847
 *         return be32toh(self.cqe.imm_inval_pkey)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def wqe_id(self):
 *         return be16toh(self.cqe.wqe_id)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Cqe64.wqe_id.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1851
 *         return be16toh(self.cqe.wqe_id)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def byte_cnt(self):
 *         return be32toh(self.cqe.byte_cnt)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_8byte_cnt_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_8byte_cnt_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_8byte_cnt___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_8byte_cnt___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1853
 *     @property
 *     def byte_cnt(self):
 *         return be32toh(self.cqe.byte_cnt)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_unsigned_long(be32toh(__pyx_v_self->cqe->byte_cnt)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1853, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1851
 *         return be16toh(self.cqe.wqe_id)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def byte_cnt(self):
 *         return be32toh(self.cqe.byte_cnt)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Cqe64.byte_cnt.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1855
 *         return be32toh(self.cqe.byte_cnt)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def timestamp(self):
 *         return be64toh(self.cqe.timestamp)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_9timestamp_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_9timestamp_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_9timestamp___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_9timestamp___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1857
 *     @property
 *     def timestamp(self):
 *         return be64toh(self.cqe.timestamp)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_unsigned_long(be64toh(__pyx_v_self->cqe->timestamp)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1857, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1855
 *         return be32toh(self.cqe.byte_cnt)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def timestamp(self):
 *         return be64toh(self.cqe.timestamp)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Cqe64.timestamp.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1859
 *         return be64toh(self.cqe.timestamp)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def wqe_counter(self):
 *         return be16toh(self.cqe.wqe_counter)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_11wqe_counter_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_11wqe_counter_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_11wqe_counter___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_11wqe_counter___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1861
 *     @property
 *     def wqe_counter(self):
 *         return be16toh(self.cqe.wqe_counter)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_unsigned_long(be16toh(__pyx_v_self->cqe->wqe_counter)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1861, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1859
 *         return be64toh(self.cqe.timestamp)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def wqe_counter(self):
 *         return be16toh(self.cqe.wqe_counter)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Cqe64.wqe_counter.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1863
 *         return be16toh(self.cqe.wqe_counter)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def signature(self):
 *         return self.cqe.signature
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_9signature_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_9signature_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_9signature___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_9signature___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1865
 *     @property
 *     def signature(self):
 *         return self.cqe.signature             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(__pyx_v_self->cqe->signature); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1865, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1863
 *         return be16toh(self.cqe.wqe_counter)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def signature(self):
 *         return self.cqe.signature
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Cqe64.signature.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1867
 *         return self.cqe.signature
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def op_own(self):
 *         return self.cqe.op_own
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_6op_own_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_6op_own_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_6op_own___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_6op_own___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1869
 *     @property
 *     def op_own(self):
 *         return self.cqe.op_own             # <<<<<<<<<<<<<<
 * 
 *     def __str__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(__pyx_v_self->cqe->op_own); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1869, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1867
 *         return self.cqe.signature
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def op_own(self):
 *         return self.cqe.op_own
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Cqe64.op_own.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1871
 *         return self.cqe.op_own
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         return (<dv.mlx5_cqe64>((<dv.mlx5_cqe64*>self.cqe)[0])).__str__()
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_7__str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_7__str__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_6__str__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_6__str__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1872
 * 
 *     def __str__(self):
 *         return (<dv.mlx5_cqe64>((<dv.mlx5_cqe64*>self.cqe)[0])).__str__()             # <<<<<<<<<<<<<<
 * 
 * cdef class Mlx5DevxMsiVector(PyverbsCM):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __pyx_convert__to_py_struct__mlx5_cqe64((((struct mlx5_cqe64 *)__pyx_v_self->cqe)[0])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1872, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __pyx_t_3;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_str, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1872, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1871
 *         return self.cqe.op_own
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         return (<dv.mlx5_cqe64>((<dv.mlx5_cqe64*>self.cqe)[0])).__str__()
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Cqe64.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.cqe cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_9__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_9__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_9__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_9__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_8__reduce_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self.cqe cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.cqe cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_cqe_cannot_be_converted_to, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.cqe cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Cqe64.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.cqe cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.cqe cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_11__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_11__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_11__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_11__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Cqe64.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_10__setstate_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self.cqe cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.cqe cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_cqe_cannot_be_converted_to, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.cqe cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.cqe cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5Cqe64.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1878
 *     Represents mlx5dv_devx_msi_vector C struct.
 *     """
 *     def __init__(self, Context context):             # <<<<<<<<<<<<<<
 *         super().__init__()
 *         self.msi_vector = dv.mlx5dv_devx_alloc_msi_vector(context.context)
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_context = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_context,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1878, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1878, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(0, 1878, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, i); __PYX_ERR(0, 1878, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1878, __pyx_L3_error)
    }
    __pyx_v_context = ((struct __pyx_obj_7pyverbs_6device_Context *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1878, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxMsiVector.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_context), __pyx_mstate_global->__pyx_ptype_7pyverbs_6device_Context, 1, "context", 0))) __PYX_ERR(0, 1878, __pyx_L1_error)
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector___init__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector *)__pyx_v_self), __pyx_v_context);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector *__pyx_v_self, struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1879
 *     """
 *     def __init__(self, Context context):
 *         super().__init__()             # <<<<<<<<<<<<<<
 *         self.msi_vector = dv.mlx5dv_devx_alloc_msi_vector(context.context)
 *         if self.msi_vector == NULL:
*/
  __pyx_t_4 = NULL;
  __pyx_t_5 = 1;
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, ((PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector), ((PyObject *)__pyx_v_self)};
    __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_super, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1879, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_t_2 = __pyx_t_3;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_init, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1879, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1880
 *     def __init__(self, Context context):
 *         super().__init__()
 *         self.msi_vector = dv.mlx5dv_devx_alloc_msi_vector(context.context)             # <<<<<<<<<<<<<<
 *         if self.msi_vector == NULL:
 *             raise PyverbsRDMAErrno('Failed to allocate an msi_vector')
*/
  __pyx_v_self->msi_vector = mlx5dv_devx_alloc_msi_vector(__pyx_v_context->context);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1881
 *         super().__init__()
 *         self.msi_vector = dv.mlx5dv_devx_alloc_msi_vector(context.context)
 *         if self.msi_vector == NULL:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAErrno('Failed to allocate an msi_vector')
 * 
*/
  __pyx_t_6 = (__pyx_v_self->msi_vector == NULL);
  if (unlikely(__pyx_t_6)) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1882
 *         self.msi_vector = dv.mlx5dv_devx_alloc_msi_vector(context.context)
 *         if self.msi_vector == NULL:
 *             raise PyverbsRDMAErrno('Failed to allocate an msi_vector')             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
    __pyx_t_3 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_PyverbsRDMAErrno); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1882, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_2, __pyx__function);
      __pyx_t_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_Failed_to_allocate_an_msi_vector};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1882, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(0, 1882, __pyx_L1_error)

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1881
 *         super().__init__()
 *         self.msi_vector = dv.mlx5dv_devx_alloc_msi_vector(context.context)
 *         if self.msi_vector == NULL:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAErrno('Failed to allocate an msi_vector')
 * 
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1878
 *     Represents mlx5dv_devx_msi_vector C struct.
 *     """
 *     def __init__(self, Context context):             # <<<<<<<<<<<<<<
 *         super().__init__()
 *         self.msi_vector = dv.mlx5dv_devx_alloc_msi_vector(context.context)
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxMsiVector.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1884
 *             raise PyverbsRDMAErrno('Failed to allocate an msi_vector')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def vector(self):
 *         return self.msi_vector.vector
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_6vector_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_6vector_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_6vector___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_6vector___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1886
 *     @property
 *     def vector(self):
 *         return self.msi_vector.vector             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_self->msi_vector->vector); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1886, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1884
 *             raise PyverbsRDMAErrno('Failed to allocate an msi_vector')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def vector(self):
 *         return self.msi_vector.vector
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxMsiVector.vector.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1888
 *         return self.msi_vector.vector
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def fd(self):
 *         return self.msi_vector.fd
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_2fd_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_2fd_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_2fd___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_2fd___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1890
 *     @property
 *     def fd(self):
 *         return self.msi_vector.fd             # <<<<<<<<<<<<<<
 * 
 *     cpdef close(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_self->msi_vector->fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1890, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1888
 *         return self.msi_vector.vector
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def fd(self):
 *         return self.msi_vector.fd
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxMsiVector.fd.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1892
 *         return self.msi_vector.fd
 * 
 *     cpdef close(self):             # <<<<<<<<<<<<<<
 *         if self.msi_vector != NULL:
 *             rc = dv.mlx5dv_devx_free_msi_vector(self.msi_vector)
*/

static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_3close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyObject *__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector *__pyx_v_self, int __pyx_skip_dispatch) {
  int __pyx_v_rc;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("close", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (
  #if !CYTHON_USE_TYPE_SLOTS
  unlikely(Py_TYPE(((PyObject *)__pyx_v_self)) != __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector &&
  __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), Py_TPFLAGS_HAVE_GC))
  #else
  unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0 || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))
  #endif
  ) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_close); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1892, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!__Pyx_IsSameCFunction(__pyx_t_1, (void(*)(void)) __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_3close)) {
        __Pyx_XDECREF(__pyx_r);
        __pyx_t_3 = NULL;
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_4 = __pyx_t_1; 
        __pyx_t_5 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
          assert(__pyx_t_3);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
          __pyx_t_5 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
          __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1892, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
        }
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1893
 * 
 *     cpdef close(self):
 *         if self.msi_vector != NULL:             # <<<<<<<<<<<<<<
 *             rc = dv.mlx5dv_devx_free_msi_vector(self.msi_vector)
 *             if rc:
*/
  __pyx_t_6 = (__pyx_v_self->msi_vector != NULL);
  if (__pyx_t_6) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1894
 *     cpdef close(self):
 *         if self.msi_vector != NULL:
 *             rc = dv.mlx5dv_devx_free_msi_vector(self.msi_vector)             # <<<<<<<<<<<<<<
 *             if rc:
 *                 raise PyverbsRDMAError('Failed to free the msi_vector', rc)
*/
    __pyx_v_rc = mlx5dv_devx_free_msi_vector(__pyx_v_self->msi_vector);

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1895
 *         if self.msi_vector != NULL:
 *             rc = dv.mlx5dv_devx_free_msi_vector(self.msi_vector)
 *             if rc:             # <<<<<<<<<<<<<<
 *                 raise PyverbsRDMAError('Failed to free the msi_vector', rc)
 *         self.msi_vector = NULL
*/
    __pyx_t_6 = (__pyx_v_rc != 0);
    if (unlikely(__pyx_t_6)) {

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":1896
 *             rc = dv.mlx5dv_devx_free_msi_vector(self.msi_vector)
 *             if rc:
 *                 raise PyverbsRDMAError('Failed to free the msi_vector', rc)             # <<<<<<<<<<<<<<
 *         self.msi_vector = NULL
 * 
*/
      __pyx_t_2 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_PyverbsRDMAError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1896, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1896, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
        assert(__pyx_t_2);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
        __pyx_t_5 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Failed_to_free_the_msi_vector, __pyx_t_3};
        __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1896, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 1896, __pyx_L1_error)

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":1895
 *         if self.msi_vector != NULL:
 *             rc = dv.mlx5dv_devx_free_msi_vector(self.msi_vector)
 *             if rc:             # <<<<<<<<<<<<<<
 *                 raise PyverbsRDMAError('Failed to free the msi_vector', rc)
 *         self.msi_vector = NULL
*/
    }

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1893
 * 
 *     cpdef close(self):
 *         if self.msi_vector != NULL:             # <<<<<<<<<<<<<<
 *             rc = dv.mlx5dv_devx_free_msi_vector(self.msi_vector)
 *             if rc:
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1897
 *             if rc:
 *                 raise PyverbsRDMAError('Failed to free the msi_vector', rc)
 *         self.msi_vector = NULL             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_v_self->msi_vector = NULL;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1892
 *         return self.msi_vector.fd
 * 
 *     cpdef close(self):             # <<<<<<<<<<<<<<
 *         if self.msi_vector != NULL:
 *             rc = dv.mlx5dv_devx_free_msi_vector(self.msi_vector)
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxMsiVector.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_3close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_3close = {"close", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_3close, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_3close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("close (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("close", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("close", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_2close(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_2close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("close", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_close(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1892, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxMsiVector.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.msi_vector cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_4__reduce_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self.msi_vector cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.msi_vector cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_msi_vector_cannot_be_conver, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.msi_vector cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxMsiVector.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.msi_vector cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.msi_vector cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxMsiVector.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_6__setstate_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self.msi_vector cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.msi_vector cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_msi_vector_cannot_be_conver, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.msi_vector cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.msi_vector cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxMsiVector.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1904
 *     Represents mlx5dv_devx_eq C struct.
 *     """
 *     def __init__(self, Context context, in_, outlen):             # <<<<<<<<<<<<<<
 *         """
 *         Creates a DevX EQ object.
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq___init__, "\n        Creates a DevX EQ object.\n        If the object was successfully created, the command's output would be\n        stored as a memoryview in self.out_view.\n        :param in_: Bytes of the obj_create command's input data provided in a\n                    device specification format.\n                    (Stream of bytes or __bytes__ is implemented)\n        :param outlen: Expected output length in bytes\n        ");
#if CYTHON_UPDATE_DESCRIPTOR_DOC
struct wrapperbase __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq___init__;
#endif
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_context = 0;
  PyObject *__pyx_v_in_ = 0;
  PyObject *__pyx_v_outlen = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_context,&__pyx_mstate_global->__pyx_n_u_in,&__pyx_mstate_global->__pyx_n_u_outlen,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1904, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 1904, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1904, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1904, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(0, 1904, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, i); __PYX_ERR(0, 1904, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1904, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1904, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 1904, __pyx_L3_error)
    }
    __pyx_v_context = ((struct __pyx_obj_7pyverbs_6device_Context *)values[0]);
    __pyx_v_in_ = values[1];
    __pyx_v_outlen = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 1904, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxEq.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_context), __pyx_mstate_global->__pyx_ptype_7pyverbs_6device_Context, 1, "context", 0))) __PYX_ERR(0, 1904, __pyx_L1_error)
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq___init__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq *)__pyx_v_self), __pyx_v_context, __pyx_v_in_, __pyx_v_outlen);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq *__pyx_v_self, struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_context, PyObject *__pyx_v_in_, PyObject *__pyx_v_outlen) {
  PyObject *__pyx_v_in_bytes = NULL;
  char *__pyx_v_in_mailbox;
  char *__pyx_v_out_mailbox;
  PyObject *__pyx_v_status = NULL;
  PyObject *__pyx_v_syndrome = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  char *__pyx_t_6;
  Py_ssize_t __pyx_t_7;
  int __pyx_t_8;
  Py_ssize_t __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11[5];
  PyObject *__pyx_t_12 = NULL;
  int __pyx_t_13;
  int __pyx_t_14;
  char const *__pyx_t_15;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  PyObject *__pyx_t_21 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1914
 *         :param outlen: Expected output length in bytes
 *         """
 *         super().__init__()             # <<<<<<<<<<<<<<
 *         in_bytes = bytes(in_)
 *         cdef char *in_mailbox = _prepare_devx_inbox(in_bytes)
*/
  __pyx_t_4 = NULL;
  __pyx_t_5 = 1;
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, ((PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq), ((PyObject *)__pyx_v_self)};
    __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_super, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1914, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_t_2 = __pyx_t_3;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_init, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1914, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1915
 *         """
 *         super().__init__()
 *         in_bytes = bytes(in_)             # <<<<<<<<<<<<<<
 *         cdef char *in_mailbox = _prepare_devx_inbox(in_bytes)
 *         cdef char *out_mailbox = _prepare_devx_outbox(outlen)
*/
  __pyx_t_3 = NULL;
  __pyx_t_5 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_in_};
    __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(&PyBytes_Type), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1915, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_v_in_bytes = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1916
 *         super().__init__()
 *         in_bytes = bytes(in_)
 *         cdef char *in_mailbox = _prepare_devx_inbox(in_bytes)             # <<<<<<<<<<<<<<
 *         cdef char *out_mailbox = _prepare_devx_outbox(outlen)
 *         self.eq = dv.mlx5dv_devx_create_eq(context.context, in_mailbox,
*/
  __pyx_t_6 = __pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv__prepare_devx_inbox(__pyx_v_in_bytes); if (unlikely(__pyx_t_6 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 1916, __pyx_L1_error)
  __pyx_v_in_mailbox = __pyx_t_6;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1917
 *         in_bytes = bytes(in_)
 *         cdef char *in_mailbox = _prepare_devx_inbox(in_bytes)
 *         cdef char *out_mailbox = _prepare_devx_outbox(outlen)             # <<<<<<<<<<<<<<
 *         self.eq = dv.mlx5dv_devx_create_eq(context.context, in_mailbox,
 *                                            len(in_bytes), out_mailbox, outlen)
*/
  __pyx_t_6 = __pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv__prepare_devx_outbox(__pyx_v_outlen); if (unlikely(__pyx_t_6 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 1917, __pyx_L1_error)
  __pyx_v_out_mailbox = __pyx_t_6;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1919
 *         cdef char *out_mailbox = _prepare_devx_outbox(outlen)
 *         self.eq = dv.mlx5dv_devx_create_eq(context.context, in_mailbox,
 *                                            len(in_bytes), out_mailbox, outlen)             # <<<<<<<<<<<<<<
 *         try:
 *             if self.eq == NULL:
*/
  __pyx_t_7 = __Pyx_PyBytes_GET_SIZE(__pyx_v_in_bytes); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1919, __pyx_L1_error)
  __pyx_t_5 = __Pyx_PyLong_As_size_t(__pyx_v_outlen); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1919, __pyx_L1_error)

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1918
 *         cdef char *in_mailbox = _prepare_devx_inbox(in_bytes)
 *         cdef char *out_mailbox = _prepare_devx_outbox(outlen)
 *         self.eq = dv.mlx5dv_devx_create_eq(context.context, in_mailbox,             # <<<<<<<<<<<<<<
 *                                            len(in_bytes), out_mailbox, outlen)
 *         try:
*/
  __pyx_v_self->eq = mlx5dv_devx_create_eq(__pyx_v_context->context, __pyx_v_in_mailbox, __pyx_t_7, __pyx_v_out_mailbox, __pyx_t_5);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1920
 *         self.eq = dv.mlx5dv_devx_create_eq(context.context, in_mailbox,
 *                                            len(in_bytes), out_mailbox, outlen)
 *         try:             # <<<<<<<<<<<<<<
 *             if self.eq == NULL:
 *                 raise PyverbsRDMAErrno('Failed to create async EQ object')
*/
  /*try:*/ {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1921
 *                                            len(in_bytes), out_mailbox, outlen)
 *         try:
 *             if self.eq == NULL:             # <<<<<<<<<<<<<<
 *                 raise PyverbsRDMAErrno('Failed to create async EQ object')
 *             self.out_view = memoryview(out_mailbox[:outlen])
*/
    __pyx_t_8 = (__pyx_v_self->eq == NULL);
    if (unlikely(__pyx_t_8)) {

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":1922
 *         try:
 *             if self.eq == NULL:
 *                 raise PyverbsRDMAErrno('Failed to create async EQ object')             # <<<<<<<<<<<<<<
 *             self.out_view = memoryview(out_mailbox[:outlen])
 *             status = hex(self.out_view[0])
*/
      __pyx_t_3 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_PyverbsRDMAErrno); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1922, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_5 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
        assert(__pyx_t_3);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_2, __pyx__function);
        __pyx_t_5 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_Failed_to_create_async_EQ_object};
        __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1922, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 1922, __pyx_L4_error)

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":1921
 *                                            len(in_bytes), out_mailbox, outlen)
 *         try:
 *             if self.eq == NULL:             # <<<<<<<<<<<<<<
 *                 raise PyverbsRDMAErrno('Failed to create async EQ object')
 *             self.out_view = memoryview(out_mailbox[:outlen])
*/
    }

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1923
 *             if self.eq == NULL:
 *                 raise PyverbsRDMAErrno('Failed to create async EQ object')
 *             self.out_view = memoryview(out_mailbox[:outlen])             # <<<<<<<<<<<<<<
 *             status = hex(self.out_view[0])
 *             syndrome = self.out_view[4:8].hex()
*/
    __Pyx_INCREF(__pyx_v_outlen);
    __pyx_t_1 = __pyx_v_outlen;
    __pyx_t_8 = (__pyx_t_1 == Py_None);
    if (__pyx_t_8) {
      __pyx_t_7 = PY_SSIZE_T_MAX;
    } else {
      __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1923, __pyx_L4_error)
      __pyx_t_7 = __pyx_t_9;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_out_mailbox + 0, __pyx_t_7 - 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1923, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyMemoryView_FromObject(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1923, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GIVEREF(__pyx_t_2);
    __Pyx_GOTREF(__pyx_v_self->out_view);
    __Pyx_DECREF(__pyx_v_self->out_view);
    __pyx_v_self->out_view = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1924
 *                 raise PyverbsRDMAErrno('Failed to create async EQ object')
 *             self.out_view = memoryview(out_mailbox[:outlen])
 *             status = hex(self.out_view[0])             # <<<<<<<<<<<<<<
 *             syndrome = self.out_view[4:8].hex()
 *             if status != hex(0):
*/
    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_self->out_view, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1924, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyNumber_Hex(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1924, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_status = ((PyObject*)__pyx_t_1);
    __pyx_t_1 = 0;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1925
 *             self.out_view = memoryview(out_mailbox[:outlen])
 *             status = hex(self.out_view[0])
 *             syndrome = self.out_view[4:8].hex()             # <<<<<<<<<<<<<<
 *             if status != hex(0):
 *                 raise PyverbsRDMAError('Failed to create async EQ object with status'
*/
    __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_self->out_view, 4, 8, NULL, NULL, &__pyx_mstate_global->__pyx_slice[0], 1, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1925, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __pyx_t_3;
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_hex, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1925, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __pyx_v_syndrome = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1926
 *             status = hex(self.out_view[0])
 *             syndrome = self.out_view[4:8].hex()
 *             if status != hex(0):             # <<<<<<<<<<<<<<
 *                 raise PyverbsRDMAError('Failed to create async EQ object with status'
 *                                        f'({status}) and syndrome (0x{syndrome})')
*/
    __pyx_t_1 = __Pyx_PyNumber_Hex(__pyx_mstate_global->__pyx_int_0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1926, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = (__Pyx_PyUnicode_Equals(__pyx_v_status, __pyx_t_1, Py_NE)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 1926, __pyx_L4_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(__pyx_t_8)) {

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":1927
 *             syndrome = self.out_view[4:8].hex()
 *             if status != hex(0):
 *                 raise PyverbsRDMAError('Failed to create async EQ object with status'             # <<<<<<<<<<<<<<
 *                                        f'({status}) and syndrome (0x{syndrome})')
 *         finally:
*/
      __pyx_t_3 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_PyverbsRDMAError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1927, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_2);

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":1928
 *             if status != hex(0):
 *                 raise PyverbsRDMAError('Failed to create async EQ object with status'
 *                                        f'({status}) and syndrome (0x{syndrome})')             # <<<<<<<<<<<<<<
 *         finally:
 *             free(in_mailbox)
*/
      __pyx_t_4 = __Pyx_PyUnicode_Unicode(__pyx_v_status); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1928, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_10 = __Pyx_PyObject_FormatSimple(__pyx_v_syndrome, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1928, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_11[0] = __pyx_mstate_global->__pyx_kp_u_Failed_to_create_async_EQ_object_2;
      __pyx_t_11[1] = __pyx_t_4;
      __pyx_t_11[2] = __pyx_mstate_global->__pyx_kp_u_and_syndrome_0x;
      __pyx_t_11[3] = __pyx_t_10;
      __pyx_t_11[4] = __pyx_mstate_global->__pyx_kp_u__2;

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":1927
 *             syndrome = self.out_view[4:8].hex()
 *             if status != hex(0):
 *                 raise PyverbsRDMAError('Failed to create async EQ object with status'             # <<<<<<<<<<<<<<
 *                                        f'({status}) and syndrome (0x{syndrome})')
 *         finally:
*/
      __pyx_t_12 = __Pyx_PyUnicode_Join(__pyx_t_11, 5, 45 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 18 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_10) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_10));
      if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1927, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_5 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
        assert(__pyx_t_3);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_2, __pyx__function);
        __pyx_t_5 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_12};
        __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1927, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 1927, __pyx_L4_error)

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":1926
 *             status = hex(self.out_view[0])
 *             syndrome = self.out_view[4:8].hex()
 *             if status != hex(0):             # <<<<<<<<<<<<<<
 *                 raise PyverbsRDMAError('Failed to create async EQ object with status'
 *                                        f'({status}) and syndrome (0x{syndrome})')
*/
    }
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1930
 *                                        f'({status}) and syndrome (0x{syndrome})')
 *         finally:
 *             free(in_mailbox)             # <<<<<<<<<<<<<<
 *             free(out_mailbox)
 *         self.context = context
*/
  /*finally:*/ {
    /*normal exit:*/{
      free(__pyx_v_in_mailbox);

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":1931
 *         finally:
 *             free(in_mailbox)
 *             free(out_mailbox)             # <<<<<<<<<<<<<<
 *         self.context = context
 *         self.context.add_ref(self)
*/
      free(__pyx_v_out_mailbox);
      goto __pyx_L5;
    }
    __pyx_L4_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_ExceptionSwap(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
      if ( unlikely(__Pyx_GetException(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18) < 0)) __Pyx_ErrFetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
      __Pyx_XGOTREF(__pyx_t_16);
      __Pyx_XGOTREF(__pyx_t_17);
      __Pyx_XGOTREF(__pyx_t_18);
      __Pyx_XGOTREF(__pyx_t_19);
      __Pyx_XGOTREF(__pyx_t_20);
      __Pyx_XGOTREF(__pyx_t_21);
      __pyx_t_13 = __pyx_lineno; __pyx_t_14 = __pyx_clineno; __pyx_t_15 = __pyx_filename;
      {

        /* "pyverbs/providers/mlx5/mlx5dv.pyx":1930
 *                                        f'({status}) and syndrome (0x{syndrome})')
 *         finally:
 *             free(in_mailbox)             # <<<<<<<<<<<<<<
 *             free(out_mailbox)
 *         self.context = context
*/
        free(__pyx_v_in_mailbox);

        /* "pyverbs/providers/mlx5/mlx5dv.pyx":1931
 *         finally:
 *             free(in_mailbox)
 *             free(out_mailbox)             # <<<<<<<<<<<<<<
 *         self.context = context
 *         self.context.add_ref(self)
*/
        free(__pyx_v_out_mailbox);
      }
      __Pyx_XGIVEREF(__pyx_t_19);
      __Pyx_XGIVEREF(__pyx_t_20);
      __Pyx_XGIVEREF(__pyx_t_21);
      __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_20, __pyx_t_21);
      __Pyx_XGIVEREF(__pyx_t_16);
      __Pyx_XGIVEREF(__pyx_t_17);
      __Pyx_XGIVEREF(__pyx_t_18);
      __Pyx_ErrRestore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
      __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
      __pyx_lineno = __pyx_t_13; __pyx_clineno = __pyx_t_14; __pyx_filename = __pyx_t_15;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1932
 *             free(in_mailbox)
 *             free(out_mailbox)
 *         self.context = context             # <<<<<<<<<<<<<<
 *         self.context.add_ref(self)
 * 
*/
  __Pyx_INCREF((PyObject *)__pyx_v_context);
  __Pyx_GIVEREF((PyObject *)__pyx_v_context);
  __Pyx_GOTREF((PyObject *)__pyx_v_self->context);
  __Pyx_DECREF((PyObject *)__pyx_v_self->context);
  __pyx_v_self->context = __pyx_v_context;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1933
 *             free(out_mailbox)
 *         self.context = context
 *         self.context.add_ref(self)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_t_1 = ((struct __pyx_vtabstruct_7pyverbs_6device_Context *)__pyx_v_self->context->__pyx_base.__pyx_vtab)->add_ref(__pyx_v_self->context, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1933, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1904
 *     Represents mlx5dv_devx_eq C struct.
 *     """
 *     def __init__(self, Context context, in_, outlen):             # <<<<<<<<<<<<<<
 *         """
 *         Creates a DevX EQ object.
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxEq.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_in_bytes);
  __Pyx_XDECREF(__pyx_v_status);
  __Pyx_XDECREF(__pyx_v_syndrome);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1935
 *         self.context.add_ref(self)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def out_view(self):
 *         return self.out_view
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_8out_view_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_8out_view_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_8out_view___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_8out_view___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1937
 *     @property
 *     def out_view(self):
 *         return self.out_view             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->out_view);
  __pyx_r = __pyx_v_self->out_view;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1935
 *         self.context.add_ref(self)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def out_view(self):
 *         return self.out_view
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1939
 *         return self.out_view
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def vaddr(self):
 *         return <uintptr_t><void*>self.eq.vaddr
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_5vaddr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_5vaddr_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_5vaddr___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_5vaddr___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1941
 *     @property
 *     def vaddr(self):
 *         return <uintptr_t><void*>self.eq.vaddr             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_FromSize_t(((uintptr_t)((void *)__pyx_v_self->eq->vaddr))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1941, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1939
 *         return self.out_view
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def vaddr(self):
 *         return <uintptr_t><void*>self.eq.vaddr
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxEq.vaddr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1943
 *         return <uintptr_t><void*>self.eq.vaddr
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         self.close()
 * 
*/

/* Python wrapper */
static void __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_2__dealloc__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_2__dealloc__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1944
 * 
 *     def __dealloc__(self):
 *         self.close()             # <<<<<<<<<<<<<<
 * 
 *     cpdef close(self):
*/
  __pyx_t_1 = ((struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.close(((struct __pyx_obj_7pyverbs_4base_PyverbsCM *)__pyx_v_self), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1944, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1943
 *         return <uintptr_t><void*>self.eq.vaddr
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         self.close()
 * 
*/

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxEq.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1946
 *         self.close()
 * 
 *     cpdef close(self):             # <<<<<<<<<<<<<<
 *         if self.eq != NULL:
 *             self.logger.debug('Closing Mlx5DevxEq')
*/

static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_5close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyObject *__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq *__pyx_v_self, int __pyx_skip_dispatch) {
  int __pyx_v_rc;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("close", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (
  #if !CYTHON_USE_TYPE_SLOTS
  unlikely(Py_TYPE(((PyObject *)__pyx_v_self)) != __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq &&
  __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), Py_TPFLAGS_HAVE_GC))
  #else
  unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0 || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))
  #endif
  ) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_close); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1946, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!__Pyx_IsSameCFunction(__pyx_t_1, (void(*)(void)) __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_5close)) {
        __Pyx_XDECREF(__pyx_r);
        __pyx_t_3 = NULL;
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_4 = __pyx_t_1; 
        __pyx_t_5 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
          assert(__pyx_t_3);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
          __pyx_t_5 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
          __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1946, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
        }
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1947
 * 
 *     cpdef close(self):
 *         if self.eq != NULL:             # <<<<<<<<<<<<<<
 *             self.logger.debug('Closing Mlx5DevxEq')
 *             rc = dv.mlx5dv_devx_destroy_eq(self.eq)
*/
  __pyx_t_6 = (__pyx_v_self->eq != NULL);
  if (__pyx_t_6) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1948
 *     cpdef close(self):
 *         if self.eq != NULL:
 *             self.logger.debug('Closing Mlx5DevxEq')             # <<<<<<<<<<<<<<
 *             rc = dv.mlx5dv_devx_destroy_eq(self.eq)
 *             if rc:
*/
    __pyx_t_2 = __pyx_v_self->__pyx_base.__pyx_base.logger;
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Closing_Mlx5DevxEq};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_debug, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1948, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1949
 *         if self.eq != NULL:
 *             self.logger.debug('Closing Mlx5DevxEq')
 *             rc = dv.mlx5dv_devx_destroy_eq(self.eq)             # <<<<<<<<<<<<<<
 *             if rc:
 *                 raise PyverbsRDMAError('Failed to destroy a DevX EQ object', rc)
*/
    __pyx_v_rc = mlx5dv_devx_destroy_eq(__pyx_v_self->eq);

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1950
 *             self.logger.debug('Closing Mlx5DevxEq')
 *             rc = dv.mlx5dv_devx_destroy_eq(self.eq)
 *             if rc:             # <<<<<<<<<<<<<<
 *                 raise PyverbsRDMAError('Failed to destroy a DevX EQ object', rc)
 *             self.eq = NULL
*/
    __pyx_t_6 = (__pyx_v_rc != 0);
    if (unlikely(__pyx_t_6)) {

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":1951
 *             rc = dv.mlx5dv_devx_destroy_eq(self.eq)
 *             if rc:
 *                 raise PyverbsRDMAError('Failed to destroy a DevX EQ object', rc)             # <<<<<<<<<<<<<<
 *             self.eq = NULL
 *             self.context = None
*/
      __pyx_t_2 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_PyverbsRDMAError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1951, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1951, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
        assert(__pyx_t_2);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
        __pyx_t_5 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Failed_to_destroy_a_DevX_EQ_obje, __pyx_t_3};
        __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1951, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 1951, __pyx_L1_error)

      /* "pyverbs/providers/mlx5/mlx5dv.pyx":1950
 *             self.logger.debug('Closing Mlx5DevxEq')
 *             rc = dv.mlx5dv_devx_destroy_eq(self.eq)
 *             if rc:             # <<<<<<<<<<<<<<
 *                 raise PyverbsRDMAError('Failed to destroy a DevX EQ object', rc)
 *             self.eq = NULL
*/
    }

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1952
 *             if rc:
 *                 raise PyverbsRDMAError('Failed to destroy a DevX EQ object', rc)
 *             self.eq = NULL             # <<<<<<<<<<<<<<
 *             self.context = None
 * 
*/
    __pyx_v_self->eq = NULL;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1953
 *                 raise PyverbsRDMAError('Failed to destroy a DevX EQ object', rc)
 *             self.eq = NULL
 *             self.context = None             # <<<<<<<<<<<<<<
 * 
 * 
*/
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __Pyx_GOTREF((PyObject *)__pyx_v_self->context);
    __Pyx_DECREF((PyObject *)__pyx_v_self->context);
    __pyx_v_self->context = ((struct __pyx_obj_7pyverbs_6device_Context *)Py_None);

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1947
 * 
 *     cpdef close(self):
 *         if self.eq != NULL:             # <<<<<<<<<<<<<<
 *             self.logger.debug('Closing Mlx5DevxEq')
 *             rc = dv.mlx5dv_devx_destroy_eq(self.eq)
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1946
 *         self.close()
 * 
 *     cpdef close(self):             # <<<<<<<<<<<<<<
 *         if self.eq != NULL:
 *             self.logger.debug('Closing Mlx5DevxEq')
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxEq.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_5close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_5close = {"close", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_5close, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_5close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("close (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("close", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("close", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_4close(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_4close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("close", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_close(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1946, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxEq.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.eq cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_7__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_7__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_7__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_6__reduce_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self.eq cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.eq cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_eq_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.eq cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxEq.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.eq cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.eq cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_9__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_9__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_9__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxEq.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_8__setstate_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self.eq cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.eq cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_eq_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.eq cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.eq cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxEq.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1960
 *     Represents mlx5dv_devx_cmd_comp C struct.
 *     """
 *     def __init__(self, Context context):             # <<<<<<<<<<<<<<
 *         super().__init__()
 *         self.cmd_comp = dv.mlx5dv_devx_create_cmd_comp(context.context)
*/

/* Python wrapper */
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_context = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_context,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1960, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1960, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(0, 1960, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, i); __PYX_ERR(0, 1960, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1960, __pyx_L3_error)
    }
    __pyx_v_context = ((struct __pyx_obj_7pyverbs_6device_Context *)values[0]);
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1960, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxCmdComp.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_context), __pyx_mstate_global->__pyx_ptype_7pyverbs_6device_Context, 1, "context", 0))) __PYX_ERR(0, 1960, __pyx_L1_error)
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp___init__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *)__pyx_v_self), __pyx_v_context);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  goto __pyx_L7_cleaned_up;
  __pyx_L0:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __pyx_L7_cleaned_up:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp___init__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *__pyx_v_self, struct __pyx_obj_7pyverbs_6device_Context *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1961
 *     """
 *     def __init__(self, Context context):
 *         super().__init__()             # <<<<<<<<<<<<<<
 *         self.cmd_comp = dv.mlx5dv_devx_create_cmd_comp(context.context)
 *         if self.cmd_comp == NULL:
*/
  __pyx_t_4 = NULL;
  __pyx_t_5 = 1;
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, ((PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp), ((PyObject *)__pyx_v_self)};
    __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_super, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1961, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_t_2 = __pyx_t_3;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_init, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1961, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1962
 *     def __init__(self, Context context):
 *         super().__init__()
 *         self.cmd_comp = dv.mlx5dv_devx_create_cmd_comp(context.context)             # <<<<<<<<<<<<<<
 *         if self.cmd_comp == NULL:
 *             raise PyverbsRDMAErrno('Failed to create DevX cmd comp.')
*/
  __pyx_v_self->cmd_comp = mlx5dv_devx_create_cmd_comp(__pyx_v_context->context);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1963
 *         super().__init__()
 *         self.cmd_comp = dv.mlx5dv_devx_create_cmd_comp(context.context)
 *         if self.cmd_comp == NULL:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAErrno('Failed to create DevX cmd comp.')
 *         self.context = context
*/
  __pyx_t_6 = (__pyx_v_self->cmd_comp == NULL);
  if (unlikely(__pyx_t_6)) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1964
 *         self.cmd_comp = dv.mlx5dv_devx_create_cmd_comp(context.context)
 *         if self.cmd_comp == NULL:
 *             raise PyverbsRDMAErrno('Failed to create DevX cmd comp.')             # <<<<<<<<<<<<<<
 *         self.context = context
 *         self.context.add_ref(self)
*/
    __pyx_t_3 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_PyverbsRDMAErrno); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1964, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_2, __pyx__function);
      __pyx_t_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_Failed_to_create_DevX_cmd_comp};
      __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1964, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(0, 1964, __pyx_L1_error)

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1963
 *         super().__init__()
 *         self.cmd_comp = dv.mlx5dv_devx_create_cmd_comp(context.context)
 *         if self.cmd_comp == NULL:             # <<<<<<<<<<<<<<
 *             raise PyverbsRDMAErrno('Failed to create DevX cmd comp.')
 *         self.context = context
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1965
 *         if self.cmd_comp == NULL:
 *             raise PyverbsRDMAErrno('Failed to create DevX cmd comp.')
 *         self.context = context             # <<<<<<<<<<<<<<
 *         self.context.add_ref(self)
 * 
*/
  __Pyx_INCREF((PyObject *)__pyx_v_context);
  __Pyx_GIVEREF((PyObject *)__pyx_v_context);
  __Pyx_GOTREF((PyObject *)__pyx_v_self->context);
  __Pyx_DECREF((PyObject *)__pyx_v_self->context);
  __pyx_v_self->context = __pyx_v_context;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1966
 *             raise PyverbsRDMAErrno('Failed to create DevX cmd comp.')
 *         self.context = context
 *         self.context.add_ref(self)             # <<<<<<<<<<<<<<
 * 
 *     def __str__(self):
*/
  __pyx_t_1 = ((struct __pyx_vtabstruct_7pyverbs_6device_Context *)__pyx_v_self->context->__pyx_base.__pyx_vtab)->add_ref(__pyx_v_self->context, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1966, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1960
 *     Represents mlx5dv_devx_cmd_comp C struct.
 *     """
 *     def __init__(self, Context context):             # <<<<<<<<<<<<<<
 *         super().__init__()
 *         self.cmd_comp = dv.mlx5dv_devx_create_cmd_comp(context.context)
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxCmdComp.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1968
 *         self.context.add_ref(self)
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('fd', hex(self.cmd_comp.fd))
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_3__str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_3__str__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_2__str__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_2__str__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *__pyx_v_self) {
  PyObject *__pyx_v_print_format = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1969
 * 
 *     def __str__(self):
 *         print_format = '{:20}: {:<20}\n'             # <<<<<<<<<<<<<<
 *         return print_format.format('fd', hex(self.cmd_comp.fd))
 * 
*/
  __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_20_20);
  __pyx_v_print_format = __pyx_mstate_global->__pyx_kp_u_20_20;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1970
 *     def __str__(self):
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('fd', hex(self.cmd_comp.fd))             # <<<<<<<<<<<<<<
 * 
 *     def get_async_cmd_comp(self, cmd_resp_len=1024):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_self->cmd_comp->fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1970, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyNumber_Hex(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1970, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyUnicode_Type__format, __pyx_v_print_format, __pyx_mstate_global->__pyx_n_u_fd, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1970, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1968
 *         self.context.add_ref(self)
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         print_format = '{:20}: {:<20}\n'
 *         return print_format.format('fd', hex(self.cmd_comp.fd))
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxCmdComp.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_print_format);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1972
 *         return print_format.format('fd', hex(self.cmd_comp.fd))
 * 
 *     def get_async_cmd_comp(self, cmd_resp_len=1024):             # <<<<<<<<<<<<<<
 *         # mlx5dv_devx_async_cmd_hdr size is 1uint64_t of wr_id + cmd_resp_len of out_data
 *         size = sizeof(uint64_t) + cmd_resp_len
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_5get_async_cmd_comp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_5get_async_cmd_comp = {"get_async_cmd_comp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_5get_async_cmd_comp, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_5get_async_cmd_comp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_cmd_resp_len = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_async_cmd_comp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_cmd_resp_len,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1972, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1972, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "get_async_cmd_comp", 0) < (0)) __PYX_ERR(0, 1972, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_1024));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1972, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_1024));
    }
    __pyx_v_cmd_resp_len = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("get_async_cmd_comp", 0, 0, 1, __pyx_nargs); __PYX_ERR(0, 1972, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxCmdComp.get_async_cmd_comp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_4get_async_cmd_comp(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *)__pyx_v_self), __pyx_v_cmd_resp_len);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_4get_async_cmd_comp(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *__pyx_v_self, PyObject *__pyx_v_cmd_resp_len) {
  PyObject *__pyx_v_size = NULL;
  struct mlx5dv_devx_async_cmd_hdr *__pyx_v_cmd_resp;
  int __pyx_v_rc;
  uint64_t __pyx_v_wr_id;
  PyObject *__pyx_v_out_data = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  size_t __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  uint64_t __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  Py_ssize_t __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_async_cmd_comp", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1974
 *     def get_async_cmd_comp(self, cmd_resp_len=1024):
 *         # mlx5dv_devx_async_cmd_hdr size is 1uint64_t of wr_id + cmd_resp_len of out_data
 *         size = sizeof(uint64_t) + cmd_resp_len             # <<<<<<<<<<<<<<
 *         cmd_resp = <dv.mlx5dv_devx_async_cmd_hdr*>malloc(size)
 *         if not cmd_resp:
*/
  __pyx_t_1 = __Pyx_PyLong_FromSize_t((sizeof(uint64_t))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1974, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_v_cmd_resp_len); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1974, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_size = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1975
 *         # mlx5dv_devx_async_cmd_hdr size is 1uint64_t of wr_id + cmd_resp_len of out_data
 *         size = sizeof(uint64_t) + cmd_resp_len
 *         cmd_resp = <dv.mlx5dv_devx_async_cmd_hdr*>malloc(size)             # <<<<<<<<<<<<<<
 *         if not cmd_resp:
 *             raise MemoryError('Couldn\'t allocate array for cmd_resp')
*/
  __pyx_t_3 = __Pyx_PyLong_As_size_t(__pyx_v_size); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1975, __pyx_L1_error)
  __pyx_v_cmd_resp = ((struct mlx5dv_devx_async_cmd_hdr *)malloc(__pyx_t_3));

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1976
 *         size = sizeof(uint64_t) + cmd_resp_len
 *         cmd_resp = <dv.mlx5dv_devx_async_cmd_hdr*>malloc(size)
 *         if not cmd_resp:             # <<<<<<<<<<<<<<
 *             raise MemoryError('Couldn\'t allocate array for cmd_resp')
 *         rc = dv.mlx5dv_devx_get_async_cmd_comp(self.cmd_comp, cmd_resp, cmd_resp_len)
*/
  __pyx_t_4 = (!(__pyx_v_cmd_resp != 0));
  if (unlikely(__pyx_t_4)) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1977
 *         cmd_resp = <dv.mlx5dv_devx_async_cmd_hdr*>malloc(size)
 *         if not cmd_resp:
 *             raise MemoryError('Couldn\'t allocate array for cmd_resp')             # <<<<<<<<<<<<<<
 *         rc = dv.mlx5dv_devx_get_async_cmd_comp(self.cmd_comp, cmd_resp, cmd_resp_len)
 *         if rc != 0:
*/
    __pyx_t_1 = NULL;
    __pyx_t_3 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_mstate_global->__pyx_kp_u_Couldn_t_allocate_array_for_cmd};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_MemoryError)), __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1977, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(0, 1977, __pyx_L1_error)

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1976
 *         size = sizeof(uint64_t) + cmd_resp_len
 *         cmd_resp = <dv.mlx5dv_devx_async_cmd_hdr*>malloc(size)
 *         if not cmd_resp:             # <<<<<<<<<<<<<<
 *             raise MemoryError('Couldn\'t allocate array for cmd_resp')
 *         rc = dv.mlx5dv_devx_get_async_cmd_comp(self.cmd_comp, cmd_resp, cmd_resp_len)
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1978
 *         if not cmd_resp:
 *             raise MemoryError('Couldn\'t allocate array for cmd_resp')
 *         rc = dv.mlx5dv_devx_get_async_cmd_comp(self.cmd_comp, cmd_resp, cmd_resp_len)             # <<<<<<<<<<<<<<
 *         if rc != 0:
 *             free(cmd_resp)
*/
  __pyx_t_3 = __Pyx_PyLong_As_size_t(__pyx_v_cmd_resp_len); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1978, __pyx_L1_error)
  __pyx_v_rc = mlx5dv_devx_get_async_cmd_comp(__pyx_v_self->cmd_comp, __pyx_v_cmd_resp, __pyx_t_3);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1979
 *             raise MemoryError('Couldn\'t allocate array for cmd_resp')
 *         rc = dv.mlx5dv_devx_get_async_cmd_comp(self.cmd_comp, cmd_resp, cmd_resp_len)
 *         if rc != 0:             # <<<<<<<<<<<<<<
 *             free(cmd_resp)
 *             raise PyverbsError('Failed to get devx async event', rc)
*/
  __pyx_t_4 = (__pyx_v_rc != 0);
  if (unlikely(__pyx_t_4)) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1980
 *         rc = dv.mlx5dv_devx_get_async_cmd_comp(self.cmd_comp, cmd_resp, cmd_resp_len)
 *         if rc != 0:
 *             free(cmd_resp)             # <<<<<<<<<<<<<<
 *             raise PyverbsError('Failed to get devx async event', rc)
 *         wr_id = cmd_resp.wr_id
*/
    free(__pyx_v_cmd_resp);

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1981
 *         if rc != 0:
 *             free(cmd_resp)
 *             raise PyverbsError('Failed to get devx async event', rc)             # <<<<<<<<<<<<<<
 *         wr_id = cmd_resp.wr_id
 *         out_data = cmd_resp.out_data[:cmd_resp_len]
*/
    __pyx_t_1 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_PyverbsError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1981, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyLong_From_int(__pyx_v_rc); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1981, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_3 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
      assert(__pyx_t_1);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
      __pyx_t_3 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_mstate_global->__pyx_kp_u_Failed_to_get_devx_async_event, __pyx_t_6};
      __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_3, (3-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1981, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(0, 1981, __pyx_L1_error)

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1979
 *             raise MemoryError('Couldn\'t allocate array for cmd_resp')
 *         rc = dv.mlx5dv_devx_get_async_cmd_comp(self.cmd_comp, cmd_resp, cmd_resp_len)
 *         if rc != 0:             # <<<<<<<<<<<<<<
 *             free(cmd_resp)
 *             raise PyverbsError('Failed to get devx async event', rc)
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1982
 *             free(cmd_resp)
 *             raise PyverbsError('Failed to get devx async event', rc)
 *         wr_id = cmd_resp.wr_id             # <<<<<<<<<<<<<<
 *         out_data = cmd_resp.out_data[:cmd_resp_len]
 *         free(cmd_resp)
*/
  __pyx_t_7 = __pyx_v_cmd_resp->wr_id;
  __pyx_v_wr_id = __pyx_t_7;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1983
 *             raise PyverbsError('Failed to get devx async event', rc)
 *         wr_id = cmd_resp.wr_id
 *         out_data = cmd_resp.out_data[:cmd_resp_len]             # <<<<<<<<<<<<<<
 *         free(cmd_resp)
 *         return wr_id, out_data
*/
  __Pyx_INCREF(__pyx_v_cmd_resp_len);
  __pyx_t_2 = __pyx_v_cmd_resp_len;
  __pyx_t_4 = (__pyx_t_2 == Py_None);
  if (__pyx_t_4) {
    __pyx_t_8 = PY_SSIZE_T_MAX;
  } else {
    __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1983, __pyx_L1_error)
    __pyx_t_8 = __pyx_t_9;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyBytes_FromStringAndSize(((char const *)__pyx_v_cmd_resp->out_data) + 0, __pyx_t_8 - 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1983, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_out_data = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1984
 *         wr_id = cmd_resp.wr_id
 *         out_data = cmd_resp.out_data[:cmd_resp_len]
 *         free(cmd_resp)             # <<<<<<<<<<<<<<
 *         return wr_id, out_data
 * 
*/
  free(__pyx_v_cmd_resp);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1985
 *         out_data = cmd_resp.out_data[:cmd_resp_len]
 *         free(cmd_resp)
 *         return wr_id, out_data             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_uint64_t(__pyx_v_wr_id); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1985, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1985, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_2);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2) != (0)) __PYX_ERR(0, 1985, __pyx_L1_error);
  __Pyx_INCREF(__pyx_v_out_data);
  __Pyx_GIVEREF(__pyx_v_out_data);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_out_data) != (0)) __PYX_ERR(0, 1985, __pyx_L1_error);
  __pyx_t_2 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1972
 *         return print_format.format('fd', hex(self.cmd_comp.fd))
 * 
 *     def get_async_cmd_comp(self, cmd_resp_len=1024):             # <<<<<<<<<<<<<<
 *         # mlx5dv_devx_async_cmd_hdr size is 1uint64_t of wr_id + cmd_resp_len of out_data
 *         size = sizeof(uint64_t) + cmd_resp_len
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxCmdComp.get_async_cmd_comp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_size);
  __Pyx_XDECREF(__pyx_v_out_data);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1987
 *         return wr_id, out_data
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def fd(self):
 *         return self.cmd_comp.fd
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_2fd_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_2fd_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_2fd___get__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_2fd___get__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1989
 *     @property
 *     def fd(self):
 *         return self.cmd_comp.fd             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_self->cmd_comp->fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1989, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1987
 *         return wr_id, out_data
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def fd(self):
 *         return self.cmd_comp.fd
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxCmdComp.fd.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1991
 *         return self.cmd_comp.fd
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         self.close()
 * 
*/

/* Python wrapper */
static void __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_7__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_7__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_6__dealloc__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_6__dealloc__(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1992
 * 
 *     def __dealloc__(self):
 *         self.close()             # <<<<<<<<<<<<<<
 * 
 *     cpdef close(self):
*/
  __pyx_t_1 = ((struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.close(((struct __pyx_obj_7pyverbs_4base_PyverbsCM *)__pyx_v_self), 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1992, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1991
 *         return self.cmd_comp.fd
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         self.close()
 * 
*/

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxCmdComp.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "pyverbs/providers/mlx5/mlx5dv.pyx":1994
 *         self.close()
 * 
 *     cpdef close(self):             # <<<<<<<<<<<<<<
 *         if self.cmd_comp != NULL:
 *             self.logger.debug('Closing Mlx5DevxCmdComp')
*/

static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_9close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyObject *__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *__pyx_v_self, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("close", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (
  #if !CYTHON_USE_TYPE_SLOTS
  unlikely(Py_TYPE(((PyObject *)__pyx_v_self)) != __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp &&
  __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), Py_TPFLAGS_HAVE_GC))
  #else
  unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0 || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))
  #endif
  ) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_close); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1994, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!__Pyx_IsSameCFunction(__pyx_t_1, (void(*)(void)) __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_9close)) {
        __Pyx_XDECREF(__pyx_r);
        __pyx_t_3 = NULL;
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_4 = __pyx_t_1; 
        __pyx_t_5 = 1;
        #if CYTHON_UNPACK_METHODS
        if (unlikely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
          assert(__pyx_t_3);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
          __pyx_t_5 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
          __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1994, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
        }
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1995
 * 
 *     cpdef close(self):
 *         if self.cmd_comp != NULL:             # <<<<<<<<<<<<<<
 *             self.logger.debug('Closing Mlx5DevxCmdComp')
 *             dv.mlx5dv_devx_destroy_cmd_comp(self.cmd_comp)
*/
  __pyx_t_6 = (__pyx_v_self->cmd_comp != NULL);
  if (__pyx_t_6) {

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1996
 *     cpdef close(self):
 *         if self.cmd_comp != NULL:
 *             self.logger.debug('Closing Mlx5DevxCmdComp')             # <<<<<<<<<<<<<<
 *             dv.mlx5dv_devx_destroy_cmd_comp(self.cmd_comp)
 *             self.cmd_comp = NULL
*/
    __pyx_t_2 = __pyx_v_self->__pyx_base.__pyx_base.logger;
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_Closing_Mlx5DevxCmdComp};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_debug, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1996, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1997
 *         if self.cmd_comp != NULL:
 *             self.logger.debug('Closing Mlx5DevxCmdComp')
 *             dv.mlx5dv_devx_destroy_cmd_comp(self.cmd_comp)             # <<<<<<<<<<<<<<
 *             self.cmd_comp = NULL
 *             self.context = None
*/
    mlx5dv_devx_destroy_cmd_comp(__pyx_v_self->cmd_comp);

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1998
 *             self.logger.debug('Closing Mlx5DevxCmdComp')
 *             dv.mlx5dv_devx_destroy_cmd_comp(self.cmd_comp)
 *             self.cmd_comp = NULL             # <<<<<<<<<<<<<<
 *             self.context = None
*/
    __pyx_v_self->cmd_comp = NULL;

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1999
 *             dv.mlx5dv_devx_destroy_cmd_comp(self.cmd_comp)
 *             self.cmd_comp = NULL
 *             self.context = None             # <<<<<<<<<<<<<<
*/
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __Pyx_GOTREF((PyObject *)__pyx_v_self->context);
    __Pyx_DECREF((PyObject *)__pyx_v_self->context);
    __pyx_v_self->context = ((struct __pyx_obj_7pyverbs_6device_Context *)Py_None);

    /* "pyverbs/providers/mlx5/mlx5dv.pyx":1995
 * 
 *     cpdef close(self):
 *         if self.cmd_comp != NULL:             # <<<<<<<<<<<<<<
 *             self.logger.debug('Closing Mlx5DevxCmdComp')
 *             dv.mlx5dv_devx_destroy_cmd_comp(self.cmd_comp)
*/
  }

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1994
 *         self.close()
 * 
 *     cpdef close(self):             # <<<<<<<<<<<<<<
 *         if self.cmd_comp != NULL:
 *             self.logger.debug('Closing Mlx5DevxCmdComp')
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxCmdComp.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_9close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_9close = {"close", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_9close, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_9close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("close (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("close", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("close", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_8close(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_8close(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("close", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_close(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1994, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxCmdComp.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.cmd_comp cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_11__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_11__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_11__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_11__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_10__reduce_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_10__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self.cmd_comp cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.cmd_comp cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_cmd_comp_cannot_be_converte, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.cmd_comp cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxCmdComp.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.cmd_comp cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.cmd_comp cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_13__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_13__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_13__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_13__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxCmdComp.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_12__setstate_cython__(((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_12__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self.cmd_comp cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self.cmd_comp cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_self_cmd_comp_cannot_be_converte, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.cmd_comp cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.cmd_comp cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("pyverbs.providers.mlx5.mlx5dv.Mlx5DevxCmdComp.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* #### Code section: module_exttypes ### */
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context;

static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *p;
  PyObject *o = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_6device_Context, tp_new, newfunc)(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM*)__pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context;
  p->devx_umems = Py_None; Py_INCREF(Py_None);
  p->devx_objs = Py_None; Py_INCREF(Py_None);
  p->devx_eqs = Py_None; Py_INCREF(Py_None);
  p->cmd_comps = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context(PyObject *o) {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *p = (struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_25__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->devx_umems);
  Py_CLEAR(p->devx_objs);
  Py_CLEAR(p->devx_eqs);
  Py_CLEAR(p->cmd_comps);
  if (PyType_IS_GC(__pyx_mstate_global->__pyx_ptype_7pyverbs_6device_Context)) PyObject_GC_Track(o);
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_6device_Context)) __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_6device_Context, tp_dealloc, destructor)(o); else
  #endif
  __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context);
}

static int __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *p = (struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *)o;
  #if !CYTHON_USE_MODULE_STATE
  e = 0;
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_6device_Context)) {
    traverseproc traverse = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_6device_Context, tp_traverse, traverseproc);
    if (traverse) { e = traverse(o, v, a); }
  } else
  #endif
  { e = __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context); }
  if (e) return e;
  {
    e = __Pyx_call_type_traverse(o, 0, v, a);
    if (e) return e;
  }
  if (p->devx_umems) {
    e = (*v)(p->devx_umems, a); if (e) return e;
  }
  if (p->devx_objs) {
    e = (*v)(p->devx_objs, a); if (e) return e;
  }
  if (p->devx_eqs) {
    e = (*v)(p->devx_eqs, a); if (e) return e;
  }
  if (p->cmd_comps) {
    e = (*v)(p->cmd_comps, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *p = (struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context *)o;
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_6device_Context)) {
    inquiry clear = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_6device_Context, tp_clear, inquiry);
    if (clear) clear(o);
  } else
  #endif
  { __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context); }
  tmp = ((PyObject*)p->devx_umems);
  p->devx_umems = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->devx_objs);
  p->devx_objs = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->devx_eqs);
  p->devx_eqs = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->cmd_comps);
  p->cmd_comps = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context[] = {
  {"query_mlx5_device", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_3query_mlx5_device, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_2query_mlx5_device},
  {"query_mlx5_port", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_5query_mlx5_port, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"reserved_qpn_alloc", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_7reserved_qpn_alloc, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_6reserved_qpn_alloc},
  {"reserved_qpn_dealloc", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_9reserved_qpn_dealloc, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_8reserved_qpn_dealloc},
  {"crypto_login", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_11crypto_login, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_10crypto_login},
  {"query_login_state", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_13query_login_state, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_12query_login_state},
  {"crypto_logout", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_15crypto_logout, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_14crypto_logout},
  {"devx_general_cmd", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_17devx_general_cmd, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_16devx_general_cmd},
  {"device_timestamp_to_ns", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_19device_timestamp_to_ns, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_18device_timestamp_to_ns},
  {"devx_query_eqn", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_21devx_query_eqn, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_20devx_query_eqn},
  {"get_data_direct_sysfs_path", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_23get_data_direct_sysfs_path, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_29__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_31__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context},
  {Py_tp_doc, (void *)PyDoc_STR("\n    Represent mlx5 context, which extends Context.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context},
  {Py_tp_clear, (void *)__pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context},
  {Py_tp_methods, (void *)__pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context},
  {Py_tp_init, (void *)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context},
  {0, 0},
};
static PyType_Spec __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context_spec = {
  "pyverbs.providers.mlx5.mlx5dv.Mlx5Context",
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context_slots,
};
#else

static PyTypeObject __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context = {
  PyVarObject_HEAD_INIT(0, 0)
  "pyverbs.providers.mlx5.mlx5dv.""Mlx5Context", /*tp_name*/
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context, /*tp_dealloc*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  PyDoc_STR("\n    Represent mlx5 context, which extends Context.\n    "), /*tp_doc*/
  __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context, /*tp_traverse*/
  __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr *p;
  PyObject *o = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_new, newfunc)(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr *)o);
  p->fds = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr(PyObject *o) {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr *p = (struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->fds);
  if (PyType_IS_GC(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) PyObject_GC_Track(o);
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_dealloc, destructor)(o); else
  #endif
  __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr);
}

static int __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr *p = (struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr *)o;
  #if !CYTHON_USE_MODULE_STATE
  e = 0;
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) {
    traverseproc traverse = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_traverse, traverseproc);
    if (traverse) { e = traverse(o, v, a); }
  } else
  #endif
  { e = __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr); }
  if (e) return e;
  {
    e = __Pyx_call_type_traverse(o, 0, v, a);
    if (e) return e;
  }
  if (p->fds) {
    e = (*v)(p->fds, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr *p = (struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr *)o;
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) {
    inquiry clear = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_clear, inquiry);
    if (clear) clear(o);
  } else
  #endif
  { __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr); }
  tmp = ((PyObject*)p->fds);
  p->fds = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_flags(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_5flags_1__get__(o);
}

static int __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_flags(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_5flags_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_comp_mask(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_9comp_mask_1__get__(o);
}

static int __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_comp_mask(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_9comp_mask_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyMethodDef __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr[] = {
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr[] = {
  {"flags", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_flags, __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_flags, 0, 0},
  {"comp_mask", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_comp_mask, __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_comp_mask, 0, 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr},
  {Py_tp_str, (void *)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_3__str__},
  {Py_tp_doc, (void *)PyDoc_STR("\n    Represent mlx5dv_context_attr struct. This class is used to open an mlx5\n    device.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr},
  {Py_tp_clear, (void *)__pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr},
  {Py_tp_methods, (void *)__pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr},
  {Py_tp_getset, (void *)__pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr},
  {Py_tp_init, (void *)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr},
  {0, 0},
};
static PyType_Spec __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr_spec = {
  "pyverbs.providers.mlx5.mlx5dv.Mlx5DVContextAttr",
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr_slots,
};
#else

static PyTypeObject __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr = {
  PyVarObject_HEAD_INIT(0, 0)
  "pyverbs.providers.mlx5.mlx5dv.""Mlx5DVContextAttr", /*tp_name*/
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr, /*tp_dealloc*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_3__str__, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  PyDoc_STR("\n    Represent mlx5dv_context_attr struct. This class is used to open an mlx5\n    device.\n    "), /*tp_doc*/
  __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr, /*tp_traverse*/
  __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_new, newfunc)(t, a, k);
  if (unlikely(!o)) return 0;
  return o;
}

static void __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  if (PyType_IS_GC(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) PyObject_GC_Track(o);
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_dealloc, destructor)(o); else
  #endif
  __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext);
}

static int __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext(PyObject *o, visitproc v, void *a) {
  int e;
  #if !CYTHON_USE_MODULE_STATE
  e = 0;
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) {
    traverseproc traverse = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_traverse, traverseproc);
    if (traverse) { e = traverse(o, v, a); }
  } else
  #endif
  { e = __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext); }
  if (e) return e;
  {
    e = __Pyx_call_type_traverse(o, 0, v, a);
    if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext(PyObject *o) {
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) {
    inquiry clear = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_clear, inquiry);
    if (clear) clear(o);
  } else
  #endif
  { __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext); }
  return 0;
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_version(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_7version_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_flags(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_5flags_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_comp_mask(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_9comp_mask_1__get__(o);
}

static int __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_comp_mask(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_9comp_mask_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_cqe_comp_caps(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_13cqe_comp_caps_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_sw_parsing_caps(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_15sw_parsing_caps_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_striding_rq_caps(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_16striding_rq_caps_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_tunnel_offload_caps(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_19tunnel_offload_caps_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_max_dynamic_bfregs(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_18max_dynamic_bfregs_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_max_clock_info_update_nsec(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_26max_clock_info_update_nsec_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_flow_action_flags(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_17flow_action_flags_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_dc_odp_caps(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_11dc_odp_caps_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_crypto_caps(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_11crypto_caps_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_num_lag_ports(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_13num_lag_ports_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_dci_streams_caps(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_16dci_streams_caps_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_max_wr_memcpy_length(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_20max_wr_memcpy_length_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_max_dc_rd_atom(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_14max_dc_rd_atom_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_max_dc_init_rd_atom(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_19max_dc_init_rd_atom_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_ooo_recv_wrs_caps(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_17ooo_recv_wrs_caps_1__get__(o);
}

static PyMethodDef __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext[] = {
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext[] = {
  {"version", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_version, 0, 0, 0},
  {"flags", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_flags, 0, 0, 0},
  {"comp_mask", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_comp_mask, __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_comp_mask, 0, 0},
  {"cqe_comp_caps", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_cqe_comp_caps, 0, 0, 0},
  {"sw_parsing_caps", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_sw_parsing_caps, 0, 0, 0},
  {"striding_rq_caps", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_striding_rq_caps, 0, 0, 0},
  {"tunnel_offload_caps", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_tunnel_offload_caps, 0, 0, 0},
  {"max_dynamic_bfregs", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_max_dynamic_bfregs, 0, 0, 0},
  {"max_clock_info_update_nsec", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_max_clock_info_update_nsec, 0, 0, 0},
  {"flow_action_flags", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_flow_action_flags, 0, 0, 0},
  {"dc_odp_caps", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_dc_odp_caps, 0, 0, 0},
  {"crypto_caps", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_crypto_caps, 0, 0, 0},
  {"num_lag_ports", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_num_lag_ports, 0, 0, 0},
  {"dci_streams_caps", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_dci_streams_caps, 0, 0, 0},
  {"max_wr_memcpy_length", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_max_wr_memcpy_length, 0, 0, 0},
  {"max_dc_rd_atom", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_max_dc_rd_atom, 0, 0, 0},
  {"max_dc_init_rd_atom", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_max_dc_init_rd_atom, 0, 0, 0},
  {"ooo_recv_wrs_caps", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_ooo_recv_wrs_caps, 0, 0, 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext},
  {Py_tp_str, (void *)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_1__str__},
  {Py_tp_doc, (void *)PyDoc_STR("\n    Represents mlx5dv_context struct, which exposes mlx5-specific capabilities,\n    reported by mlx5dv_query_device.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext},
  {Py_tp_clear, (void *)__pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext},
  {Py_tp_methods, (void *)__pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext},
  {Py_tp_getset, (void *)__pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext},
  {Py_tp_new, (void *)__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext},
  {0, 0},
};
static PyType_Spec __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext_spec = {
  "pyverbs.providers.mlx5.mlx5dv.Mlx5DVContext",
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext_slots,
};
#else

static PyTypeObject __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext = {
  PyVarObject_HEAD_INIT(0, 0)
  "pyverbs.providers.mlx5.mlx5dv.""Mlx5DVContext", /*tp_name*/
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext, /*tp_dealloc*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_1__str__, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  PyDoc_STR("\n    Represents mlx5dv_context struct, which exposes mlx5-specific capabilities,\n    reported by mlx5dv_query_device.\n    "), /*tp_doc*/
  __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext, /*tp_traverse*/
  __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_new, newfunc)(t, a, k);
  if (unlikely(!o)) return 0;
  return o;
}

static void __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  if (PyType_IS_GC(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) PyObject_GC_Track(o);
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_dealloc, destructor)(o); else
  #endif
  __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr);
}

static int __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr(PyObject *o, visitproc v, void *a) {
  int e;
  #if !CYTHON_USE_MODULE_STATE
  e = 0;
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) {
    traverseproc traverse = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_traverse, traverseproc);
    if (traverse) { e = traverse(o, v, a); }
  } else
  #endif
  { e = __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr); }
  if (e) return e;
  {
    e = __Pyx_call_type_traverse(o, 0, v, a);
    if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr(PyObject *o) {
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) {
    inquiry clear = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_clear, inquiry);
    if (clear) clear(o);
  } else
  #endif
  { __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr); }
  return 0;
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_flags(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_5flags_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_vport(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_5vport_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_vport_vhca_id(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_13vport_vhca_id_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_esw_owner_vhca_id(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_17esw_owner_vhca_id_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_vport_steering_icm_rx(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_21vport_steering_icm_rx_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_vport_steering_icm_tx(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_21vport_steering_icm_tx_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_reg_c0_value(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_12reg_c0_value_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_reg_c0_mask(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_11reg_c0_mask_1__get__(o);
}

static PyMethodDef __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr[] = {
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr[] = {
  {"flags", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_flags, 0, 0, 0},
  {"vport", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_vport, 0, 0, 0},
  {"vport_vhca_id", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_vport_vhca_id, 0, 0, 0},
  {"esw_owner_vhca_id", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_esw_owner_vhca_id, 0, 0, 0},
  {"vport_steering_icm_rx", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_vport_steering_icm_rx, 0, 0, 0},
  {"vport_steering_icm_tx", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_vport_steering_icm_tx, 0, 0, 0},
  {"reg_c0_value", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_reg_c0_value, 0, 0, 0},
  {"reg_c0_mask", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_reg_c0_mask, 0, 0, 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr},
  {Py_tp_str, (void *)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_3__str__},
  {Py_tp_doc, (void *)PyDoc_STR("\n    Represents mlx5dv_port struct, which exposes mlx5-specific capabilities,\n    reported by mlx5dv_query_port()\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr},
  {Py_tp_clear, (void *)__pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr},
  {Py_tp_methods, (void *)__pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr},
  {Py_tp_getset, (void *)__pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr},
  {Py_tp_init, (void *)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr},
  {0, 0},
};
static PyType_Spec __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr_spec = {
  "pyverbs.providers.mlx5.mlx5dv.Mlx5DVPortAttr",
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr_slots,
};
#else

static PyTypeObject __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr = {
  PyVarObject_HEAD_INIT(0, 0)
  "pyverbs.providers.mlx5.mlx5dv.""Mlx5DVPortAttr", /*tp_name*/
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr, /*tp_dealloc*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_3__str__, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  PyDoc_STR("\n    Represents mlx5dv_port struct, which exposes mlx5-specific capabilities,\n    reported by mlx5dv_query_port()\n    "), /*tp_doc*/
  __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr, /*tp_traverse*/
  __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_new, newfunc)(t, a, k);
  if (unlikely(!o)) return 0;
  return o;
}

static void __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  if (PyType_IS_GC(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) PyObject_GC_Track(o);
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_dealloc, destructor)(o); else
  #endif
  __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr);
}

static int __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr(PyObject *o, visitproc v, void *a) {
  int e;
  #if !CYTHON_USE_MODULE_STATE
  e = 0;
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) {
    traverseproc traverse = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_traverse, traverseproc);
    if (traverse) { e = traverse(o, v, a); }
  } else
  #endif
  { e = __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr); }
  if (e) return e;
  {
    e = __Pyx_call_type_traverse(o, 0, v, a);
    if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr(PyObject *o) {
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) {
    inquiry clear = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_clear, inquiry);
    if (clear) clear(o);
  } else
  #endif
  { __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr); }
  return 0;
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_log_num_concurent(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_17log_num_concurent_1__get__(o);
}

static int __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_log_num_concurent(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_17log_num_concurent_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_log_num_errored(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_15log_num_errored_1__get__(o);
}

static int __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_log_num_errored(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_15log_num_errored_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyMethodDef __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr[] = {
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr[] = {
  {"log_num_concurent", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_log_num_concurent, __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_log_num_concurent, 0, 0},
  {"log_num_errored", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_log_num_errored, __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_log_num_errored, 0, 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr},
  {Py_tp_str, (void *)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_3__str__},
  {Py_tp_doc, (void *)PyDoc_STR("\n    Represents dci_streams struct, which defines initial attributes\n    for DC QP creation.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr},
  {Py_tp_clear, (void *)__pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr},
  {Py_tp_methods, (void *)__pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr},
  {Py_tp_getset, (void *)__pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr},
  {Py_tp_init, (void *)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr},
  {0, 0},
};
static PyType_Spec __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr_spec = {
  "pyverbs.providers.mlx5.mlx5dv.Mlx5DCIStreamInitAttr",
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr_slots,
};
#else

static PyTypeObject __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr = {
  PyVarObject_HEAD_INIT(0, 0)
  "pyverbs.providers.mlx5.mlx5dv.""Mlx5DCIStreamInitAttr", /*tp_name*/
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr, /*tp_dealloc*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_3__str__, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  PyDoc_STR("\n    Represents dci_streams struct, which defines initial attributes\n    for DC QP creation.\n    "), /*tp_doc*/
  __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr, /*tp_traverse*/
  __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_new, newfunc)(t, a, k);
  if (unlikely(!o)) return 0;
  return o;
}

static void __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  if (PyType_IS_GC(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) PyObject_GC_Track(o);
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_dealloc, destructor)(o); else
  #endif
  __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr);
}

static int __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr(PyObject *o, visitproc v, void *a) {
  int e;
  #if !CYTHON_USE_MODULE_STATE
  e = 0;
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) {
    traverseproc traverse = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_traverse, traverseproc);
    if (traverse) { e = traverse(o, v, a); }
  } else
  #endif
  { e = __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr); }
  if (e) return e;
  {
    e = __Pyx_call_type_traverse(o, 0, v, a);
    if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr(PyObject *o) {
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) {
    inquiry clear = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_clear, inquiry);
    if (clear) clear(o);
  } else
  #endif
  { __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr); }
  return 0;
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_dc_type(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_7dc_type_1__get__(o);
}

static int __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_dc_type(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_7dc_type_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_dct_access_key(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_14dct_access_key_1__get__(o);
}

static int __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_dct_access_key(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_14dct_access_key_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_dci_streams(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_11dci_streams_1__get__(o);
}

static int __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_dci_streams(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_11dci_streams_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyMethodDef __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr[] = {
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr[] = {
  {"dc_type", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_dc_type, __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_dc_type, 0, 0},
  {"dct_access_key", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_dct_access_key, __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_dct_access_key, 0, 0},
  {"dci_streams", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_dci_streams, __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_dci_streams, 0, 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr},
  {Py_tp_str, (void *)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_3__str__},
  {Py_tp_doc, (void *)PyDoc_STR("\n    Represents mlx5dv_dc_init_attr struct, which defines initial attributes\n    for DC QP creation.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr},
  {Py_tp_clear, (void *)__pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr},
  {Py_tp_methods, (void *)__pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr},
  {Py_tp_getset, (void *)__pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr},
  {Py_tp_init, (void *)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr},
  {0, 0},
};
static PyType_Spec __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr_spec = {
  "pyverbs.providers.mlx5.mlx5dv.Mlx5DVDCInitAttr",
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr_slots,
};
#else

static PyTypeObject __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr = {
  PyVarObject_HEAD_INIT(0, 0)
  "pyverbs.providers.mlx5.mlx5dv.""Mlx5DVDCInitAttr", /*tp_name*/
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr, /*tp_dealloc*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_3__str__, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  PyDoc_STR("\n    Represents mlx5dv_dc_init_attr struct, which defines initial attributes\n    for DC QP creation.\n    "), /*tp_doc*/
  __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr, /*tp_traverse*/
  __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_new, newfunc)(t, a, k);
  if (unlikely(!o)) return 0;
  return o;
}

static void __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  if (PyType_IS_GC(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) PyObject_GC_Track(o);
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_dealloc, destructor)(o); else
  #endif
  __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr);
}

static int __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr(PyObject *o, visitproc v, void *a) {
  int e;
  #if !CYTHON_USE_MODULE_STATE
  e = 0;
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) {
    traverseproc traverse = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_traverse, traverseproc);
    if (traverse) { e = traverse(o, v, a); }
  } else
  #endif
  { e = __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr); }
  if (e) return e;
  {
    e = __Pyx_call_type_traverse(o, 0, v, a);
    if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr(PyObject *o) {
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) {
    inquiry clear = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_clear, inquiry);
    if (clear) clear(o);
  } else
  #endif
  { __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr); }
  return 0;
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_comp_mask(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_9comp_mask_1__get__(o);
}

static int __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_comp_mask(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_9comp_mask_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_create_flags(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_12create_flags_1__get__(o);
}

static int __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_create_flags(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_12create_flags_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_send_ops_flags(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_14send_ops_flags_1__get__(o);
}

static int __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_send_ops_flags(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_14send_ops_flags_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_dc_type(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_7dc_type_1__get__(o);
}

static int __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_dc_type(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_7dc_type_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_dct_access_key(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_14dct_access_key_1__get__(o);
}

static int __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_dct_access_key(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_14dct_access_key_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_dci_streams(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_11dci_streams_1__get__(o);
}

static int __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_dci_streams(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_11dci_streams_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyMethodDef __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr[] = {
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr[] = {
  {"comp_mask", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_comp_mask, __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_comp_mask, 0, 0},
  {"create_flags", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_create_flags, __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_create_flags, 0, 0},
  {"send_ops_flags", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_send_ops_flags, __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_send_ops_flags, 0, 0},
  {"dc_type", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_dc_type, __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_dc_type, 0, 0},
  {"dct_access_key", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_dct_access_key, __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_dct_access_key, 0, 0},
  {"dci_streams", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_dci_streams, __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_dci_streams, 0, 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr},
  {Py_tp_str, (void *)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_3__str__},
  {Py_tp_doc, (void *)PyDoc_STR("\n    Represents mlx5dv_qp_init_attr struct, initial attributes used for mlx5 QP\n    creation.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr},
  {Py_tp_clear, (void *)__pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr},
  {Py_tp_methods, (void *)__pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr},
  {Py_tp_getset, (void *)__pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr},
  {Py_tp_init, (void *)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr},
  {0, 0},
};
static PyType_Spec __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr_spec = {
  "pyverbs.providers.mlx5.mlx5dv.Mlx5DVQPInitAttr",
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr_slots,
};
#else

static PyTypeObject __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr = {
  PyVarObject_HEAD_INIT(0, 0)
  "pyverbs.providers.mlx5.mlx5dv.""Mlx5DVQPInitAttr", /*tp_name*/
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr, /*tp_dealloc*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_3__str__, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  PyDoc_STR("\n    Represents mlx5dv_qp_init_attr struct, initial attributes used for mlx5 QP\n    creation.\n    "), /*tp_doc*/
  __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr, /*tp_traverse*/
  __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP;

static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *p;
  PyObject *o = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_2qp_QPEx, tp_new, newfunc)(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *)o);
  p->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM*)__pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP;
  p->dc_type = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP(PyObject *o) {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *p = (struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->dc_type);
  if (PyType_IS_GC(__pyx_mstate_global->__pyx_ptype_7pyverbs_2qp_QPEx)) PyObject_GC_Track(o);
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_2qp_QPEx)) __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_2qp_QPEx, tp_dealloc, destructor)(o); else
  #endif
  __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP);
}

static int __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *p = (struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *)o;
  #if !CYTHON_USE_MODULE_STATE
  e = 0;
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_2qp_QPEx)) {
    traverseproc traverse = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_2qp_QPEx, tp_traverse, traverseproc);
    if (traverse) { e = traverse(o, v, a); }
  } else
  #endif
  { e = __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP); }
  if (e) return e;
  {
    e = __Pyx_call_type_traverse(o, 0, v, a);
    if (e) return e;
  }
  if (p->dc_type) {
    e = (*v)(p->dc_type, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *p = (struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP *)o;
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_2qp_QPEx)) {
    inquiry clear = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_2qp_QPEx, tp_clear, inquiry);
    if (clear) clear(o);
  } else
  #endif
  { __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP); }
  tmp = ((PyObject*)p->dc_type);
  p->dc_type = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP[] = {
  {"_get_comp_mask", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_3_get_comp_mask, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"wr_set_dc_addr", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_5wr_set_dc_addr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_4wr_set_dc_addr},
  {"wr_raw_wqe", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_7wr_raw_wqe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_6wr_raw_wqe},
  {"wr_mr_interleaved", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_9wr_mr_interleaved, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_8wr_mr_interleaved},
  {"wr_mr_list", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_11wr_mr_list, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_10wr_mr_list},
  {"wr_mkey_configure", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_13wr_mkey_configure, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_12wr_mkey_configure},
  {"wr_set_mkey_access_flags", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_15wr_set_mkey_access_flags, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_14wr_set_mkey_access_flags},
  {"wr_set_mkey_layout_list", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_17wr_set_mkey_layout_list, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_16wr_set_mkey_layout_list},
  {"wr_set_mkey_layout_interleaved", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_19wr_set_mkey_layout_interleaved, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_18wr_set_mkey_layout_interleaved},
  {"wr_set_mkey_crypto", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_21wr_set_mkey_crypto, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_20wr_set_mkey_crypto},
  {"wr_set_mkey_sig_block", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_23wr_set_mkey_sig_block, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_22wr_set_mkey_sig_block},
  {"wr_memcpy", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_25wr_memcpy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_24wr_memcpy},
  {"cancel_posted_send_wrs", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_27cancel_posted_send_wrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_26cancel_posted_send_wrs},
  {"wr_set_dc_addr_stream", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_29wr_set_dc_addr_stream, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_28wr_set_dc_addr_stream},
  {"query_lag_port", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_31query_lag_port, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_30query_lag_port},
  {"modify_lag_port", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_33modify_lag_port, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_32modify_lag_port},
  {"modify_qp_sched_elem", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_35modify_qp_sched_elem, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_34modify_qp_sched_elem},
  {"modify_udp_sport", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_37modify_udp_sport, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_36modify_udp_sport},
  {"map_ah_to_qp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_39map_ah_to_qp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_38map_ah_to_qp},
  {"modify_dci_stream_channel_id", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_41modify_dci_stream_channel_id, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_40modify_dci_stream_channel_id},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_43__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_45__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP},
  {Py_tp_clear, (void *)__pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP},
  {Py_tp_methods, (void *)__pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP},
  {Py_tp_init, (void *)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP},
  {0, 0},
};
static PyType_Spec __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP_spec = {
  "pyverbs.providers.mlx5.mlx5dv.Mlx5QP",
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP_slots,
};
#else

static PyTypeObject __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP = {
  PyVarObject_HEAD_INIT(0, 0)
  "pyverbs.providers.mlx5.mlx5dv.""Mlx5QP", /*tp_name*/
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, /*tp_dealloc*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, /*tp_traverse*/
  __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_new, newfunc)(t, a, k);
  if (unlikely(!o)) return 0;
  return o;
}

static void __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  if (PyType_IS_GC(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) PyObject_GC_Track(o);
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_dealloc, destructor)(o); else
  #endif
  __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr);
}

static int __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr(PyObject *o, visitproc v, void *a) {
  int e;
  #if !CYTHON_USE_MODULE_STATE
  e = 0;
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) {
    traverseproc traverse = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_traverse, traverseproc);
    if (traverse) { e = traverse(o, v, a); }
  } else
  #endif
  { e = __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr); }
  if (e) return e;
  {
    e = __Pyx_call_type_traverse(o, 0, v, a);
    if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr(PyObject *o) {
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) {
    inquiry clear = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_clear, inquiry);
    if (clear) clear(o);
  } else
  #endif
  { __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr); }
  return 0;
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_comp_mask(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_9comp_mask_1__get__(o);
}

static int __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_comp_mask(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_9comp_mask_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_cqe_comp_res_format(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_19cqe_comp_res_format_1__get__(o);
}

static int __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_cqe_comp_res_format(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_19cqe_comp_res_format_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_flags(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_5flags_1__get__(o);
}

static int __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_flags(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_5flags_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_cqe_size(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_8cqe_size_1__get__(o);
}

static int __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_cqe_size(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_8cqe_size_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyMethodDef __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr[] = {
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr[] = {
  {"comp_mask", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_comp_mask, __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_comp_mask, 0, 0},
  {"cqe_comp_res_format", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_cqe_comp_res_format, __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_cqe_comp_res_format, 0, 0},
  {"flags", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_flags, __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_flags, 0, 0},
  {"cqe_size", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_cqe_size, __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_cqe_size, 0, 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr},
  {Py_tp_str, (void *)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_3__str__},
  {Py_tp_doc, (void *)PyDoc_STR("\n    Represents mlx5dv_cq_init_attr struct, initial attributes used for mlx5 CQ\n    creation.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr},
  {Py_tp_clear, (void *)__pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr},
  {Py_tp_methods, (void *)__pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr},
  {Py_tp_getset, (void *)__pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr},
  {Py_tp_init, (void *)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr},
  {0, 0},
};
static PyType_Spec __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr_spec = {
  "pyverbs.providers.mlx5.mlx5dv.Mlx5DVCQInitAttr",
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr_slots,
};
#else

static PyTypeObject __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr = {
  PyVarObject_HEAD_INIT(0, 0)
  "pyverbs.providers.mlx5.mlx5dv.""Mlx5DVCQInitAttr", /*tp_name*/
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr, /*tp_dealloc*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_3__str__, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  PyDoc_STR("\n    Represents mlx5dv_cq_init_attr struct, initial attributes used for mlx5 CQ\n    creation.\n    "), /*tp_doc*/
  __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr, /*tp_traverse*/
  __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ;

static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ *p;
  PyObject *o = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_2cq_CQEX, tp_new, newfunc)(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM*)__pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ;
  return o;
}

static void __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  if (PyType_IS_GC(__pyx_mstate_global->__pyx_ptype_7pyverbs_2cq_CQEX)) PyObject_GC_Track(o);
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_2cq_CQEX)) __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_2cq_CQEX, tp_dealloc, destructor)(o); else
  #endif
  __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ);
}

static int __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ(PyObject *o, visitproc v, void *a) {
  int e;
  #if !CYTHON_USE_MODULE_STATE
  e = 0;
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_2cq_CQEX)) {
    traverseproc traverse = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_2cq_CQEX, tp_traverse, traverseproc);
    if (traverse) { e = traverse(o, v, a); }
  } else
  #endif
  { e = __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ); }
  if (e) return e;
  {
    e = __Pyx_call_type_traverse(o, 0, v, a);
    if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ(PyObject *o) {
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_2cq_CQEX)) {
    inquiry clear = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_2cq_CQEX, tp_clear, inquiry);
    if (clear) clear(o);
  } else
  #endif
  { __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ); }
  return 0;
}

static PyMethodDef __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ[] = {
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5CQ_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5CQ_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ},
  {Py_tp_str, (void *)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5CQ_3__str__},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ},
  {Py_tp_clear, (void *)__pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ},
  {Py_tp_methods, (void *)__pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ},
  {Py_tp_init, (void *)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5CQ_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ},
  {0, 0},
};
static PyType_Spec __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ_spec = {
  "pyverbs.providers.mlx5.mlx5dv.Mlx5CQ",
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ_slots,
};
#else

static PyTypeObject __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ = {
  PyVarObject_HEAD_INIT(0, 0)
  "pyverbs.providers.mlx5.mlx5dv.""Mlx5CQ", /*tp_name*/
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ, /*tp_dealloc*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5CQ_3__str__, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ, /*tp_traverse*/
  __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5CQ_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR;

static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *p;
  PyObject *o = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_new, newfunc)(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *)o);
  p->__pyx_vtab = __pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR;
  p->context = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR(PyObject *o) {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *p = (struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->context);
  if (PyType_IS_GC(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) PyObject_GC_Track(o);
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_dealloc, destructor)(o); else
  #endif
  __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR);
}

static int __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *p = (struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *)o;
  #if !CYTHON_USE_MODULE_STATE
  e = 0;
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) {
    traverseproc traverse = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_traverse, traverseproc);
    if (traverse) { e = traverse(o, v, a); }
  } else
  #endif
  { e = __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR); }
  if (e) return e;
  {
    e = __Pyx_call_type_traverse(o, 0, v, a);
    if (e) return e;
  }
  if (p->context) {
    e = (*v)(p->context, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *p = (struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *)o;
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) {
    inquiry clear = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_clear, inquiry);
    if (clear) clear(o);
  } else
  #endif
  { __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR); }
  tmp = ((PyObject*)p->context);
  p->context = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_page_id(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_7page_id_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_length(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_6length_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_mmap_off(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_8mmap_off_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_comp_mask(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_9comp_mask_1__get__(o);
}

static PyMethodDef __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR[] = {
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_9__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_11__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR[] = {
  {"page_id", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_page_id, 0, 0, 0},
  {"length", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_length, 0, 0, 0},
  {"mmap_off", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_mmap_off, 0, 0, 0},
  {"comp_mask", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_comp_mask, 0, 0, 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR},
  {Py_tp_str, (void *)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_7__str__},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR},
  {Py_tp_clear, (void *)__pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR},
  {Py_tp_methods, (void *)__pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR},
  {Py_tp_getset, (void *)__pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR},
  {Py_tp_init, (void *)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR},
  {0, 0},
};
static PyType_Spec __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR_spec = {
  "pyverbs.providers.mlx5.mlx5dv.Mlx5VAR",
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR_slots,
};
#else

static PyTypeObject __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR = {
  PyVarObject_HEAD_INIT(0, 0)
  "pyverbs.providers.mlx5.mlx5dv.""Mlx5VAR", /*tp_name*/
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR, /*tp_dealloc*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_7__str__, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR, /*tp_traverse*/
  __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP;

static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP *p;
  PyObject *o = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_new, newfunc)(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP *)o);
  p->__pyx_vtab = __pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP;
  p->context = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP(PyObject *o) {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP *p = (struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->context);
  if (PyType_IS_GC(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) PyObject_GC_Track(o);
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_dealloc, destructor)(o); else
  #endif
  __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP);
}

static int __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP *p = (struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP *)o;
  #if !CYTHON_USE_MODULE_STATE
  e = 0;
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) {
    traverseproc traverse = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_traverse, traverseproc);
    if (traverse) { e = traverse(o, v, a); }
  } else
  #endif
  { e = __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP); }
  if (e) return e;
  {
    e = __Pyx_call_type_traverse(o, 0, v, a);
    if (e) return e;
  }
  if (p->context) {
    e = (*v)(p->context, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP *p = (struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP *)o;
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) {
    inquiry clear = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_clear, inquiry);
    if (clear) clear(o);
  } else
  #endif
  { __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP); }
  tmp = ((PyObject*)p->context);
  p->context = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_index(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_5index_1__get__(o);
}

static PyMethodDef __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP[] = {
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP[] = {
  {"index", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_index, 0, 0, 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP},
  {Py_tp_doc, (void *)PyDoc_STR("\n    Represents mlx5dv_pp, packet pacing struct.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP},
  {Py_tp_clear, (void *)__pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP},
  {Py_tp_methods, (void *)__pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP},
  {Py_tp_getset, (void *)__pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP},
  {Py_tp_init, (void *)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP},
  {0, 0},
};
static PyType_Spec __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP_spec = {
  "pyverbs.providers.mlx5.mlx5dv.Mlx5PP",
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP_slots,
};
#else

static PyTypeObject __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP = {
  PyVarObject_HEAD_INIT(0, 0)
  "pyverbs.providers.mlx5.mlx5dv.""Mlx5PP", /*tp_name*/
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP, /*tp_dealloc*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  PyDoc_STR("\n    Represents mlx5dv_pp, packet pacing struct.\n    "), /*tp_doc*/
  __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP, /*tp_traverse*/
  __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR;

static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *p;
  PyObject *o = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_new, newfunc)(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *)o);
  p->__pyx_vtab = __pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR;
  p->context = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR(PyObject *o) {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *p = (struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->context);
  if (PyType_IS_GC(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) PyObject_GC_Track(o);
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_dealloc, destructor)(o); else
  #endif
  __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR);
}

static int __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *p = (struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *)o;
  #if !CYTHON_USE_MODULE_STATE
  e = 0;
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) {
    traverseproc traverse = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_traverse, traverseproc);
    if (traverse) { e = traverse(o, v, a); }
  } else
  #endif
  { e = __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR); }
  if (e) return e;
  {
    e = __Pyx_call_type_traverse(o, 0, v, a);
    if (e) return e;
  }
  if (p->context) {
    e = (*v)(p->context, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *p = (struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *)o;
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) {
    inquiry clear = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_clear, inquiry);
    if (clear) clear(o);
  } else
  #endif
  { __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR); }
  tmp = ((PyObject*)p->context);
  p->context = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_reg_addr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_8reg_addr_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_base_addr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_9base_addr_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_page_id(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_7page_id_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_mmap_off(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_8mmap_off_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_comp_mask(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_9comp_mask_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_uar(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_3uar_1__get__(o);
}

static PyMethodDef __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR[] = {
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_9__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_11__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR[] = {
  {"reg_addr", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_reg_addr, 0, 0, 0},
  {"base_addr", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_base_addr, 0, 0, 0},
  {"page_id", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_page_id, 0, 0, 0},
  {"mmap_off", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_mmap_off, 0, 0, 0},
  {"comp_mask", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_comp_mask, 0, 0, 0},
  {"uar", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_uar, 0, 0, 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR},
  {Py_tp_str, (void *)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_7__str__},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR},
  {Py_tp_clear, (void *)__pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR},
  {Py_tp_methods, (void *)__pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR},
  {Py_tp_getset, (void *)__pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR},
  {Py_tp_init, (void *)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR},
  {0, 0},
};
static PyType_Spec __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR_spec = {
  "pyverbs.providers.mlx5.mlx5dv.Mlx5UAR",
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR_slots,
};
#else

static PyTypeObject __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR = {
  PyVarObject_HEAD_INIT(0, 0)
  "pyverbs.providers.mlx5.mlx5dv.""Mlx5UAR", /*tp_name*/
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR, /*tp_dealloc*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_7__str__, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR, /*tp_traverse*/
  __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr;

static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr *p;
  PyObject *o = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM, tp_new, newfunc)(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM*)__pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr;
  return o;
}

static void __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  if (PyType_IS_GC(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM)) PyObject_GC_Track(o);
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM)) __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM, tp_dealloc, destructor)(o); else
  #endif
  __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr);
}

static int __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr(PyObject *o, visitproc v, void *a) {
  int e;
  #if !CYTHON_USE_MODULE_STATE
  e = 0;
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM)) {
    traverseproc traverse = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM, tp_traverse, traverseproc);
    if (traverse) { e = traverse(o, v, a); }
  } else
  #endif
  { e = __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr); }
  if (e) return e;
  {
    e = __Pyx_call_type_traverse(o, 0, v, a);
    if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr(PyObject *o) {
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM)) {
    inquiry clear = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM, tp_clear, inquiry);
    if (clear) clear(o);
  } else
  #endif
  { __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr); }
  return 0;
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_addr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_4addr_1__get__(o);
}

static PyMethodDef __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr[] = {
  {"unmap", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_3unmap, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"write", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_5write, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_4write},
  {"read", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_7read, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_6read},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_11__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_13__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr[] = {
  {"addr", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_addr, 0, 0, 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr},
  {Py_tp_clear, (void *)__pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr},
  {Py_tp_methods, (void *)__pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr},
  {Py_tp_getset, (void *)__pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr},
  {Py_tp_init, (void *)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr},
  {0, 0},
};
static PyType_Spec __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr_spec = {
  "pyverbs.providers.mlx5.mlx5dv.Mlx5DmOpAddr",
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr_slots,
};
#else

static PyTypeObject __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr = {
  PyVarObject_HEAD_INIT(0, 0)
  "pyverbs.providers.mlx5.mlx5dv.""Mlx5DmOpAddr", /*tp_name*/
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr, /*tp_dealloc*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr, /*tp_traverse*/
  __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg;

static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg *p;
  PyObject *o = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM, tp_new, newfunc)(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM*)__pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg;
  return o;
}

static void __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_5__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  if (PyType_IS_GC(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM)) PyObject_GC_Track(o);
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM)) __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM, tp_dealloc, destructor)(o); else
  #endif
  __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg);
}

static int __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg(PyObject *o, visitproc v, void *a) {
  int e;
  #if !CYTHON_USE_MODULE_STATE
  e = 0;
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM)) {
    traverseproc traverse = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM, tp_traverse, traverseproc);
    if (traverse) { e = traverse(o, v, a); }
  } else
  #endif
  { e = __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg); }
  if (e) return e;
  {
    e = __Pyx_call_type_traverse(o, 0, v, a);
    if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg(PyObject *o) {
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM)) {
    inquiry clear = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM, tp_clear, inquiry);
    if (clear) clear(o);
  } else
  #endif
  { __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg); }
  return 0;
}

static PyMethodDef __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg[] = {
  {"sizeof", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_1sizeof, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_9__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_11__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg},
  {Py_tp_doc, (void *)PyDoc_STR("\n    An abstract class for WQE segments.\n    Each WQE segment (such as control segment, data segment, etc.) should\n    inherit from this class.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg},
  {Py_tp_clear, (void *)__pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg},
  {Py_tp_methods, (void *)__pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg},
  {Py_tp_new, (void *)__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg},
  {0, 0},
};
static PyType_Spec __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg_spec = {
  "pyverbs.providers.mlx5.mlx5dv.WqeSeg",
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg_slots,
};
#else

static PyTypeObject __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg = {
  PyVarObject_HEAD_INIT(0, 0)
  "pyverbs.providers.mlx5.mlx5dv.""WqeSeg", /*tp_name*/
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg, /*tp_dealloc*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  PyDoc_STR("\n    An abstract class for WQE segments.\n    Each WQE segment (such as control segment, data segment, etc.) should\n    inherit from this class.\n    "), /*tp_doc*/
  __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg, /*tp_traverse*/
  __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg;

static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *p;
  PyObject *o = __pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM*)__pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg;
  return o;
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_addr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_4addr_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_opmod_idx_opcode(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_16opmod_idx_opcode_1__get__(o);
}

static int __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_opmod_idx_opcode(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_16opmod_idx_opcode_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_qpn_ds(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_6qpn_ds_1__get__(o);
}

static int __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_qpn_ds(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_6qpn_ds_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_signature(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_9signature_1__get__(o);
}

static int __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_signature(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_9signature_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_fm_ce_se(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_8fm_ce_se_1__get__(o);
}

static int __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_fm_ce_se(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_8fm_ce_se_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_imm(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_3imm_1__get__(o);
}

static int __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_imm(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_3imm_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyMethodDef __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg[] = {
  {"set_ctrl_seg", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_5set_ctrl_seg, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"sizeof", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_7sizeof, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_9__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_11__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg[] = {
  {"addr", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_addr, 0, 0, 0},
  {"opmod_idx_opcode", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_opmod_idx_opcode, __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_opmod_idx_opcode, 0, 0},
  {"qpn_ds", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_qpn_ds, __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_qpn_ds, 0, 0},
  {"signature", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_signature, __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_signature, 0, 0},
  {"fm_ce_se", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_fm_ce_se, __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_fm_ce_se, 0, 0},
  {"imm", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_imm, __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_imm, 0, 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg},
  {Py_tp_str, (void *)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_3__str__},
  {Py_tp_doc, (void *)PyDoc_STR("\n    Wrapper class for dv.mlx5_wqe_ctrl_seg\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg},
  {Py_tp_clear, (void *)__pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg},
  {Py_tp_methods, (void *)__pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg},
  {Py_tp_getset, (void *)__pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg},
  {Py_tp_init, (void *)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg},
  {0, 0},
};
static PyType_Spec __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg_spec = {
  "pyverbs.providers.mlx5.mlx5dv.WqeCtrlSeg",
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg_slots,
};
#else

static PyTypeObject __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg = {
  PyVarObject_HEAD_INIT(0, 0)
  "pyverbs.providers.mlx5.mlx5dv.""WqeCtrlSeg", /*tp_name*/
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg, /*tp_dealloc*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_3__str__, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  PyDoc_STR("\n    Wrapper class for dv.mlx5_wqe_ctrl_seg\n    "), /*tp_doc*/
  __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg, /*tp_traverse*/
  __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg;

static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg *p;
  PyObject *o = __pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM*)__pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg;
  return o;
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_byte_count(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_10byte_count_1__get__(o);
}

static int __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_byte_count(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_10byte_count_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_lkey(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_4lkey_1__get__(o);
}

static int __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_lkey(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_4lkey_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_addr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_4addr_1__get__(o);
}

static int __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_addr(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_4addr_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyMethodDef __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg[] = {
  {"sizeof", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_3sizeof, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"set_data_seg", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_7set_data_seg, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_9__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_11__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg[] = {
  {"byte_count", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_byte_count, __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_byte_count, 0, 0},
  {"lkey", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_lkey, __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_lkey, 0, 0},
  {"addr", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_addr, __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_addr, 0, 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg},
  {Py_tp_str, (void *)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_5__str__},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg},
  {Py_tp_clear, (void *)__pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg},
  {Py_tp_methods, (void *)__pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg},
  {Py_tp_getset, (void *)__pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg},
  {Py_tp_init, (void *)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg},
  {0, 0},
};
static PyType_Spec __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg_spec = {
  "pyverbs.providers.mlx5.mlx5dv.WqeDataSeg",
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg_slots,
};
#else

static PyTypeObject __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg = {
  PyVarObject_HEAD_INIT(0, 0)
  "pyverbs.providers.mlx5.mlx5dv.""WqeDataSeg", /*tp_name*/
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg, /*tp_dealloc*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_5__str__, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg, /*tp_traverse*/
  __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe;

static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe *p;
  PyObject *o = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM, tp_new, newfunc)(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM*)__pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe;
  p->segments = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe(PyObject *o) {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe *p = (struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_5__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->segments);
  if (PyType_IS_GC(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM)) PyObject_GC_Track(o);
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM)) __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM, tp_dealloc, destructor)(o); else
  #endif
  __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe);
}

static int __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe *p = (struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe *)o;
  #if !CYTHON_USE_MODULE_STATE
  e = 0;
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM)) {
    traverseproc traverse = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM, tp_traverse, traverseproc);
    if (traverse) { e = traverse(o, v, a); }
  } else
  #endif
  { e = __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe); }
  if (e) return e;
  {
    e = __Pyx_call_type_traverse(o, 0, v, a);
    if (e) return e;
  }
  if (p->segments) {
    e = (*v)(p->segments, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe *p = (struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe *)o;
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM)) {
    inquiry clear = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM, tp_clear, inquiry);
    if (clear) clear(o);
  } else
  #endif
  { __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe); }
  tmp = ((PyObject*)p->segments);
  p->segments = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_address(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_7address_1__get__(o);
}

static PyMethodDef __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe[] = {
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_9__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_11__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe[] = {
  {"address", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_address, 0, 0, 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe},
  {Py_tp_str, (void *)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_3__str__},
  {Py_tp_doc, (void *)PyDoc_STR("\n    The Wqe class represents a WQE, which is one or more chained WQE segments.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe},
  {Py_tp_clear, (void *)__pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe},
  {Py_tp_methods, (void *)__pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe},
  {Py_tp_getset, (void *)__pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe},
  {Py_tp_init, (void *)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe},
  {0, 0},
};
static PyType_Spec __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe_spec = {
  "pyverbs.providers.mlx5.mlx5dv.Wqe",
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe_slots,
};
#else

static PyTypeObject __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe = {
  PyVarObject_HEAD_INIT(0, 0)
  "pyverbs.providers.mlx5.mlx5dv.""Wqe", /*tp_name*/
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe, /*tp_dealloc*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_3__str__, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  PyDoc_STR("\n    The Wqe class represents a WQE, which is one or more chained WQE segments.\n    "), /*tp_doc*/
  __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe, /*tp_traverse*/
  __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM;

static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM *p;
  PyObject *o = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM, tp_new, newfunc)(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM*)__pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM;
  p->context = ((struct __pyx_obj_7pyverbs_6device_Context *)Py_None); Py_INCREF(Py_None);
  p->is_user_addr = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM(PyObject *o) {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM *p = (struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->context);
  Py_CLEAR(p->is_user_addr);
  if (PyType_IS_GC(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM)) PyObject_GC_Track(o);
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM)) __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM, tp_dealloc, destructor)(o); else
  #endif
  __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM);
}

static int __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM *p = (struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM *)o;
  #if !CYTHON_USE_MODULE_STATE
  e = 0;
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM)) {
    traverseproc traverse = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM, tp_traverse, traverseproc);
    if (traverse) { e = traverse(o, v, a); }
  } else
  #endif
  { e = __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM); }
  if (e) return e;
  {
    e = __Pyx_call_type_traverse(o, 0, v, a);
    if (e) return e;
  }
  if (p->context) {
    e = (*v)(((PyObject *)p->context), a); if (e) return e;
  }
  if (p->is_user_addr) {
    e = (*v)(p->is_user_addr, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM *p = (struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM *)o;
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM)) {
    inquiry clear = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM, tp_clear, inquiry);
    if (clear) clear(o);
  } else
  #endif
  { __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM); }
  tmp = ((PyObject*)p->context);
  p->context = ((struct __pyx_obj_7pyverbs_6device_Context *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->is_user_addr);
  p->is_user_addr = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_umem_id(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_7umem_id_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_umem_addr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_9umem_addr_1__get__(o);
}

static PyMethodDef __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM[] = {
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_9__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_11__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM[] = {
  {"umem_id", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_umem_id, 0, 0, 0},
  {"umem_addr", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_umem_addr, 0, 0, 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM},
  {Py_tp_str, (void *)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_7__str__},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM},
  {Py_tp_clear, (void *)__pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM},
  {Py_tp_methods, (void *)__pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM},
  {Py_tp_getset, (void *)__pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM},
  {Py_tp_init, (void *)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM},
  {0, 0},
};
static PyType_Spec __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM_spec = {
  "pyverbs.providers.mlx5.mlx5dv.Mlx5UMEM",
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM_slots,
};
#else

static PyTypeObject __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM = {
  PyVarObject_HEAD_INIT(0, 0)
  "pyverbs.providers.mlx5.mlx5dv.""Mlx5UMEM", /*tp_name*/
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM, /*tp_dealloc*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_7__str__, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM, /*tp_traverse*/
  __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj;

static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *p;
  PyObject *o = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM, tp_new, newfunc)(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM*)__pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj;
  p->context = ((struct __pyx_obj_7pyverbs_6device_Context *)Py_None); Py_INCREF(Py_None);
  p->out_view = Py_None; Py_INCREF(Py_None);
  p->flow_counter_actions = Py_None; Py_INCREF(Py_None);
  p->dest_tir_actions = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj(PyObject *o) {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *p = (struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_9__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->context);
  Py_CLEAR(p->out_view);
  Py_CLEAR(p->flow_counter_actions);
  Py_CLEAR(p->dest_tir_actions);
  if (PyType_IS_GC(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM)) PyObject_GC_Track(o);
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM)) __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM, tp_dealloc, destructor)(o); else
  #endif
  __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj);
}

static int __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *p = (struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *)o;
  #if !CYTHON_USE_MODULE_STATE
  e = 0;
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM)) {
    traverseproc traverse = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM, tp_traverse, traverseproc);
    if (traverse) { e = traverse(o, v, a); }
  } else
  #endif
  { e = __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj); }
  if (e) return e;
  {
    e = __Pyx_call_type_traverse(o, 0, v, a);
    if (e) return e;
  }
  if (p->context) {
    e = (*v)(((PyObject *)p->context), a); if (e) return e;
  }
  if (p->out_view) {
    e = (*v)(p->out_view, a); if (e) return e;
  }
  if (p->flow_counter_actions) {
    e = (*v)(p->flow_counter_actions, a); if (e) return e;
  }
  if (p->dest_tir_actions) {
    e = (*v)(p->dest_tir_actions, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *p = (struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *)o;
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM)) {
    inquiry clear = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM, tp_clear, inquiry);
    if (clear) clear(o);
  } else
  #endif
  { __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj); }
  tmp = ((PyObject*)p->context);
  p->context = ((struct __pyx_obj_7pyverbs_6device_Context *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->out_view);
  p->out_view = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->flow_counter_actions);
  p->flow_counter_actions = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->dest_tir_actions);
  p->dest_tir_actions = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_out_view(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_8out_view_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_obj(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_3obj_1__get__(o);
}

static PyMethodDef __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj[] = {
  {"query", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_3query, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_2query},
  {"query_async", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_5query_async, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_4query_async},
  {"modify", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_7modify, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_6modify},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_13__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_15__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj[] = {
  {"out_view", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_out_view, 0, 0, 0},
  {"obj", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_obj, 0, 0, 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj},
  {Py_tp_doc, (void *)PyDoc_STR("\n    Represents mlx5dv_devx_obj C struct.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj},
  {Py_tp_clear, (void *)__pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj},
  {Py_tp_methods, (void *)__pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj},
  {Py_tp_getset, (void *)__pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj},
  {Py_tp_init, (void *)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj},
  {0, 0},
};
static PyType_Spec __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj_spec = {
  "pyverbs.providers.mlx5.mlx5dv.Mlx5DevxObj",
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj_slots,
};
#else

static PyTypeObject __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj = {
  PyVarObject_HEAD_INIT(0, 0)
  "pyverbs.providers.mlx5.mlx5dv.""Mlx5DevxObj", /*tp_name*/
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj, /*tp_dealloc*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  PyDoc_STR("\n    Represents mlx5dv_devx_obj C struct.\n    "), /*tp_doc*/
  __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj, /*tp_traverse*/
  __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_new, newfunc)(t, a, k);
  if (unlikely(!o)) return 0;
  return o;
}

static void __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  if (PyType_IS_GC(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) PyObject_GC_Track(o);
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_dealloc, destructor)(o); else
  #endif
  __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64);
}

static int __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64(PyObject *o, visitproc v, void *a) {
  int e;
  #if !CYTHON_USE_MODULE_STATE
  e = 0;
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) {
    traverseproc traverse = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_traverse, traverseproc);
    if (traverse) { e = traverse(o, v, a); }
  } else
  #endif
  { e = __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64); }
  if (e) return e;
  {
    e = __Pyx_call_type_traverse(o, 0, v, a);
    if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64(PyObject *o) {
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) {
    inquiry clear = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_clear, inquiry);
    if (clear) clear(o);
  } else
  #endif
  { __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64); }
  return 0;
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_owner(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_5owner_1__get__(o);
}

static int __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_owner(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_5owner_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_se(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_2se_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_format(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_6format_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_opcode(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_6opcode_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_imm_inval_pkey(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_14imm_inval_pkey_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_wqe_id(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_6wqe_id_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_byte_cnt(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_8byte_cnt_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_timestamp(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_9timestamp_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_wqe_counter(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_11wqe_counter_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_signature(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_9signature_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_op_own(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_6op_own_1__get__(o);
}

static PyMethodDef __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64[] = {
  {"dump", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_3dump, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"is_empty", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_5is_empty, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_9__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_11__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64[] = {
  {"owner", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_owner, __pyx_setprop_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_owner, 0, 0},
  {"se", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_se, 0, 0, 0},
  {"format", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_format, 0, 0, 0},
  {"opcode", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_opcode, 0, 0, 0},
  {"imm_inval_pkey", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_imm_inval_pkey, 0, 0, 0},
  {"wqe_id", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_wqe_id, 0, 0, 0},
  {"byte_cnt", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_byte_cnt, 0, 0, 0},
  {"timestamp", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_timestamp, 0, 0, 0},
  {"wqe_counter", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_wqe_counter, 0, 0, 0},
  {"signature", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_signature, 0, 0, 0},
  {"op_own", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_op_own, 0, 0, 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64},
  {Py_tp_str, (void *)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_7__str__},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64},
  {Py_tp_clear, (void *)__pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64},
  {Py_tp_methods, (void *)__pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64},
  {Py_tp_getset, (void *)__pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64},
  {Py_tp_init, (void *)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64},
  {0, 0},
};
static PyType_Spec __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64_spec = {
  "pyverbs.providers.mlx5.mlx5dv.Mlx5Cqe64",
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64_slots,
};
#else

static PyTypeObject __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 = {
  PyVarObject_HEAD_INIT(0, 0)
  "pyverbs.providers.mlx5.mlx5dv.""Mlx5Cqe64", /*tp_name*/
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64, /*tp_dealloc*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_7__str__, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64, /*tp_traverse*/
  __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_new, newfunc)(t, a, k);
  if (unlikely(!o)) return 0;
  return o;
}

static void __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  if (PyType_IS_GC(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) PyObject_GC_Track(o);
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_dealloc, destructor)(o); else
  #endif
  __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr);
}

static int __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr(PyObject *o, visitproc v, void *a) {
  int e;
  #if !CYTHON_USE_MODULE_STATE
  e = 0;
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) {
    traverseproc traverse = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_traverse, traverseproc);
    if (traverse) { e = traverse(o, v, a); }
  } else
  #endif
  { e = __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr); }
  if (e) return e;
  {
    e = __Pyx_call_type_traverse(o, 0, v, a);
    if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr(PyObject *o) {
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject)) {
    inquiry clear = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject, tp_clear, inquiry);
    if (clear) clear(o);
  } else
  #endif
  { __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr); }
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr},
  {Py_tp_clear, (void *)__pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr},
  {Py_tp_new, (void *)__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr},
  {0, 0},
};
static PyType_Spec __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr_spec = {
  "pyverbs.providers.mlx5.mlx5dv.Mlx5VfioAttr",
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr_slots,
};
#else

static PyTypeObject __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr = {
  PyVarObject_HEAD_INIT(0, 0)
  "pyverbs.providers.mlx5.mlx5dv.""Mlx5VfioAttr", /*tp_name*/
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr, /*tp_dealloc*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr, /*tp_traverse*/
  __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector;

static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector *p;
  PyObject *o = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM, tp_new, newfunc)(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM*)__pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector;
  return o;
}

static void __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  if (PyType_IS_GC(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM)) PyObject_GC_Track(o);
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM)) __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM, tp_dealloc, destructor)(o); else
  #endif
  __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector);
}

static int __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector(PyObject *o, visitproc v, void *a) {
  int e;
  #if !CYTHON_USE_MODULE_STATE
  e = 0;
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM)) {
    traverseproc traverse = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM, tp_traverse, traverseproc);
    if (traverse) { e = traverse(o, v, a); }
  } else
  #endif
  { e = __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector); }
  if (e) return e;
  {
    e = __Pyx_call_type_traverse(o, 0, v, a);
    if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector(PyObject *o) {
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM)) {
    inquiry clear = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM, tp_clear, inquiry);
    if (clear) clear(o);
  } else
  #endif
  { __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector); }
  return 0;
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_vector(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_6vector_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_fd(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_2fd_1__get__(o);
}

static PyMethodDef __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector[] = {
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector[] = {
  {"vector", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_vector, 0, 0, 0},
  {"fd", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_fd, 0, 0, 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector},
  {Py_tp_doc, (void *)PyDoc_STR("\n    Represents mlx5dv_devx_msi_vector C struct.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector},
  {Py_tp_clear, (void *)__pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector},
  {Py_tp_methods, (void *)__pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector},
  {Py_tp_getset, (void *)__pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector},
  {Py_tp_init, (void *)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector},
  {0, 0},
};
static PyType_Spec __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector_spec = {
  "pyverbs.providers.mlx5.mlx5dv.Mlx5DevxMsiVector",
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector_slots,
};
#else

static PyTypeObject __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector = {
  PyVarObject_HEAD_INIT(0, 0)
  "pyverbs.providers.mlx5.mlx5dv.""Mlx5DevxMsiVector", /*tp_name*/
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector, /*tp_dealloc*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  PyDoc_STR("\n    Represents mlx5dv_devx_msi_vector C struct.\n    "), /*tp_doc*/
  __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector, /*tp_traverse*/
  __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq;

static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq *p;
  PyObject *o = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM, tp_new, newfunc)(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM*)__pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq;
  p->context = ((struct __pyx_obj_7pyverbs_6device_Context *)Py_None); Py_INCREF(Py_None);
  p->out_view = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq(PyObject *o) {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq *p = (struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->context);
  Py_CLEAR(p->out_view);
  if (PyType_IS_GC(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM)) PyObject_GC_Track(o);
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM)) __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM, tp_dealloc, destructor)(o); else
  #endif
  __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq);
}

static int __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq *p = (struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq *)o;
  #if !CYTHON_USE_MODULE_STATE
  e = 0;
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM)) {
    traverseproc traverse = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM, tp_traverse, traverseproc);
    if (traverse) { e = traverse(o, v, a); }
  } else
  #endif
  { e = __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq); }
  if (e) return e;
  {
    e = __Pyx_call_type_traverse(o, 0, v, a);
    if (e) return e;
  }
  if (p->context) {
    e = (*v)(((PyObject *)p->context), a); if (e) return e;
  }
  if (p->out_view) {
    e = (*v)(p->out_view, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq *p = (struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq *)o;
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM)) {
    inquiry clear = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM, tp_clear, inquiry);
    if (clear) clear(o);
  } else
  #endif
  { __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq); }
  tmp = ((PyObject*)p->context);
  p->context = ((struct __pyx_obj_7pyverbs_6device_Context *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->out_view);
  p->out_view = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_out_view(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_8out_view_1__get__(o);
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_vaddr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_5vaddr_1__get__(o);
}

static PyMethodDef __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq[] = {
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq[] = {
  {"out_view", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_out_view, 0, 0, 0},
  {"vaddr", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_vaddr, 0, 0, 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq},
  {Py_tp_doc, (void *)PyDoc_STR("\n    Represents mlx5dv_devx_eq C struct.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq},
  {Py_tp_clear, (void *)__pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq},
  {Py_tp_methods, (void *)__pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq},
  {Py_tp_getset, (void *)__pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq},
  {Py_tp_init, (void *)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq},
  {0, 0},
};
static PyType_Spec __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq_spec = {
  "pyverbs.providers.mlx5.mlx5dv.Mlx5DevxEq",
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq_slots,
};
#else

static PyTypeObject __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq = {
  PyVarObject_HEAD_INIT(0, 0)
  "pyverbs.providers.mlx5.mlx5dv.""Mlx5DevxEq", /*tp_name*/
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq, /*tp_dealloc*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  PyDoc_STR("\n    Represents mlx5dv_devx_eq C struct.\n    "), /*tp_doc*/
  __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq, /*tp_traverse*/
  __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp;

static PyObject *__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *p;
  PyObject *o = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM, tp_new, newfunc)(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM*)__pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp;
  p->context = ((struct __pyx_obj_7pyverbs_6device_Context *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp(PyObject *o) {
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *p = (struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_7__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->context);
  if (PyType_IS_GC(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM)) PyObject_GC_Track(o);
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM)) __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM, tp_dealloc, destructor)(o); else
  #endif
  __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp);
}

static int __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *p = (struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *)o;
  #if !CYTHON_USE_MODULE_STATE
  e = 0;
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM)) {
    traverseproc traverse = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM, tp_traverse, traverseproc);
    if (traverse) { e = traverse(o, v, a); }
  } else
  #endif
  { e = __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp); }
  if (e) return e;
  {
    e = __Pyx_call_type_traverse(o, 0, v, a);
    if (e) return e;
  }
  if (p->context) {
    e = (*v)(((PyObject *)p->context), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *p = (struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp *)o;
  #if !CYTHON_USE_MODULE_STATE
  if (likely(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM)) {
    inquiry clear = __Pyx_PyType_GetSlot(__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM, tp_clear, inquiry);
    if (clear) clear(o);
  } else
  #endif
  { __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp); }
  tmp = ((PyObject*)p->context);
  p->context = ((struct __pyx_obj_7pyverbs_6device_Context *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_fd(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_2fd_1__get__(o);
}

static PyMethodDef __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp[] = {
  {"get_async_cmd_comp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_5get_async_cmd_comp, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_11__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_13__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp[] = {
  {"fd", __pyx_getprop_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_fd, 0, 0, 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp},
  {Py_tp_str, (void *)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_3__str__},
  {Py_tp_doc, (void *)PyDoc_STR("\n    Represents mlx5dv_devx_cmd_comp C struct.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp},
  {Py_tp_clear, (void *)__pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp},
  {Py_tp_methods, (void *)__pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp},
  {Py_tp_getset, (void *)__pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp},
  {Py_tp_init, (void *)__pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp},
  {0, 0},
};
static PyType_Spec __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp_spec = {
  "pyverbs.providers.mlx5.mlx5dv.Mlx5DevxCmdComp",
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp_slots,
};
#else

static PyTypeObject __pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp = {
  PyVarObject_HEAD_INIT(0, 0)
  "pyverbs.providers.mlx5.mlx5dv.""Mlx5DevxCmdComp", /*tp_name*/
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp, /*tp_dealloc*/
  0, /*tp_vectorcall_offset*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_3__str__, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  PyDoc_STR("\n    Represents mlx5dv_devx_cmd_comp C struct.\n    "), /*tp_doc*/
  __pyx_tp_traverse_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp, /*tp_traverse*/
  __pyx_tp_clear_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyMethodDef __pyx_methods[] = {
  {0, 0, 0, 0}
};
/* #### Code section: initfunc_declarations ### */
static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(__pyx_mstatetype *__pyx_mstate); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_InitConstants(__pyx_mstatetype *__pyx_mstate); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(__pyx_mstatetype *__pyx_mstate); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(__pyx_mstatetype *__pyx_mstate); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(__pyx_mstatetype *__pyx_mstate); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(__pyx_mstatetype *__pyx_mstate); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(__pyx_mstatetype *__pyx_mstate); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(__pyx_mstatetype *__pyx_mstate); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(__pyx_mstatetype *__pyx_mstate); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_CreateCodeObjects(__pyx_mstatetype *__pyx_mstate); /*proto*/
/* #### Code section: init_module ### */

static int __Pyx_modinit_global_init_code(__pyx_mstatetype *__pyx_mstate) {
  __Pyx_RefNannyDeclarations
  CYTHON_UNUSED_VAR(__pyx_mstate);
  __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0);
  /*--- Global init code ---*/
  __pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = Py_None; Py_INCREF(Py_None);
  __pyx_imported_enum___Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = Py_None; Py_INCREF(Py_None);
  __pyx_imported_enum___Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = Py_None; Py_INCREF(Py_None);
  __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py = Py_None; Py_INCREF(Py_None);
  __pyx_imported_enum___Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = Py_None; Py_INCREF(Py_None);
  __pyx_imported_enum___Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = Py_None; Py_INCREF(Py_None);
  __pyx_imported_enum___Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = Py_None; Py_INCREF(Py_None);
  __pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py = Py_None; Py_INCREF(Py_None);
  __pyx_imported_enum___Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = Py_None; Py_INCREF(Py_None);
  __pyx_imported_enum___Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = Py_None; Py_INCREF(Py_None);
  __pyx_imported_enum___Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = Py_None; Py_INCREF(Py_None);
  __pyx_imported_enum___Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = Py_None; Py_INCREF(Py_None);
  __pyx_imported_enum___Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = Py_None; Py_INCREF(Py_None);
  __pyx_imported_enum___Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = Py_None; Py_INCREF(Py_None);
  __Pyx_RefNannyFinishContext();
  return 0;
}

static int __Pyx_modinit_variable_export_code(__pyx_mstatetype *__pyx_mstate) {
  __Pyx_RefNannyDeclarations
  CYTHON_UNUSED_VAR(__pyx_mstate);
  __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0);
  /*--- Variable export code ---*/
  __Pyx_RefNannyFinishContext();
  return 0;
}

static int __Pyx_modinit_function_export_code(__pyx_mstatetype *__pyx_mstate) {
  __Pyx_RefNannyDeclarations
  CYTHON_UNUSED_VAR(__pyx_mstate);
  __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0);
  /*--- Function export code ---*/
  __Pyx_RefNannyFinishContext();
  return 0;
}

static int __Pyx_modinit_type_init_code(__pyx_mstatetype *__pyx_mstate) {
  __Pyx_RefNannyDeclarations
  CYTHON_UNUSED_VAR(__pyx_mstate);
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0);
  /*--- Type init code ---*/
  __pyx_t_1 = PyImport_ImportModule("pyverbs.device"); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_mstate->__pyx_ptype_7pyverbs_6device_Context = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.device", "Context",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_6device_Context), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_Context),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_6device_Context), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_Context),
  #else
  sizeof(struct __pyx_obj_7pyverbs_6device_Context), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_Context),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_6device_Context) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_6device_Context = (struct __pyx_vtabstruct_7pyverbs_6device_Context*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_6device_Context); if (unlikely(!__pyx_vtabptr_7pyverbs_6device_Context)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context = &__pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context;
  __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context.__pyx_base = *__pyx_vtabptr_7pyverbs_6device_Context;
  __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context.__pyx_base.__pyx_base.close = (PyObject *(*)(struct __pyx_obj_7pyverbs_4base_PyverbsCM *, int __pyx_skip_dispatch))__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_close;
  __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context.__pyx_base.add_ref = (PyObject *(*)(struct __pyx_obj_7pyverbs_6device_Context *, PyObject *))__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_add_ref;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_6device_Context); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 296, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context)) __PYX_ERR(0, 296, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context_spec, __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context) < (0)) __PYX_ERR(0, 296, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context = &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context->tp_base = __pyx_mstate_global->__pyx_ptype_7pyverbs_6device_Context;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context) < (0)) __PYX_ERR(0, 296, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context->tp_dictoffset && __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_UPDATE_DESCRIPTOR_DOC
  {
    PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(0, 296, __pyx_L1_error)
    if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
      __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context___init__ = *((PyWrapperDescrObject *)wrapper)->d_base;
      __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context___init__.doc = __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context___init__;
      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context___init__;
    }
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context, __pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context) < (0)) __PYX_ERR(0, 296, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context) < (0)) __PYX_ERR(0, 296, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Mlx5Context, (PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context) < (0)) __PYX_ERR(0, 296, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context->tp_weaklistoffset = offsetof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context, __pyx_base.__pyx_base.__pyx_base.__weakref__);
  #endif
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context) < (0)) __PYX_ERR(0, 296, __pyx_L1_error)
  __pyx_t_2 = PyImport_ImportModule("pyverbs.base"); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_mstate->__pyx_ptype_7pyverbs_4base_PyverbsObject = __Pyx_ImportType_3_2_4(__pyx_t_2, "pyverbs.base", "PyverbsObject",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_4base_PyverbsObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4base_PyverbsObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_4base_PyverbsObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4base_PyverbsObject),
  #else
  sizeof(struct __pyx_obj_7pyverbs_4base_PyverbsObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4base_PyverbsObject),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_4base_PyverbsObject) __PYX_ERR(0, 1, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_3 = PyTuple_Pack(1, (PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr_spec, __pyx_t_3);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr)) __PYX_ERR(0, 128, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr_spec, __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr) < (0)) __PYX_ERR(0, 128, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr = &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr->tp_base = __pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr) < (0)) __PYX_ERR(0, 128, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr->tp_dictoffset && __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Mlx5DVContextAttr, (PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr) < (0)) __PYX_ERR(0, 128, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr->tp_weaklistoffset = offsetof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr, __pyx_base.__weakref__);
  #endif
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContextAttr) < (0)) __PYX_ERR(0, 128, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_3 = PyTuple_Pack(1, (PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext_spec, __pyx_t_3);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext)) __PYX_ERR(0, 511, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext_spec, __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext) < (0)) __PYX_ERR(0, 511, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext = &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext->tp_base = __pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext) < (0)) __PYX_ERR(0, 511, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext->tp_dictoffset && __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Mlx5DVContext, (PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext) < (0)) __PYX_ERR(0, 511, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext->tp_weaklistoffset = offsetof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext, __pyx_base.__weakref__);
  #endif
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVContext) < (0)) __PYX_ERR(0, 511, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_3 = PyTuple_Pack(1, (PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr_spec, __pyx_t_3);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr)) __PYX_ERR(0, 83, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr_spec, __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr) < (0)) __PYX_ERR(0, 83, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr = &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr->tp_base = __pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr) < (0)) __PYX_ERR(0, 83, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr->tp_dictoffset && __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Mlx5DVPortAttr, (PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr) < (0)) __PYX_ERR(0, 83, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr->tp_weaklistoffset = offsetof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr, __pyx_base.__weakref__);
  #endif
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVPortAttr) < (0)) __PYX_ERR(0, 83, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_3 = PyTuple_Pack(1, (PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 641, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr_spec, __pyx_t_3);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr)) __PYX_ERR(0, 641, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr_spec, __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr) < (0)) __PYX_ERR(0, 641, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr = &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr->tp_base = __pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr) < (0)) __PYX_ERR(0, 641, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr->tp_dictoffset && __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_UPDATE_DESCRIPTOR_DOC
  {
    PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(0, 641, __pyx_L1_error)
    if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
      __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr___init__ = *((PyWrapperDescrObject *)wrapper)->d_base;
      __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr___init__.doc = __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr___init__;
      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr___init__;
    }
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Mlx5DCIStreamInitAttr, (PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr) < (0)) __PYX_ERR(0, 641, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr->tp_weaklistoffset = offsetof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr, __pyx_base.__weakref__);
  #endif
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DCIStreamInitAttr) < (0)) __PYX_ERR(0, 641, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_3 = PyTuple_Pack(1, (PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 679, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr_spec, __pyx_t_3);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr)) __PYX_ERR(0, 679, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr_spec, __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr) < (0)) __PYX_ERR(0, 679, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr = &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr->tp_base = __pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr) < (0)) __PYX_ERR(0, 679, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr->tp_dictoffset && __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_UPDATE_DESCRIPTOR_DOC
  {
    PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(0, 679, __pyx_L1_error)
    if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
      __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr___init__ = *((PyWrapperDescrObject *)wrapper)->d_base;
      __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr___init__.doc = __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr___init__;
      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr___init__;
    }
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Mlx5DVDCInitAttr, (PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr) < (0)) __PYX_ERR(0, 679, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr->tp_weaklistoffset = offsetof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr, __pyx_base.__weakref__);
  #endif
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVDCInitAttr) < (0)) __PYX_ERR(0, 679, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_3 = PyTuple_Pack(1, (PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 728, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr_spec, __pyx_t_3);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr)) __PYX_ERR(0, 728, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr_spec, __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr) < (0)) __PYX_ERR(0, 728, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr = &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr->tp_base = __pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr) < (0)) __PYX_ERR(0, 728, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr->tp_dictoffset && __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_UPDATE_DESCRIPTOR_DOC
  {
    PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(0, 728, __pyx_L1_error)
    if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
      __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr___init__ = *((PyWrapperDescrObject *)wrapper)->d_base;
      __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr___init__.doc = __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr___init__;
      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr___init__;
    }
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Mlx5DVQPInitAttr, (PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr) < (0)) __PYX_ERR(0, 728, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr->tp_weaklistoffset = offsetof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr, __pyx_base.__weakref__);
  #endif
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVQPInitAttr) < (0)) __PYX_ERR(0, 728, __pyx_L1_error)
  __pyx_t_3 = PyImport_ImportModule("pyverbs.qp"); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_mstate->__pyx_ptype_7pyverbs_2qp_QPEx = __Pyx_ImportType_3_2_4(__pyx_t_3, "pyverbs.qp", "QPEx",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_2qp_QPEx), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2qp_QPEx),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_2qp_QPEx), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2qp_QPEx),
  #else
  sizeof(struct __pyx_obj_7pyverbs_2qp_QPEx), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2qp_QPEx),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_2qp_QPEx) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_2qp_QPEx = (struct __pyx_vtabstruct_7pyverbs_2qp_QPEx*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_2qp_QPEx); if (unlikely(!__pyx_vtabptr_7pyverbs_2qp_QPEx)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP = &__pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP;
  __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP.__pyx_base = *__pyx_vtabptr_7pyverbs_2qp_QPEx;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_4 = PyTuple_Pack(1, (PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_2qp_QPEx); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 832, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP_spec, __pyx_t_4);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP)) __PYX_ERR(0, 832, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP_spec, __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP) < (0)) __PYX_ERR(0, 832, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP = &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP->tp_base = __pyx_mstate_global->__pyx_ptype_7pyverbs_2qp_QPEx;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP) < (0)) __PYX_ERR(0, 832, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP->tp_dictoffset && __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_UPDATE_DESCRIPTOR_DOC
  {
    PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(0, 832, __pyx_L1_error)
    if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
      __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP___init__ = *((PyWrapperDescrObject *)wrapper)->d_base;
      __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP___init__.doc = __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP___init__;
      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP___init__;
    }
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, __pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP) < (0)) __PYX_ERR(0, 832, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP) < (0)) __PYX_ERR(0, 832, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Mlx5QP, (PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP) < (0)) __PYX_ERR(0, 832, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP->tp_weaklistoffset = offsetof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, __pyx_base.__pyx_base.__pyx_base.__pyx_base.__weakref__);
  #endif
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP) < (0)) __PYX_ERR(0, 832, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_4 = PyTuple_Pack(1, (PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr_spec, __pyx_t_4);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr)) __PYX_ERR(0, 1118, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr_spec, __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr) < (0)) __PYX_ERR(0, 1118, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr = &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr->tp_base = __pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr) < (0)) __PYX_ERR(0, 1118, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr->tp_dictoffset && __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_UPDATE_DESCRIPTOR_DOC
  {
    PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(0, 1118, __pyx_L1_error)
    if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
      __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr___init__ = *((PyWrapperDescrObject *)wrapper)->d_base;
      __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr___init__.doc = __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr___init__;
      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr___init__;
    }
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Mlx5DVCQInitAttr_2, (PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr) < (0)) __PYX_ERR(0, 1118, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr->tp_weaklistoffset = offsetof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr, __pyx_base.__weakref__);
  #endif
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DVCQInitAttr) < (0)) __PYX_ERR(0, 1118, __pyx_L1_error)
  __pyx_t_4 = PyImport_ImportModule("pyverbs.cq"); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_mstate->__pyx_ptype_7pyverbs_2cq_CQEX = __Pyx_ImportType_3_2_4(__pyx_t_4, "pyverbs.cq", "CQEX",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_2cq_CQEX), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2cq_CQEX),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_2cq_CQEX), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2cq_CQEX),
  #else
  sizeof(struct __pyx_obj_7pyverbs_2cq_CQEX), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2cq_CQEX),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_2cq_CQEX) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_2cq_CQEX = (struct __pyx_vtabstruct_7pyverbs_2cq_CQEX*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_2cq_CQEX); if (unlikely(!__pyx_vtabptr_7pyverbs_2cq_CQEX)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ = &__pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ;
  __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ.__pyx_base = *__pyx_vtabptr_7pyverbs_2cq_CQEX;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_5 = PyTuple_Pack(1, (PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_2cq_CQEX); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ_spec, __pyx_t_5);
  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (unlikely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ)) __PYX_ERR(0, 1198, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ_spec, __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ) < (0)) __PYX_ERR(0, 1198, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ = &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ->tp_base = __pyx_mstate_global->__pyx_ptype_7pyverbs_2cq_CQEX;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ) < (0)) __PYX_ERR(0, 1198, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ->tp_dictoffset && __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ, __pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ) < (0)) __PYX_ERR(0, 1198, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ) < (0)) __PYX_ERR(0, 1198, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Mlx5CQ, (PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ) < (0)) __PYX_ERR(0, 1198, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ->tp_weaklistoffset = offsetof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ, __pyx_base.__pyx_base.__pyx_base.__weakref__);
  #endif
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5CQ) < (0)) __PYX_ERR(0, 1198, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR = &__pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR;
  __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR.close = (PyObject *(*)(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR *, int __pyx_skip_dispatch))__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_close;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_5 = PyTuple_Pack(1, (PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR_spec, __pyx_t_5);
  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (unlikely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR)) __PYX_ERR(0, 1337, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR_spec, __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR) < (0)) __PYX_ERR(0, 1337, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR = &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR->tp_base = __pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR) < (0)) __PYX_ERR(0, 1337, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR->tp_dictoffset && __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR, __pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR) < (0)) __PYX_ERR(0, 1337, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR) < (0)) __PYX_ERR(0, 1337, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Mlx5VAR, (PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR) < (0)) __PYX_ERR(0, 1337, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR->tp_weaklistoffset = offsetof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR, __pyx_base.__weakref__);
  #endif
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR) < (0)) __PYX_ERR(0, 1337, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP = &__pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP;
  __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP.close = (PyObject *(*)(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP *, int __pyx_skip_dispatch))__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_close;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_5 = PyTuple_Pack(1, (PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1377, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP_spec, __pyx_t_5);
  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (unlikely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP)) __PYX_ERR(0, 1377, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP_spec, __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP) < (0)) __PYX_ERR(0, 1377, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP = &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP->tp_base = __pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP) < (0)) __PYX_ERR(0, 1377, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP->tp_dictoffset && __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_UPDATE_DESCRIPTOR_DOC
  {
    PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(0, 1377, __pyx_L1_error)
    if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
      __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP___init__ = *((PyWrapperDescrObject *)wrapper)->d_base;
      __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP___init__.doc = __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP___init__;
      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP___init__;
    }
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP, __pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP) < (0)) __PYX_ERR(0, 1377, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP) < (0)) __PYX_ERR(0, 1377, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Mlx5PP, (PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP) < (0)) __PYX_ERR(0, 1377, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP->tp_weaklistoffset = offsetof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP, __pyx_base.__weakref__);
  #endif
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP) < (0)) __PYX_ERR(0, 1377, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR = &__pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR;
  __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR.close = (PyObject *(*)(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR *, int __pyx_skip_dispatch))__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_close;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_5 = PyTuple_Pack(1, (PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1411, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR_spec, __pyx_t_5);
  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (unlikely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR)) __PYX_ERR(0, 1411, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR_spec, __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR) < (0)) __PYX_ERR(0, 1411, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR = &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR->tp_base = __pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR) < (0)) __PYX_ERR(0, 1411, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR->tp_dictoffset && __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR, __pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR) < (0)) __PYX_ERR(0, 1411, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR) < (0)) __PYX_ERR(0, 1411, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Mlx5UAR, (PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR) < (0)) __PYX_ERR(0, 1411, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR->tp_weaklistoffset = offsetof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR, __pyx_base.__weakref__);
  #endif
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR) < (0)) __PYX_ERR(0, 1411, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_4base_PyverbsCM = __Pyx_ImportType_3_2_4(__pyx_t_2, "pyverbs.base", "PyverbsCM",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_4base_PyverbsCM), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4base_PyverbsCM),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_4base_PyverbsCM), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4base_PyverbsCM),
  #else
  sizeof(struct __pyx_obj_7pyverbs_4base_PyverbsCM), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4base_PyverbsCM),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_4base_PyverbsCM) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_4base_PyverbsCM = (struct __pyx_vtabstruct_7pyverbs_4base_PyverbsCM*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_4base_PyverbsCM); if (unlikely(!__pyx_vtabptr_7pyverbs_4base_PyverbsCM)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr = &__pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr;
  __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr.__pyx_base = *__pyx_vtabptr_7pyverbs_4base_PyverbsCM;
  __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr.__pyx_base.close = (PyObject *(*)(struct __pyx_obj_7pyverbs_4base_PyverbsCM *, int __pyx_skip_dispatch))__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_close;
  __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr._cpy = (void (*)(void *, void *, int))__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr__cpy;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_5 = PyTuple_Pack(1, (PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1459, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr_spec, __pyx_t_5);
  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (unlikely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr)) __PYX_ERR(0, 1459, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr_spec, __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr) < (0)) __PYX_ERR(0, 1459, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr = &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr->tp_base = __pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr) < (0)) __PYX_ERR(0, 1459, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr->tp_dictoffset && __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_UPDATE_DESCRIPTOR_DOC
  {
    PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(0, 1459, __pyx_L1_error)
    if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
      __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr___init__ = *((PyWrapperDescrObject *)wrapper)->d_base;
      __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr___init__.doc = __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr___init__;
      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr___init__;
    }
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr, __pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr) < (0)) __PYX_ERR(0, 1459, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr) < (0)) __PYX_ERR(0, 1459, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Mlx5DmOpAddr, (PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr) < (0)) __PYX_ERR(0, 1459, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr->tp_weaklistoffset = offsetof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr, __pyx_base.__pyx_base.__weakref__);
  #endif
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr) < (0)) __PYX_ERR(0, 1459, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg = &__pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg;
  __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg.__pyx_base = *__pyx_vtabptr_7pyverbs_4base_PyverbsCM;
  __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg.__pyx_base.close = (PyObject *(*)(struct __pyx_obj_7pyverbs_4base_PyverbsCM *, int __pyx_skip_dispatch))__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_close;
  __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg._copy_to_buffer = (PyObject *(*)(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg *, PyObject *, int __pyx_skip_dispatch))__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg__copy_to_buffer;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_5 = PyTuple_Pack(1, (PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg_spec, __pyx_t_5);
  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (unlikely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg)) __PYX_ERR(0, 1527, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg_spec, __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg) < (0)) __PYX_ERR(0, 1527, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg = &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg->tp_base = __pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg) < (0)) __PYX_ERR(0, 1527, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg->tp_dictoffset && __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg, __pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg) < (0)) __PYX_ERR(0, 1527, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg) < (0)) __PYX_ERR(0, 1527, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_WqeSeg, (PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg) < (0)) __PYX_ERR(0, 1527, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg->tp_weaklistoffset = offsetof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg, __pyx_base.__pyx_base.__weakref__);
  #endif
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg) < (0)) __PYX_ERR(0, 1527, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg = &__pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg;
  __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg.__pyx_base = *__pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_5 = PyTuple_Pack(1, (PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1550, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg_spec, __pyx_t_5);
  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (unlikely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg)) __PYX_ERR(0, 1550, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg_spec, __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg) < (0)) __PYX_ERR(0, 1550, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg = &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg->tp_base = __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg) < (0)) __PYX_ERR(0, 1550, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg->tp_dictoffset && __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_UPDATE_DESCRIPTOR_DOC
  {
    PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(0, 1550, __pyx_L1_error)
    if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
      __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg___init__ = *((PyWrapperDescrObject *)wrapper)->d_base;
      __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg___init__.doc = __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg___init__;
      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg___init__;
    }
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg, __pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg) < (0)) __PYX_ERR(0, 1550, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg) < (0)) __PYX_ERR(0, 1550, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_WqeCtrlSeg, (PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg) < (0)) __PYX_ERR(0, 1550, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg->tp_weaklistoffset = offsetof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg, __pyx_base.__pyx_base.__pyx_base.__weakref__);
  #endif
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg) < (0)) __PYX_ERR(0, 1550, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg = &__pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg;
  __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg.__pyx_base = *__pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_5 = PyTuple_Pack(1, (PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1626, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg_spec, __pyx_t_5);
  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (unlikely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg)) __PYX_ERR(0, 1626, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg_spec, __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg) < (0)) __PYX_ERR(0, 1626, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg = &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg->tp_base = __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg) < (0)) __PYX_ERR(0, 1626, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg->tp_dictoffset && __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_UPDATE_DESCRIPTOR_DOC
  {
    PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(0, 1626, __pyx_L1_error)
    if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
      __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg___init__ = *((PyWrapperDescrObject *)wrapper)->d_base;
      __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg___init__.doc = __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg___init__;
      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg___init__;
    }
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg, __pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg) < (0)) __PYX_ERR(0, 1626, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg) < (0)) __PYX_ERR(0, 1626, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_WqeDataSeg, (PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg) < (0)) __PYX_ERR(0, 1626, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg->tp_weaklistoffset = offsetof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg, __pyx_base.__pyx_base.__pyx_base.__weakref__);
  #endif
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg) < (0)) __PYX_ERR(0, 1626, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe = &__pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe;
  __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe.__pyx_base = *__pyx_vtabptr_7pyverbs_4base_PyverbsCM;
  __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe.__pyx_base.close = (PyObject *(*)(struct __pyx_obj_7pyverbs_4base_PyverbsCM *, int __pyx_skip_dispatch))__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_close;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_5 = PyTuple_Pack(1, (PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1673, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe_spec, __pyx_t_5);
  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (unlikely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe)) __PYX_ERR(0, 1673, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe_spec, __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe) < (0)) __PYX_ERR(0, 1673, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe = &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe->tp_base = __pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe) < (0)) __PYX_ERR(0, 1673, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe->tp_dictoffset && __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_UPDATE_DESCRIPTOR_DOC
  {
    PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(0, 1673, __pyx_L1_error)
    if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
      __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe___init__ = *((PyWrapperDescrObject *)wrapper)->d_base;
      __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe___init__.doc = __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe___init__;
      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe___init__;
    }
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe, __pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe) < (0)) __PYX_ERR(0, 1673, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe) < (0)) __PYX_ERR(0, 1673, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Wqe, (PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe) < (0)) __PYX_ERR(0, 1673, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe->tp_weaklistoffset = offsetof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe, __pyx_base.__pyx_base.__weakref__);
  #endif
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe) < (0)) __PYX_ERR(0, 1673, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM = &__pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM;
  __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM.__pyx_base = *__pyx_vtabptr_7pyverbs_4base_PyverbsCM;
  __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM.__pyx_base.close = (PyObject *(*)(struct __pyx_obj_7pyverbs_4base_PyverbsCM *, int __pyx_skip_dispatch))__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_close;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_5 = PyTuple_Pack(1, (PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1726, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM_spec, __pyx_t_5);
  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (unlikely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM)) __PYX_ERR(0, 1726, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM_spec, __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM) < (0)) __PYX_ERR(0, 1726, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM = &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM->tp_base = __pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM) < (0)) __PYX_ERR(0, 1726, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM->tp_dictoffset && __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_UPDATE_DESCRIPTOR_DOC
  {
    PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(0, 1726, __pyx_L1_error)
    if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
      __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM___init__ = *((PyWrapperDescrObject *)wrapper)->d_base;
      __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM___init__.doc = __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM___init__;
      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM___init__;
    }
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM, __pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM) < (0)) __PYX_ERR(0, 1726, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM) < (0)) __PYX_ERR(0, 1726, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Mlx5UMEM, (PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM) < (0)) __PYX_ERR(0, 1726, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM->tp_weaklistoffset = offsetof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM, __pyx_base.__pyx_base.__weakref__);
  #endif
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM) < (0)) __PYX_ERR(0, 1726, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj = &__pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj;
  __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj.__pyx_base = *__pyx_vtabptr_7pyverbs_4base_PyverbsCM;
  __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj.__pyx_base.close = (PyObject *(*)(struct __pyx_obj_7pyverbs_4base_PyverbsCM *, int __pyx_skip_dispatch))__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_close;
  __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj.add_ref = (PyObject *(*)(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj *, PyObject *))__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_add_ref;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_5 = PyTuple_Pack(1, (PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 161, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj_spec, __pyx_t_5);
  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (unlikely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj)) __PYX_ERR(0, 161, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj_spec, __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj) < (0)) __PYX_ERR(0, 161, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj = &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj->tp_base = __pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj) < (0)) __PYX_ERR(0, 161, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj->tp_dictoffset && __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_UPDATE_DESCRIPTOR_DOC
  {
    PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(0, 161, __pyx_L1_error)
    if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
      __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj___init__ = *((PyWrapperDescrObject *)wrapper)->d_base;
      __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj___init__.doc = __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj___init__;
      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj___init__;
    }
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj, __pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj) < (0)) __PYX_ERR(0, 161, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj) < (0)) __PYX_ERR(0, 161, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Mlx5DevxObj, (PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj) < (0)) __PYX_ERR(0, 161, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj->tp_weaklistoffset = offsetof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj, __pyx_base.__pyx_base.__weakref__);
  #endif
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj) < (0)) __PYX_ERR(0, 161, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_5 = PyTuple_Pack(1, (PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1804, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64_spec, __pyx_t_5);
  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (unlikely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64)) __PYX_ERR(0, 1804, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64_spec, __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64) < (0)) __PYX_ERR(0, 1804, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64 = &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64->tp_base = __pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64) < (0)) __PYX_ERR(0, 1804, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64->tp_dictoffset && __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Mlx5Cqe64, (PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64) < (0)) __PYX_ERR(0, 1804, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64->tp_weaklistoffset = offsetof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64, __pyx_base.__weakref__);
  #endif
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64) < (0)) __PYX_ERR(0, 1804, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_5 = PyTuple_Pack(1, (PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr_spec, __pyx_t_5);
  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (unlikely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr)) __PYX_ERR(2, 102, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr_spec, __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr) < (0)) __PYX_ERR(2, 102, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr = &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr->tp_base = __pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsObject;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr) < (0)) __PYX_ERR(2, 102, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr->tp_dictoffset && __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Mlx5VfioAttr, (PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr) < (0)) __PYX_ERR(2, 102, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr->tp_weaklistoffset = offsetof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VfioAttr, __pyx_base.__weakref__);
  #endif
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector = &__pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector;
  __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector.__pyx_base = *__pyx_vtabptr_7pyverbs_4base_PyverbsCM;
  __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector.__pyx_base.close = (PyObject *(*)(struct __pyx_obj_7pyverbs_4base_PyverbsCM *, int __pyx_skip_dispatch))__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_close;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_5 = PyTuple_Pack(1, (PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1874, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector_spec, __pyx_t_5);
  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (unlikely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector)) __PYX_ERR(0, 1874, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector_spec, __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector) < (0)) __PYX_ERR(0, 1874, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector = &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector->tp_base = __pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector) < (0)) __PYX_ERR(0, 1874, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector->tp_dictoffset && __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector, __pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector) < (0)) __PYX_ERR(0, 1874, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector) < (0)) __PYX_ERR(0, 1874, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Mlx5DevxMsiVector, (PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector) < (0)) __PYX_ERR(0, 1874, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector->tp_weaklistoffset = offsetof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector, __pyx_base.__pyx_base.__weakref__);
  #endif
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector) < (0)) __PYX_ERR(0, 1874, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq = &__pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq;
  __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq.__pyx_base = *__pyx_vtabptr_7pyverbs_4base_PyverbsCM;
  __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq.__pyx_base.close = (PyObject *(*)(struct __pyx_obj_7pyverbs_4base_PyverbsCM *, int __pyx_skip_dispatch))__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_close;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_5 = PyTuple_Pack(1, (PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1900, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq_spec, __pyx_t_5);
  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (unlikely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq)) __PYX_ERR(0, 1900, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq_spec, __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq) < (0)) __PYX_ERR(0, 1900, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq = &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq->tp_base = __pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq) < (0)) __PYX_ERR(0, 1900, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq->tp_dictoffset && __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_UPDATE_DESCRIPTOR_DOC
  {
    PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(0, 1900, __pyx_L1_error)
    if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
      __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq___init__ = *((PyWrapperDescrObject *)wrapper)->d_base;
      __pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq___init__.doc = __pyx_doc_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq___init__;
      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq___init__;
    }
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq, __pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq) < (0)) __PYX_ERR(0, 1900, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq) < (0)) __PYX_ERR(0, 1900, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Mlx5DevxEq, (PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq) < (0)) __PYX_ERR(0, 1900, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq->tp_weaklistoffset = offsetof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq, __pyx_base.__pyx_base.__weakref__);
  #endif
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq) < (0)) __PYX_ERR(0, 1900, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp = &__pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp;
  __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp.__pyx_base = *__pyx_vtabptr_7pyverbs_4base_PyverbsCM;
  __pyx_vtable_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp.__pyx_base.close = (PyObject *(*)(struct __pyx_obj_7pyverbs_4base_PyverbsCM *, int __pyx_skip_dispatch))__pyx_f_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_close;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_5 = PyTuple_Pack(1, (PyObject *)__pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1956, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp_spec, __pyx_t_5);
  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (unlikely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp)) __PYX_ERR(0, 1956, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp_spec, __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp) < (0)) __PYX_ERR(0, 1956, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp = &__pyx_type_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp->tp_base = __pyx_mstate_global->__pyx_ptype_7pyverbs_4base_PyverbsCM;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp) < (0)) __PYX_ERR(0, 1956, __pyx_L1_error)
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp);
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp->tp_dictoffset && __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp, __pyx_vtabptr_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp) < (0)) __PYX_ERR(0, 1956, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp) < (0)) __PYX_ERR(0, 1956, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_Mlx5DevxCmdComp, (PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp) < (0)) __PYX_ERR(0, 1956, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SLOTS
  if (__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp->tp_weaklistoffset == 0) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp->tp_weaklistoffset = offsetof(struct __pyx_obj_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp, __pyx_base.__pyx_base.__weakref__);
  #endif
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp) < (0)) __PYX_ERR(0, 1956, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_RefNannyFinishContext();
  return 0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_RefNannyFinishContext();
  return -1;
}

static int __Pyx_modinit_type_import_code(__pyx_mstatetype *__pyx_mstate) {
  __Pyx_RefNannyDeclarations
  CYTHON_UNUSED_VAR(__pyx_mstate);
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0);
  /*--- Type import code ---*/
  __pyx_t_1 = PyImport_ImportModule("pyverbs.device"); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_mstate->__pyx_ptype_7pyverbs_6device_DeviceAttr = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.device", "DeviceAttr",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_6device_DeviceAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_DeviceAttr),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_6device_DeviceAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_DeviceAttr),
  #else
  sizeof(struct __pyx_obj_7pyverbs_6device_DeviceAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_DeviceAttr),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_6device_DeviceAttr) __PYX_ERR(3, 33, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_6device_QueryDeviceExInput = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.device", "QueryDeviceExInput",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_6device_QueryDeviceExInput), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_QueryDeviceExInput),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_6device_QueryDeviceExInput), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_QueryDeviceExInput),
  #else
  sizeof(struct __pyx_obj_7pyverbs_6device_QueryDeviceExInput), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_QueryDeviceExInput),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_6device_QueryDeviceExInput) __PYX_ERR(3, 36, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_6device_ODPCaps = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.device", "ODPCaps",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_6device_ODPCaps), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_ODPCaps),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_6device_ODPCaps), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_ODPCaps),
  #else
  sizeof(struct __pyx_obj_7pyverbs_6device_ODPCaps), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_ODPCaps),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_6device_ODPCaps) __PYX_ERR(3, 39, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_6device_RSSCaps = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.device", "RSSCaps",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_6device_RSSCaps), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_RSSCaps),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_6device_RSSCaps), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_RSSCaps),
  #else
  sizeof(struct __pyx_obj_7pyverbs_6device_RSSCaps), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_RSSCaps),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_6device_RSSCaps) __PYX_ERR(3, 43, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_6device_PacketPacingCaps = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.device", "PacketPacingCaps",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_6device_PacketPacingCaps), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_PacketPacingCaps),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_6device_PacketPacingCaps), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_PacketPacingCaps),
  #else
  sizeof(struct __pyx_obj_7pyverbs_6device_PacketPacingCaps), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_PacketPacingCaps),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_6device_PacketPacingCaps) __PYX_ERR(3, 46, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_6device_PCIAtomicCaps = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.device", "PCIAtomicCaps",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_6device_PCIAtomicCaps), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_PCIAtomicCaps),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_6device_PCIAtomicCaps), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_PCIAtomicCaps),
  #else
  sizeof(struct __pyx_obj_7pyverbs_6device_PCIAtomicCaps), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_PCIAtomicCaps),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_6device_PCIAtomicCaps) __PYX_ERR(3, 49, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_6device_TMCaps = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.device", "TMCaps",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_6device_TMCaps), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_TMCaps),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_6device_TMCaps), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_TMCaps),
  #else
  sizeof(struct __pyx_obj_7pyverbs_6device_TMCaps), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_TMCaps),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_6device_TMCaps) __PYX_ERR(3, 52, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_6device_CQModerationCaps = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.device", "CQModerationCaps",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_6device_CQModerationCaps), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_CQModerationCaps),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_6device_CQModerationCaps), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_CQModerationCaps),
  #else
  sizeof(struct __pyx_obj_7pyverbs_6device_CQModerationCaps), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_CQModerationCaps),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_6device_CQModerationCaps) __PYX_ERR(3, 55, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_6device_TSOCaps = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.device", "TSOCaps",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_6device_TSOCaps), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_TSOCaps),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_6device_TSOCaps), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_TSOCaps),
  #else
  sizeof(struct __pyx_obj_7pyverbs_6device_TSOCaps), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_TSOCaps),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_6device_TSOCaps) __PYX_ERR(3, 58, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_6device_DeviceAttrEx = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.device", "DeviceAttrEx",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_6device_DeviceAttrEx), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_DeviceAttrEx),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_6device_DeviceAttrEx), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_DeviceAttrEx),
  #else
  sizeof(struct __pyx_obj_7pyverbs_6device_DeviceAttrEx), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_DeviceAttrEx),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_6device_DeviceAttrEx) __PYX_ERR(3, 61, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_6device_AllocDmAttr = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.device", "AllocDmAttr",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_6device_AllocDmAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_AllocDmAttr),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_6device_AllocDmAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_AllocDmAttr),
  #else
  sizeof(struct __pyx_obj_7pyverbs_6device_AllocDmAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_AllocDmAttr),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_6device_AllocDmAttr) __PYX_ERR(3, 64, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_6device_DM = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.device", "DM",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_6device_DM), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_DM),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_6device_DM), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_DM),
  #else
  sizeof(struct __pyx_obj_7pyverbs_6device_DM), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_DM),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_6device_DM) __PYX_ERR(3, 67, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_6device_DM = (struct __pyx_vtabstruct_7pyverbs_6device_DM*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_6device_DM); if (unlikely(!__pyx_vtabptr_7pyverbs_6device_DM)) __PYX_ERR(3, 67, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_6device_PortAttr = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.device", "PortAttr",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_6device_PortAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_PortAttr),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_6device_PortAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_PortAttr),
  #else
  sizeof(struct __pyx_obj_7pyverbs_6device_PortAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_PortAttr),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_6device_PortAttr) __PYX_ERR(3, 74, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_6device_GIDEntry = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.device", "GIDEntry",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_6device_GIDEntry), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_GIDEntry),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_6device_GIDEntry), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_GIDEntry),
  #else
  sizeof(struct __pyx_obj_7pyverbs_6device_GIDEntry), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_GIDEntry),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_6device_GIDEntry) __PYX_ERR(3, 77, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_6device_AsyncEvent = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.device", "AsyncEvent",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_6device_AsyncEvent), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_AsyncEvent),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_6device_AsyncEvent), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_AsyncEvent),
  #else
  sizeof(struct __pyx_obj_7pyverbs_6device_AsyncEvent), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_AsyncEvent),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_6device_AsyncEvent) __PYX_ERR(3, 80, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_6device_FdArr = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.device", "FdArr",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_6device_FdArr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_FdArr),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_6device_FdArr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_FdArr),
  #else
  sizeof(struct __pyx_obj_7pyverbs_6device_FdArr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_6device_FdArr),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_6device_FdArr) __PYX_ERR(3, 83, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_6device_FdArr = (struct __pyx_vtabstruct_7pyverbs_6device_FdArr*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_6device_FdArr); if (unlikely(!__pyx_vtabptr_7pyverbs_6device_FdArr)) __PYX_ERR(3, 83, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyImport_ImportModule("pyverbs.qp"); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 9, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_mstate->__pyx_ptype_7pyverbs_2qp_QPCap = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.qp", "QPCap",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_2qp_QPCap), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2qp_QPCap),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_2qp_QPCap), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2qp_QPCap),
  #else
  sizeof(struct __pyx_obj_7pyverbs_2qp_QPCap), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2qp_QPCap),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_2qp_QPCap) __PYX_ERR(4, 9, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_2qp_QPInitAttr = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.qp", "QPInitAttr",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_2qp_QPInitAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2qp_QPInitAttr),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_2qp_QPInitAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2qp_QPInitAttr),
  #else
  sizeof(struct __pyx_obj_7pyverbs_2qp_QPInitAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2qp_QPInitAttr),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_2qp_QPInitAttr) __PYX_ERR(4, 12, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_2qp_QPInitAttrEx = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.qp", "QPInitAttrEx",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_2qp_QPInitAttrEx), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2qp_QPInitAttrEx),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_2qp_QPInitAttrEx), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2qp_QPInitAttrEx),
  #else
  sizeof(struct __pyx_obj_7pyverbs_2qp_QPInitAttrEx), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2qp_QPInitAttrEx),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_2qp_QPInitAttrEx) __PYX_ERR(4, 18, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_2qp_QPAttr = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.qp", "QPAttr",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_2qp_QPAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2qp_QPAttr),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_2qp_QPAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2qp_QPAttr),
  #else
  sizeof(struct __pyx_obj_7pyverbs_2qp_QPAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2qp_QPAttr),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_2qp_QPAttr) __PYX_ERR(4, 27, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_2qp_QP = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.qp", "QP",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_2qp_QP), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2qp_QP),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_2qp_QP), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2qp_QP),
  #else
  sizeof(struct __pyx_obj_7pyverbs_2qp_QP), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2qp_QP),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_2qp_QP) __PYX_ERR(4, 30, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_2qp_QP = (struct __pyx_vtabstruct_7pyverbs_2qp_QP*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_2qp_QP); if (unlikely(!__pyx_vtabptr_7pyverbs_2qp_QP)) __PYX_ERR(4, 30, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_2qp_DataBuffer = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.qp", "DataBuffer",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_2qp_DataBuffer), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2qp_DataBuffer),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_2qp_DataBuffer), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2qp_DataBuffer),
  #else
  sizeof(struct __pyx_obj_7pyverbs_2qp_DataBuffer), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2qp_DataBuffer),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_2qp_DataBuffer) __PYX_ERR(4, 47, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_2qp_DataBuffer = (struct __pyx_vtabstruct_7pyverbs_2qp_DataBuffer*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_2qp_DataBuffer); if (unlikely(!__pyx_vtabptr_7pyverbs_2qp_DataBuffer)) __PYX_ERR(4, 47, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_2qp_ECE = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.qp", "ECE",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_2qp_ECE), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2qp_ECE),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_2qp_ECE), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2qp_ECE),
  #else
  sizeof(struct __pyx_obj_7pyverbs_2qp_ECE), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2qp_ECE),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_2qp_ECE) __PYX_ERR(4, 54, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_2qp_ECE = (struct __pyx_vtabstruct_7pyverbs_2qp_ECE*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_2qp_ECE); if (unlikely(!__pyx_vtabptr_7pyverbs_2qp_ECE)) __PYX_ERR(4, 54, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyImport_ImportModule("pyverbs.cq"); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 9, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_mstate->__pyx_ptype_7pyverbs_2cq_CompChannel = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.cq", "CompChannel",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_2cq_CompChannel), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2cq_CompChannel),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_2cq_CompChannel), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2cq_CompChannel),
  #else
  sizeof(struct __pyx_obj_7pyverbs_2cq_CompChannel), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2cq_CompChannel),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_2cq_CompChannel) __PYX_ERR(5, 9, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_2cq_CompChannel = (struct __pyx_vtabstruct_7pyverbs_2cq_CompChannel*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_2cq_CompChannel); if (unlikely(!__pyx_vtabptr_7pyverbs_2cq_CompChannel)) __PYX_ERR(5, 9, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_2cq_CQ = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.cq", "CQ",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_2cq_CQ), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2cq_CQ),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_2cq_CQ), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2cq_CQ),
  #else
  sizeof(struct __pyx_obj_7pyverbs_2cq_CQ), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2cq_CQ),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_2cq_CQ) __PYX_ERR(5, 16, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_2cq_CQ = (struct __pyx_vtabstruct_7pyverbs_2cq_CQ*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_2cq_CQ); if (unlikely(!__pyx_vtabptr_7pyverbs_2cq_CQ)) __PYX_ERR(5, 16, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_2cq_CqInitAttrEx = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.cq", "CqInitAttrEx",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_2cq_CqInitAttrEx), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2cq_CqInitAttrEx),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_2cq_CqInitAttrEx), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2cq_CqInitAttrEx),
  #else
  sizeof(struct __pyx_obj_7pyverbs_2cq_CqInitAttrEx), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2cq_CqInitAttrEx),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_2cq_CqInitAttrEx) __PYX_ERR(5, 27, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_2cq_WC = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.cq", "WC",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_2cq_WC), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2cq_WC),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_2cq_WC), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2cq_WC),
  #else
  sizeof(struct __pyx_obj_7pyverbs_2cq_WC), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2cq_WC),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_2cq_WC) __PYX_ERR(5, 42, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_2cq_PollCqAttr = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.cq", "PollCqAttr",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_2cq_PollCqAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2cq_PollCqAttr),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_2cq_PollCqAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2cq_PollCqAttr),
  #else
  sizeof(struct __pyx_obj_7pyverbs_2cq_PollCqAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2cq_PollCqAttr),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_2cq_PollCqAttr) __PYX_ERR(5, 45, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_2cq_WcTmInfo = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.cq", "WcTmInfo",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_2cq_WcTmInfo), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2cq_WcTmInfo),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_2cq_WcTmInfo), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2cq_WcTmInfo),
  #else
  sizeof(struct __pyx_obj_7pyverbs_2cq_WcTmInfo), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2cq_WcTmInfo),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_2cq_WcTmInfo) __PYX_ERR(5, 48, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyImport_ImportModule("pyverbs.pd"); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_mstate->__pyx_ptype_7pyverbs_2pd_PD = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.pd", "PD",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_2pd_PD), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2pd_PD),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_2pd_PD), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2pd_PD),
  #else
  sizeof(struct __pyx_obj_7pyverbs_2pd_PD), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2pd_PD),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_2pd_PD) __PYX_ERR(6, 12, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_2pd_PD = (struct __pyx_vtabstruct_7pyverbs_2pd_PD*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_2pd_PD); if (unlikely(!__pyx_vtabptr_7pyverbs_2pd_PD)) __PYX_ERR(6, 12, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_2pd_ParentDomainInitAttr = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.pd", "ParentDomainInitAttr",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_2pd_ParentDomainInitAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2pd_ParentDomainInitAttr),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_2pd_ParentDomainInitAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2pd_ParentDomainInitAttr),
  #else
  sizeof(struct __pyx_obj_7pyverbs_2pd_ParentDomainInitAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2pd_ParentDomainInitAttr),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_2pd_ParentDomainInitAttr) __PYX_ERR(6, 28, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_2pd_ParentDomain = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.pd", "ParentDomain",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_2pd_ParentDomain), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2pd_ParentDomain),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_2pd_ParentDomain), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2pd_ParentDomain),
  #else
  sizeof(struct __pyx_obj_7pyverbs_2pd_ParentDomain), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2pd_ParentDomain),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_2pd_ParentDomain) __PYX_ERR(6, 34, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_2pd_ParentDomain = (struct __pyx_vtabstruct_7pyverbs_2pd_ParentDomain*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_2pd_ParentDomain); if (unlikely(!__pyx_vtabptr_7pyverbs_2pd_ParentDomain)) __PYX_ERR(6, 34, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_2pd_ParentDomainContext = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.pd", "ParentDomainContext",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_2pd_ParentDomainContext), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2pd_ParentDomainContext),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_2pd_ParentDomainContext), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2pd_ParentDomainContext),
  #else
  sizeof(struct __pyx_obj_7pyverbs_2pd_ParentDomainContext), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2pd_ParentDomainContext),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_2pd_ParentDomainContext) __PYX_ERR(6, 39, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyImport_ImportModule("pyverbs.providers.mlx5.mlx5dv_mkey"); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MkeyConfAttr = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.mlx5dv_mkey", "Mlx5MkeyConfAttr",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MkeyConfAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MkeyConfAttr),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MkeyConfAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MkeyConfAttr),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MkeyConfAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MkeyConfAttr),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MkeyConfAttr) __PYX_ERR(7, 10, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MrInterleaved = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.mlx5dv_mkey", "Mlx5MrInterleaved",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MrInterleaved), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MrInterleaved),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MrInterleaved), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MrInterleaved),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MrInterleaved), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MrInterleaved),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MrInterleaved) __PYX_ERR(7, 13, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5Mkey = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.mlx5dv_mkey", "Mlx5Mkey",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5Mkey), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5Mkey),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5Mkey), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5Mkey),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5Mkey), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5Mkey),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5Mkey) __PYX_ERR(7, 16, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5Mkey = (struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5Mkey*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5Mkey); if (unlikely(!__pyx_vtabptr_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5Mkey)) __PYX_ERR(7, 16, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigCrc = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.mlx5dv_mkey", "Mlx5SigCrc",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigCrc), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigCrc),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigCrc), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigCrc),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigCrc), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigCrc),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigCrc) __PYX_ERR(7, 21, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigT10Dif = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.mlx5dv_mkey", "Mlx5SigT10Dif",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigT10Dif), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigT10Dif),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigT10Dif), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigT10Dif),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigT10Dif), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigT10Dif),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigT10Dif) __PYX_ERR(7, 24, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigBlockDomain = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.mlx5dv_mkey", "Mlx5SigBlockDomain",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigBlockDomain), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigBlockDomain),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigBlockDomain), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigBlockDomain),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigBlockDomain), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigBlockDomain),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigBlockDomain) __PYX_ERR(7, 27, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigBlockAttr = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.mlx5dv_mkey", "Mlx5SigBlockAttr",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigBlockAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigBlockAttr),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigBlockAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigBlockAttr),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigBlockAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigBlockAttr),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigBlockAttr) __PYX_ERR(7, 30, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigErr = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.mlx5dv_mkey", "Mlx5SigErr",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigErr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigErr),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigErr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigErr),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigErr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigErr),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5SigErr) __PYX_ERR(7, 33, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MkeyErr = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.mlx5dv_mkey", "Mlx5MkeyErr",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MkeyErr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MkeyErr),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MkeyErr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MkeyErr),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MkeyErr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MkeyErr),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_11mlx5dv_mkey_Mlx5MkeyErr) __PYX_ERR(7, 36, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyImport_ImportModule("pyverbs.providers.mlx5.mlx5dv_crypto"); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoLoginAttr = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.mlx5dv_crypto", "Mlx5CryptoLoginAttr",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoLoginAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoLoginAttr),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoLoginAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoLoginAttr),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoLoginAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoLoginAttr),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoLoginAttr) __PYX_ERR(8, 12, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoExtLoginAttr = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.mlx5dv_crypto", "Mlx5CryptoExtLoginAttr",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoExtLoginAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoExtLoginAttr),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoExtLoginAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoExtLoginAttr),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoExtLoginAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoExtLoginAttr),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoExtLoginAttr) __PYX_ERR(8, 15, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEKInitAttr = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.mlx5dv_crypto", "Mlx5DEKInitAttr",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEKInitAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEKInitAttr),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEKInitAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEKInitAttr),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEKInitAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEKInitAttr),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEKInitAttr) __PYX_ERR(8, 19, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEKAttr = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.mlx5dv_crypto", "Mlx5DEKAttr",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEKAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEKAttr),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEKAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEKAttr),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEKAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEKAttr),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEKAttr) __PYX_ERR(8, 23, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoAttr = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.mlx5dv_crypto", "Mlx5CryptoAttr",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoAttr),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoAttr),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoAttr),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoAttr) __PYX_ERR(8, 26, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEK = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.mlx5dv_crypto", "Mlx5DEK",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEK), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEK),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEK), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEK),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEK), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEK),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEK) __PYX_ERR(8, 29, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEK = (struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEK*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEK); if (unlikely(!__pyx_vtabptr_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5DEK)) __PYX_ERR(8, 29, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoLogin = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.mlx5dv_crypto", "Mlx5CryptoLogin",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoLogin), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoLogin),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoLogin), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoLogin),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoLogin), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoLogin),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoLogin) __PYX_ERR(8, 33, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoLogin = (struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoLogin*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoLogin); if (unlikely(!__pyx_vtabptr_7pyverbs_9providers_4mlx5_13mlx5dv_crypto_Mlx5CryptoLogin)) __PYX_ERR(8, 33, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyImport_ImportModule("pyverbs.providers.mlx5.dr_domain"); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 9, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_domain_DrDomain = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.dr_domain", "DrDomain",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_domain_DrDomain), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_domain_DrDomain),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_domain_DrDomain), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_domain_DrDomain),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_domain_DrDomain), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_domain_DrDomain),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_domain_DrDomain) __PYX_ERR(9, 9, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_domain_DrDomain = (struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_domain_DrDomain*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_domain_DrDomain); if (unlikely(!__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_domain_DrDomain)) __PYX_ERR(9, 9, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyImport_ImportModule("pyverbs.providers.mlx5.dr_table"); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 9, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_8dr_table_DrTable = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.dr_table", "DrTable",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_8dr_table_DrTable), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_8dr_table_DrTable),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_8dr_table_DrTable), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_8dr_table_DrTable),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_8dr_table_DrTable), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_8dr_table_DrTable),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_8dr_table_DrTable) __PYX_ERR(10, 9, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_8dr_table_DrTable = (struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_8dr_table_DrTable*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_8dr_table_DrTable); if (unlikely(!__pyx_vtabptr_7pyverbs_9providers_4mlx5_8dr_table_DrTable)) __PYX_ERR(10, 9, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyImport_ImportModule("pyverbs.providers.mlx5.dr_action"); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 14, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrAction = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.dr_action", "DrAction",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrAction), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrAction),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrAction), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrAction),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrAction), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrAction),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrAction) __PYX_ERR(11, 14, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrAction = (struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrAction*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrAction); if (unlikely(!__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrAction)) __PYX_ERR(11, 14, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionQp = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.dr_action", "DrActionQp",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionQp), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionQp),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionQp), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionQp),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionQp), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionQp),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionQp) __PYX_ERR(11, 20, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionQp = (struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionQp*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionQp); if (unlikely(!__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionQp)) __PYX_ERR(11, 20, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionModify = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.dr_action", "DrActionModify",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionModify), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionModify),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionModify), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionModify),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionModify), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionModify),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionModify) __PYX_ERR(11, 23, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionModify = (struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionModify*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionModify); if (unlikely(!__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionModify)) __PYX_ERR(11, 23, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowCounter = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.dr_action", "DrActionFlowCounter",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowCounter), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowCounter),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowCounter), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowCounter),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowCounter), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowCounter),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowCounter) __PYX_ERR(11, 26, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowCounter = (struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowCounter*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowCounter); if (unlikely(!__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowCounter)) __PYX_ERR(11, 26, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionDrop = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.dr_action", "DrActionDrop",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDrop), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDrop),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDrop), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDrop),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDrop), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDrop),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionDrop) __PYX_ERR(11, 29, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionDrop = (struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionDrop*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionDrop); if (unlikely(!__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionDrop)) __PYX_ERR(11, 29, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionTag = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.dr_action", "DrActionTag",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionTag), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionTag),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionTag), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionTag),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionTag), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionTag),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionTag) __PYX_ERR(11, 32, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionTag = (struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionTag*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionTag); if (unlikely(!__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionTag)) __PYX_ERR(11, 32, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTable = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.dr_action", "DrActionDestTable",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTable), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTable),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTable), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTable),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTable), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTable),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTable) __PYX_ERR(11, 35, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTable = (struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTable*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTable); if (unlikely(!__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTable)) __PYX_ERR(11, 35, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionPushVLan = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.dr_action", "DrActionPushVLan",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionPushVLan), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionPushVLan),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionPushVLan), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionPushVLan),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionPushVLan), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionPushVLan),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionPushVLan) __PYX_ERR(11, 38, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionPushVLan = (struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionPushVLan*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionPushVLan); if (unlikely(!__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionPushVLan)) __PYX_ERR(11, 38, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionPopVLan = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.dr_action", "DrActionPopVLan",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionPopVLan), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionPopVLan),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionPopVLan), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionPopVLan),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionPopVLan), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionPopVLan),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionPopVLan) __PYX_ERR(11, 41, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionPopVLan = (struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionPopVLan*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionPopVLan); if (unlikely(!__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionPopVLan)) __PYX_ERR(11, 41, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestAttr = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.dr_action", "DrActionDestAttr",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestAttr),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestAttr),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestAttr),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestAttr) __PYX_ERR(11, 44, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestAttr = (struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestAttr*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestAttr); if (unlikely(!__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestAttr)) __PYX_ERR(11, 44, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestArray = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.dr_action", "DrActionDestArray",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestArray), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestArray),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestArray), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestArray),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestArray), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestArray),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestArray) __PYX_ERR(11, 49, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestArray = (struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestArray*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestArray); if (unlikely(!__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestArray)) __PYX_ERR(11, 49, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionDefMiss = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.dr_action", "DrActionDefMiss",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDefMiss), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDefMiss),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDefMiss), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDefMiss),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDefMiss), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDefMiss),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionDefMiss) __PYX_ERR(11, 53, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionDefMiss = (struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionDefMiss*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionDefMiss); if (unlikely(!__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionDefMiss)) __PYX_ERR(11, 53, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionVPort = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.dr_action", "DrActionVPort",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionVPort), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionVPort),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionVPort), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionVPort),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionVPort), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionVPort),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionVPort) __PYX_ERR(11, 56, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionVPort = (struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionVPort*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionVPort); if (unlikely(!__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionVPort)) __PYX_ERR(11, 56, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionIBPort = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.dr_action", "DrActionIBPort",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionIBPort), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionIBPort),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionIBPort), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionIBPort),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionIBPort), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionIBPort),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionIBPort) __PYX_ERR(11, 60, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionIBPort = (struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionIBPort*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionIBPort); if (unlikely(!__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionIBPort)) __PYX_ERR(11, 60, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTir = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.dr_action", "DrActionDestTir",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTir), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTir),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTir), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTir),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTir), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTir),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTir) __PYX_ERR(11, 64, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTir = (struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTir*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTir); if (unlikely(!__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionDestTir)) __PYX_ERR(11, 64, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionPacketReformat = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.dr_action", "DrActionPacketReformat",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionPacketReformat), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionPacketReformat),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionPacketReformat), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionPacketReformat),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionPacketReformat), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionPacketReformat),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionPacketReformat) __PYX_ERR(11, 67, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionPacketReformat = (struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionPacketReformat*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionPacketReformat); if (unlikely(!__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionPacketReformat)) __PYX_ERR(11, 67, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrFlowSamplerAttr = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.dr_action", "DrFlowSamplerAttr",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrFlowSamplerAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrFlowSamplerAttr),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrFlowSamplerAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrFlowSamplerAttr),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrFlowSamplerAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrFlowSamplerAttr),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrFlowSamplerAttr) __PYX_ERR(11, 70, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrFlowSamplerAttr = (struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrFlowSamplerAttr*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrFlowSamplerAttr); if (unlikely(!__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrFlowSamplerAttr)) __PYX_ERR(11, 70, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowSample = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.dr_action", "DrActionFlowSample",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowSample), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowSample),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowSample), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowSample),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowSample), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowSample),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowSample) __PYX_ERR(11, 75, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowSample = (struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowSample*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowSample); if (unlikely(!__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowSample)) __PYX_ERR(11, 75, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrFlowMeterAttr = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.dr_action", "DrFlowMeterAttr",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrFlowMeterAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrFlowMeterAttr),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrFlowMeterAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrFlowMeterAttr),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrFlowMeterAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrFlowMeterAttr),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrFlowMeterAttr) __PYX_ERR(11, 80, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrFlowMeterAttr = (struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrFlowMeterAttr*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrFlowMeterAttr); if (unlikely(!__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrFlowMeterAttr)) __PYX_ERR(11, 80, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowMeter = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.dr_action", "DrActionFlowMeter",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowMeter), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowMeter),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowMeter), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowMeter),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowMeter), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowMeter),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowMeter) __PYX_ERR(11, 84, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowMeter = (struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowMeter*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowMeter); if (unlikely(!__pyx_vtabptr_7pyverbs_9providers_4mlx5_9dr_action_DrActionFlowMeter)) __PYX_ERR(11, 84, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyImport_ImportModule("pyverbs.providers.mlx5.mlx5dv_sched"); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedAttr = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.mlx5dv_sched", "Mlx5dvSchedAttr",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedAttr),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedAttr),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedAttr),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedAttr) __PYX_ERR(12, 10, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedNode = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.mlx5dv_sched", "Mlx5dvSchedNode",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedNode), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedNode),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedNode), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedNode),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedNode), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedNode),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedNode) __PYX_ERR(12, 14, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedNode = (struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedNode*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedNode); if (unlikely(!__pyx_vtabptr_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedNode)) __PYX_ERR(12, 14, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedLeaf = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.providers.mlx5.mlx5dv_sched", "Mlx5dvSchedLeaf",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedLeaf), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedLeaf),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedLeaf), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedLeaf),
  #else
  sizeof(struct __pyx_obj_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedLeaf), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedLeaf),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedLeaf) __PYX_ERR(12, 20, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedLeaf = (struct __pyx_vtabstruct_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedLeaf*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedLeaf); if (unlikely(!__pyx_vtabptr_7pyverbs_9providers_4mlx5_12mlx5dv_sched_Mlx5dvSchedLeaf)) __PYX_ERR(12, 20, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyImport_ImportModule("pyverbs.wr"); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_mstate->__pyx_ptype_7pyverbs_2wr_SGE = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.wr", "SGE",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_2wr_SGE), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2wr_SGE),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_2wr_SGE), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2wr_SGE),
  #else
  sizeof(struct __pyx_obj_7pyverbs_2wr_SGE), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2wr_SGE),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_2wr_SGE) __PYX_ERR(13, 10, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_2wr_SGE = (struct __pyx_vtabstruct_7pyverbs_2wr_SGE*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_2wr_SGE); if (unlikely(!__pyx_vtabptr_7pyverbs_2wr_SGE)) __PYX_ERR(13, 10, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_2wr_RecvWR = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.wr", "RecvWR",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_2wr_RecvWR), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2wr_RecvWR),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_2wr_RecvWR), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2wr_RecvWR),
  #else
  sizeof(struct __pyx_obj_7pyverbs_2wr_RecvWR), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2wr_RecvWR),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_2wr_RecvWR) __PYX_ERR(13, 14, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_2wr_RecvWR = (struct __pyx_vtabstruct_7pyverbs_2wr_RecvWR*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_2wr_RecvWR); if (unlikely(!__pyx_vtabptr_7pyverbs_2wr_RecvWR)) __PYX_ERR(13, 14, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_2wr_SendWR = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.wr", "SendWR",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_2wr_SendWR), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2wr_SendWR),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_2wr_SendWR), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2wr_SendWR),
  #else
  sizeof(struct __pyx_obj_7pyverbs_2wr_SendWR), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_2wr_SendWR),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_2wr_SendWR) __PYX_ERR(13, 17, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_2wr_SendWR = (struct __pyx_vtabstruct_7pyverbs_2wr_SendWR*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_2wr_SendWR); if (unlikely(!__pyx_vtabptr_7pyverbs_2wr_SendWR)) __PYX_ERR(13, 17, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyImport_ImportModule("pyverbs.cmid"); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_mstate->__pyx_ptype_7pyverbs_4cmid_CMID = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.cmid", "CMID",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_4cmid_CMID), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4cmid_CMID),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_4cmid_CMID), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4cmid_CMID),
  #else
  sizeof(struct __pyx_obj_7pyverbs_4cmid_CMID), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4cmid_CMID),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_4cmid_CMID) __PYX_ERR(14, 10, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_4cmid_CMID = (struct __pyx_vtabstruct_7pyverbs_4cmid_CMID*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_4cmid_CMID); if (unlikely(!__pyx_vtabptr_7pyverbs_4cmid_CMID)) __PYX_ERR(14, 10, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_4cmid_CMEventChannel = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.cmid", "CMEventChannel",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_4cmid_CMEventChannel), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4cmid_CMEventChannel),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_4cmid_CMEventChannel), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4cmid_CMEventChannel),
  #else
  sizeof(struct __pyx_obj_7pyverbs_4cmid_CMEventChannel), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4cmid_CMEventChannel),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_4cmid_CMEventChannel) __PYX_ERR(14, 20, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_4cmid_CMEventChannel = (struct __pyx_vtabstruct_7pyverbs_4cmid_CMEventChannel*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_4cmid_CMEventChannel); if (unlikely(!__pyx_vtabptr_7pyverbs_4cmid_CMEventChannel)) __PYX_ERR(14, 20, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_4cmid_CMEvent = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.cmid", "CMEvent",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_4cmid_CMEvent), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4cmid_CMEvent),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_4cmid_CMEvent), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4cmid_CMEvent),
  #else
  sizeof(struct __pyx_obj_7pyverbs_4cmid_CMEvent), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4cmid_CMEvent),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_4cmid_CMEvent) __PYX_ERR(14, 25, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_4cmid_CMEvent = (struct __pyx_vtabstruct_7pyverbs_4cmid_CMEvent*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_4cmid_CMEvent); if (unlikely(!__pyx_vtabptr_7pyverbs_4cmid_CMEvent)) __PYX_ERR(14, 25, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_4cmid_AddrInfo = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.cmid", "AddrInfo",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_4cmid_AddrInfo), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4cmid_AddrInfo),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_4cmid_AddrInfo), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4cmid_AddrInfo),
  #else
  sizeof(struct __pyx_obj_7pyverbs_4cmid_AddrInfo), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4cmid_AddrInfo),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_4cmid_AddrInfo) __PYX_ERR(14, 30, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_4cmid_AddrInfo = (struct __pyx_vtabstruct_7pyverbs_4cmid_AddrInfo*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_4cmid_AddrInfo); if (unlikely(!__pyx_vtabptr_7pyverbs_4cmid_AddrInfo)) __PYX_ERR(14, 30, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_4cmid_ConnParam = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.cmid", "ConnParam",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_4cmid_ConnParam), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4cmid_ConnParam),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_4cmid_ConnParam), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4cmid_ConnParam),
  #else
  sizeof(struct __pyx_obj_7pyverbs_4cmid_ConnParam), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4cmid_ConnParam),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_4cmid_ConnParam) __PYX_ERR(14, 35, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_4cmid_UDParam = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.cmid", "UDParam",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_4cmid_UDParam), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4cmid_UDParam),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_4cmid_UDParam), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4cmid_UDParam),
  #else
  sizeof(struct __pyx_obj_7pyverbs_4cmid_UDParam), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4cmid_UDParam),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_4cmid_UDParam) __PYX_ERR(14, 40, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_4cmid_JoinMCAttrEx = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.cmid", "JoinMCAttrEx",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_4cmid_JoinMCAttrEx), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4cmid_JoinMCAttrEx),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_4cmid_JoinMCAttrEx), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4cmid_JoinMCAttrEx),
  #else
  sizeof(struct __pyx_obj_7pyverbs_4cmid_JoinMCAttrEx), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4cmid_JoinMCAttrEx),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_4cmid_JoinMCAttrEx) __PYX_ERR(14, 43, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyImport_ImportModule("pyverbs.addr"); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_mstate->__pyx_ptype_7pyverbs_4addr_GID = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.addr", "GID",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_4addr_GID), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4addr_GID),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_4addr_GID), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4addr_GID),
  #else
  sizeof(struct __pyx_obj_7pyverbs_4addr_GID), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4addr_GID),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_4addr_GID) __PYX_ERR(15, 11, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_4addr_GRH = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.addr", "GRH",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_4addr_GRH), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4addr_GRH),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_4addr_GRH), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4addr_GRH),
  #else
  sizeof(struct __pyx_obj_7pyverbs_4addr_GRH), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4addr_GRH),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_4addr_GRH) __PYX_ERR(15, 14, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_4addr_GlobalRoute = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.addr", "GlobalRoute",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_4addr_GlobalRoute), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4addr_GlobalRoute),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_4addr_GlobalRoute), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4addr_GlobalRoute),
  #else
  sizeof(struct __pyx_obj_7pyverbs_4addr_GlobalRoute), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4addr_GlobalRoute),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_4addr_GlobalRoute) __PYX_ERR(15, 17, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_4addr_AHAttr = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.addr", "AHAttr",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_4addr_AHAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4addr_AHAttr),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_4addr_AHAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4addr_AHAttr),
  #else
  sizeof(struct __pyx_obj_7pyverbs_4addr_AHAttr), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4addr_AHAttr),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_4addr_AHAttr) __PYX_ERR(15, 20, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_4addr_AHAttr = (struct __pyx_vtabstruct_7pyverbs_4addr_AHAttr*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_4addr_AHAttr); if (unlikely(!__pyx_vtabptr_7pyverbs_4addr_AHAttr)) __PYX_ERR(15, 20, __pyx_L1_error)
  __pyx_mstate->__pyx_ptype_7pyverbs_4addr_AH = __Pyx_ImportType_3_2_4(__pyx_t_1, "pyverbs.addr", "AH",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(struct __pyx_obj_7pyverbs_4addr_AH), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4addr_AH),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(struct __pyx_obj_7pyverbs_4addr_AH), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4addr_AH),
  #else
  sizeof(struct __pyx_obj_7pyverbs_4addr_AH), __PYX_GET_STRUCT_ALIGNMENT_3_2_4(struct __pyx_obj_7pyverbs_4addr_AH),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_2_4); if (!__pyx_mstate->__pyx_ptype_7pyverbs_4addr_AH) __PYX_ERR(15, 24, __pyx_L1_error)
  __pyx_vtabptr_7pyverbs_4addr_AH = (struct __pyx_vtabstruct_7pyverbs_4addr_AH*)__Pyx_GetVtable(__pyx_mstate->__pyx_ptype_7pyverbs_4addr_AH); if (unlikely(!__pyx_vtabptr_7pyverbs_4addr_AH)) __PYX_ERR(15, 24, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_RefNannyFinishContext();
  return 0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_RefNannyFinishContext();
  return -1;
}

static int __Pyx_modinit_variable_import_code(__pyx_mstatetype *__pyx_mstate) {
  __Pyx_RefNannyDeclarations
  CYTHON_UNUSED_VAR(__pyx_mstate);
  __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0);
  /*--- Variable import code ---*/
  __Pyx_RefNannyFinishContext();
  return 0;
}

static int __Pyx_modinit_function_import_code(__pyx_mstatetype *__pyx_mstate) {
  __Pyx_RefNannyDeclarations
  CYTHON_UNUSED_VAR(__pyx_mstate);
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0);
  /*--- Function import code ---*/
  {
    __pyx_t_1 = PyImport_ImportModule("pyverbs.base"); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    const char * __pyx_import_signature = __Pyx_PyBytes_AsString(__pyx_mstate_global->__pyx_kp_b_PyObject_PyObject_close_weakrefs);
    #if !CYTHON_ASSUME_SAFE_MACROS
    if (unlikely(!__pyx_import_signature)) __PYX_ERR(0, 1, __pyx_L1_error)
    #endif
    const char * __pyx_import_name = __pyx_import_signature + 23;
    void (**const __pyx_import_pointers[])(void) = {(void (**)(void))&__pyx_f_7pyverbs_4base_close_weakrefs, (void (**)(void)) NULL};
    void (**const *__pyx_import_pointer)(void) = __pyx_import_pointers;
    const char *__pyx_import_current_signature = __pyx_import_signature;
    while (*__pyx_import_pointer) {
      if (__Pyx_ImportFunction_3_2_4(__pyx_t_1, __pyx_import_name, *__pyx_import_pointer, __pyx_import_current_signature) < (0)) __PYX_ERR(0, 1, __pyx_L1_error)
      ++__pyx_import_pointer;
      __pyx_import_name = strchr(__pyx_import_name, '\0') + 1;
      __pyx_import_signature = strchr(__pyx_import_signature, '\0') + 1;
      if (*__pyx_import_signature != '\0') __pyx_import_current_signature = __pyx_import_signature;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  {
    __pyx_t_1 = PyImport_ImportModule("pyverbs.wr"); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    const char * __pyx_import_signature = __Pyx_PyBytes_AsString(__pyx_mstate_global->__pyx_kp_b_PyObject_struct_ibv_sge_PyObject);
    #if !CYTHON_ASSUME_SAFE_MACROS
    if (unlikely(!__pyx_import_signature)) __PYX_ERR(0, 1, __pyx_L1_error)
    #endif
    const char * __pyx_import_name = __pyx_import_signature + 53;
    void (**const __pyx_import_pointers[])(void) = {(void (**)(void))&__pyx_f_7pyverbs_2wr_copy_sg_array, (void (**)(void)) NULL};
    void (**const *__pyx_import_pointer)(void) = __pyx_import_pointers;
    const char *__pyx_import_current_signature = __pyx_import_signature;
    while (*__pyx_import_pointer) {
      if (__Pyx_ImportFunction_3_2_4(__pyx_t_1, __pyx_import_name, *__pyx_import_pointer, __pyx_import_current_signature) < (0)) __PYX_ERR(0, 1, __pyx_L1_error)
      ++__pyx_import_pointer;
      __pyx_import_name = strchr(__pyx_import_name, '\0') + 1;
      __pyx_import_signature = strchr(__pyx_import_signature, '\0') + 1;
      if (*__pyx_import_signature != '\0') __pyx_import_current_signature = __pyx_import_signature;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __Pyx_RefNannyFinishContext();
  return 0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_RefNannyFinishContext();
  return -1;
}

#if CYTHON_PEP489_MULTI_PHASE_INIT
static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/
static int __pyx_pymod_exec_mlx5dv(PyObject* module); /*proto*/
static PyModuleDef_Slot __pyx_moduledef_slots[] = {
  {Py_mod_create, (void*)__pyx_pymod_create},
  {Py_mod_exec, (void*)__pyx_pymod_exec_mlx5dv},
  #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
  {Py_mod_gil, __Pyx_FREETHREADING_COMPATIBLE},
  #endif
  #if PY_VERSION_HEX >= 0x030C0000 && CYTHON_USE_MODULE_STATE
  {Py_mod_multiple_interpreters, Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED},
  #endif
  {0, NULL}
};
#endif

#ifdef __cplusplus
namespace {
  struct PyModuleDef __pyx_moduledef =
  #else
  static struct PyModuleDef __pyx_moduledef =
  #endif
  {
      PyModuleDef_HEAD_INIT,
      "mlx5dv",
      0, /* m_doc */
    #if CYTHON_USE_MODULE_STATE
      sizeof(__pyx_mstatetype), /* m_size */
    #else
      (CYTHON_PEP489_MULTI_PHASE_INIT) ? 0 : -1, /* m_size */
    #endif
      __pyx_methods /* m_methods */,
    #if CYTHON_PEP489_MULTI_PHASE_INIT
      __pyx_moduledef_slots, /* m_slots */
    #else
      NULL, /* m_reload */
    #endif
    #if CYTHON_USE_MODULE_STATE
      __pyx_m_traverse, /* m_traverse */
      __pyx_m_clear, /* m_clear */
      NULL /* m_free */
    #else
      NULL, /* m_traverse */
      NULL, /* m_clear */
      NULL /* m_free */
    #endif
  };
  #ifdef __cplusplus
} /* anonymous namespace */
#endif

/* PyModInitFuncType */
#ifndef CYTHON_NO_PYINIT_EXPORT
  #define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
#else
  #ifdef __cplusplus
  #define __Pyx_PyMODINIT_FUNC extern "C" PyObject *
  #else
  #define __Pyx_PyMODINIT_FUNC PyObject *
  #endif
#endif

__Pyx_PyMODINIT_FUNC PyInit_mlx5dv(void) CYTHON_SMALL_CODE; /*proto*/
__Pyx_PyMODINIT_FUNC PyInit_mlx5dv(void)
#if CYTHON_PEP489_MULTI_PHASE_INIT
{
  return PyModuleDef_Init(&__pyx_moduledef);
}
/* ModuleCreationPEP489 */
#if CYTHON_COMPILING_IN_LIMITED_API && (__PYX_LIMITED_VERSION_HEX < 0x03090000\
      || ((defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS)) && __PYX_LIMITED_VERSION_HEX < 0x030A0000))
static PY_INT64_T __Pyx_GetCurrentInterpreterId(void) {
    {
        PyObject *module = PyImport_ImportModule("_interpreters"); // 3.13+ I think
        if (!module) {
            PyErr_Clear(); // just try the 3.8-3.12 version
            module = PyImport_ImportModule("_xxsubinterpreters");
            if (!module) goto bad;
        }
        PyObject *current = PyObject_CallMethod(module, "get_current", NULL);
        Py_DECREF(module);
        if (!current) goto bad;
        if (PyTuple_Check(current)) {
            PyObject *new_current = PySequence_GetItem(current, 0);
            Py_DECREF(current);
            current = new_current;
            if (!new_current) goto bad;
        }
        long long as_c_int = PyLong_AsLongLong(current);
        Py_DECREF(current);
        return as_c_int;
    }
  bad:
    PySys_WriteStderr("__Pyx_GetCurrentInterpreterId failed. Try setting the C define CYTHON_PEP489_MULTI_PHASE_INIT=0\n");
    return -1;
}
#endif
#if !CYTHON_USE_MODULE_STATE
static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) {
    static PY_INT64_T main_interpreter_id = -1;
#if CYTHON_COMPILING_IN_GRAAL && defined(GRAALPY_VERSION_NUM) && GRAALPY_VERSION_NUM > 0x19000000
    PY_INT64_T current_id = GraalPyInterpreterState_GetIDFromThreadState(PyThreadState_Get());
#elif CYTHON_COMPILING_IN_GRAAL
    PY_INT64_T current_id = PyInterpreterState_GetIDFromThreadState(PyThreadState_Get());
#elif CYTHON_COMPILING_IN_LIMITED_API && (__PYX_LIMITED_VERSION_HEX < 0x03090000\
      || ((defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS)) && __PYX_LIMITED_VERSION_HEX < 0x030A0000))
    PY_INT64_T current_id = __Pyx_GetCurrentInterpreterId();
#elif CYTHON_COMPILING_IN_LIMITED_API
    PY_INT64_T current_id = PyInterpreterState_GetID(PyInterpreterState_Get());
#else
    PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp);
#endif
    if (unlikely(current_id == -1)) {
        return -1;
    }
    if (main_interpreter_id == -1) {
        main_interpreter_id = current_id;
        return 0;
    } else if (unlikely(main_interpreter_id != current_id)) {
        PyErr_SetString(
            PyExc_ImportError,
            "Interpreter change detected - this module can only be loaded into one interpreter per process.");
        return -1;
    }
    return 0;
}
#endif
static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none)
{
    PyObject *value = PyObject_GetAttrString(spec, from_name);
    int result = 0;
    if (likely(value)) {
        if (allow_none || value != Py_None) {
            result = PyDict_SetItemString(moddict, to_name, value);
        }
        Py_DECREF(value);
    } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) {
        PyErr_Clear();
    } else {
        result = -1;
    }
    return result;
}
static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def) {
    PyObject *module = NULL, *moddict, *modname;
    CYTHON_UNUSED_VAR(def);
    #if !CYTHON_USE_MODULE_STATE
    if (__Pyx_check_single_interpreter())
        return NULL;
    #endif
    if (__pyx_m)
        return __Pyx_NewRef(__pyx_m);
    modname = PyObject_GetAttrString(spec, "name");
    if (unlikely(!modname)) goto bad;
    module = PyModule_NewObject(modname);
    Py_DECREF(modname);
    if (unlikely(!module)) goto bad;
    moddict = PyModule_GetDict(module);
    if (unlikely(!moddict)) goto bad;
    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad;
    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad;
    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad;
    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad;
    return module;
bad:
    Py_XDECREF(module);
    return NULL;
}


static CYTHON_SMALL_CODE int __pyx_pymod_exec_mlx5dv(PyObject *__pyx_pyinit_module)
#endif
{
  int stringtab_initialized = 0;
  #if CYTHON_USE_MODULE_STATE
  int pystate_addmodule_run = 0;
  #endif
  __pyx_mstatetype *__pyx_mstate = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  #if CYTHON_PEP489_MULTI_PHASE_INIT
  if (__pyx_m) {
    if (__pyx_m == __pyx_pyinit_module) return 0;
    PyErr_SetString(PyExc_RuntimeError, "Module 'mlx5dv' has already been imported. Re-initialisation is not supported.");
    return -1;
  }
  #else
  if (__pyx_m) return __Pyx_NewRef(__pyx_m);
  #endif
  /*--- Module creation code ---*/
  #if CYTHON_PEP489_MULTI_PHASE_INIT
  __pyx_t_1 = __pyx_pyinit_module;
  Py_INCREF(__pyx_t_1);
  #else
  __pyx_t_1 = PyModule_Create(&__pyx_moduledef); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error)
  #endif
  #if CYTHON_USE_MODULE_STATE
  {
    int add_module_result = __Pyx_State_AddModule(__pyx_t_1, &__pyx_moduledef);
    __pyx_t_1 = 0; /* transfer ownership from __pyx_t_1 to "mlx5dv" pseudovariable */
    if (unlikely((add_module_result < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
    pystate_addmodule_run = 1;
  }
  #else
  __pyx_m = __pyx_t_1;
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
  PyUnstable_Module_SetGIL(__pyx_m, Py_MOD_GIL_USED);
  #endif
  __pyx_mstate = __pyx_mstate_global;
  CYTHON_UNUSED_VAR(__pyx_t_1);
  __pyx_mstate->__pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_mstate->__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error)
  Py_INCREF(__pyx_mstate->__pyx_d);
  __pyx_mstate->__pyx_b = __Pyx_PyImport_AddModuleRef(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_mstate->__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_mstate->__pyx_cython_runtime = __Pyx_PyImport_AddModuleRef("cython_runtime"); if (unlikely(!__pyx_mstate->__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_mstate->__pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  /* ImportRefnannyAPI */
  #if CYTHON_REFNANNY
  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
  if (!__Pyx_RefNanny) {
    PyErr_Clear();
    __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
    if (!__Pyx_RefNanny)
        Py_FatalError("failed to import 'refnanny' module");
  }
  #endif
  
__Pyx_RefNannySetupContext("PyInit_mlx5dv", 0);
  __Pyx_init_runtime_version();
  if (__Pyx_check_binary_version(__PYX_LIMITED_VERSION_HEX, __Pyx_get_runtime_version(), CYTHON_COMPILING_IN_LIMITED_API) < (0)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_mstate->__pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_mstate->__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_mstate->__pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_mstate->__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_mstate->__pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_mstate->__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error)
  /*--- Library function declarations ---*/
  /*--- Initialize various global constants etc. ---*/
  if (__Pyx_InitConstants(__pyx_mstate) < (0)) __PYX_ERR(0, 1, __pyx_L1_error)
  stringtab_initialized = 1;
  if (__Pyx_InitGlobals() < (0)) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__pyx_module_is_main_pyverbs__providers__mlx5__mlx5dv) {
    if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_name_2, __pyx_mstate_global->__pyx_n_u_main) < (0)) __PYX_ERR(0, 1, __pyx_L1_error)
  }
  {
    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error)
    if (!PyDict_GetItemString(modules, "pyverbs.providers.mlx5.mlx5dv")) {
      if (unlikely((PyDict_SetItemString(modules, "pyverbs.providers.mlx5.mlx5dv", __pyx_m) < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
    }
  }
  /*--- Builtin init code ---*/
  if (__Pyx_InitCachedBuiltins(__pyx_mstate) < (0)) __PYX_ERR(0, 1, __pyx_L1_error)
  /*--- Constants init code ---*/
  if (__Pyx_InitCachedConstants(__pyx_mstate) < (0)) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_CreateCodeObjects(__pyx_mstate) < (0)) __PYX_ERR(0, 1, __pyx_L1_error)
  /*--- Global type/function init code ---*/
  (void)__Pyx_modinit_global_init_code(__pyx_mstate);
  (void)__Pyx_modinit_variable_export_code(__pyx_mstate);
  (void)__Pyx_modinit_function_export_code(__pyx_mstate);
  if (unlikely((__Pyx_modinit_type_init_code(__pyx_mstate) < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
  if (unlikely((__Pyx_modinit_type_import_code(__pyx_mstate) < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
  (void)__Pyx_modinit_variable_import_code(__pyx_mstate);
  if (unlikely((__Pyx_modinit_function_import_code(__pyx_mstate) < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
  /*--- Execution code ---*/

  /* "EnumTypeToPy":1
 * cdef object __pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = None             # <<<<<<<<<<<<<<
 * 
 * @cname("__Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py")
*/
  __Pyx_INCREF(Py_None);
  __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
  __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py, Py_None);
  __Pyx_GIVEREF(Py_None);

  /* "EnumTypeToPy":3
 * cdef object __pyx_imported_enum___Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = None
 * 
 * @cname("__Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py")             # <<<<<<<<<<<<<<
 * cdef __Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(mlx5dv_dc_type c_val):
 *     cdef object __pyx_enum
*/
  __Pyx_INCREF(Py_None);
  __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
  __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_f4789f__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py, Py_None);
  __Pyx_GIVEREF(Py_None);

  /* "EnumTypeToPy":1
 * cdef object __pyx_imported_enum___Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = None             # <<<<<<<<<<<<<<
 * 
 * @cname("__Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py")
*/
  __Pyx_INCREF(Py_None);
  __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
  __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py, Py_None);
  __Pyx_GIVEREF(Py_None);

  /* "EnumTypeToPy":3
 * cdef object __pyx_imported_enum___Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = None
 * 
 * @cname("__Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py")             # <<<<<<<<<<<<<<
 * cdef __Pyx_Enum_683f63__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(mlx5dv_qp_init_attr_mask c_val):
 *     cdef object __pyx_enum
*/
  __Pyx_INCREF(Py_None);
  __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py);
  __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_attr_mask_to_py, Py_None);
  __Pyx_GIVEREF(Py_None);

  /* "EnumTypeToPy":1
 * cdef object __pyx_imported_enum___Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = None             # <<<<<<<<<<<<<<
 * 
 * @cname("__Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py")
*/
  __Pyx_INCREF(Py_None);
  __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
  __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py, Py_None);
  __Pyx_GIVEREF(Py_None);

  /* "EnumTypeToPy":3
 * cdef object __pyx_imported_enum___Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = None
 * 
 * @cname("__Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py")             # <<<<<<<<<<<<<<
 * cdef __Pyx_Enum_465059__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(mlx5dv_cq_init_attr_flags c_val):
 *     cdef object __pyx_enum
*/
  __Pyx_INCREF(Py_None);
  __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
  __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_8850fe__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py, Py_None);
  __Pyx_GIVEREF(Py_None);

  /* "EnumTypeToPy":1
 * cdef object __pyx_imported_enum___Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = None             # <<<<<<<<<<<<<<
 * 
 * @cname("__Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py")
*/
  __Pyx_INCREF(Py_None);
  __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
  __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py, Py_None);
  __Pyx_GIVEREF(Py_None);

  /* "EnumTypeToPy":3
 * cdef object __pyx_imported_enum___Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = None
 * 
 * @cname("__Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py")             # <<<<<<<<<<<<<<
 * cdef __Pyx_Enum_556604__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(mlx5dv_cqe_comp_res_format c_val):
 *     cdef object __pyx_enum
*/
  __Pyx_INCREF(Py_None);
  __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py);
  __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_7pyverbs_16libibverbs_enums_enum__space_ibv_qp_type_to_py, Py_None);
  __Pyx_GIVEREF(Py_None);

  /* "EnumTypeToPy":1
 * cdef object __pyx_imported_enum___Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = None             # <<<<<<<<<<<<<<
 * 
 * @cname("__Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py")
*/
  __Pyx_INCREF(Py_None);
  __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
  __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py, Py_None);
  __Pyx_GIVEREF(Py_None);

  /* "EnumTypeToPy":3
 * cdef object __pyx_imported_enum___Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = None
 * 
 * @cname("__Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py")             # <<<<<<<<<<<<<<
 * cdef __Pyx_Enum_93083b__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(mlx5dv_context_comp_mask c_val):
 *     cdef object __pyx_enum
*/
  __Pyx_INCREF(Py_None);
  __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
  __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_0552e7__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py, Py_None);
  __Pyx_GIVEREF(Py_None);

  /* "EnumTypeToPy":1
 * cdef object __pyx_imported_enum___Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = None             # <<<<<<<<<<<<<<
 * 
 * @cname("__Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py")
*/
  __Pyx_INCREF(Py_None);
  __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
  __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py, Py_None);
  __Pyx_GIVEREF(Py_None);

  /* "EnumTypeToPy":3
 * cdef object __pyx_imported_enum___Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = None
 * 
 * @cname("__Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py")             # <<<<<<<<<<<<<<
 * cdef __Pyx_Enum_494b7a__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(mlx5dv_sw_parsing_offloads c_val):
 *     cdef object __pyx_enum
*/
  __Pyx_INCREF(Py_None);
  __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
  __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_0fb903__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py, Py_None);
  __Pyx_GIVEREF(Py_None);

  /* "EnumTypeToPy":1
 * cdef object __pyx_imported_enum___Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = None             # <<<<<<<<<<<<<<
 * 
 * @cname("__Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py")
*/
  __Pyx_INCREF(Py_None);
  __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
  __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py, Py_None);
  __Pyx_GIVEREF(Py_None);

  /* "EnumTypeToPy":3
 * cdef object __pyx_imported_enum___Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py = None
 * 
 * @cname("__Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py")             # <<<<<<<<<<<<<<
 * cdef __Pyx_Enum_2cf0ed__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(mlx5dv_qp_create_flags c_val):
 *     cdef object __pyx_enum
*/
  __Pyx_INCREF(Py_None);
  __Pyx_XGOTREF(__pyx_imported_enum___Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py);
  __Pyx_DECREF_SET(__pyx_imported_enum___Pyx_Enum_cf61cc__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py, Py_None);
  __Pyx_GIVEREF(Py_None);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":8
 * from libc.stdlib cimport calloc, free ,malloc
 * from posix.mman cimport munmap
 * import logging             # <<<<<<<<<<<<<<
 * import weakref
 * 
*/
  __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_logging, 0, 0, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error)
  __pyx_t_2 = __pyx_t_1;
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_logging, __pyx_t_2) < (0)) __PYX_ERR(0, 8, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":9
 * from posix.mman cimport munmap
 * import logging
 * import weakref             # <<<<<<<<<<<<<<
 * 
 * from pyverbs.providers.mlx5.mlx5dv_mkey cimport Mlx5MrInterleaved, Mlx5Mkey, \
*/
  __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_weakref, 0, 0, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9, __pyx_L1_error)
  __pyx_t_2 = __pyx_t_1;
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_weakref, __pyx_t_2) < (0)) __PYX_ERR(0, 9, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":14
 *     Mlx5MkeyConfAttr, Mlx5SigBlockAttr
 * from pyverbs.providers.mlx5.mlx5dv_crypto cimport Mlx5CryptoLoginAttr, Mlx5CryptoAttr
 * from pyverbs.pyverbs_error import PyverbsUserError, PyverbsRDMAError, PyverbsError             # <<<<<<<<<<<<<<
 * from pyverbs.providers.mlx5.dr_action cimport DrActionFlowCounter, DrActionDestTir
 * from pyverbs.providers.mlx5.mlx5dv_sched cimport Mlx5dvSchedLeaf
*/
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_PyverbsUserError,__pyx_mstate_global->__pyx_n_u_PyverbsRDMAError,__pyx_mstate_global->__pyx_n_u_PyverbsError};
    __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pyverbs_pyverbs_error, __pyx_imported_names, 3, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 14, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_t_1;
  __Pyx_GOTREF(__pyx_t_2);
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_PyverbsUserError,__pyx_mstate_global->__pyx_n_u_PyverbsRDMAError,__pyx_mstate_global->__pyx_n_u_PyverbsError};
    for (__pyx_t_3=0; __pyx_t_3 < 3; __pyx_t_3++) {
      __pyx_t_4 = __Pyx_ImportFrom(__pyx_t_2, __pyx_imported_names[__pyx_t_3]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 14, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_imported_names[__pyx_t_3], __pyx_t_4) < (0)) __PYX_ERR(0, 14, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":19
 * cimport pyverbs.providers.mlx5.mlx5_enums as dve
 * cimport pyverbs.providers.mlx5.libmlx5 as dv
 * from pyverbs.mem_alloc import posix_memalign             # <<<<<<<<<<<<<<
 * from pyverbs.qp cimport QPInitAttrEx, QPEx
 * from pyverbs.base import PyverbsRDMAErrno
*/
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_posix_memalign};
    __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pyverbs_mem_alloc, __pyx_imported_names, 1, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 19, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_t_1;
  __Pyx_GOTREF(__pyx_t_2);
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_posix_memalign};
    __pyx_t_3 = 0; {
      __pyx_t_4 = __Pyx_ImportFrom(__pyx_t_2, __pyx_imported_names[__pyx_t_3]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 19, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_imported_names[__pyx_t_3], __pyx_t_4) < (0)) __PYX_ERR(0, 19, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":21
 * from pyverbs.mem_alloc import posix_memalign
 * from pyverbs.qp cimport QPInitAttrEx, QPEx
 * from pyverbs.base import PyverbsRDMAErrno             # <<<<<<<<<<<<<<
 * from pyverbs.base cimport close_weakrefs
 * from pyverbs.wr cimport copy_sg_array
*/
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_PyverbsRDMAErrno};
    __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pyverbs_base, __pyx_imported_names, 1, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 21, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_t_1;
  __Pyx_GOTREF(__pyx_t_2);
  {
    PyObject* const __pyx_imported_names[] = {__pyx_mstate_global->__pyx_n_u_PyverbsRDMAErrno};
    __pyx_t_3 = 0; {
      __pyx_t_4 = __Pyx_ImportFrom(__pyx_t_2, __pyx_imported_names[__pyx_t_3]); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 21, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_imported_names[__pyx_t_3], __pyx_t_4) < (0)) __PYX_ERR(0, 21, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5DVPortAttr___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[1])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_14Mlx5DVPortAttr_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5DVPortAttr___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[2])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.attr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5DVContextAttr___reduce_cytho, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[3])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.attr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.attr cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DVContextAttr_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5DVContextAttr___setstate_cyt, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[4])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":198
 *         self.dest_tir_actions = weakref.WeakSet()
 * 
 *     def query(self, in_, outlen):             # <<<<<<<<<<<<<<
 *         """
 *         Queries the DevX object.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_3query, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5DevxObj_query, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[5])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj, __pyx_mstate_global->__pyx_n_u_query, __pyx_t_2) < (0)) __PYX_ERR(0, 198, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":221
 *         return out
 * 
 *     def query_async(self, in_, outlen, wr_id, Mlx5DevxCmdComp cmd_comp):             # <<<<<<<<<<<<<<
 *         """
 *         Queries asynchronously the DevX object.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_5query_async, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5DevxObj_query_async, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[6])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj, __pyx_mstate_global->__pyx_n_u_query_async, __pyx_t_2) < (0)) __PYX_ERR(0, 221, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":242
 *             free(in_mailbox)
 * 
 *     def modify(self, in_, outlen):             # <<<<<<<<<<<<<<
 *         """
 *         Modifies the DevX object.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_7modify, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5DevxObj_modify, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[7])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 242, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj, __pyx_mstate_global->__pyx_n_u_modify, __pyx_t_2) < (0)) __PYX_ERR(0, 242, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":284
 *         self.close()
 * 
 *     cpdef close(self):             # <<<<<<<<<<<<<<
 *         if self.obj != NULL:
 *             if self.logger:
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_11close, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5DevxObj_close, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[8])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 284, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxObj, __pyx_mstate_global->__pyx_n_u_close, __pyx_t_2) < (0)) __PYX_ERR(0, 284, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.obj cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_13__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5DevxObj___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[9])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.obj cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.obj cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5DevxObj_15__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5DevxObj___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[10])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":319
 *         self.cmd_comps = weakref.WeakSet()
 * 
 *     def query_mlx5_device(self, comp_mask=-1):             # <<<<<<<<<<<<<<
 *         """
 *         Queries the provider for device-specific attributes.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_3query_mlx5_device, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5Context_query_mlx5_device, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[11])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[0]);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context, __pyx_mstate_global->__pyx_n_u_query_mlx5_device, __pyx_t_2) < (0)) __PYX_ERR(0, 319, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":350
 *         return dv_attr
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def query_mlx5_port(Context ctx, port_num):
 *         dv_attr = Mlx5DVPortAttr()
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_5query_mlx5_port, __Pyx_CYFUNCTION_STATICMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5Context_query_mlx5_port, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[12])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 350, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context, __pyx_mstate_global->__pyx_n_u_query_mlx5_port, __pyx_t_2) < (0)) __PYX_ERR(0, 350, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = NULL;
  __Pyx_GetNameInClass(__pyx_t_5, (PyObject*)__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context, __pyx_mstate_global->__pyx_n_u_query_mlx5_port); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 350, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_5};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_staticmethod, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 350, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context, __pyx_mstate_global->__pyx_n_u_query_mlx5_port, __pyx_t_2) < (0)) __PYX_ERR(0, 350, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":358
 *         return dv_attr
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def reserved_qpn_alloc(Context ctx):
 *         """
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_7reserved_qpn_alloc, __Pyx_CYFUNCTION_STATICMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5Context_reserved_qpn_alloc, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[13])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 358, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context, __pyx_mstate_global->__pyx_n_u_reserved_qpn_alloc, __pyx_t_2) < (0)) __PYX_ERR(0, 358, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_5 = NULL;
  __Pyx_GetNameInClass(__pyx_t_4, (PyObject*)__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context, __pyx_mstate_global->__pyx_n_u_reserved_qpn_alloc); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 358, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_staticmethod, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 358, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context, __pyx_mstate_global->__pyx_n_u_reserved_qpn_alloc, __pyx_t_2) < (0)) __PYX_ERR(0, 358, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":371
 *         return qpn
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def reserved_qpn_dealloc(Context ctx, qpn):
 *         """
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_9reserved_qpn_dealloc, __Pyx_CYFUNCTION_STATICMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5Context_reserved_qpn_dealloc, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[14])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 371, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context, __pyx_mstate_global->__pyx_n_u_reserved_qpn_dealloc, __pyx_t_2) < (0)) __PYX_ERR(0, 371, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = NULL;
  __Pyx_GetNameInClass(__pyx_t_5, (PyObject*)__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context, __pyx_mstate_global->__pyx_n_u_reserved_qpn_dealloc); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 371, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_5};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_staticmethod, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 371, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context, __pyx_mstate_global->__pyx_n_u_reserved_qpn_dealloc, __pyx_t_2) < (0)) __PYX_ERR(0, 371, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":382
 *             raise PyverbsRDMAError(f'Failed to dealloc QP number {qpn}.', rc)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def crypto_login(Context ctx, Mlx5CryptoLoginAttr login_attr):
 *         """
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_11crypto_login, __Pyx_CYFUNCTION_STATICMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5Context_crypto_login, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[15])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 382, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context, __pyx_mstate_global->__pyx_n_u_crypto_login, __pyx_t_2) < (0)) __PYX_ERR(0, 382, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_5 = NULL;
  __Pyx_GetNameInClass(__pyx_t_4, (PyObject*)__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context, __pyx_mstate_global->__pyx_n_u_crypto_login); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 382, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_staticmethod, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 382, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context, __pyx_mstate_global->__pyx_n_u_crypto_login, __pyx_t_2) < (0)) __PYX_ERR(0, 382, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":395
 *             raise PyverbsRDMAError(f'Failed to create crypto login session.', rc)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def query_login_state(Context ctx):
 *         """
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_13query_login_state, __Pyx_CYFUNCTION_STATICMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5Context_query_login_state, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[16])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 395, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context, __pyx_mstate_global->__pyx_n_u_query_login_state, __pyx_t_2) < (0)) __PYX_ERR(0, 395, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = NULL;
  __Pyx_GetNameInClass(__pyx_t_5, (PyObject*)__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context, __pyx_mstate_global->__pyx_n_u_query_login_state); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 395, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_5};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_staticmethod, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 395, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context, __pyx_mstate_global->__pyx_n_u_query_login_state, __pyx_t_2) < (0)) __PYX_ERR(0, 395, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":408
 *         return state
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def crypto_logout(Context ctx):
 *         """
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_15crypto_logout, __Pyx_CYFUNCTION_STATICMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5Context_crypto_logout, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[17])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 408, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context, __pyx_mstate_global->__pyx_n_u_crypto_logout, __pyx_t_2) < (0)) __PYX_ERR(0, 408, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_5 = NULL;
  __Pyx_GetNameInClass(__pyx_t_4, (PyObject*)__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context, __pyx_mstate_global->__pyx_n_u_crypto_logout); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 408, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_staticmethod, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 408, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context, __pyx_mstate_global->__pyx_n_u_crypto_logout, __pyx_t_2) < (0)) __PYX_ERR(0, 408, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":418
 *             raise PyverbsRDMAError(f'Failed to logout from crypto login session.', rc)
 * 
 *     def devx_general_cmd(self, in_, outlen):             # <<<<<<<<<<<<<<
 *         """
 *         Executes a DevX general command according to the input mailbox.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_17devx_general_cmd, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5Context_devx_general_cmd, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[18])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 418, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context, __pyx_mstate_global->__pyx_n_u_devx_general_cmd, __pyx_t_2) < (0)) __PYX_ERR(0, 418, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":442
 *         return out
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def device_timestamp_to_ns(Context ctx, device_timestamp):
 *         """
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_19device_timestamp_to_ns, __Pyx_CYFUNCTION_STATICMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5Context_device_timestamp_to, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[19])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 442, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context, __pyx_mstate_global->__pyx_n_u_device_timestamp_to_ns, __pyx_t_2) < (0)) __PYX_ERR(0, 442, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = NULL;
  __Pyx_GetNameInClass(__pyx_t_5, (PyObject*)__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context, __pyx_mstate_global->__pyx_n_u_device_timestamp_to_ns); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 442, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_5};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_staticmethod, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 442, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context, __pyx_mstate_global->__pyx_n_u_device_timestamp_to_ns, __pyx_t_2) < (0)) __PYX_ERR(0, 442, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":462
 *         return ns_time
 * 
 *     def devx_query_eqn(self, vector):             # <<<<<<<<<<<<<<
 *         """
 *         Query EQN for a given vector id.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_21devx_query_eqn, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5Context_devx_query_eqn, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[20])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 462, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context, __pyx_mstate_global->__pyx_n_u_devx_query_eqn, __pyx_t_2) < (0)) __PYX_ERR(0, 462, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":474
 *         return eqn
 * 
 *     def get_data_direct_sysfs_path(self, length=512):             # <<<<<<<<<<<<<<
 *         cdef char *buffer = <char *> calloc(1, length)
 *         if buffer == NULL:
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_23get_data_direct_sysfs_path, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5Context_get_data_direct_sysf, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[21])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 474, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[1]);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context, __pyx_mstate_global->__pyx_n_u_get_data_direct_sysfs_path, __pyx_t_2) < (0)) __PYX_ERR(0, 474, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":504
 *         self.close()
 * 
 *     cpdef close(self):             # <<<<<<<<<<<<<<
 *         if self.context != NULL:
 *             close_weakrefs([self.pps, self.devx_objs, self.devx_umems, self.devx_eqs,
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_27close, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5Context_close, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[22])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 504, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Context, __pyx_mstate_global->__pyx_n_u_close, __pyx_t_2) < (0)) __PYX_ERR(0, 504, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.context,self.device cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_29__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5Context___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[23])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.context,self.device cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.context,self.device cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11Mlx5Context_31__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5Context___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[24])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "Pickling of struct members such as self.dv must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5DVContext___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[25])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "Pickling of struct members such as self.dv must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "Pickling of struct members such as self.dv must be explicitly requested with @auto_pickle(True)"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_13Mlx5DVContext_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5DVContext___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[26])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "Pickling of struct members such as self.dci_streams must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5DCIStreamInitAttr___reduce_c, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[27])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "Pickling of struct members such as self.dci_streams must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "Pickling of struct members such as self.dci_streams must be explicitly requested with @auto_pickle(True)"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_21Mlx5DCIStreamInitAttr_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5DCIStreamInitAttr___setstate, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[28])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":684
 *     for DC QP creation.
 *     """
 *     def __init__(self, dc_type=dve.MLX5DV_DCTYPE_DCI, dct_access_key=0, dci_streams=None):             # <<<<<<<<<<<<<<
 *         """
 *         Initializes an Mlx5DVDCInitAttr object with the given DC type and DCT
*/
  __pyx_t_2 = __Pyx_Enum_2a50ad__7pyverbs_9providers_4mlx5_10mlx5_enums_enum__s__etc_to_py(MLX5DV_DCTYPE_DCI); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 684, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_mstate_global->__pyx_k__4 = __pyx_t_2;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5DVDCInitAttr___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[29])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVDCInitAttr_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5DVDCInitAttr___setstate_cyth, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[30])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5DVQPInitAttr___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[31])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVQPInitAttr_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5DVQPInitAttr___setstate_cyth, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[32])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":863
 *         super().__init__(context, init_attr)
 * 
 *     def _get_comp_mask(self, dst):             # <<<<<<<<<<<<<<
 *         masks = {dve.MLX5DV_DCTYPE_DCT: {'INIT': e.IBV_QP_PKEY_INDEX |
 *                                          e.IBV_QP_PORT | e.IBV_QP_ACCESS_FLAGS,
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_3_get_comp_mask, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5QP__get_comp_mask, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[33])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 863, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, __pyx_mstate_global->__pyx_n_u_get_comp_mask, __pyx_t_2) < (0)) __PYX_ERR(0, 863, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":880
 *         return masks[self.dc_type][dst] | e.IBV_QP_STATE
 * 
 *     def wr_set_dc_addr(self, AH ah, remote_dctn, remote_dc_key):             # <<<<<<<<<<<<<<
 *         """
 *         Attach a DC info to the last work request.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_5wr_set_dc_addr, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5QP_wr_set_dc_addr, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[34])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 880, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, __pyx_mstate_global->__pyx_n_u_wr_set_dc_addr, __pyx_t_2) < (0)) __PYX_ERR(0, 880, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":890
 *                                  ah.ah, remote_dctn, remote_dc_key)
 * 
 *     def wr_raw_wqe(self, wqe):             # <<<<<<<<<<<<<<
 *         """
 *         Build a raw work request
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_7wr_raw_wqe, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5QP_wr_raw_wqe, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[35])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 890, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, __pyx_mstate_global->__pyx_n_u_wr_raw_wqe, __pyx_t_2) < (0)) __PYX_ERR(0, 890, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":898
 *         dv.mlx5dv_wr_raw_wqe(dv.mlx5dv_qp_ex_from_ibv_qp_ex(self.qp_ex), wqe_ptr)
 * 
 *     def wr_mr_interleaved(self, Mlx5Mkey mkey, access_flags, repeat_count,             # <<<<<<<<<<<<<<
 *                           mr_interleaved_lst):
 *         """
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_9wr_mr_interleaved, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5QP_wr_mr_interleaved, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[36])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 898, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, __pyx_mstate_global->__pyx_n_u_wr_mr_interleaved, __pyx_t_2) < (0)) __PYX_ERR(0, 898, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":919
 *         free(mr_interleaved_p)
 * 
 *     def wr_mr_list(self, Mlx5Mkey mkey, access_flags, sge_list):             # <<<<<<<<<<<<<<
 *         """
 *         Registers a memory layout based on list of SGE.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_11wr_mr_list, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5QP_wr_mr_list, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[37])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 919, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, __pyx_mstate_global->__pyx_n_u_wr_mr_list, __pyx_t_2) < (0)) __PYX_ERR(0, 919, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":935
 *         free(sge_p)
 * 
 *     def wr_mkey_configure(self, Mlx5Mkey mkey, num_setters, Mlx5MkeyConfAttr mkey_config):             # <<<<<<<<<<<<<<
 *         """
 *         Create a work request to configure an Mkey
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_13wr_mkey_configure, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5QP_wr_mkey_configure, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[38])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 935, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, __pyx_mstate_global->__pyx_n_u_wr_mkey_configure, __pyx_t_2) < (0)) __PYX_ERR(0, 935, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":947
 *                                     &mkey_config.mlx5dv_mkey_conf_attr)
 * 
 *     def wr_set_mkey_access_flags(self, access_flags):             # <<<<<<<<<<<<<<
 *         """
 *         Set the memory protection attributes for an Mkey
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_15wr_set_mkey_access_flags, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5QP_wr_set_mkey_access_flags, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[39])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 947, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, __pyx_mstate_global->__pyx_n_u_wr_set_mkey_access_flags, __pyx_t_2) < (0)) __PYX_ERR(0, 947, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":955
 *                                            access_flags)
 * 
 *     def wr_set_mkey_layout_list(self, sge_list):             # <<<<<<<<<<<<<<
 *         """
 *         Set a memory layout for an Mkey based on SGE list.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_17wr_set_mkey_layout_list, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5QP_wr_set_mkey_layout_list, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[40])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 955, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, __pyx_mstate_global->__pyx_n_u_wr_set_mkey_layout_list, __pyx_t_2) < (0)) __PYX_ERR(0, 955, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":969
 *         free(sge_p)
 * 
 *     def wr_set_mkey_layout_interleaved(self, repeat_count, mr_interleaved_lst):             # <<<<<<<<<<<<<<
 *         """
 *         Set an interleaved memory layout for an Mkey
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_19wr_set_mkey_layout_interleaved, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5QP_wr_set_mkey_layout_interl, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[41])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 969, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, __pyx_mstate_global->__pyx_n_u_wr_set_mkey_layout_interleaved, __pyx_t_2) < (0)) __PYX_ERR(0, 969, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":986
 *         free(mr_interleaved_p)
 * 
 *     def wr_set_mkey_crypto(self, Mlx5CryptoAttr attr):             # <<<<<<<<<<<<<<
 *         """
 *         Configure a MKey for crypto operation.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_21wr_set_mkey_crypto, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5QP_wr_set_mkey_crypto, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[42])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 986, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, __pyx_mstate_global->__pyx_n_u_wr_set_mkey_crypto, __pyx_t_2) < (0)) __PYX_ERR(0, 986, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":994
 *                                      &attr.mlx5dv_crypto_attr)
 * 
 *     def wr_set_mkey_sig_block(self, Mlx5SigBlockAttr block_attr):             # <<<<<<<<<<<<<<
 *         """
 *         Configure a MKEY for block signature (data integrity) operation.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_23wr_set_mkey_sig_block, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5QP_wr_set_mkey_sig_block, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[43])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 994, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, __pyx_mstate_global->__pyx_n_u_wr_set_mkey_sig_block, __pyx_t_2) < (0)) __PYX_ERR(0, 994, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1002
 *                                         &block_attr.mlx5dv_sig_block_attr)
 * 
 *     def wr_memcpy(self, dest_lkey, dest_addr, src_lkey, src_addr, length):             # <<<<<<<<<<<<<<
 *         """
 *         Copies memory data on PCI bus using DMA functionality of the device.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_25wr_memcpy, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5QP_wr_memcpy, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[44])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1002, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, __pyx_mstate_global->__pyx_n_u_wr_memcpy, __pyx_t_2) < (0)) __PYX_ERR(0, 1002, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1014
 *                             dest_lkey, dest_addr, src_lkey, src_addr, length)
 * 
 *     def cancel_posted_send_wrs(self, wr_id):             # <<<<<<<<<<<<<<
 *         """
 *         Cancel all pending send work requests with supplied wr_id in a QP in
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_27cancel_posted_send_wrs, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5QP_cancel_posted_send_wrs, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[45])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1014, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, __pyx_mstate_global->__pyx_n_u_cancel_posted_send_wrs, __pyx_t_2) < (0)) __PYX_ERR(0, 1014, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1027
 *         return rc
 * 
 *     def wr_set_dc_addr_stream(self, AH ah, remote_dctn, remote_dc_key, stream_id):             # <<<<<<<<<<<<<<
 *         """
 *         Attach a DC info to the last work request.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_29wr_set_dc_addr_stream, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5QP_wr_set_dc_addr_stream, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[46])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1027, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, __pyx_mstate_global->__pyx_n_u_wr_set_dc_addr_stream, __pyx_t_2) < (0)) __PYX_ERR(0, 1027, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1039
 *                                         stream_id)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def query_lag_port(QP qp):
 *         """
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_31query_lag_port, __Pyx_CYFUNCTION_STATICMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5QP_query_lag_port, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[47])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1039, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, __pyx_mstate_global->__pyx_n_u_query_lag_port, __pyx_t_2) < (0)) __PYX_ERR(0, 1039, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_5 = NULL;
  __Pyx_GetNameInClass(__pyx_t_4, (PyObject*)__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, __pyx_mstate_global->__pyx_n_u_query_lag_port); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1039, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_staticmethod, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1039, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, __pyx_mstate_global->__pyx_n_u_query_lag_port, __pyx_t_2) < (0)) __PYX_ERR(0, 1039, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1054
 *         return port_num, active_port_num
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def modify_lag_port(QP qp, uint8_t port_num):
 *         """
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_33modify_lag_port, __Pyx_CYFUNCTION_STATICMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5QP_modify_lag_port, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[48])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1054, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, __pyx_mstate_global->__pyx_n_u_modify_lag_port, __pyx_t_2) < (0)) __PYX_ERR(0, 1054, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = NULL;
  __Pyx_GetNameInClass(__pyx_t_5, (PyObject*)__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, __pyx_mstate_global->__pyx_n_u_modify_lag_port); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1054, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_5};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_staticmethod, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1054, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, __pyx_mstate_global->__pyx_n_u_modify_lag_port, __pyx_t_2) < (0)) __PYX_ERR(0, 1054, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1066
 *             raise PyverbsRDMAError(f'Failed to modify lag of QP #{qp.qp.qp_num}', rc)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def modify_qp_sched_elem(QP qp, Mlx5dvSchedLeaf req_sched_leaf=None,
 *                              Mlx5dvSchedLeaf resp_sched_leaf=None):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_35modify_qp_sched_elem, __Pyx_CYFUNCTION_STATICMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5QP_modify_qp_sched_elem, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[49])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1066, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[2]);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, __pyx_mstate_global->__pyx_n_u_modify_qp_sched_elem, __pyx_t_2) < (0)) __PYX_ERR(0, 1066, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_5 = NULL;
  __Pyx_GetNameInClass(__pyx_t_4, (PyObject*)__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, __pyx_mstate_global->__pyx_n_u_modify_qp_sched_elem); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1066, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_staticmethod, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1066, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, __pyx_mstate_global->__pyx_n_u_modify_qp_sched_elem, __pyx_t_2) < (0)) __PYX_ERR(0, 1066, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1081
 *             raise PyverbsRDMAError(f'Failed to modify QP #{qp.qp.qp_num} sched element', rc)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def modify_udp_sport(QP qp, uint16_t udp_sport):
 *         """
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_37modify_udp_sport, __Pyx_CYFUNCTION_STATICMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5QP_modify_udp_sport, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[50])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1081, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, __pyx_mstate_global->__pyx_n_u_modify_udp_sport, __pyx_t_2) < (0)) __PYX_ERR(0, 1081, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = NULL;
  __Pyx_GetNameInClass(__pyx_t_5, (PyObject*)__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, __pyx_mstate_global->__pyx_n_u_modify_udp_sport); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1081, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_5};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_staticmethod, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1081, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, __pyx_mstate_global->__pyx_n_u_modify_udp_sport, __pyx_t_2) < (0)) __PYX_ERR(0, 1081, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1093
 *                                    f'#{qp.qp.qp_num}', rc)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def map_ah_to_qp(AH ah, qp_num):
 *         """
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_39map_ah_to_qp, __Pyx_CYFUNCTION_STATICMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5QP_map_ah_to_qp, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[51])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1093, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, __pyx_mstate_global->__pyx_n_u_map_ah_to_qp, __pyx_t_2) < (0)) __PYX_ERR(0, 1093, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_5 = NULL;
  __Pyx_GetNameInClass(__pyx_t_4, (PyObject*)__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, __pyx_mstate_global->__pyx_n_u_map_ah_to_qp); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1093, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_staticmethod, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1093, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, __pyx_mstate_global->__pyx_n_u_map_ah_to_qp, __pyx_t_2) < (0)) __PYX_ERR(0, 1093, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1105
 *             raise PyverbsRDMAError(f'Failed to map AH to QP #{qp_num}', rc)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def modify_dci_stream_channel_id(QP qp, uint16_t stream_id):
 *         """
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_41modify_dci_stream_channel_id, __Pyx_CYFUNCTION_STATICMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5QP_modify_dci_stream_channel, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[52])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, __pyx_mstate_global->__pyx_n_u_modify_dci_stream_channel_id, __pyx_t_2) < (0)) __PYX_ERR(0, 1105, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = NULL;
  __Pyx_GetNameInClass(__pyx_t_5, (PyObject*)__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, __pyx_mstate_global->__pyx_n_u_modify_dci_stream_channel_id); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_5};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_staticmethod, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1105, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5QP, __pyx_mstate_global->__pyx_n_u_modify_dci_stream_channel_id, __pyx_t_2) < (0)) __PYX_ERR(0, 1105, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.qp,self.qp_ex cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_43__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5QP___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[53])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.qp,self.qp_ex cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.qp,self.qp_ex cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5QP_45__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5QP___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[54])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5DVCQInitAttr___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[55])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "Pickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_16Mlx5DVCQInitAttr_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5DVCQInitAttr___setstate_cyth, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[56])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.cq,self.ibv_cq cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5CQ_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5CQ___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[57])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.cq,self.ibv_cq cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.cq,self.ibv_cq cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5CQ_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5CQ___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[58])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1225
 * 
 * 
 * def qpts_to_str(qp_types):             # <<<<<<<<<<<<<<
 *     numeric_types = qp_types
 *     qpts_str = ''
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_1qpts_to_str, 0, __pyx_mstate_global->__pyx_n_u_qpts_to_str, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[59])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1225, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_qpts_to_str, __pyx_t_2) < (0)) __PYX_ERR(0, 1225, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1240
 * 
 * 
 * def bitmask_to_str(bits, values):             # <<<<<<<<<<<<<<
 *     numeric_bits = bits
 *     res = ''
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_3bitmask_to_str, 0, __pyx_mstate_global->__pyx_n_u_bitmask_to_str, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[60])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1240, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_bitmask_to_str, __pyx_t_2) < (0)) __PYX_ERR(0, 1240, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1252
 * 
 * 
 * def context_comp_mask_to_str(mask):             # <<<<<<<<<<<<<<
 *     l = {dve.MLX5DV_CONTEXT_MASK_CQE_COMPRESION: 'CQE compression',
 *          dve.MLX5DV_CONTEXT_MASK_SWP: 'SW parsing',
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_5context_comp_mask_to_str, 0, __pyx_mstate_global->__pyx_n_u_context_comp_mask_to_str, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[61])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1252, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_context_comp_mask_to_str, __pyx_t_2) < (0)) __PYX_ERR(0, 1252, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1263
 * 
 * 
 * def context_flags_to_str(flags):             # <<<<<<<<<<<<<<
 *     l = {dve.MLX5DV_CONTEXT_FLAGS_CQE_V1: 'CQE v1',
 *          dve.MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED: 'Multi packet WQE allowed',
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_7context_flags_to_str, 0, __pyx_mstate_global->__pyx_n_u_context_flags_to_str, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[62])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_context_flags_to_str, __pyx_t_2) < (0)) __PYX_ERR(0, 1263, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1275
 * 
 * 
 * def swp_to_str(swps):             # <<<<<<<<<<<<<<
 *     l = {dve.MLX5DV_SW_PARSING: 'SW Parsing',
 *          dve.MLX5DV_SW_PARSING_CSUM: 'SW Parsing CSUM',
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_9swp_to_str, 0, __pyx_mstate_global->__pyx_n_u_swp_to_str, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[63])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_swp_to_str, __pyx_t_2) < (0)) __PYX_ERR(0, 1275, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1282
 * 
 * 
 * def cqe_comp_to_str(cqe):             # <<<<<<<<<<<<<<
 *     l = {dve.MLX5DV_CQE_RES_FORMAT_HASH: 'with hash',
 *          dve.MLX5DV_CQE_RES_FORMAT_CSUM: 'with RX checksum CSUM',
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_11cqe_comp_to_str, 0, __pyx_mstate_global->__pyx_n_u_cqe_comp_to_str, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[64])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1282, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_cqe_comp_to_str, __pyx_t_2) < (0)) __PYX_ERR(0, 1282, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1289
 * 
 * 
 * def tunnel_offloads_to_str(tun):             # <<<<<<<<<<<<<<
 *     l = {dve.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_VXLAN: 'VXLAN',
 *          dve.MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GRE: 'GRE',
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_13tunnel_offloads_to_str, 0, __pyx_mstate_global->__pyx_n_u_tunnel_offloads_to_str, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[65])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1289, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_tunnel_offloads_to_str, __pyx_t_2) < (0)) __PYX_ERR(0, 1289, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1300
 * 
 * 
 * def dc_type_to_str(dctype):             # <<<<<<<<<<<<<<
 *     l = {dve.MLX5DV_DCTYPE_DCT: 'DCT', dve.MLX5DV_DCTYPE_DCI: 'DCI'}
 *     try:
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_15dc_type_to_str, 0, __pyx_mstate_global->__pyx_n_u_dc_type_to_str, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[66])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1300, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_dc_type_to_str, __pyx_t_2) < (0)) __PYX_ERR(0, 1300, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1308
 * 
 * 
 * def qp_comp_mask_to_str(flags):             # <<<<<<<<<<<<<<
 *     l = {dve.MLX5DV_QP_INIT_ATTR_MASK_QP_CREATE_FLAGS: 'Create flags',
 *          dve.MLX5DV_QP_INIT_ATTR_MASK_DC: 'DC',
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_17qp_comp_mask_to_str, 0, __pyx_mstate_global->__pyx_n_u_qp_comp_mask_to_str, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[67])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1308, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_qp_comp_mask_to_str, __pyx_t_2) < (0)) __PYX_ERR(0, 1308, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1316
 * 
 * 
 * def qp_create_flags_to_str(flags):             # <<<<<<<<<<<<<<
 *     l = {dve.MLX5DV_QP_CREATE_TUNNEL_OFFLOADS: 'Tunnel offloads',
 *          dve.MLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_UC:
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_19qp_create_flags_to_str, 0, __pyx_mstate_global->__pyx_n_u_qp_create_flags_to_str, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[68])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1316, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_qp_create_flags_to_str, __pyx_t_2) < (0)) __PYX_ERR(0, 1316, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1330
 * 
 * 
 * def send_ops_flags_to_str(flags):             # <<<<<<<<<<<<<<
 *     l = {dve.MLX5DV_QP_EX_WITH_MR_INTERLEAVED: 'With MR interleaved',
 *          dve.MLX5DV_QP_EX_WITH_MR_LIST: 'With MR list',
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_21send_ops_flags_to_str, 0, __pyx_mstate_global->__pyx_n_u_send_ops_flags_to_str, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[69])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1330, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_send_ops_flags_to_str, __pyx_t_2) < (0)) __PYX_ERR(0, 1330, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1348
 *         self.close()
 * 
 *     cpdef close(self):             # <<<<<<<<<<<<<<
 *         if self.var != NULL:
 *             dv.mlx5dv_free_var(self.var)
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_5close, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5VAR_close, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[70])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1348, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5VAR, __pyx_mstate_global->__pyx_n_u_close, __pyx_t_2) < (0)) __PYX_ERR(0, 1348, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.var cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_9__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5VAR___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[71])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.var cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.var cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5VAR_11__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5VAR___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[72])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1401
 *         self.close()
 * 
 *     cpdef close(self):             # <<<<<<<<<<<<<<
 *         if self.pp != NULL:
 *             dv.mlx5dv_pp_free(self.pp)
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_5close, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5PP_close, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[73])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5PP, __pyx_mstate_global->__pyx_n_u_close, __pyx_t_2) < (0)) __PYX_ERR(0, 1401, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.pp cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_7__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5PP___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[74])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.pp cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.pp cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6Mlx5PP_9__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5PP___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[75])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1421
 *         self.close()
 * 
 *     cpdef close(self):             # <<<<<<<<<<<<<<
 *         if self.uar != NULL:
 *             dv.mlx5dv_devx_free_uar(self.uar)
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_5close, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5UAR_close, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[76])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1421, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UAR, __pyx_mstate_global->__pyx_n_u_close, __pyx_t_2) < (0)) __PYX_ERR(0, 1421, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.uar cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_9__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5UAR___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[77])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.uar cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.uar cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_7Mlx5UAR_11__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5UAR___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[78])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1473
 *             raise PyverbsRDMAErrno('Failed to get DM operation address')
 * 
 *     def unmap(self, length):             # <<<<<<<<<<<<<<
 *         munmap(self.addr, length)
 * 
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_3unmap, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5DmOpAddr_unmap, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[79])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1473, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr, __pyx_mstate_global->__pyx_n_u_unmap, __pyx_t_2) < (0)) __PYX_ERR(0, 1473, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1498
 *             raise PyverbsUserError(f'Memic Atomic operations do not support with length: {length}')
 * 
 *     def write(self, data):             # <<<<<<<<<<<<<<
 *         """
 *         Writes data (bytes) to the DM operation address.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_5write, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5DmOpAddr_write, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[80])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1498, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr, __pyx_mstate_global->__pyx_n_u_write, __pyx_t_2) < (0)) __PYX_ERR(0, 1498, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1507
 * 
 * 
 *     def read(self, length):             # <<<<<<<<<<<<<<
 *         """
 *         Reads 'length' bytes from the DM operation address.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_7read, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5DmOpAddr_read, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[81])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1507, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr, __pyx_mstate_global->__pyx_n_u_read, __pyx_t_2) < (0)) __PYX_ERR(0, 1507, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1519
 *         return res
 * 
 *     cpdef close(self):             # <<<<<<<<<<<<<<
 *         self.addr = NULL
 * 
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_9close, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5DmOpAddr_close, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[82])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1519, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DmOpAddr, __pyx_mstate_global->__pyx_n_u_close, __pyx_t_2) < (0)) __PYX_ERR(0, 1519, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.addr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_11__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5DmOpAddr___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[83])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.addr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.addr cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_12Mlx5DmOpAddr_13__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5DmOpAddr___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[84])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1534
 *     """
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def sizeof():
 *         return 0
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_1sizeof, __Pyx_CYFUNCTION_STATICMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_WqeSeg_sizeof, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[85])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1534, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg, __pyx_mstate_global->__pyx_n_u_sizeof, __pyx_t_2) < (0)) __PYX_ERR(0, 1534, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_5 = NULL;
  __Pyx_GetNameInClass(__pyx_t_4, (PyObject*)__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg, __pyx_mstate_global->__pyx_n_u_sizeof); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1534, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_staticmethod, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1534, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg, __pyx_mstate_global->__pyx_n_u_sizeof, __pyx_t_2) < (0)) __PYX_ERR(0, 1534, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1538
 *         return 0
 * 
 *     cpdef _copy_to_buffer(self, addr):             # <<<<<<<<<<<<<<
 *         memcpy(<void *><uintptr_t>addr, <void *>self.segment, self.sizeof())
 * 
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_3_copy_to_buffer, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_WqeSeg__copy_to_buffer, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[86])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1538, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg, __pyx_mstate_global->__pyx_n_u_copy_to_buffer, __pyx_t_2) < (0)) __PYX_ERR(0, 1538, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1544
 *         self.close()
 * 
 *     cpdef close(self):             # <<<<<<<<<<<<<<
 *         if self.segment != NULL:
 *             free(self.segment)
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_7close, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_WqeSeg_close, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[87])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1544, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeSeg, __pyx_mstate_global->__pyx_n_u_close, __pyx_t_2) < (0)) __PYX_ERR(0, 1544, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.segment cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_9__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_WqeSeg___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[88])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.segment cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.segment cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_6WqeSeg_11__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_WqeSeg___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[89])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1578
 *                                    (<dv.mlx5_wqe_ctrl_seg *>self.segment).imm)
 * 
 *     def set_ctrl_seg(self, pi, opcode, opmod, qp_num, fm_ce_se, ds, signature, imm):             # <<<<<<<<<<<<<<
 *         dv.mlx5dv_set_ctrl_seg(<dv.mlx5_wqe_ctrl_seg *>self.segment, pi, opcode,
 *                                opmod, qp_num, fm_ce_se, ds, signature, imm)
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_5set_ctrl_seg, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_WqeCtrlSeg_set_ctrl_seg, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[90])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1578, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg, __pyx_mstate_global->__pyx_n_u_set_ctrl_seg, __pyx_t_2) < (0)) __PYX_ERR(0, 1578, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1582
 *                                opmod, qp_num, fm_ce_se, ds, signature, imm)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def sizeof():
 *         return sizeof(dv.mlx5_wqe_ctrl_seg)
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_7sizeof, __Pyx_CYFUNCTION_STATICMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_WqeCtrlSeg_sizeof, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[91])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1582, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg, __pyx_mstate_global->__pyx_n_u_sizeof, __pyx_t_2) < (0)) __PYX_ERR(0, 1582, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = NULL;
  __Pyx_GetNameInClass(__pyx_t_5, (PyObject*)__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg, __pyx_mstate_global->__pyx_n_u_sizeof); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1582, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_5};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_staticmethod, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1582, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeCtrlSeg, __pyx_mstate_global->__pyx_n_u_sizeof, __pyx_t_2) < (0)) __PYX_ERR(0, 1582, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.segment cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_9__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_WqeCtrlSeg___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[92])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.segment cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.segment cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeCtrlSeg_11__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_WqeCtrlSeg___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[93])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1636
 *         self.set_data_seg(length, lkey, addr)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def sizeof():
 *         return sizeof(dv.mlx5_wqe_data_seg)
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_3sizeof, __Pyx_CYFUNCTION_STATICMETHOD | __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_WqeDataSeg_sizeof, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[94])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1636, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg, __pyx_mstate_global->__pyx_n_u_sizeof, __pyx_t_2) < (0)) __PYX_ERR(0, 1636, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_5 = NULL;
  __Pyx_GetNameInClass(__pyx_t_4, (PyObject*)__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg, __pyx_mstate_global->__pyx_n_u_sizeof); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1636, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_staticmethod, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1636, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg, __pyx_mstate_global->__pyx_n_u_sizeof, __pyx_t_2) < (0)) __PYX_ERR(0, 1636, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1647
 *                print_format.format('addr', (<dv.mlx5_wqe_data_seg *>self.segment).addr)
 * 
 *     def set_data_seg(self, length, lkey, addr):             # <<<<<<<<<<<<<<
 *         dv.mlx5dv_set_data_seg(<dv.mlx5_wqe_data_seg *>self.segment,
 *                                length, lkey, addr)
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_7set_data_seg, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_WqeDataSeg_set_data_seg, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[95])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1647, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_WqeDataSeg, __pyx_mstate_global->__pyx_n_u_set_data_seg, __pyx_t_2) < (0)) __PYX_ERR(0, 1647, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.segment cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_9__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_WqeDataSeg___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[96])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.segment cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.segment cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_10WqeDataSeg_11__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_WqeDataSeg___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[97])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1719
 *         self.close()
 * 
 *     cpdef close(self):             # <<<<<<<<<<<<<<
 *         if self.addr != NULL:
 *             if not self.is_user_addr:
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_7close, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Wqe_close, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[98])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1719, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Wqe, __pyx_mstate_global->__pyx_n_u_close, __pyx_t_2) < (0)) __PYX_ERR(0, 1719, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.addr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_9__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Wqe___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[99])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.addr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.addr cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_3Wqe_11__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Wqe___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[100])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1775
 *         self.close()
 * 
 *     cpdef close(self):             # <<<<<<<<<<<<<<
 *         if self.umem != NULL:
 *             if self.logger:
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_5close, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5UMEM_close, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[101])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1775, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5UMEM, __pyx_mstate_global->__pyx_n_u_close, __pyx_t_2) < (0)) __PYX_ERR(0, 1775, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.addr,self.umem cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_9__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5UMEM___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[102])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.addr,self.umem cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.addr,self.umem cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_8Mlx5UMEM_11__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5UMEM___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[103])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1808
 *         self.cqe = <dv.mlx5_cqe64*><uintptr_t> addr
 * 
 *     def dump(self):             # <<<<<<<<<<<<<<
 *         dump_format = '{:08x} {:08x} {:08x} {:08x}\n'
 *         str = ''
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_3dump, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5Cqe64_dump, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[104])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1808, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64, __pyx_mstate_global->__pyx_n_u_dump, __pyx_t_2) < (0)) __PYX_ERR(0, 1808, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1818
 *         return str
 * 
 *     def is_empty(self):             # <<<<<<<<<<<<<<
 *         for i in range(16):
 *             if be32toh((<uint32_t*>self.cqe)[i]) != 0:
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_5is_empty, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5Cqe64_is_empty, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[105])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1818, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5Cqe64, __pyx_mstate_global->__pyx_n_u_is_empty, __pyx_t_2) < (0)) __PYX_ERR(0, 1818, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.cqe cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_9__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5Cqe64___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[106])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.cqe cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.cqe cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_9Mlx5Cqe64_11__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5Cqe64___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[107])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1892
 *         return self.msi_vector.fd
 * 
 *     cpdef close(self):             # <<<<<<<<<<<<<<
 *         if self.msi_vector != NULL:
 *             rc = dv.mlx5dv_devx_free_msi_vector(self.msi_vector)
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_3close, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5DevxMsiVector_close, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[108])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1892, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxMsiVector, __pyx_mstate_global->__pyx_n_u_close, __pyx_t_2) < (0)) __PYX_ERR(0, 1892, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.msi_vector cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5DevxMsiVector___reduce_cytho, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[109])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.msi_vector cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.msi_vector cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_17Mlx5DevxMsiVector_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5DevxMsiVector___setstate_cyt, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[110])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1946
 *         self.close()
 * 
 *     cpdef close(self):             # <<<<<<<<<<<<<<
 *         if self.eq != NULL:
 *             self.logger.debug('Closing Mlx5DevxEq')
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_5close, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5DevxEq_close, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[111])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1946, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxEq, __pyx_mstate_global->__pyx_n_u_close, __pyx_t_2) < (0)) __PYX_ERR(0, 1946, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.eq cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_7__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5DevxEq___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[112])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.eq cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.eq cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_10Mlx5DevxEq_9__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5DevxEq___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[113])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1972
 *         return print_format.format('fd', hex(self.cmd_comp.fd))
 * 
 *     def get_async_cmd_comp(self, cmd_resp_len=1024):             # <<<<<<<<<<<<<<
 *         # mlx5dv_devx_async_cmd_hdr size is 1uint64_t of wr_id + cmd_resp_len of out_data
 *         size = sizeof(uint64_t) + cmd_resp_len
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_5get_async_cmd_comp, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5DevxCmdComp_get_async_cmd_co, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[114])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1972, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[3]);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp, __pyx_mstate_global->__pyx_n_u_get_async_cmd_comp, __pyx_t_2) < (0)) __PYX_ERR(0, 1972, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1994
 *         self.close()
 * 
 *     cpdef close(self):             # <<<<<<<<<<<<<<
 *         if self.cmd_comp != NULL:
 *             self.logger.debug('Closing Mlx5DevxCmdComp')
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_9close, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5DevxCmdComp_close, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[115])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1994, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7pyverbs_9providers_4mlx5_6mlx5dv_Mlx5DevxCmdComp, __pyx_mstate_global->__pyx_n_u_close, __pyx_t_2) < (0)) __PYX_ERR(0, 1994, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.cmd_comp cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_11__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5DevxCmdComp___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[116])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self.cmd_comp cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self.cmd_comp cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7pyverbs_9providers_4mlx5_6mlx5dv_15Mlx5DevxCmdComp_13__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_Mlx5DevxCmdComp___setstate_cytho, NULL, __pyx_mstate_global->__pyx_n_u_pyverbs_providers_mlx5_mlx5dv, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[117])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
  PyUnstable_Object_EnableDeferredRefcount(__pyx_t_2);
  #endif
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < (0)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1
 * # SPDX-License-Identifier: (GPL-2.0 OR Linux-OpenIB)             # <<<<<<<<<<<<<<
 * # Copyright (c) 2019 Mellanox Technologies, Inc. All rights reserved. See COPYING file
 * 
*/
  __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_test, __pyx_t_2) < (0)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /*--- Wrapped vars code ---*/

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  if (__pyx_m) {
    if (__pyx_mstate->__pyx_d && stringtab_initialized) {
      __Pyx_AddTraceback("init pyverbs.providers.mlx5.mlx5dv", __pyx_clineno, __pyx_lineno, __pyx_filename);
    }
    #if !CYTHON_USE_MODULE_STATE
    Py_CLEAR(__pyx_m);
    #else
    Py_DECREF(__pyx_m);
    if (pystate_addmodule_run) {
      PyObject *tp, *value, *tb;
      PyErr_Fetch(&tp, &value, &tb);
      PyState_RemoveModule(&__pyx_moduledef);
      PyErr_Restore(tp, value, tb);
    }
    #endif
  } else if (!PyErr_Occurred()) {
    PyErr_SetString(PyExc_ImportError, "init pyverbs.providers.mlx5.mlx5dv");
  }
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  #if CYTHON_PEP489_MULTI_PHASE_INIT
  return (__pyx_m != NULL) ? 0 : -1;
  #else
  return __pyx_m;
  #endif
}
/* #### Code section: pystring_table ### */
/* #### Code section: cached_builtins ### */

static int __Pyx_InitCachedBuiltins(__pyx_mstatetype *__pyx_mstate) {
  CYTHON_UNUSED_VAR(__pyx_mstate);
  __pyx_builtin_staticmethod = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_staticmethod); if (!__pyx_builtin_staticmethod) __PYX_ERR(0, 350, __pyx_L1_error)
  __pyx_builtin_super = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_super); if (!__pyx_builtin_super) __PYX_ERR(0, 89, __pyx_L1_error)
  __pyx_builtin_sum = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_sum); if (!__pyx_builtin_sum) __PYX_ERR(0, 1693, __pyx_L1_error)
  __pyx_builtin_map = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_map); if (!__pyx_builtin_map) __PYX_ERR(0, 1693, __pyx_L1_error)

  /* Cached unbound methods */
  __pyx_mstate->__pyx_umethod_PyDict_Type_items.type = (PyObject*)&PyDict_Type;
  __pyx_mstate->__pyx_umethod_PyDict_Type_items.method_name = &__pyx_mstate->__pyx_n_u_items;
  __pyx_mstate->__pyx_umethod_PyDict_Type_pop.type = (PyObject*)&PyDict_Type;
  __pyx_mstate->__pyx_umethod_PyDict_Type_pop.method_name = &__pyx_mstate->__pyx_n_u_pop;
  __pyx_mstate->__pyx_umethod_PyDict_Type_values.type = (PyObject*)&PyDict_Type;
  __pyx_mstate->__pyx_umethod_PyDict_Type_values.method_name = &__pyx_mstate->__pyx_n_u_values;
  __pyx_mstate->__pyx_umethod_PyUnicode_Type__format.type = (PyObject*)(&PyUnicode_Type);
  __pyx_mstate->__pyx_umethod_PyUnicode_Type__format.method_name = &__pyx_mstate->__pyx_n_u_format;
  return 0;
  __pyx_L1_error:;
  return -1;
}
/* #### Code section: cached_constants ### */

static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) {
  __Pyx_RefNannyDeclarations
  CYTHON_UNUSED_VAR(__pyx_mstate);
  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":186
 *             self.out_view = memoryview(out_mailbox[:outlen])
 *             status = hex(self.out_view[0])
 *             syndrome = self.out_view[4:8].hex()             # <<<<<<<<<<<<<<
 *             if status != hex(0):
 *                 raise PyverbsRDMAError('Failed to create DevX object with status'
*/
  __pyx_mstate_global->__pyx_slice[0] = PySlice_New(__pyx_mstate_global->__pyx_int_4, __pyx_mstate_global->__pyx_int_8, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_slice[0])) __PYX_ERR(0, 186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_slice[0]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_slice[0]);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1237
 *         if qp_types == 0:
 *             break
 *     return qpts_str[:-2] + ' ({})'.format(numeric_types)             # <<<<<<<<<<<<<<
 * 
 * 
*/
  __pyx_mstate_global->__pyx_slice[1] = PySlice_New(Py_None, __pyx_mstate_global->__pyx_int_neg_2, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_slice[1])) __PYX_ERR(0, 1237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_slice[1]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_slice[1]);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":319
 *         self.cmd_comps = weakref.WeakSet()
 * 
 *     def query_mlx5_device(self, comp_mask=-1):             # <<<<<<<<<<<<<<
 *         """
 *         Queries the provider for device-specific attributes.
*/
  __pyx_mstate_global->__pyx_tuple[0] = PyTuple_Pack(1, __pyx_mstate_global->__pyx_int_neg_1); if (unlikely(!__pyx_mstate_global->__pyx_tuple[0])) __PYX_ERR(0, 319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[0]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[0]);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":474
 *         return eqn
 * 
 *     def get_data_direct_sysfs_path(self, length=512):             # <<<<<<<<<<<<<<
 *         cdef char *buffer = <char *> calloc(1, length)
 *         if buffer == NULL:
*/
  __pyx_mstate_global->__pyx_tuple[1] = PyTuple_Pack(1, __pyx_mstate_global->__pyx_int_512); if (unlikely(!__pyx_mstate_global->__pyx_tuple[1])) __PYX_ERR(0, 474, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[1]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[1]);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1066
 *             raise PyverbsRDMAError(f'Failed to modify lag of QP #{qp.qp.qp_num}', rc)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     def modify_qp_sched_elem(QP qp, Mlx5dvSchedLeaf req_sched_leaf=None,
 *                              Mlx5dvSchedLeaf resp_sched_leaf=None):
*/
  __pyx_mstate_global->__pyx_tuple[2] = PyTuple_Pack(2, Py_None, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_tuple[2])) __PYX_ERR(0, 1066, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[2]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[2]);

  /* "pyverbs/providers/mlx5/mlx5dv.pyx":1972
 *         return print_format.format('fd', hex(self.cmd_comp.fd))
 * 
 *     def get_async_cmd_comp(self, cmd_resp_len=1024):             # <<<<<<<<<<<<<<
 *         # mlx5dv_devx_async_cmd_hdr size is 1uint64_t of wr_id + cmd_resp_len of out_data
 *         size = sizeof(uint64_t) + cmd_resp_len
*/
  __pyx_mstate_global->__pyx_tuple[3] = PyTuple_Pack(1, __pyx_mstate_global->__pyx_int_1024); if (unlikely(!__pyx_mstate_global->__pyx_tuple[3])) __PYX_ERR(0, 1972, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[3]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[3]);
  #if CYTHON_IMMORTAL_CONSTANTS
  {
    PyObject **table = __pyx_mstate->__pyx_tuple;
    for (Py_ssize_t i=0; i<4; ++i) {
      #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
      #if PY_VERSION_HEX < 0x030E0000
      if (_Py_IsOwnedByCurrentThread(table[i]) && Py_REFCNT(table[i]) == 1)
      #else
      if (PyUnstable_Object_IsUniquelyReferenced(table[i]))
      #endif
      {
        Py_SET_REFCNT(table[i], _Py_IMMORTAL_REFCNT_LOCAL);
      }
      #else
      Py_SET_REFCNT(table[i], _Py_IMMORTAL_INITIAL_REFCNT);
      #endif
    }
  }
  #endif
  #if CYTHON_IMMORTAL_CONSTANTS
  {
    PyObject **table = __pyx_mstate->__pyx_slice;
    for (Py_ssize_t i=0; i<2; ++i) {
      #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
      #if PY_VERSION_HEX < 0x030E0000
      if (_Py_IsOwnedByCurrentThread(table[i]) && Py_REFCNT(table[i]) == 1)
      #else
      if (PyUnstable_Object_IsUniquelyReferenced(table[i]))
      #endif
      {
        Py_SET_REFCNT(table[i], _Py_IMMORTAL_REFCNT_LOCAL);
      }
      #else
      Py_SET_REFCNT(table[i], _Py_IMMORTAL_INITIAL_REFCNT);
      #endif
    }
  }
  #endif
  __Pyx_RefNannyFinishContext();
  return 0;
  __pyx_L1_error:;
  __Pyx_RefNannyFinishContext();
  return -1;
}
/* #### Code section: init_constants ### */

static int __Pyx_InitConstants(__pyx_mstatetype *__pyx_mstate) {
  CYTHON_UNUSED_VAR(__pyx_mstate);
  {
    const struct { const unsigned int length: 8; } index[] = {{1},{28},{14},{16},{14},{15},{22},{22},{20},{15},{22},{22},{8},{6},{17},{23},{18},{19},{16},{9},{36},{12},{25},{25},{67},{10},{28},{30},{26},{28},{17},{14},{16},{11},{14},{7},{9},{27},{22},{10},{15},{25},{35},{22},{22},{32},{25},{38},{39},{28},{25},{31},{28},{41},{63},{74},{32},{45},{38},{28},{21},{34},{31},{29},{34},{30},{28},{43},{24},{28},{21},{40},{28},{36},{27},{19},{20},{29},{28},{47},{26},{27},{17},{34},{34},{23},{18},{20},{28},{24},{52},{18},{9},{24},{59},{57},{4},{179},{13},{24},{97},{95},{104},{10},{10},{15},{14},{10},{17},{19},{13},{14},{11},{18},{17},{28},{24},{43},{34},{26},{15},{20},{22},{24},{19},{12},{19},{8},{8},{1},{0},{2},{5},{2},{2},{1},{8},{18},{9},{9},{18},{7},{6},{173},{168},{190},{186},{191},{190},{192},{191},{180},{188},{197},{190},{192},{188},{12},{2},{9},{30},{27},{7},{34},{33},{34},{33},{8},{11},{7},{6},{33},{8},{14},{61},{71},{61},{65},{76},{71},{60},{59},{67},{60},{59},{70},{64},{60},{60},{18},{17},{15},{7},{21},{9},{17},{4},{2},{3},{3},{5},{3},{6},{6},{14},{18},{10},{10},{10},{16},{16},{19},{15},{9},{10},{16},{15},{26},{25},{23},{20},{21},{15},{17},{11},{11},{17},{16},{16},{13},{13},{12},{14},{4},{30},{34},{33},{27},{33},{32},{45},{33},{37},{34},{34},{31},{31},{30},{37},{34},{33},{32},{37},{31},{23},{35},{36},{26},{33},{26},{33},{34},{39},{33},{30},{33},{34},{31},{17},{17},{37},{39},{23},{41},{31},{43},{43},{32},{24},{32},{32},{25},{25},{27},{36},{40},{39},{44},{42},{45},{55},{55},{17},{22},{21},{6},{24},{26},{11},{29},{31},{17},{24},{25},{34},{28},{26},{38},{29},{29},{27},{30},{32},{9},{27},{29},{14},{18},{21},{39},{41},{16},{34},{36},{13},{17},{35},{37},{31},{33},{16},{34},{36},{14},{32},{34},{16},{34},{36},{15},{33},{35},{21},{34},{10},{28},{30},{16},{17},{35},{37},{23},{11},{29},{31},{17},{18},{17},{23},{12},{30},{32},{18},{17},{18},{18},{6},{24},{26},{12},{6},{24},{26},{21},{29},{19},{35},{22},{27},{23},{21},{16},{24},{24},{17},{17},{21},{28},{31},{25},{37},{30},{28},{7},{25},{27},{13},{8},{26},{28},{14},{7},{25},{27},{13},{12},{12},{16},{16},{16},{20},{2},{3},{3},{2},{2},{5},{7},{7},{3},{10},{28},{30},{23},{17},{10},{28},{30},{23},{17},{6},{24},{26},{22},{12},{13},{21},{23},{9},{6},{12},{15},{3},{4},{7},{2},{9},{18},{4},{14},{4},{10},{6},{10},{8},{10},{22},{9},{17},{18},{10},{5},{8},{8},{12},{9},{7},{24},{20},{15},{3},{13},{19},{15},{8},{12},{11},{14},{12},{13},{3},{4},{2},{12},{11},{7},{14},{11},{16},{14},{6},{5},{9},{9},{3},{16},{22},{16},{14},{8},{2},{9},{2},{3},{4},{11},{7},{12},{3},{16},{2},{3},{5},{17},{8},{6},{8},{9},{18},{14},{26},{12},{3},{1},{16},{11},{3},{14},{3},{8},{10},{8},{26},{9},{13},{8},{5},{4},{1},{8},{6},{4},{16},{17},{15},{7},{10},{8},{3},{12},{4},{5},{26},{19},{21},{14},{16},{7},{18},{21},{19},{7},{6},{34},{33},{6},{6},{20},{7},{34},{33},{4},{11},{24},{20},{25},{24},{26},{25},{14},{22},{31},{24},{26},{22},{6},{28},{15},{20},{16},{10},{18},{16},{4},{8},{7},{15},{13},{11},{8},{12},{13},{17},{2},{6},{6},{5},{3},{8},{11},{6},{2},{11},{2},{3},{8},{14},{10},{12},{24},{17},{33},{29},{21},{11},{14},{2},{19},{22},{6},{8},{3},{6},{4},{8},{11},{12},{5},{11},{14},{17},{17},{15},{2},{4},{10},{17},{13},{13},{11},{12},{14},{6},{3},{18},{20},{15},{7},{8},{4},{14},{21},{12},{12},{12},{10},{12},{19},{8},{5},{9},{4},{6},{8},{8},{5},{12},{7},{3},{9},{16},{3},{5},{16},{14},{15},{19},{10},{4},{1},{8},{9},{3},{20},{22},{9},{9},{7},{5},{6},{6},{7},{4},{8},{7},{3},{11},{6},{7},{5},{9},{17},{17},{10},{10},{14},{21},{24},{18},{30},{23},{21},{21},{5},{1},{37},{66},{102},{31},{43},{81},{51},{150},{36},{82},{55},{44},{44},{44},{123},{48},{53},{29},{32},{91},{85},{50},{29},{68},{29},{29},{91},{95},{38},{54},{29},{47},{61},{80},{109},{109},{109},{32},{39},{25},{49},{44},{53},{9},{21},{92},{96},{45},{78},{31},{47},{69},{21},{31},{112},{13},{25},{7},{27},{48},{120},{25},{30},{9},{31},{119},{44},{25},{52},{54},{31}};
    #if (CYTHON_COMPRESS_STRINGS) == 3 && __PYX_LIMITED_VERSION_HEX >= 0x030e0000 /* compression: zstd (6524 bytes) */
const char* const cstring = "(\265/\375`\306N\225\313\000\312\314\210*N\340\252\212\0360\314\3434\306\363<\326b<OD\030\314\346y\236\347y\254\305#K_\373FR\262KJ\265\211\337\222\375\224\204\231\241\327r\245|k\271C\301\211\030Y\221\344\373\272\354mQ\004A\021\254!\307m\033\007\020\034\t\202\330\006\356\257]\002z\002\220\002\331\365\275\344]U\356<\346`J\217\354\263\177\"\273\304\344?\263\004zw\016\362\260\\\355\273=\307\347\013\003nq\344a\n\220s\373s\320g\023\347\257x\2068\333\207Y%\004\2179\304\347r\217\367$Y\367\344\271\034?\362\323\344\267\3679\004M~\367{2\342\204\003\267qw\0049+\334&\036n\016\363Y\331\375\371\223\241=\206\204\334\017\236z\363\023\007w\351\357>\303\234\272dHo\025\212\327'\300\355G\n.\010\363Q\343.\301\256\244\363\356\356*\203Vh\030\2077o\005\373\250\340\356\3730\374yB\036<\3120\007\346\347\362\372\223g\201\273s}\363\317+`\326\034\377\354\371\336 O\351P\337\247\031s\377\352D\336\r\366\223\364\227u\342\232\364`\301n\231E\221\374'\t\376q\247\266\326:_\220v\377Fm\230\177\367\356\247|Y\344\275[\373;r\362\227\254\321v\301\221\345\263\337\3774qn\224\301i\3212V\304d\240\254\266\376?\346\341\200p\371\200D\374\371\363\367\027\346s\325Ea\"9]i\373\033n\224\367}\237N\247)\357\260\213 \253\223\342\026;\371\301\235\302\334\213w\314-\035F\342\364m\272z\247\372\366*\333\250t\377./\377\341)\202c\206\0317\217\332\375\252\244\344\221\245}\334\210wm\207\246\354y\310\363\351\3521\213\341\270Q\327\345\336]\262\376\355\367\363\221s\232\350f\032k\247\270 \230\357\227i\376^\275;\331\373\276\367\004G\022\304\3429b\224\370\275\353\3114\377s\337%I~\354\202\\\334\240\3172\335\020\235\373;Y\226\247\277\237\034\257\337\244\276\336\324w\013\213\273\254\360\217\273\3673\3434\322\326\255\334\276S\344\365>\034\350n\270\272\223\252\033\366\237yT\016O\273g%\326\"xY\271\367|\303|\177\310\250\303\223\314R\370,^\320\006\"\2410\211V;en\231\026\263Ujk V!\350\242F\356\367\317\272</y\032\371M\001\222a\326Im\025\334\377,v\362\224\201\342\313\014\336\221\344\336\357^\212$x\267Qv\311\177\373\376?\203\236\224\002\314\246\222$""\303{\n\267\277\031\350\252\3100\304L\356\315x\000e\205\007\023\224\230\214\273b5\302\003J\014'\334\203p'\271Lc\375R\334\330\363R<\365I\210mn\215\307\322\304\030c\3747\312\334X\213 \306+?\342R\334\"\377\370$\267'C\220\363\267\307\030\304\033<\365\356\030sF\231\327y$\021\306\245\254e\013m!\354\343\322\202\265\315\343D8\323J\237\347\371`\333\247[\361\250\260|\236\022v\001\245p\"\225\317\326y\276\220\347\263q\036\016s\332\366I\301<\217\206\273-\36307\3726\356%\244y>XK\310\263\"\372\230\330Z\272\215\305\303X\\\360\207\201:\221\nf\371VB\333\007\277p\270+}\266P\210\364q\245\225\220G\363l\035\351\303B+\036\257+a\221H\204A\244\320\227\251\244\340\320\213&\302\036H\303D\037\025\025\021\026}\334K\027\022y\274\255\3238\022\026\251\224\310D\237\014\227\3600\220\367\341\017\246\211@\370\363h[\227yX\n\336J\242O\211\003am\313B\030Kh\353\264p\240\r\264\221>)\237\313\366\205D\037I\344y\034\036\2052\374\322}\333\347\001y>\270\033}\235\310e\323B\036\374\262\225 }+ \317\207\273P\207C\236\314\003\022}\235\013\006zQ\361|\242\020\316B/\036\206\265\221\207C[\350\3636m\373\260\317\303\035\211\3032\314\362}\037\317\333\262\014\303\241\315k\311\266\016k\244\354\333Jd\030\207KX\327m-\236N\303\0377\302-)\236\035\3521\263\354\324\036\367\312\326\251d\232\337F\331j\353\221\303\370\014#\236>\005x]:\315G\362\356_\304\247\362\351W\033\227\224f\271M\334\324\"\370\277\270\305\263\244\344\356\007w\270\257\3360\240\277\250\335;t\270\232\337\215\312\345\337~\344\246\352D\356\360\256\262\250=\007Q\036\334\350c\254\362\276$1\2501\306~\367mblr|\337\232\2470Ni\316\252\223\367\262`B\276*9[\337\323\326%x\363yY&\262\347{\222/\230\223b\225\"\307\2704q\312\304\357\2705\353\363\220\233\300\225\007=\262q\004\031(\036wd\305-\031I\201\235\013\212\237\276\347a\007*\351\021E\216\244\221\025\240\216\031U\344\230b$\205{\034\317o\314\374z\016\363\355\261\344\345\335\375\374yDq?\222u\"\267\324\271L\031a\322\331b\016URF\235\366\274\036\267\367\307-\242\266\347u&\303S)\362> \222\0273\242\017\255\003\326C\001\355\004\214\205""\211\227\366E\202\326k\231\264:\255\021\354^S\326\221k\363\320bP;\240\024\\)\234V\203\364\002J\341\001\000\0226 \001\301K\313^\030\213\r5\204\r\261\222hp-\n\327\207k\303\205a\210`7l\306\252\251\035\325C\243B\320\242c\323Ba?p\2744\255\021\034\034/l-\341x\231\254\010\216\364CQR\016(\307\003\000&l\320Y7\\\264\032\025\004cOV\016\032\257\rk\262r4@4^#\025SK)\nMA9PP\346\203\003\024\004\206v\244]\352\021\002\345\320x\2312\235\214I\n\002m\221\021@\006\343\342\265\221\311\270xuP\216\214\007\257\010\032/\254\365@\253\201\226\003\251\206t#%!\003\341\342\265\261\216h\264\032\027/\r\013Sf$\203\311h\250\252\264B\252I=\324\000\214\327\306\214\307\243\335\250\031(\264\033\250\006\235\240\361\352hf0\\(\330\017v\203\355\024\320\026\200\361\312\351(\335\200R\320x\215P\017T\204\014\004\214\227\271fkgmQ=\251\005\214\227\206\365p\321\342[B\3421\000#\"$\"\026\267\302]\325U\375\227}\237vW\365\254Jy\315\261\307}\227\2477;\326\273\373\022\377\360\314\247\255\375.\375\356\373T\356>\376\375Iq\265\261\356a>\377\037K\323\227&N\255X%\306e\271\342\274T\341Q\245.Krk\022,\311QE\342\222,\311\024\270;&I\322\177\336\367F\375\355\275/\277\017\361\211\361\310W\030<M\325\211\304\035\265\373\311\204?\027I\3351\366\345\210\362)\266^\205\336c\317Idm\0223\t\037>\300\301xE\232\304\234\022E\316W\033\006\367\215B\221\037\014\216\347\t\343\215\261\212\364\372\244O\376\343TJ\177\257\275\326'\234E-~\220k\214S;\374~k\324i\332_\223\240\006\365\352\203\250qo\023\034w\210\301\r\346\376\261\270?\307\370\217'\371G\026\366\376s\223\337#\357$\310!\371\210\342a\206\311\254\222\004u\376Y;\221 j{\333,\375\355\245\310\273\324w\213F\312H\336\327u_\227u\247\335\375\325\016\341\017rm\305\3420\356\333\223\310\021\003i\035\331\373\306\221\374d\302(\356\377I\262rh\252\260*w\317C\3341\356*}b\214\312\241\346\031\006\304\2704a2\366]\265Q\334\210\343xW\225Y\034O\335\265\306J\221\310i\t\022\"Xp\242=QA[\301K\013\232\341\230\031\240u\000\nu\303z\225\006\004\001H\332\214\234\2426\220\216@\261\022\324\001\366\257\033-M\013\2045\301\270-\362""\312Q?4^\352E7`\255\025\253\206\225dD\204\244\365\252H\210*\"\245\220\202#\032\330\250\001\250^\212\245\027)\002)_n\221\340\320FPo\004\255\323vP3D8\301\242V\006N\310D\270\270p)\265\245\214\302:\030\261\021<6\027.\217\326\201\272\201\320\"\304\245[\023`\254 j\014\272\332\244\"43&W\n\007\220\216k\267>Z1k\267\242P\251\003\350G\352\263\214\004\264\202\253D\353\242\205b\205QA0|.\024\014\030\332\214|A{A\327\206\256\017\256\220\226\t\325C\345\264h\231\254\211\325cc\346\201\007\033\252/\351\205\nZ`.\215U`\005M6kY9\030\320V\030\265\260\026\013K\362\361\302\\\243\207\331\212 #C\273\241n\262\326E\001\\GkJ\r\361(\331\3601\303\241\365X7`(\213\000)\253\303\256`l\254\010\250\013\0340\201\203\375Vl=!\244&T\225Q\003\320\215\205\327\2651\256\314\225\201\335\326\014+\210\006\315\325qe!m\246j\200\360y\255\247Y\275\017\rW\nfU\251'\352H\002\035\031\"\023\254\027\253\251\206t\230\256\225\020\257e\201\r\261~u\2014\004\344\245q\231\032,\310H\325\300\216X\020\233v\323\"\273T\036\270F\264V\330\223\222Wv\215\\\036\256\220\035\340\266\033i\205\215\231\230\014\255NK\001V\303\202X)\254\232U\244c\003\r\tX\312\221\252\030\241\035\233UE=7\320\r\014\013\274:3\337\305\241\245\331\222U\253\003\250\230\211\221v \220~\364\244EI\252@\307\204\324ff\002\r\253}V\304m\265\264\223nR\0056\324\020\351\n\3321\341w\324\237\346\364\202\251\221\220uR\010 s=I\241\004dt\200\215\252\031\220\360\372\2334\024\322Vh+Lx]\260\346\332\201\243\315\351\207\024\203\231\216\031\315\014KI\313\261\216d\230he\260^P7\014\2744.\255\205\241\315R\013\031/S51\302B\270z\213\263\037TV\r\365\242\031\375\200v\260\024\250\032>$\254\"\037/\323u\342\002i?\250\037\020\262k\202\0305\304\302\313l\235\\h?\244\026 h\\\022\230l\211\225c\355j\010\310\253\243\262\244\325d\355\254\016V\020\352FM\000C\317uc\355\220\006\320I\035\244,\231\223<\243A+#yu\332\215\327\006\022\222\005\330\316\210gE\220\230\264\t\254#\035m\007\213<\023\302Z$*\324\214\302fFD\205f\006Ek\324\202`\335j\312\204\215\0065\231t^\244\257\375\270\326\014\206\311\250C(\262&\006\235C4##I""\222\014\007\223@\030<ppF\227L\307\325|\243\003\243l\234\245@\nf\014C\214 \203\215\210L \"\"\242 )Qa\014\"\310\261\315\243`V[\023\215~\003\274\310\344v\020c\227\240\327\323\311\320\260\356Y\267\240ge\245\305\027\221\\\207\310\227\201\260\277\371\222s\311w\250\261\215*\310\321\304\022\003\2773\250(\366\276j\023\251\227\360\316:X\260\260k\332\337#=\234\331=\266\211\014Wfd\327\354\346\362V\036\337P\3259\243\246\225\340N\025\262GD_\006e\014\227&9\23281\016R\255\277t\342\266\213\364\331\001\345\200-;\354A\370\0276\236\004\346\202\032\020,d\214!@\3547\314$\344q\233XY\227\t\030$\351\263\005\350+\321.\334\0039\207\337Xc\033yd\027\340?-\"\342\245 \031A\277\263x(\003H_\357\026:\215*e*(\2213xO\221\355\2205RE{\007\232\365\203l\301\245\004\251\370F\274|\226%NK\353}:\252c\000\315C\302>\006\256\240d\326y\031\026Q\324\361\325!n\202\361K`\031m\202(\365W\342\316e\230%\007\274\002\200j\241\027\032\217\246\323\305\364&3R0a\304i\344S6\237$\275\362\214\340\357\353eO\363\371+\343\266\n`\313~\352P/\n|bn\211^\272E\014\254\373\231\205\265:U_\330r\026\244IM\244\230En\204\244t\255\210w\r>F\224\343\013Z\"D\"\006=P\t\030\325'\316Q\265 K\371\216\000\312B\316E/\305\250|\353\315~_\324\246Al\n\362\177\027\337\3370\367=\367\210a\027G\354Ukp~H\323\366{\326\235\273\020\373\346\264Q\376\227\270p\255\255\360=\013\375y\243p\244/\371\327\237\222'Z\365y\002e\232\206\016\037\247\216\\\026\302\301&?k\032\2176\340\236\r\2638\201\330\340S\331f\337\264\246\212\275\347\005\261y\200!\0315\327\030\375c\232V\241\205\013S%,;<\277\2208\036}\264\274\310G\202fb\263\"Z\205~\342\244E_^\nSS\310dR'\322\223\220!\316v\350\367\276\301^nD\247*\031x!h\326\3503\235\030+\342\teM\240\366\276\354\273\371A\3260\002JU\233;\021\343\002Wm\240?\000:\240\373\245\017ZK\377\n?\016d\003\030P\030S8\210f\2350\304\274\310\n\006kS\270[\2361F\336U\312\203<\274\214\234p\200{\344K04\3469:}+\213l\377\336\261\002 /\315\177\350\304\325\307?DO\370H\312\366\022\372\321\010Es\236=\036F\331\270J\001\304\020\246)\205\017m\325\007\350q\231\014\202\255k\205Y""->~\315\272a\264\332g\342V\323\361L\274:@Sm\207\243\230MU/\237\203\3714\220J\203<\322L6\030\266\355\323\267w\251\360\244\027\027\001o\030_\030Cx\331\010H\2615#l\212L\254\004:\355\226V\002\213\353j\266\313\272\273<\341`\250\251\035\027\323\217\031\267\360e\365\360\376\036\314q!\274\234_={A\307v\3170M\233\353\210\036\350\360\254\302\370DE\374\262\224\275P.97\031\314\t3\357\034$\243\215>(\013\254\271V\261\302\367\007\231\354\321\177\253x\326`\022\016\322\302\002\3219\342\223ylg\316\220\230p\023\037.\007X\234\014F\221\333\242BU\307/\236\327\002#\031\274\027\006x\233\313\271\337T\333\251\374\202t\035\207M\023>\316,x\263\321e\2100R\340\311\214P\270\355\2531\312\371I<z\372W=n.\224\307\275\007\277\227\341\330\023o\276\361\324O\361\366\347+~\346\250\336\347\355\320\005\003<\272\001\262q\210\214\367TR\034A?>\352PC\360<<\311\326\005\336\017\032dn\326\237\0162\350\330\033\232:\265&\276R$Q\356p!\343\006\347\256\250\235dg7p\211\264\301n\364\310!x\235\223\030;u\005\357E\266\367\311\0131\225)\025q\331=0e\3213\242\023\223P\010H\335\266L\351/\016\206\327V\223\032\366\025IV\246\2613\302\332L\252A4LQ\367\037\321YP\323\0233sn\231\300J\013\021\266\346>\266\375\351\004k\001<\270\\~\304\321t\376>Z1\2522\331\007\263&N\362I'\346\333\241\222y@\234Y\351\222\211\\v\203\352c\263\001\342\022\020\202A\026\202\002\034\002\241\240\"\246\3403Z\317X9yS\024]\206\2319HhR7\305\222\375\0013R\371><\006w\313\272\205\203%\213f\342\233t\277\215\016\"\230\250\357\213\270\"\020\241,.[\320j\r\233x\346a\337\226[ Od\304\254|;`T\274\305\261\377\006\300\206wj\203,\221\315i\013\321\275f9\254\364\004[\237T\3026\203e\203fk\330/\001.\275'gP0\023\314\007\022r{\224\237\211R\224N\252u\234\023$\251\223\370\325\033\272\277n*g;\t\264\322GCON\213\246\027\253K\213\265\2057N\261\007\241\320\304\344[\324\noA\230\210\305\326\224\240\314\035\344W\330x\250\310\345\234\322\242@\237\036~\014v\270\234\276\213\200yE[\2365y\254\023\345\372c\227(\220\006\245\217\330\245\200Ks\206H4\027;\207\364\227\211\312\362\020\320[\025\207\177De\202""\017d\367\026\022\333\241$\303\373\032\230\314\037\332\231J\337\244U^\373V^\350\206\341A\304\237\261?!\030\314\002N\365k\231\360y\354\340\002\t\366\206\224X8\346?\267Tm\347\220\340\366\2009A\317\027\220\336\3612w\277\241`Lh\236\300\032\266\3438\257\241\3661W\211\246\347\326\213+ \305+~T\345\\\243\270\320\214\030\021jT\207\243\000`\361\010\226~|\212\322k\337\361\0105\231\204$\345\355j:\013\241\256\310\375\"\366\235\342\354#\327r\372\277\275\001-Q\353\364R\014\232\302\241\202\313p\241\210|\220\200\264\304\300\026\233x\033\270\260\226\007\210\242q\372\031\rL\202\271';g\275\314\020\263\024\371S\313wP\326<\303O\026iw\"H\275^\236\\\321\251TF%\312\225\314c\242)\014\317\022\001\253\353+\312Dh\223g\245\020\230{\034yD\261\347e\311IO&\021\211\314\325O\021\222ES\333\257\t\271s#Sq\005\304\0223PW\307\330m\257OI{\264k*\352\2660\263!\376\000s\312_&\301\336s\205M8\tbX\306\263\214\363b\210d\335\004J\331\362\331\241NK\006\275-\235)\354j3\227\303\224\203\357\023;\006l\301I%\266\372U\031\205\355{\366\302K\352\345\227Yo\251\004\364XO\201\337\r\030\003z&\256\202\213\251v\300\016\355\037DU\351\033^\003:u\201H\255\033YS-\302}\215o\265@\232t\357e\350YJU\340\t\273\376\014\302ai\323\222\273\312\350\201\020;C\002\246r\350\213\013\023\020\035\337\356\207\005\330oXq\303\027e\275\371[\334\247\362\253\035\372\315h\342\275,C\342%G\300'Z\274X\217\305\030\342\361k\336CX\001\302E\250\001a\221?\343\014\237|k\205\251\205t\362\252F\270=\025\027\375B~E\370\206f\212pXW\324N\365\316C\201\302\257\253&VXZXrF\3644X\3377\367(\372\322\354V\202\367\2613\230\020\016\3663S$\261j\346bF/\276\3364\177\216\317\025W\262\347\305\2455\241\006if3{\323p&|\025W\210q\337\260\367^=\347\177\001\307_\304\r\337\267\255\202l\217A\360\034\034Q\203\353\313\255\221V2\222\n\2378\355\350\205)\027l\\\236\311\227*\243X\r\372\227\206a\221z\321t\337\314\213I\241'\200zR\337sAX\355l\026M\313\276iv\224f\311pfEZs\257\200\345\313\363\t\006\017\264\344\335\226\203\007Ig\02137\237\006$\326\310q\3139\262p\335$y\354\253\247\310\264\325\257+\340\360""\270i\370N\255\016\300\025kT\1779\320P\225\262\377\000\340\177\232A\347\217XL\3052\332h\014\211Ui!\354\256\261\263*\025\314\223k\250H\203j\210\222\224\013\037\000e\224\003\342\237\216\033\334Fu\331\007\001\360\364\222\312?\316\354\341\210\326c\263\002\"\2657|S\227\311N`\035\2025\370\024\336\006!\005\340\226\217\005\337_\022%\036\360\330OB\002\223$\315\305\023<J\317\322\226\205\232\025\365\004F5\231k\021<\240\367U;\234\250\017\341\255b\273\000\024T\361\230Jal\372\023#8~uH\230\034;\002(n\345\265\346\347\202\027\274\250\371\244\304\263\r*\373)\232;\037!\tMI\205|.T\321\r\342\r\204\001\357\013\010\365\003\0019\322\245\r\270T\365\024\310\365\372\317\024\306\177\356 \263&7;V(K&\346\037\275\304d\360\003\\3g\214\3506\254\215\316\261\237\274\362Fc\333\355X\354Zk\256\262\222\030Wp\207\345\006yw\002\"J&\274\350\220H{XDX\231\205\220\026\005C\232'J5\207\330g\001\266\354+S{\261#\253\026\340Y\246\021\343\036?\272\0207\024\234K\367>RE\3421\241\234\323\022\003\327\203\364\332\364[F5\241\20063f:DjR\314&I\201\363qSsM\266\241~i\235R\021\310\353\001\246\324\017\2455\001\227\000\206\330\360h=\021Gv\006AX\300\316\000}\243W\315\217\032)W\355\007h/$\364iOn!r\351\021\014\232mT\034!\3440\264\002\220\255r\010Il\222\206)\231\266M\355\215\274h\036\370\250\t\004\357Ec\310\212L\023G$\270\037\\\3103@\004\362\237\326~X\001\306\376\210\030RzX\222\315\257\0330\212@[)\346\034\347N{h\277\007\033\215#\337\307\0218\342\2101\366\020\215\301?V\213\226\303A\177\325\037w\234v\304\266$\275\232\371:\"\270\212c\270o\341\300\016\217\334\274\000*:\026X\343\244\002p\010C\273\031'\251\230Y\235^\241k}\005%F\371\337\302\303l-~(\372i\010\203\003\220L\222}\363h*\007M\344\270[M\207\354\032\220\305\213,3\344\033\361j\306\330H\001+\217\r8\264\206\n>\331k\265\346\nVTT\014\324\007\n\365\003\020\201\377Q8\017\335\036\360\362\004\245\223\223w\330\005\371q\270\375\373\r\212\r\340\350\252V\256?\352\006\354\002\314\310ab\305\273?\030\272>Y\306D\251\201'\340d\257\371\376@\227\\\021\253\232\007\366\246c\224\263\236\017\217c\373\230""\014\257\375\323\242<\272\213\366\306WE!j\216\273\251E'.y\322!k\340\014\013\316\252a\351=*<\037bs9\2614\341B\230\033\020)\320\001\026\220.\006#7\253\347\"\356\017\013/\214\306U\304\323\332\232`\330?M\212Zf\2336\312\322\236\344@#Gi\014~\021S\232K\241\337u\333\244CT\246\303~gE\352\\\035\357\252\014I\223\023\227E\373A\301\346V\271b\335\017\253nS\213\024\032\225\260\272:\003\3610\241\215\244\032\326\312\321\270\007za\204\351p\027Oh\232\204F\306\345UO=}C\004A\332\220\214\220z\200\027X\337H}e\301\324\364\357\320\254\0260\315>lEU\336{\010\241#n]\363@Y\244ps\363\217\241*\253\314EN\026\033;\272\315\254S\2436\2103\274\355L\375)\270&$j\365\255f\341\022\222\243\316\252\353P\222\337\324\337\265\215\300\220\305S\361\tG\363\\\241d6\375\356\n\364!\306hWoM\345\366\311\371\036\004\343SM\323t\256\376\2410\006\246\322\006X\210\276\230\261\217d\222p\255\025\325\367\003\254\220|\371\346\361\220\037R^\324p\344\216h\017Ae~2\0302\2451uyKPXs\227\253)\206VY\006'\352\3577\211\375\273e\321\013\270\216l\020\302\266\035\255\373\034f\317*^Q./#0l\224~xL<\307\n\t\272\246\277\300C\004\021\256K \265p\363\306\232?\"s\255Z\334\005\275\257\370\013\230,\211\t\274{'\300\231#U\371$\335(5_L\244\204t\351%HN\222\347\006+\237\014<\262c\226\004\231\353MT\355j\341\002\037\230\216w\201\213\313U\201`9\246\252\2257?\376\306\273\207\3054\330\r\305\027\274E(\263\035\200x\006\343\264\"\217\240\265\310>C\020\345\350\354Y^\240\264\326$\035\340*\271]A\345\213\352\332\371\256\310\211T1X\201\023\247\311\207\343\231=(D\215E\007N\374\377\251\031\371\204U\253W\177\322\222\035\255\327h/^\217\343\351\027\307-\354Ll\321\220j]3\342\327\n\341\275\266n(\266ucI\005\215Y\304\353\377gr\326\314\202\225\327W\200\276\377\255&\217\336\350\342\233\222ee\311z\255lj\306\202\307+\270\277\367&\264\006Ne\322\223\242\274#e|\346_\355w\t\272iV\017\340\203\355\r\350\330\020\240\257\240E7\001\242\244\227f+\270\227\357)\224\212\325#\032\366-\356\026,\366\260A\343\202\2673.\032D\014\020!?\034\313\276KP\340\236p\r\247}\225\221v\025#\231P\320\032\031$""\232\312\366)\336p\311a\331N\275\001D\224\345\311\237a&\301\314\025\210`M0:Rzt^\3312\303\240]\025Od\312\021\335\324C\021\013\004n\315%\274\350-\345\311zl\301\327\373\226xA\234\260\n\371\324\333FF|\037~\3035\0021\315\036\301\022\301RT\230\367\313\331\325\234q\353\200\354\020\2442\340)\013\312]*P\027J\000\303Z\315c\243\227\255lD/\362\246\246\334\371!\013M\3364\001o\242\254j\252\362$\305EF\234B\323i\331\301\236\277\201\361\312.V\222C@z\252\017#\257lW9a\363\003\356\336\366N\300\336xY\252\302\367\212C\205\313 \342t\266C\023\002\027\221\006q\347\304\321\323\0258\016\277T:\225$\005\231\314\001\361\022h\211t\271D'\357\261\240'\345\332A\031\251\373nV\304\230k\370\3022en\211\312\235\222\205\203\037\225wR`\354)\212\322\255";
    PyObject *data = __Pyx_DecompressString(cstring, 6524, 3);
    if (unlikely(!data)) __PYX_ERR(0, 1, __pyx_L1_error)
    const char* const bytes = __Pyx_PyBytes_AsString(data);
    #if !CYTHON_ASSUME_SAFE_MACROS
    if (likely(bytes)); else { Py_DECREF(data); __PYX_ERR(0, 1, __pyx_L1_error) }
    #endif
    #elif (CYTHON_COMPRESS_STRINGS) == 2 /* compression: bz2 (6804 bytes) */
const char* const cstring = "BZh91AY&SY`C\224\301\000\005Z\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\300@@@@@@@@@@@@\000@\000`\035\275\335\252\371\037N\335\325\267\337x\313\333\316\356}\251\352\365^>\267\267\257^y\007\273\235Y{\330\315\221R\361\365\353v\267\203#e\2159\255\014\272n\321\335\262\256\333*\353\236\261\357e\326Q\346\336\331\253f\273{\356\330\000\n\300\302P\220 \231O%6\3213MOM4\304\300\214\232MOLLQ\342\247\260S\325\036\323F\243iOS\311\350S\321\246\232\233SOI\265\036\243\330Jz@H\240\230\"dL\246\247\252m\246\224\360\211\246\203G\242i\220\r\031\000\0004\000d4\0004\000\006\2154h\tM\002$\204\020\006@\r44\365\014F\200h\3654\320h\000\000h\000\000\320\000\000\031\000I\251$\322z&\215L\217SS\0325\r\003jhh\323F\200\000\0004h\320\r\000\006\201\240\000\006\232h\002)\023I\210\310L\206\215452iO\322\233\031SA\240\3653S\322=M\244\014\200\001\240\320\320\0006\240h\304\000\004\211\002\002d&\"z%?\023CT\361S\315I\342e\036S\3054h\000h\000\320\000\000\000\r\000\000\031\365\2653\356n*.\253Mh\274\305M\345\327b\276\302\372\334!\017\337\241\317\347HX\237\317>NO(\301G&\2231\030W\210\202\307\266D\247\314\314^p\310\305\230v\305$\317T\022\365T\346H\265}R}\027/JE\027\001\007\375h\033\004\332X\005\345\245\3712b\233\262\022\267\344\377\211p\177\214\361)\356R\204\244\250\206\013_\266\251\216\003\026\022\n4\003c\003Do\211\242\240#V\232H\021`i\t\025H\210(\n\267B_\220\334a\003\203z!\244\372\3500\004\302\312gu`\005\020\n\320D\006\304\250\2253i\023\020M\245\240,\003\211\263JD$Mf\032\034\016\001u\t\316m\221e\024\260I\r\2009\330u\"\225&\363\r\020\030\230\210\310\302\373\022@iD\330\322)\254\273\361\226f\344^\346zL2\226\213\001\233y\213\031\326\006y\343\007\256\264\024\326\010\245\034\257P4\352\301\276\006Z\222#\002z\325d\243\036+\244\304\245\330\306\226\215\rg\221\222=\224}\337\243\351~\257Q%~\347\236\211d/\"\210\204OD\027\333\027\353\024\301?{\355~\342\302\nzD\036\321\374}\231\377\223\333\315\2045e\314\306\223!\373e\213L\264\217\211\347\356\327\324\241\257\3148\236\233\357P-\225\177j\3516\346Im""\017\354>=\361\370\361\313\226\233\215\271\3628\272\242\033\363\265u\235N\2159\304\245\240\223\022\261\275%{\211~\3038eL\203*l\325\336\256\327<\222\332\3613\337\024!\236\3329i\226g\331v\257\347\255\271\327e\313q\236\315\317'go5\005\266\371\333\37677\337\315f\276[U\343\027t\013\t\225\356U!p\223bv\374\372HI\337\246\033\271\tc\337\232\362U%a)q\303\267\034\222V(\353\254\340K\224U\344%a\3178\tPJ?\351v\371\377\206vZa\313R\301\230h\033\307\314\266\212\353F3\304\024\213\006\352W_\371\322\356\326\222\335X\206<$H\2230\340.\271\3034\226|\272[\032\305-\304 \272[\342O?\337\314c\303\022\376F^\240\371\273>\032\276\273\352\323Tc\362H]\301n\261|\205z\334\325v\354\307\312^\356\360\005\2318g\021\331\342\270\237q\354\261\256\263\251\336h5\261\026'h\244\222PZ)2?\256\240%\251f\361\2234\216\"Jb\024\201&\021\314\016\332c\\\t=\256\352\351\035\265\017\237=;Z\252\246\303\032\321\2418\3743\211\220M\3068\315m@\036\025\025\255o\210\213\0355I4\332\347\212\300m\352S\2373Hbh\351\362\367\255\2171\371\177k\\\365\314\207 \267+|>z\357\013q\265\213YW\317\306B\340P2\371\251S\356y\333[_'\030A\333\356t.\256\205\2626\373\246\355\210\371\333s\363\352\263~\304\364<\025(F\007A|t\026\241\340[\233\n\013\263.^\207\034\314\316\317Q=\203\t\215\030\211\t\334\" \237<\210\212\2360\230Q\310\364\233\207\t7T\215/\007sZ\367\004\251\322\260q#\217\230E$\361Q\330\207!\021({>\271\035I\225vV\026\311i\030_\276!\224\"\234\334\013,\335\220\261\354\244i\022\"H\263\017\017\017\005\360\361\200\227\216\034!\214c\030'|;\343\007\220\314\014kHI\030\311T\252\275\272\025\364\205\276aF\241z\001b\005\361L\241K\034\260=\200\202\216W\201\033\371cS\236S\300\224\257\321\202\214!sD'\330\364\210\374\225\"\267\204Q*\220\357]/\374t\017\037v\026\241!c\221\354*\217\025\366h\227\t\222\235\245!\317\333\206\021\026nj\222\217\212u\202.\376p\3447\374A\251\310\312\246\235W\330\261T\006H\317\200W\331\333c~[\317\323\346\207\345y\241fL\330\317\315\361\277!\023r\372\274u>\217\310\033\033\004\221\n\304@\253\002\013}\343y\177\205\347\363x:\322\302\315\342\314""\305UU<\3117\023T\304\314\236\037\210H\221\032\014'\244\372\260 j\366\225t\030\303W\033\372\341\362\004\221\027\342\261\311R\245\340\222\372\257\324C\223y_|\271\024\211\276\022X\020U\374\357C\327\263A\035\227\311\235\240\007\200f\367\212\310\367\247\346@\303\216_\016M\311\312\243\225'\353z\252\256\023)~BC\017j{\030\331x\342C\0264q\220'\263c\\\361,\337\032\357z\246p\361\252|\216^0\031\304\355'\033od6\366\246\335\372Uy\314\220\265\250\024b%\223\002\342\273w#$\321\255\224*\370\016\003x\316G\363\217Q\026\205Y\362\030%\371\374\363\275\203\310k\210#_4\234\253\320g\237w\227l\326\3334\223\023\020\035\250.\246:L\026F\237D\207\323\357\360\357\371\250\\\205\361\372\202\316\371\2405b\253y-\215l\236C7L\261\346\317\323\365\276\266a\321\351\216l\361\020\0141\035\271%\236\36364\354\351\346\016\223\237\234\351\351z\271\353+\266\337Q\347\345\202\037\353>\327.\036\037C\202g$\357\267\204\221\3403\273\275\316]E{\2174\232t\035jQ\302\0230\204I\211%\224\275\365UU\001\212\360\353\243\003h\260\221\277XJ\317\333n\\\216\265\314\360\365\365\327\247p\033\201{\321\010\375\217!\353U\252+\324\354j\271\321C\252\007u\007\205:zL\215a\234\014\254}\354\372Ig\327\n\307:\306\003\262\3272\013\374\330\322\322UI\030\242ka'\221\010\263$\214\342\031\223\207\337\352G8\177K\352f\230\333\033'\316T@\301\232\001K\314\200\300\347\352\315 \316\371\211UI\251]\375\275\247+:\202\274C\003v^\250\345H\232[\242\037\027\255e\352\370f\251\230\223\347b\004\222t\231\217\220a*\"A\002\212\314\316~\351\"\354\210\242\215\324**$\312\021oF\250\210\3764.*UX\372\216\253\203/\341\021\252v|M{B\301[\3439\336\013\033\033\325p\325|\311\245\266\342\256\2066Q\227k\235\272\220\303\031-\241\024tA\362Lh\t\346}\227Is\234\346\024W+\235\231\364S\241?9\323\342\002\375p\314\024\333`7yv|@8\276\243oJ'\356A\334J\034\005Pc\230\352\2347\223\272Ev`\240\026\223\351\337\232A`\246F\033b\247bHXV\232e\017\014\260'`\307\212T\213\364\031\351\313A\316\t\2126$N\244\376\033W\204\214@\321\236\332L\273\350\355:\366\345ZN3\032\264+]8\362)\310\3442I\220\031\326'\006X""\363\033\275\026b1q#H\236\306_i\321v]!\361\3710\357\251\246\354\347g\263KTe\205YEQ\"\321\232}\244<\324\025\264\343\344S\003\354^\254\363\266[\271\265\270\306v8\010\327\321\3474\227\341\320\202\010+H$c1)\367\3341\244\030x\2678z\3642\252d\031(\213\327u\025\034\250\274\374\t\002\243\273$\2656\223\242H\363\316U\312\222\301\252r\324\337\343\361{\336\321\035GU\342$\036\245\252\336\363i!\320\241\240G\322\\\013r\335B\310\300\272\220\021w0;\t\265}\203Zw \210rF\021\020\304\010^\201qN,\333\234&\274V$n\247U\246:\024<!\350b,\250\276\273\202\026\262\263Q0\272\021\013\023\242\360\354\374\243\343Y\362\257\317a\007\250\365:\371\372V\201\332\316M&\323h\nR)rG\021#5\342\342\323`\n\326\023\277\345\371\374\377\033\372\257\355\235\017\231\"\241R\213\345,JRv\355j\222\367n\274\276\370\255\037\224\350\353\026\240m\371\010\372\360s$\036\243\202\010>\224\036\270\361d\370\r\022\304\353.<#\322\246T\330\333\254\226\236\202\271\276\273\357\272\200\374F\247\274\204\257\366lt^\213\327\275_/a\326\036\341\236\363\273\240\200\3129H\336\247\023\0227\360\347\241\032s\305\316\004\314\025,1a\204\016{\365\221\365\257\315\016\357E\203m\311L\227\200\216\226*J\372\267\35432332\253c\365\213\352\207U-=2\r,\034~\266RO\251X\274\376\303P\352\340\016nB\025$\215#\203L\241\210\327l\253\331\261\347\266E%\222\326\243 L-\270\310%&V\017,\326\\e\245\302X\265\027t\001(V\243\227%\006\303\273\335]\235t\363\371\027\237\350\336{\027\231\275\345\316\007\273g\031\225EWS&\225\274\221g\016nH\300\241\212\330\271\307\035\241u\352\340\325y\205U\255\260(|E \010a\006\222`O\367\203\351\347\227O~\336\002\317$r\226\342M\217\313Jfj+)\250\363\343hP\265$\250\242\276\254+\225\214\327\236~\255O\262z\242d\"\000c\335'\307~H\372\"\035DT.f4|.\254|\201\340\303\026\002\014A\022g\302\226{\214|{P\272B\301\244\3527\3725\347\t\251\257\0227\022\350\016\201\020\317G\031\022G\340k\352\276R\354I\027\372\013\3122j\"\006\321\202\207i\323eU\032S+\037\177Jt\305ic-x\270\246\330\023\na^.Y\317\306E\206\314\253\336\312\021\300u\032\336M\261\214l\030\321{\017\356""\246\344\346n3\3315\274\004{3\303\323-\223\364\027\242+\027\2309\3028\301\013,\315\030\367\237&\223\247$,\232B\344\3059\3027A-\273\036\330\330\267\320\345\244kF]\231\"\264\265\242K\314W\245\354T\267\013\310\034\221H\331\016{&p\332\2150\273p\032\t\216kd\0067\310\010c\177=T\250\341\304\235/\026\367z]\313B\022\353\273\220\032\367\363r\003b\361'\004_\026\263:\327\\C0\265\261b\320&\032\320\221\333\256\n\267\374v<\242\2769h\276c\314\312\033\227#\217\225\201\362\3367\252\303\"\021\2528-\341\227\016\031\334_T\252\213@\344L@\232\014\210d\311\221-\306\037ji\365\007:\35427\332\006\220\336\004^\214\361\350\331\244\252J yJr\232*\361\3171\353JD\306\361\225\265\261\036\261NJ\355\361\342\313j\3148B\032KxI\206\205a\2253\204\nlH9\214\233j\272\323qk\261\241\266r\274\024\323\030\026\014\242\332q\255\242\357TU\240\312\016\330\3147\344\306\335\302|\341\251\205\224\371P\315\220\346H\314\256\3205\031\027\004\333\320z\221\256\255\326\202\026\212\313(7<\264\353\017(\214\234\363\022\252B\341\256\261\214My\233\275T\010\263u\031f\237\271C\261\310\231\320\352\314\215\344\247U\031\031\035E\016D\253\022$\363\274\227\004\330\345\241y\226\212Xrc\215\346\021\357\372\376\230$\267Ti#G\234?\373\022\343S\242\214\317\255\302\211\257\005\272eJ\005\375;\327\261WU\244`\363\202\342\"\347~*\316\002D\314\356=\320\t\255\225\216'w]Up\337\027Nc\"R\3755]cAr;\253\240&6c\210\261\3073\256\242\245~>*\327\010\250X\277%\242\344\027Y,\273\346\202!&\352\014.P\260Z@Q\304\337\025\253[\233{\245 fM2\223\202\201\306\266a%\202\223=\246PiK\360\004\306l\031n!\273B\235\322\303\177\341\271E\275\016\345\347y0T\226\340G\204\361y\375\362a\340\363|\005\t\263\003h\230\036\n\265\375\367McA\221\331\3574D\275h*V\333\301\233vnz\235F\276cA1\010;p\361H#I\027y\210\300\017yB|\221!u\025\222J\265\016\006g\000\227o\355\211Wcw\2571\207\000\314\264\"%dz9\2072$\002-(\334\311\360\316\010F`HZ\233\222\255K3\202B\244\032c\tmZ4.\265-K\313m\352\271\310\324@B\311\022\223\201l\022\267\356\356\220\210\374M\351\023t\245M\265\265\250\314\243\320F\224\204g8\312""\020Ks\026\033\003\005\025\322\255d\275\304\342\222i\324\275\226$\330\231\233\\\203\222\265\23401w\2012\255Ax\324X\272\010\213J\250\3304\223\006#a\272\010\332C\221\000PyJ\302\2211\002\227\024\007\037'2\270jbH\301\355j9\211BA\025p\330$\233\230\230\3519\004n\260P&\226V\010\024\223Pq'\277@\305\361L:Z\301\253\370Fl\341*9\036\337\321\251\243\017\252\223H\361\335\2756ky\234\th%\3239U\325 \353\322F\307\255\242/\366Ns\336\370\360\353mM\302[\214\235\244>\235\345_\026u\362\247T\252\001s%\266\004\027k\222OH\030{g\204\205}\257\312q\323\305\223\022\344\322&\252W,w:C\271\340i\341hq\337>s]\214\223\\\304\272 )O~\376\324\223\244'\273\230\225\261V)la\27681+\271\214\347H\022\307d\"TQ\0331RBh\370'\0021\255\253j\343\010\214n\220c\234\205\255\261\225m;\213\354DA\025Cs m\214cj\252\212\252\252\252\252\252\252\261B\260\325\310X\273,\243\224\210T\212\306\"?\014\314\211\344x\206j@\2124\224\320VU\231\302\"Q2\276\377\214\010\213@\326\276Jcq\335\":\272\227\351%1-/\010\244\267\000\033\244\n\226\245\300\316\340b\317E\211lIq|\263s!\0215\354m\022\330\366P>\021(m\270\0348n\353E \330\304\316\276\307a\n\226\313\221\224BD{INS\304\270\2454\277m\321\260b\351_=\364F\030\266\333\335\020\264\203\016\364)\tJ\300\034\003m\262\264\024\036\273\241u\344\246\021o\003\202\227B\362Q\tL\316\234\332\227A\241\263\014*$\252N\367\206 \222\302#\322\010}\244\224\212KE\2418\024\267D\030\214f\266\232\033\3326\206\254\231*\324\332\021\212\221\021w\2348\304^A\034\240$1\210.\"\006\304/x\013\360\335\222\023\024\204\344\3027\247\243,\370lf\251\347@\031@y\374\256p\324\233\005\343$\236t\205'4\325\0063EXi\317\260l\033\001\346,\013Ax\355\010\r\264Y\245Q\020\034\321$\202N\360Pl\352\360\210$\2516i\\J\312c\026\340%\002\304\024\033d\223F\030\033(N\212\303D\217\026u&\314o9\312J]\374\340\2160b\013\033\263!\0030y\2521\251\"M\n\205\224\210\204\221\034\262\n=\347\267\301\301\302\274\314\tk\026L\3175`X\t\014a\337\220\240h\266\331\223\n\322\035\340\236\227M\331cLj{\010Vr\201k\245\363\030V\206>n;4c\211%\312\302\311\234\033\014\345b\347'\005\344""\236\275\362@\260\242f\331\202e\327\222\361}\010\027\215\241\\\255\212\372\360\254\220I\323qR1R2\026\243ImE\016,\223\006\300\244\222]z\370\266^\203\002,lW\346\316\355\244\301\346f\024\360]z\374\335\031cU\260\326\304\206+\253\r\022\356\275L\r\257\000[\210\257q\266\023\255\254P\303n\332\272_{\221\260 G|\312\213\022h\353\235\230M\215\306\361\265\261\3311\302\010g\300\325\265\305\2553\225BL\230\304\022.\2615\247~\000=RV\200\025\007A\330\336W\210\230\260t2\027e)@\254\310\205j%M\355W\233e\256\245\036Wy\334#\256\242\n\026k\017\326\272$\274t\316\"9\305\311\212\376[\3361\305`]\247\362\276\254\242O|\221\323%\034\232!\214\300K\020\300\352{\036\205\272\226\371\037v\373;\004 \021aD\312\032\264\213\330\332r\343)l\225\356\302\263\230H&%\001'\350J\026\262(\220\311F-./U9\360g\177omv\316\002\256L\206\3316\273{\300\307\260\301\217\233e\362v\245)A\313\273CCD\251\326&\202\273\352\212\255\257\035A\247\330\267c\034\3520\306\324/0\006\3154*\352}\006B\264\346bO\342\342\241\022\255\231\334\267\253N\273\231[\225\271\255-L\326\321\236#\225h*\032>\017\017lu\266\262\315\006m6\221\300i\303D\223\210FD\263\251\213T\230\2231\241Y\023R\010\3642\364\225\350\254\241%%&Cs2\270\265 F\253L\241\225P\034E\262\3559\346\270\206d\312\0167\014\tk\224d\265]W9\235\000_(t\361\005\210B\314\010\207\201\274\342\315\240\032\026_\203\231\014\314`\300+\273<\322LI=:s\277v<5-:\0168\033\335\\\360\033\344\222\351LRL\311#\013\344+E\006\300\334@\341L\002\326Im}\271!\n\366#\231\360\226\"[\332\002\315\"\\\"Z.\273\300f\211T<\233\r\310W4O\005q\t\231\240J\010\030%c\204<6CI\231@4\311dv\221\"\020\316\031@\035\355\020 L\220\266\260\201\224B\032H\215w\340r\221\277\000\331ZO(Z\310]\314 B\007(p\2203\002\206!<\266\020\n\364\340!6\365S<Tz\"\355\321s\233\210\307@\343\236S\313\340\320M\\\303\206\233\273E\0145\334\310<\320\217\250\223\325\251\315\214\214\342\254R\031HJ:\241A\"\214\335U9G$7\204\020R\302\311K\221\322,\363F\2208q\030M\327\026\205\260\032b\262II\332\\\026\335oh\233\214*\026\033e\014\\Fr\224\t0\202\223\224\240v5\271\270\013\260""\305\002\302T\022\356\345A0af\271\236\250R\274/S\270\022\334\256[\3617\351\000\251\037\004\2556%\210\342\257\320\216P\026\035S\260\233\350$)\222\320\250\"]1\351M\323\244\313%!\235\206\353R\233\2323\022\363^\305es\271V\346w\207f<q:\266\035C\026p\370\305\270G\020\212Y\302\316\021\221S&\232\267\022\233T\322\315\r\233\026\351\231\2651\321\352[|:-RK\223\024\246\304\265\250\225J\024\026K\t\033\025E\2346\216\232\0041\212\020)\320\223\3722Sa\264\344T\222I3\221\333N\373\350U\342P \233\256BL\343\312`\206\007c\027>\360\277\013\304\232\240\311 _\021v\337t\331\247\225M\333\313\256\366\233\323\013;+'\267{\322WP\225\243-\347 W;\230!\035\323\256HM\r\000i\315\026\013\215[\252\022\205J\250a\252\030;ApK59\210\212\274`\354$\020I0 \227\222\2474M\316P)J\020\266!>\343\231\025\352\341\343\257\022lK\256,%oP88j\266]\301S\240\234`%\222($\322M\344\023\365e.\032J\266>|\246J\216\030\335CY;\306\264\321\317e0\313&\330\367&X\276\036\025\254e\027I\364.\3702^\342s92kn4B\\60\r\346\025\224\323\323)\007\222\325 \242\356\236\263\204^\314\277z\027D\310d\242\361\314\3570\0134\013\262\364\3373\260\244Y\321\347\360\007\005\"\2346l7\207P\224\001@\250mJE'=\252\306 \260ig\335\"q\244\t\206\260\365\312P\364\312\020\314\225\344\251m\327O!\215\t\266\233S\274H\245w(Se\305Fic7A\264\t\233\245\"\260[\0259\354\005Zy\302\201\260i\267k\022\024\217\221\250\225\261d\321\267~\351-\262\307K\345\200\350\351\033@\261B^\237\037Oi\327\334\214\003\014\265g\332q\225I\222Ih\256\221a*$\272j%\014I\253\356)\036\213BwX\264\211D\331\005\020\030\022\224:\035\000\351\326&\201\"\3578t\332\0171\017Y\026k\234\262U\226\301\207Ia\306\312\010g\nY\226a\026`\300\304\014\333/\200w\202@a\220/+\336q\210\320\031\r]\257X4\n#J\350\n\2462(\333\214x\030\240\224E\327\264t[\235\365I&\224\2328\020qD\221\201`\200g(Z\222\270\235\3445\310\235\305\3119S\014*\310\nt&\000\3600\031d\320\275\300T2\002S\307\013\357\004\260\232\013\270mJ!\277\230\006\221\327\262a!\023\037\251,\210IcYg|\315iRr\234\336i\n\251\263@M\202b\n\347[\242\324\t\027\3373UQ\220U\004\240\210\362""\207\213\271\257f\307\270\361+\325\315\224\346Q\207&\201\2068\210b\265!\370\240\272\335\036\177\014=\376\220\022\317\360\374\273&\030& \267\205\247\356\026\014\323\3527Xr\244\r)\3318\222R\226\331\226\013\235\255\r,:X\330\034\\Y\2336\201\234Qf\220\306&\230C\214\316\2564\314K\263\007\305ss\314L\032\236\331>\352\005\261:\344\222\366\330\n\244\264\306@\226\343\274\334\275\333la\240A\211|\247\271c\345\205\360\314\202\203+\236\220]\331\022\350\211\306\347W'\324\312\316:\236\017\027go\\\247s\244\341\322h{}XL\314,'0\202\225UDH\210\246\022\255j \346\310\032\243\033?/\260Km\256ke\240\000\372\341\244XK\217\023H\207yQ\2577\2558\004\206k\354\340\233{\221\250\2011#\211$\341.4\022\231\004\2114\202Z8\343}\016\014a\211\002\321l\243\007 \033r+\264Bf\204(\020\005\231\303&\226\200,lp\215I\275\344R\203\303\252)2`\2002k\306\236m\026\330Ti\256\357\252\270\243\213\034\217J\307\006\025\277\227\240y\300\367\225\2164os\327\002\212\267'\003\216\2705\302\236\326\237G\325\307NcK\325\211\232!T?\324s\347 \002{\220\231\200\330\375\017\257\2339`\036C\362\300=\217\006\240P\353\265\004\252\224)\372\207QD\314\343`\t\3372\242SU\020U\017o\254a\332\206;\375*!\352\211\206\377Z#\037\330cU\\\340\3600\345O\032\275\274\243\007\305\310\343\333\355\033\305\220\353\243{\027\213\341D\201=\314\352L\372\265\203\230\347\246m\n\346)\271\\i\\\246\035\027\331\234\341]\365#\313[\317[\314\035*\013\226\025\212\3608w\201>\313\037\023\230\265\276\243*'\344\257|{(j\031\251s\366\346\365\027\357\363gj\300\032\342\3353\204\274t_\326~\377\333\360QSj\350\034\313}O\227I\357\331\347\320\033A\3559<\311\340\350\3444i\361@\360\\\014\361\364\272\346\376\235=\205\000\265\313\230\312}w\337\242\027#\320voy\347~O\246\357a-\031\nn\326rVV\366\307s\261r\325\023om\225+\262\233\216gL\374\361\370\305<\205}\347\002\332g\252\325m\275\316\356\003\357>CV\200n\345\371\307\006\337\351\227c\234\031E4\331\311\262\356%\017B\342\206\315\252\264\253\to\3506\r\203\351M2\332\245\216A\255\332\322\013%\255\207\275t\222\302\331\024\264[{X.\352\377\177u\277*f""\013uE\274\353\335~\347'3\223\273\2346\307\r\343\311\372\024\275y\354\273\\\\\001\236\243wZ\372v43\362\222h*][\252\216]\027\271h\241\231{1:\307.\204\302\347o\366\332\203\230\315\315\337\003.\317\035\317\036\375\262\303\037i\031R\315Z\240\273\025{\346\0056U\252Vw-L\257\177Gq\266v\232\002\n\370<{^\033\337\367\310Y\253X\032\264\354\256{\253\354G\034\375\375j\356Z\356\232\035\356!\253\212\233\351Uy[\264.Z\352\004\274\276\022\272J\243\376r\\\251\224\274:g\356J\231\033!\220/U)ih\350\335\246p\360\030y\005\355\306o<\345)\374\274&\365C\222v\222\323\354\246\337\277\317\350\377\330\334\344\223\323\3455\2209\2474TX\301Q\036\266\001\232\032g0\016\017\000\340\01706x\223@\207\022\202BA\n\242q\356\022{\3270\3757|\307\217\322K5\353\353\024\365\036*\237\177\337S\305\257\323\206b\315\336\363b\335qM\317m\234[\004\323\225$Q2\2745\245X\375\022C\314\254L\001\360 sJVK\351\246c\016RXC\331\312S\032\256q\020.B\235O\202\360\333\353\325\006\230\302\231%\347\004\004\222\333f\234C:\255#m9\207\343\277\010\"a$\260\0305\264z\215l]\306.)\342DL\216Pa\026\231\207\213\302\205\020\360\370\273\311\207Z\257V\230\213.$\324\264\274j\316\263b\261\240\245\354L\324\215\036\310\234K8\372>\341V*/J\036\246\234\204\357\005^j'-r\244\366pz\233\213\221\r\274\266$\344$\310\310\177\342\356H\247\n\022\014\010r\230 ";
    PyObject *data = __Pyx_DecompressString(cstring, 6804, 2);
    if (unlikely(!data)) __PYX_ERR(0, 1, __pyx_L1_error)
    const char* const bytes = __Pyx_PyBytes_AsString(data);
    #if !CYTHON_ASSUME_SAFE_MACROS
    if (likely(bytes)); else { Py_DECREF(data); __PYX_ERR(0, 1, __pyx_L1_error) }
    #endif
    #elif (CYTHON_COMPRESS_STRINGS) != 0 /* compression: zlib (6608 bytes) */
const char* const cstring = "x\332\325[Kw\333F\262\216&\236\\E\226\035\333R2\231$\223@\221cY~\310\221\037\211\307\223\311\014ER2\023\211oIvfr{ \000\244`\223\004\010\200z\3047w\262\324\222K.\271\344\222K.\271\324\222K.\363\023\362\023\356W\335\000\t\220\240\235\321\234{\316\370\034\t\350\256\252\256\256\256\256\256\252n4W^<\372\374\341\321\217R\330k\346\305\243\273\237\377\370\010\265\257\360\236\221\244`\035\265\273\376\332W\376j\244T2\016\245\255\250dk\245\202T2\014sOV\236\013\350v(\324Vd\307\321,\3111\244h&\216?I1\312\246\245\331\266nTF\252\222\"\233\366\243\231Qh\301\260\312\262CP[\377A\243\367\301j\264d(\317%\275R0\244\232\251\312\216\006\200\255W\212\322V\351\350AL;8\212\226\325(x\214\202\343\325\000\344@;J\355=\363\203\266\267\342[\324P*\313\366\363\250Q+\251\225%G\2221\026\014D\223d\313\222\217I\"I)\253\014\022\232QK#D\241$\027\355\250c\225\244C\303R\245\233\322Vz3'\031\007\030\372F6\036\216\330\216\245\2435\313\322*N\351XJ\037\357h\326\236-\251\206fK\025\303\221\354\232i\032\226#\255~!\355\035;\000nie]\221\"\216A/\303\324,\331\201z\354X4!\345\034HQ\036\2260\tEV\251\225\231bT\224\032\365 I/\303\206\3404\3132,M\rm\347\342\010c\013\214\230\271X4/\311\212\202y\223\236k\307\324\324_\217E\245T,\315IQ\324+:\364\3528\0265\223\234cS#z^\300D=\221\212Z\005#,\221%\224\345\212*\025d\275\204.u[\336+i#f\025\263t\322g&\235\217\035WdR\317\332\272diE;^\331\227+\nFQ\256\225\034]2a\226\232#\355f\342\353\234\0335\347S\013b[\263\016\000\311\244%\214pO\263VFHh\222\267#\331\020\350N(T\256He[g\007\232\342\030V\010\276\254\225\r\3538\004\341\n\211\027\331$&\307O\245\010q\313\026\364\207\361\2274\231\204\336\253\025\n\232e\217\221\331E-\014\007\215\224\260V\241\324\335\254\037!,\231k\037\326\315\327\340J8\332\330{\206q\275\014'\035\352\316>\254Cvj\366\3651\302\255\315'\0170q+X\353\t\330A\004f\020?z4\363\342\307\031\302\304v\206`\002\2067\317\244Wf2\351asnL\372^\rK\305\307iH\021\312I\266\217+\212\024\317L\032\321\010\376\345\243R\254c\0235\254\022\275\002\375r\357\345S\240\252\211Y\031\230\230\344\307\301\\%r>""\201\006X]\306\261$\013\305\206H9B1\212.X\232&9\373Z\250%\026ad\261\255\241#\221dU%\227\033\244P\3414]-h\0070\306 \226x+\003W<\304A\005F\315A\377F\371UZ)\313\246\024yL%\350e\321\0077T\275p\034>.\027\027\332\000NU\262\215\232\245`%\221\3734\n\341t\360\327\3438(\003\313\026a\000\306\217\365u\204\346\025\351\005t\340\263\234jM\263&\310%P\361Lr\024\024\354E\300\324\003! \357n\024\311\201\350W\3070Fq\\\351!J\345v\251\371T\013\223\322m\362\222\362\250e\221\273s\\\337\315t\025\302Q\254\226\025n\007<\224m\320\334\313\216,\251\272E\206o\037\333\005\033N\t\346/<\361\212X_,\232a\211d\"\317\"\371|\226\255oF6r\000\305Y:\022\373qK>\"\227N\013P\312j\262\352\306.\027<\002\331\315\222KTL\314\214V):\373\004SF\243\274\364\267\212\255)\337\023N\rxz>N{B\204DL\rDT\276\210E/\217D\036\020p8\004\201sBa$hp\037}\250\251IC:\220K5D!SS\364\202\016\235RF\000u\326\024g\350\206\244\245\2618\273\364/7uC-\032V\264\244\341\320r\226\035)z\354\354c\246t\014M+\351{4P\r9\004\330\350\n\017\213\010{R:\236\276}\377\341}\211\242\247\245\221\245\332P\301\236R\222mX\014\031\377^M\307\010+<\350\332+R\242 \035\0335\251\242\t#1A\347o\000\273#[\023\253~I\256@\245\\\277\014\315\021\252\226\\SA(\246\326\353r\311\326V\222\265\262\004\233\340\226n\247\205&\367d\033\035\300g\252\260\013\254F-\255+\317K\024\354 \222\253\t\230\002FE\335+\373p?<\263\\!\365 \222\333`\241I\332\221Y\322\025\235R'K\303\302\200\001\250bf\377*\327\034\203\231\304T\273\236\267j\332\362\257\355\000K\362\377\225\275\2423\261\346\3543\365\223\225\017%\241\303\334.\n\026%\255\303\222\024\315mo\371\252\233\271\024j\346\200\314-\271\251\232\017`\024\n%CV\355\234V,S\246\310s\261\034\245\007\206i\013o\200\374OW\2116\233\361\025=V\356\262Z\203]\257\227\344\262\346\001(U_\275\373p\315\237\315\217\341L\204\035\022\320\205\233\023lD\272\016;\315F\341I\227=R[/V\020\210-8z\335\3042\250h\336\n\317\357ce\350\"\215\306B\340\351\202p\246\371Z\245\202\344\307\033\362H\225\017h\273\362\274b\034V\274dT\272\376BU~\\\336\256\300\266\215b\005;\020\325K\006\010\275KS""\265\225\365\247c\036\250\004\247$\312\224\014\303\007\024\364\"\244}\222%\337\247\034\320\233\264\274|KB\037?.K\213\217f\376\002e0H\255-\363U\213\260\253\"\204B\206\317\217H#<D+\336\356\204\nX\200{zIw\2169D\025\331\261V\021O\254=\276v%}\357\200UMF\353\207\021\035W\214^&U\361l\232\307i\363\370\2006 +\360'\240\247\"#\026\360\013O\341\024dR\263e\354\201\376X\252q\273\221%\305T\265\202\304;R5tE\373\005L\223,\255\230Gpl\010\023\302]\r\3664\373\320\017Gcs\000\267\207\367\021'[\031\027\226\353\376?YN\n\321\352\001s\023\005F\263\361j\345B\264\003\035\311\236\275B\315\371\343?Bz\276\312_/\311\253\214\266\220\302\250_s\361_?\263\251j\302\340\341\325\2318\237y\275\344\347\3513\343\3513\343i\363k%\276\252\274\332=\376\247\311\014\227.\266\311\257\341b\035\312N\247&\014i\321\3539\210\327\330\343\330\207\314\315W\331 [{\235\344wx\246\371:\310\3167\244t\264\233I/\026\025\335\026\331\244Z\306\236\033\376R\342#\343\373Y~\254\354\356g\374X\357\344\330\207\002\230^$+\035\336\322\026B\033\320\323F\224\016\270}\024\207\325\000Z4\260\313t\326\361r\026C\212\t,\350\270\t\223\340\275\261\2355\345\242&\351\2528\214q\247\340\316`\n\356\220\366\357\210I$\035\3211\035e\341\222\255\354c\214ZI\243=\223\330\236\022X\341\373b\332\331AI\340\345\270\247\273RZl\331\335\255\003\351\330t\267\215\203\306\267x\251\206\275\343\331\331\320\026\371\254\215\351\223\006\337]\234\231\201\310&\3058\334\323\2533\363\252\n6\264\035P\252\377\006\233\263\213\240\235\275\333\341\201\353\231Y\000~\346\266\346\331\347\260j\336r\337L;:3\027\333=K8k\373\232|v\305\035\234\261\2558;\020\337\200\370\211\330\020\"R\\\373\272C\007\352\005K\346\203[\346+UW\371iM\366\211\004\207\240<\267\341n\350 \206\003\367e{\337\375b\300\335\225^Q\265\243h&n\307\242p\260\261h~\235\037\265f\343\033ZE;\320\036c\317_\322\022k;,\223\316\263X6\261\023\317z\265ld\227\245#\321o\343\371\001$\352\225\266\207\245\230Wz\222\215\262l<\272\343\257\347\342I\027\317\"\321h<\227\023\347\265\036h3\217\036\362\217\275\252\333\224E#i\257\264\235e\271|$\037w""\353\261x.\217w\322\255\306\223,\227\211\261H\356i2\312\222\251|b\375\251\213\331\212<\021\304Y\240\363\251\255D\324\207\300k\014\234H\262l2\313\362\211-O\003\\4 6\002\022\010`~\333\253~\033\177\312\022\311X\374\211\007He]}\261\014pn1\013\006l3\261\225\360p\331x>\373\224E\223\203:\372\3460\257\236a\351\2347\314\\\240\342\023\206\244Mm\347\3514\334;\033O%\363\361'y\367X|ms;\216\322V<\024K\207\346t \006\360V\372\345\024\351Hl\"\301\316j(*\236|\034IF\3431\266\225\336\r%\000\034\026\260\231\332\215\207\363\026\266\307\326\"90\211f\343\261D\236m\245b\341c\311\306#\233\\\035,\237\033!\330\212\344\276e\321\315T\364[L\324z\212m\247c\320`(\021FC\272\310\306s\211T2\224\"\3734\235O\261\324\372\372fjL%\234\002\253\014S\004q\266r\341h\226\212q\013\017G?M\262\265u\254\316P,:\205\312\242y\010'\206\035F\304-?\352\031x\030Er{\213\24157\325P\026\251T\212\257d\266\233\r\305\347\022\033\311H~;\033\177\231\"\240\204D,\221\334\200)\207\242w\323a\340\374v2\031\337\364\370\206\366\276\233etc\"\375\224m\306\223\033\371\307\203\257Bq\010\r\007\223\312nE\362\214<\342d\214\220\356I8\301\343H\356\361+?5M&\000\247xv'\036J!\214H\230\0307\353L|2\031:\312%\276\233L\0200\001a\230\233\251\r82\356\"@\275\023\331L\304&\023$\335\352d\n?\003\304\216\247\3518\331\367(\300\363=\344\257a\370h\307\2275\313E!k\034>5\345\033\347\220(\226\310E\3266\343\257\"#c\214\245\307\300\257\360\016CB\030+K'\322\361Mh/\2711\206\316'\262\236\270\361\315u\214>\225^\003kD\270_M\272\025B\032j\306\024\261\236\260\335\004E\020n\301!p\212'0\367\365\304\006\326W\010>\213y\205\2666\343\221\241\211\005\361\233\211\\~\034A\321|\327\257\336\021c\212E_\202\032ui\3434\303\241\373\255r\234\216\022\002\226J\347\002d\303L\203\034\243\253<L\253\253>\266\363d3\222\374\225\264\033\003\255\275\2222\236\214\357\374Z\342\350.\243[T,\205\004\351_\350#\320l{`\3069j\225\315\r\355q\010\360;.\037t3\227\242\217\304\321\214x\2560\206\375nM\321\230\302\263K\306\006p\354/\371\361b\020#\266I\276\342\004\016\003\344\313\330\254(%\303\326\002\000\337\351f8""\334\250\005z\027[5\346\350e\r\335\224M\006\252\212=Bq\304\334+Y\014\373\3041\034\277\232\300\264j\240\303\242\3460\272D\300\304\227a\306/\0210\272D\340\247\022M}g\261\343H~\004\"\244\234\200\244D\335\217\362.t\261\252Ya\374\336\315D\254{/\207\343\253\332\027\367\007\205\t\263\342\242\302\347\204#\325Z\331\034\326t\233ie\3239\3467\r\242\tq\227\316\273n\020\n\014\3578\214,T\010\377u\206\321\372\004\326A\212I\\\207v;\250\370\372\030\002&v\022 yy/\257\3401\271=\324\024\030\373\260>\211e\200b\002\3274\354k\310\323\253M\342\350\303O\3407\274\2276Z\237\3043@\021\316ux\357u\244:\201g\200\340U,\207~\306\017\244%\316\257\2071\357\364hx\325vX\232\334?\307M\354\032\330@\257[\266\276\303OU\306\000\223{\360\223L\354hH\024\350/\265\367\314W\234\334\207@N\344N\350Q\276+\342\036\232\037\302\335\331\030@\250\227\203\313)3\242\252\226\277<A\246!6\\(\017?\224\312\203\300\301\250\001@\255R\226\315\000\344\320\322\205\223N\247\3053\\\010\016\017\355\036\230A\307\231\264x\206\363\310L\344A\0302\276\301ww\027(\256\267\"\036\320M\032\361\275\346\320\262]$F\302\344}\noU\323\003\361i`\303\2739L\331\227\371Y\275\256\006IJrq\020f\206\320\252\311\370Q0\243\243\340 \252\246\002\347k\341\006\272 \233C\213\211{o\276\372s\355\230\r\356\213\370\340\026\363]3\t\300\351\256\311\020`\311\207\354\260\352kiS V\230\354\032\317\030\320\035z\020\307\305\020\327\267\305\347\256\020\264H)B\020%\371\030IF\270\274\243DA\341\007X[/\262=\272\001\310\357\345G\262\356+\334P\004\"\324R\010507\272\010\351\275'p\022\230pV\204\033\360\332\0212\355L\222ig\262L;~\231v\n\272A~=->>\304\351\373\211[\316\306\266\"\250W\214`}\200\337F\036\303\353\214\245\217\217\360\037\323\221g%\021 \263Z!\033\315\346\263\331|n;\272\035\343Y\373\216f\321\035\254]M~\236\323\234\335\252\206?\372iBN+\016K\343c\t\340\306\206\343\303\322\324)(\203\310\317\220~\266a\024\000\210!\027\024}\271\245\320\276\206\270\260\276<\254\355\345\226v\200\341\240/\321\317\244>&\363\347\030\3050\217\311K\210\313\363.\224\317\227[\036t\023\312}\002k\301A\254(\377""\272\222\371\245I\356\024\350\316'\026$\255I\367:\266\274/\227\364b\205\016\234y \320\215\025\305\260\260l\364\212f\323\347\236=\335!\367G\342\332\274f\363E\303\277\363\n\371\305\223c\217I\242\212#\336F\255\342\204\273K\306\370\307K\306\274\002<-|~\231\252\350\027\313\2329\226\254h\364;\037~I\227\321%]></\r\360~\037\343\275YI\253\014|\265\373\241h\354\356\224;\210\300\255$\02762'JU\033\\B\241[{!7R\006 \227)\2524m\376[\010\356\216\2103\020E\255R$\305\372\267P\201m\223\342\034\221\325\251\n<\347\340s:\312\206*\344p\257f\270/\267k\337\305O_\321\245w<\037\013\237\207\0325\326\366jE\272\332\317}3/\224\010\251\035\214n\324\3027n\243\233\265\340\006\215a7\206N\231ZV\3132\224\311\n\252j\253\266C\233\026\372w\265\247\036\210\241\035\014\207\211\306\342\3567\243\357,\016\272\264\013jA\265\271*\013%\343\220\211\033\344B\267\005DR\2720!\3301V\250!I$C\3324\212E\315\032O\034\203\341|\362\336\2213\021\213\213\355kG\372\350\355F\337\005B\275\\\306\037Fp\000M\230\320!\014\027\177\374[1\336e\214f\3178bb\210\314{\257|E?\305)\331_\243 \227\367T\371\353\341\305\tl\346\006\313\317\333\330\321\312\260\301\334.y\364\342r9M\032\335\343.\313G\374.\267\252=\267\307\256\204\217\\\364F\265H\037\260\371n\230\367HRV\350i\372\263\027\032(\375\323Ws6\\\202L\334\223gtM\2360\236\225Z*\230\321/\251\306@\272G\027$\031\301:\374%\256\334\263\275\002\375\266\212 c\243\361\003\335\021\271\243\247\227\305\271\211\017\364L|\023\033P\033\005\346\335\002\360(\220\302\370\321\336'|\020\3248\243\032\347=H\240\230\320:\301\216\320\023\235&\274\274\247!\305\204\2360\177\276\\l\322\205\317\260\253\224\023/)N\272\3767\371b\335\304+k\301\313`\341\327\254^q\201i\322\325\240\311\227n\302\257\263\210\204\367e\251\364H\016\035\226<\217f\315\260yC\255avF\022_V\262\235\021\210\t\303\004\235\373\264\271C\244\271\364\321P\325\353\335\246\n\"4\375f\204\027\213\032\2755\213\214[w\006e\376\025\3300\014\314\206r\300\343\"\271l\3034Lf\034V\014S1T\3150!%\374\001%\262\344\257\350\355\372\025\024a\222\246j\026\355\037\030\017\323""\246\251\243\261\027\350\021t\365#2^\036\341M\3233!\357\036\020]\371\236t\333\331\203\243\2658\336z\345\345\241\227\020\250\007\003\344\261\333\207\310)M\344\224\256\247\245\342\001\277\254\3040mdP#A{\304\362\206Pt\356\272c\273jV\370\211\033\n\016\377\027$\316 \310#L\311%1\215<`\371v\300\301\335\323\330\241\341\330A\341\310\341\240E\302\251\203l\215\215\345m\003\200vD\305\262\201\221`ma\375\017*N\305\322L\014Q\244N\210\207\256\365\302\302\n\274\246a\331\216\237<\206\2356\362\224\310\337\232\252\232{m\302\246\370\032\\\251\301\232\253.\177\276\355\317\207y\372\351\256\006\224T\255 \327J\216/)e!\t*\026\001\337\211\321\333\034\374\266\2022&\221\354\332\226\330+\322\233\"\033oM\017\304\010\r,\240[>\203$\227\367\3032\333\375\261\010\263\252|\351\330\260\303\232\t\333\363nV\270>nX'c\360\271\035\336h\334\013\331\207^V\207\022\322#F\222\260a\036\004\3674\342\2418\247Q\230`1p85\276\2300D^\320U~\362\301\177\256e\213\273<\007b\377t([\374\237.\215\034b/ei\005\004\220\303\252\233Rk\026\025u\225\236\246c!>\241\354\005\251\261\355\375\330\276~\270\241\037\356\344\203\273\365\320\275\373\244M\373\370n\375\345\333\364\t\373\363\320\215\371\241\005\217\206I\023\027\031\2310\003~:t\224>N\211+67\256\017\213\313o\360-\002s\225f\373\210\334\337MQ\356F\277Z\276qK\032\"\375e\260\240}\200]d\374\247\370\275s\237\267\247\372\323\0375\022\315\235\326j+\332\252\366\247\317\237|Y_\254g\372\263W\3527\033\231\206\334\237~\247\367\316j\373r\373j\373Yw\372t\212(V\373\263\227\352S\365\313 \352]\371\264\271\320[L\234^\356O\277[\3175\246\032\3575\016\233h5{\0229\311\240\361I\365\247\251\376\271\331\336\354r\013\364\374A\235\236;\177\362u\343r\343\263\206\207\376S\007\\\377\330\001\372\253N\244?{\241\377\366\214\373\014\222\316\325W\373\347fN\026\372\347\246O~{\262S\177\320\340\"\335=\311\236T\373\263s\365/@\272\330\3106P\231\257G\010\365\240\376&\332\200\027\030\335;Q\352s\365\265z\261\261\333\21443n\337\030^\177\366\032\244\236]i\341q\267\275\320\237\275\335\202\016\356\267#\342\341\312p\2559\325;w""\263\265\372\313\2457\336\236\253\337np}=\252\347\033\227\251\353\325\376\334\227\355j\177\356V+\322\237\243Vs\017;S\375\271{m \036u\026\\\330\260D\243\025-\370c\376g\360\370ss\212k|\261\271\332\214\265f\332\013\355/A?-$\367)<\322\275\334\275\332}\326K\007tL|fo\264 \376\027m\014\204zv%_j^\376)\322\217\306\372\177\376\372\227\213o\274}\245\376q\343\237\275\225\265.x_\251\337i~\322\373<\336\315\360\2361\274\326ZKk?\304\204\214\367\013\351;w;\271\336_\237\366\236~\367S\204x]\352\275\363y\373\315\336\275\324i\265\227\316\367\362\333\375\325\273\242\345^}*(\361\202\0206B\372\273$\006\271\326\324Za\035\375\271\223\351<;\235\032tq\223\033\350\017PY\2702\256\237.\200\366\312\200o\264\371\003\214\366F'\022B\237<\225\241\214\351\371\336\374r\353\367\275\2734\362\033_\266m(zy\265\375!\232\334 k\274q\263\357\303\337$\334e<z\253\350\256\177\203\254\024\217h\347\237\2472a\321\313\375\223\343\306\233\215U2\205\007\215\3374\356\264.\267\370\200k\365\010L\344\367\315\205\346\203\326\233\255\325\301\2200Q\255\273\255\355\366\370\3746W\373\327\226\232Vk\256\365m\273\372+\350{\213\177\355NA\252@\243+o\234\377\250q\257\3671M\331\375N\265\377\321R\363\005\024\362MW\346\023p\376j\363^\357\032,\240{\277[\355_\275\336\272\010\223\271\372Y\363omW\351\363\365{u\271\016\023\227\232\263\255uX\342\275\266\336\261\272|\002\276\300*\212\370|\304\273\365\014\326\324w\315j\177\346\243F\264\367\t\364\327\211u\247\372\177Xh~\334\372\337\316w\350Ax\004\260\23693\353\345\326\\\357\326\343\323\251\323\371S\314\010\255!\217\251P\377\3774\356\241\305\354\\o\356N\253\332>G\213\027\346\326\277\364^\357=\254\356\336\322cr_\263'\311\306\202\327\302!A\372\027\377\200\256\324\346\002\271\265\267\352r\020\t\330\177\325\017\270,\304\231&\341>\034e\220\363\026\004\022\215\351u\276\261\352\361\250\325\243\030\347E\261\234\247\004\263\352\010\362\343\206\334p\232\253\241Ht\343\300\261\\\232\257o4\276h^&\031?h,4V\033\261\236\364e\333!\247\t\241hq\304\340U\203B}s\272\340\362\034\021\352\200\034u\030k\377\370.\364/\221K""\233\377\240q\213\230\301\300~\006\340~\335\201\205\317\277\017G?\337\340c\236nLMf\177\037}\243\203\210p\221\234\330\243r\327\212;\232\346[M\265u\253\255vnw\235\323\325\376\207\237\220\003\277\\\277\014'[k\256\267\026FZQ\370\231\257gF:\376\2411\327\210\370'\354\342@1\227\352\263\002\305\311\177\231\347\013\352zk\252u\245\365\240=\325\376\000\366\032\346)\340\242;\237b\221\2778\345+\371\207\006\274\350/\357\221\001#\356`H\323RO\202\227%Kt]g\254\375V\273\324]\354f\272r\377\326\375\366F\347a\027\356\355\355\221\251Y\357\312?\213\030*\234V\010\277\205\336\302\203v\246-\002\360g\315\014\364s\255=\013Y\252XW\327\310\265\207q\245\205\263\324\370\020n\325\353\300\213\325\256\347\375\025\235\201W\323i}\321\376\250\223\343^e\211\257\264\321\3166\260\246_\325\331\374\253;[jV[\347Z\337\014tv\035\250\263\215l\206\302\032|\007\314b\376\367\010y\313\315\373\315\303\326><\313A\227\374\316,\237\363\253\210\373\271\326T\310\\\347z\271<gs\376\263f\264\267\024\355\256vcp\030\237]\203\346\027\0061\013\031L\353\323V\274=)\016}\332\215v_\364\262\271\237\270s\212\327\337\345\216\016\2439\254\3575\316C\244Z+\322\312\267\347\240\210K\277#\027(\204\207p\037Rz\321|\037\031\022\027\377Zs\032\212\331\240y~\007f\377[\236\323\370\323*\336\301\343zD\310|\263\265\330\273\2154\354\364*\342\321\315[\036\313E\341D\241\317\245\346A+\323R(|]!\223<\337Cx\2106\252>W\273\320\274\334\373\224&{f4\240\377\005\361\203\242\272\347\303\347\377\r\336\213cq\247\322\215\364\257\362y\367\370\213\200'\254\376F\373q'\322\311\270\211\247/\021\361t\207\365\370^\357\335\333\255\035\230W\264]\035,\030\245\365A;,\265\210u#?S\360'S\370;M\244_\251dF\0377\2366K\355E\010\344\217fo\237^\016X\301b\353\273v\265\023fI\337\234z\262\375\214\354j\305M\351\240\201\346b\363;\312a:K\3350\373!\245\334\353\226`=\275\334?z\377\220\275y\236A\204\350}\"\334\375'\\\327\001\340\243n\036\351\367'\327\232\373\255g\235s\235o\273\3346\336C,\232\276x\"\017\315\320n\\\345A\254\376\247F\021\352)\266\262\255\027\235\253\035\r\206\036\351_\273\355\253""\256u\367`\371\277\016\344\331\"\272\202\303\377R\304V\252\034\325_4\257\265\246\021\207\277\351\250\335%\322\336\317\256\216/\276q~\241\371fo\021f\325=\207\316\027\026\221\032]hg\006\372\245\370\375f\373\021r@9DO\273\275\335'\203\264\227\262\374s\344,\316]8\371\036y\356\037Z\305\366\367\3104/|\332\274\323[\305\\\367/H\315\013\275\333_\203\025\3373\344I\031\244\2255w3\000\235\274\3378\327\2104r\315\337P\024|_l)\376(\0020\3377<D*\2404\2564\276l.QV'\226\334\365\246\335\273\001\317\304#\326\365e\2626\221Y\005\0217Z\237\265~Dt\271\276L\342\316\234\334\254{\373\016\t\2261\013K\355\317\302\024\003{\014\354C~&\233\221\270D\323\210\313w\333\327:S\"\373\275\177R\rn\317@\335r\332\177\242|\331\247-o\213V\277E\206BI\353\264\210\326\323s\365\207\215?\222#\365\231\376!\362\036O\252\231\336\r\256\255\337r%s6\347g]o}\210\276\354\366B\363\031\242\346\357:oQ\237\247s\247[\275\247\177\357\375\375\373\336\367\377\3552\341\233\220;\224G\320nO\354\260xIl\354hw\345\333\231\2106wD\332q\341\242\367\344\233\030\276\007\023u\332\235\205\267\272N\271\025\225\206\350\377\003\361\222\247\007";
    PyObject *data = __Pyx_DecompressString(cstring, 6608, 1);
    if (unlikely(!data)) __PYX_ERR(0, 1, __pyx_L1_error)
    const char* const bytes = __Pyx_PyBytes_AsString(data);
    #if !CYTHON_ASSUME_SAFE_MACROS
    if (likely(bytes)); else { Py_DECREF(data); __PYX_ERR(0, 1, __pyx_L1_error) }
    #endif
    #else /* compression: none (20422 bytes) */
const char* const bytes = ".{:08x} {:08x} {:08x} {:08x}\n{:20}: {:<20}\n  {:20}: {:<20}\n{:22}: {:<20}\n{:<22}: {:<20}\nAllow MC self loopbackAllow UC self loopbackAllow scatter to CQECQE compressionCQE compression caps:\nCQE compression formatCQE sizeCQE v1Clock info updateClosing Mlx5DevxCmdCompClosing Mlx5DevxEqClosing Mlx5DvexObjClosing Mlx5UMEMComp maskCouldn't allocate array for cmd_respCreate flagsCtrl word + MPLS over GRECtrl word + MPLS over UDPCurrently PyVerbs does not support 16 bytes Memic Atomic operationsDCI StreamDCI Stream log_num_concurent  DCI Stream log_num_concurentDCI Stream log_num_errored  DCI Stream log_num_erroredDCI stream caps:\nDCT access key  DCT access keyDC ODP capsDC init attr:\nDC type  DC typeDevX general command failedDisable scatter to CQEDriver QPTDynamic BF regsEnhanced multi packet WQEFailed to alloc reserved QP number.Failed to allocate UARFailed to allocate VARFailed to allocate an msi_vectorFailed to allocate memoryFailed to allocate packet pacing entryFailed to calloc mr interleaved buffersFailed to calloc sge buffersFailed to cancel send WRsFailed to create DevX cmd comp.Failed to create DevX objectFailed to create DevX object with status(Failed to create MLX5 CQ.\nCQInitAttrEx:\n{}\nMLX5DVCQInitAttr:\n{}Failed to create MLX5 QP.\nQPInitAttrEx attributes:\n{}\nMLX5DVQPInitAttr:\n{}Failed to create async EQ objectFailed to create async EQ object with status(Failed to create crypto login session.Failed to dealloc QP number Failed to dereg UMEM.Failed to destroy a DevX EQ objectFailed to destroy a DevX objectFailed to free the msi_vectorFailed to get DM operation addressFailed to get devx async eventFailed to get the clock infoFailed to logout from crypto login session.Failed to map AH to QP #Failed to modify DevX objectFailed to modify QP #Failed to modify UDP source port of QP #Failed to modify lag of QP #Failed to open mlx5 context on {dev}Failed to query DevX objectFailed to query EQNFailed to query QP #Failed to query dv port mlx5 Failed to query"" mlx5 device Failed to query the crypto login session state.Failed to register a UMEM.Failed to reset stream_id #Flow action flagsGet data direct sysfs path failed.MLX5DV_CQ_INIT_ATTR_FLAGS_CQE_PAD}Max DC Init Read AtomicMax DC Read AtomicMax WR memcpy lengthMax clock info update [nsec]Max dynamic BF registersMemic Atomic operations do not support with length: Mlx5DVCQInitAttr:\nMlx5 CQ:\nMulti packet WQE allowedNo value specified for struct attribute 'log_num_concurent'No value specified for struct attribute 'log_num_errored'NoneNote that Cython is deliberately stricter than PEP-484 and rejects subclasses of builtin types. If you need to pass subclasses then set the 'annotation_typing' directive to False.Num LAG portsPacket based credit modePickling of struct members such as self.attr must be explicitly requested with @auto_pickle(True)Pickling of struct members such as self.dv must be explicitly requested with @auto_pickle(True)Pickling of struct members such as self.dci_streams must be explicitly requested with @auto_pickle(True)Raw PacketSW ParsingSW Parsing CSUMSW Parsing LSOSW parsingSW parsing caps:\nSW parsing offloadsSegment type Send ops flagsStriding RQStriding RQ caps:\nSupport BlueFlameSupport CQE 128B compressionSupport CQE 128B paddingSupport packet based credit mode (in RC QP)Support signature pipeline supportThis is not an MLX5 deviceTunnel offloadsTunnel offloads capsUnknown DC type ({dc})Unrecognized object typeWith MR interleavedWith MR listWith Mkey configureXRC RecvXRC Send),  ({}) #:\n?add_note) and syndrome (0xbase addrcomp maskcompatibility maskdisableenableenum class ibv_qp_attr_mask not importable from pyverbs.libibverbs_enums. You are probably using a cpdef enum declared in a .pxd file that does not have a .py  or .pyx file.enum class ibv_qp_type not importable from pyverbs.libibverbs_enums. You are probably using a cpdef enum declared in a .pxd file that does not have a .py  or .pyx file.enum class mlx5dv_context_comp_mask not importable"" from pyverbs.providers.mlx5.mlx5_enums. You are probably using a cpdef enum declared in a .pxd file that does not have a .py  or .pyx file.enum class mlx5dv_context_flags not importable from pyverbs.providers.mlx5.mlx5_enums. You are probably using a cpdef enum declared in a .pxd file that does not have a .py  or .pyx file.enum class mlx5dv_cq_init_attr_flags not importable from pyverbs.providers.mlx5.mlx5_enums. You are probably using a cpdef enum declared in a .pxd file that does not have a .py  or .pyx file.enum class mlx5dv_cq_init_attr_mask not importable from pyverbs.providers.mlx5.mlx5_enums. You are probably using a cpdef enum declared in a .pxd file that does not have a .py  or .pyx file.enum class mlx5dv_cqe_comp_res_format not importable from pyverbs.providers.mlx5.mlx5_enums. You are probably using a cpdef enum declared in a .pxd file that does not have a .py  or .pyx file.enum class mlx5dv_crypto_login_state not importable from pyverbs.providers.mlx5.mlx5_enums. You are probably using a cpdef enum declared in a .pxd file that does not have a .py  or .pyx file.enum class mlx5dv_dc_type not importable from pyverbs.providers.mlx5.mlx5_enums. You are probably using a cpdef enum declared in a .pxd file that does not have a .py  or .pyx file.enum class mlx5dv_qp_create_flags not importable from pyverbs.providers.mlx5.mlx5_enums. You are probably using a cpdef enum declared in a .pxd file that does not have a .py  or .pyx file.enum class mlx5dv_qp_create_send_ops_flags not importable from pyverbs.providers.mlx5.mlx5_enums. You are probably using a cpdef enum declared in a .pxd file that does not have a .py  or .pyx file.enum class mlx5dv_qp_init_attr_mask not importable from pyverbs.providers.mlx5.mlx5_enums. You are probably using a cpdef enum declared in a .pxd file that does not have a .py  or .pyx file.enum class mlx5dv_sw_parsing_offloads not importable from pyverbs.providers.mlx5.mlx5_enums. You are probably using a cpdef enum declared in a .pxd file th""at does not have a .py  or .pyx file.enum class mlx5dv_tunnel_offloads not importable from pyverbs.providers.mlx5.mlx5_enums. You are probably using a cpdef enum declared in a .pxd file that does not have a .py  or .pyx file. for DCI QP#gcisenabledmax log num concurrent streamsmax log num errored streamsmax nummax single stride log num of bytesmax single wqe log num of stridesmin single stride log num of bytesmin single wqe log num of stridesmmap offmmap offsetpage id port pyverbs/providers/mlx5/mlx5dv.pyxreg addr sched elementself.addr cannot be converted to a Python object for picklingself.addr,self.umem cannot be converted to a Python object for picklingself.attr cannot be converted to a Python object for picklingself.cmd_comp cannot be converted to a Python object for picklingself.context,self.device cannot be converted to a Python object for picklingself.cq,self.ibv_cq cannot be converted to a Python object for picklingself.cqe cannot be converted to a Python object for picklingself.eq cannot be converted to a Python object for picklingself.msi_vector cannot be converted to a Python object for picklingself.obj cannot be converted to a Python object for picklingself.pp cannot be converted to a Python object for picklingself.qp,self.qp_ex cannot be converted to a Python object for picklingself.segment cannot be converted to a Python object for picklingself.uar cannot be converted to a Python object for picklingself.var cannot be converted to a Python object for picklingsupported QP typessupported formats(tree fragment)umem idwith RX checksum CSUMwith hashwith stride indexCQEsDCDCIDCTFlagsGREGeneveHandleIBV_QPT_DRIVERIBV_QPT_RAW_PACKETIBV_QPT_RCIBV_QPT_UCIBV_QPT_UDIBV_QPT_XRC_RECVIBV_QPT_XRC_SENDIBV_QP_ACCESS_FLAGSIBV_QP_ALT_PATHIBV_QP_AVIBV_QP_CAPIBV_QP_CUR_STATEIBV_QP_DEST_QPNIBV_QP_EN_SQD_ASYNC_NOTIFYIBV_QP_MAX_DEST_RD_ATOMICIBV_QP_MAX_QP_RD_ATOMICIBV_QP_MIN_RNR_TIMERIBV_QP_PATH_MIG_STATEIBV_QP_PATH_MTUIBV_QP_PKEY_INDEXIBV_QP_PORTIBV_QP_QKEYIBV_QP_RATE_LIMITIBV""_QP_RETRY_CNTIBV_QP_RNR_RETRYIBV_QP_RQ_PSNIBV_QP_SQ_PSNIBV_QP_STATEIBV_QP_TIMEOUTINITMLX5DV_CONTEXT_FLAGS_BLUEFLAMEMLX5DV_CONTEXT_FLAGS_CQE_128B_COMPMLX5DV_CONTEXT_FLAGS_CQE_128B_PADMLX5DV_CONTEXT_FLAGS_CQE_V1MLX5DV_CONTEXT_FLAGS_ENHANCED_MPWMLX5DV_CONTEXT_FLAGS_MPW_ALLOWEDMLX5DV_CONTEXT_FLAGS_PACKET_BASED_CREDIT_MODEMLX5DV_CONTEXT_FLAGS_REAL_TIME_TSMLX5DV_CONTEXT_MASK_CLOCK_INFO_UPDATEMLX5DV_CONTEXT_MASK_CQE_COMPRESIONMLX5DV_CONTEXT_MASK_CRYPTO_OFFLOADMLX5DV_CONTEXT_MASK_DCI_STREAMSMLX5DV_CONTEXT_MASK_DC_ODP_CAPSMLX5DV_CONTEXT_MASK_DYN_BFREGSMLX5DV_CONTEXT_MASK_FLOW_ACTION_FLAGSMLX5DV_CONTEXT_MASK_MAX_DC_RD_ATOMMLX5DV_CONTEXT_MASK_NUM_LAG_PORTSMLX5DV_CONTEXT_MASK_OOO_RECV_WRSMLX5DV_CONTEXT_MASK_SIGNATURE_OFFLOADMLX5DV_CONTEXT_MASK_STRIDING_RQMLX5DV_CONTEXT_MASK_SWPMLX5DV_CONTEXT_MASK_TUNNEL_OFFLOADSMLX5DV_CONTEXT_MASK_WR_MEMCPY_LENGTHMLX5DV_CQE_RES_FORMAT_CSUMMLX5DV_CQE_RES_FORMAT_CSUM_STRIDXMLX5DV_CQE_RES_FORMAT_HASHMLX5DV_CQ_INIT_ATTR_FLAGS_CQE_PADMLX5DV_CQ_INIT_ATTR_FLAGS_RESERVEDMLX5DV_CQ_INIT_ATTR_MASK_COMPRESSED_CQEMLX5DV_CQ_INIT_ATTR_MASK_CQE_SIZEMLX5DV_CQ_INIT_ATTR_MASK_FLAGSMLX5DV_CRYPTO_LOGIN_STATE_INVALIDMLX5DV_CRYPTO_LOGIN_STATE_NO_LOGINMLX5DV_CRYPTO_LOGIN_STATE_VALIDMLX5DV_DCTYPE_DCIMLX5DV_DCTYPE_DCTMLX5DV_QP_CREATE_ALLOW_SCATTER_TO_CQEMLX5DV_QP_CREATE_DISABLE_SCATTER_TO_CQEMLX5DV_QP_CREATE_OOO_DPMLX5DV_QP_CREATE_PACKET_BASED_CREDIT_MODEMLX5DV_QP_CREATE_SIG_PIPELININGMLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_UCMLX5DV_QP_CREATE_TIR_ALLOW_SELF_LOOPBACK_MCMLX5DV_QP_CREATE_TUNNEL_OFFLOADSMLX5DV_QP_EX_WITH_MEMCPYMLX5DV_QP_EX_WITH_MKEY_CONFIGUREMLX5DV_QP_EX_WITH_MR_INTERLEAVEDMLX5DV_QP_EX_WITH_MR_LISTMLX5DV_QP_EX_WITH_RAW_WQEMLX5DV_QP_INIT_ATTR_MASK_DCMLX5DV_QP_INIT_ATTR_MASK_DCI_STREAMSMLX5DV_QP_INIT_ATTR_MASK_QP_CREATE_FLAGSMLX5DV_QP_INIT_ATTR_MASK_SEND_OPS_FLAGSMLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_VXLANMLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GREMLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GENEVEMLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_CW_MPLS_OVER_GREMLX5DV_RAW_P""ACKET_CAP_TUNNELED_OFFLOAD_CW_MPLS_OVER_UDPMLX5DV_SW_PARSINGMLX5DV_SW_PARSING_CSUMMLX5DV_SW_PARSING_LSOMlx5CQMlx5CQ.__reduce_cython__Mlx5CQ.__setstate_cython__Mlx5ContextMlx5Context.__reduce_cython__Mlx5Context.__setstate_cython__Mlx5Context.closeMlx5Context.crypto_loginMlx5Context.crypto_logoutMlx5Context.device_timestamp_to_nsMlx5Context.devx_general_cmdMlx5Context.devx_query_eqnMlx5Context.get_data_direct_sysfs_pathMlx5Context.query_login_stateMlx5Context.query_mlx5_deviceMlx5Context.query_mlx5_portMlx5Context.reserved_qpn_allocMlx5Context.reserved_qpn_deallocMlx5Cqe64Mlx5Cqe64.__reduce_cython__Mlx5Cqe64.__setstate_cython__Mlx5Cqe64.dumpMlx5Cqe64.is_emptyMlx5DCIStreamInitAttrMlx5DCIStreamInitAttr.__reduce_cython__Mlx5DCIStreamInitAttr.__setstate_cython__Mlx5DVCQInitAttrMlx5DVCQInitAttr.__reduce_cython__Mlx5DVCQInitAttr.__setstate_cython__Mlx5DVContextMlx5DVContextAttrMlx5DVContextAttr.__reduce_cython__Mlx5DVContextAttr.__setstate_cython__Mlx5DVContext.__reduce_cython__Mlx5DVContext.__setstate_cython__Mlx5DVDCInitAttrMlx5DVDCInitAttr.__reduce_cython__Mlx5DVDCInitAttr.__setstate_cython__Mlx5DVPortAttrMlx5DVPortAttr.__reduce_cython__Mlx5DVPortAttr.__setstate_cython__Mlx5DVQPInitAttrMlx5DVQPInitAttr.__reduce_cython__Mlx5DVQPInitAttr.__setstate_cython__Mlx5DevxCmdCompMlx5DevxCmdComp.__reduce_cython__Mlx5DevxCmdComp.__setstate_cython__Mlx5DevxCmdComp.closeMlx5DevxCmdComp.get_async_cmd_compMlx5DevxEqMlx5DevxEq.__reduce_cython__Mlx5DevxEq.__setstate_cython__Mlx5DevxEq.closeMlx5DevxMsiVectorMlx5DevxMsiVector.__reduce_cython__Mlx5DevxMsiVector.__setstate_cython__Mlx5DevxMsiVector.closeMlx5DevxObjMlx5DevxObj.__reduce_cython__Mlx5DevxObj.__setstate_cython__Mlx5DevxObj.closeMlx5DevxObj.modifyMlx5DevxObj.queryMlx5DevxObj.query_asyncMlx5DmOpAddrMlx5DmOpAddr.__reduce_cython__Mlx5DmOpAddr.__setstate_cython__Mlx5DmOpAddr.closeMlx5DmOpAddr.readMlx5DmOpAddr.unmapMlx5DmOpAddr.writeMlx5PPMlx5PP.__reduce_cython__Mlx5PP.__setstate_cython__Mlx5PP.closeMlx5QPMlx5QP.__reduce_cython__Mlx5QP"".__setstate_cython__Mlx5QP._get_comp_maskMlx5QP.cancel_posted_send_wrsMlx5QP.map_ah_to_qpMlx5QP.modify_dci_stream_channel_idMlx5QP.modify_lag_portMlx5QP.modify_qp_sched_elemMlx5QP.modify_udp_sportMlx5QP.query_lag_portMlx5QP.wr_memcpyMlx5QP.wr_mkey_configureMlx5QP.wr_mr_interleavedMlx5QP.wr_mr_listMlx5QP.wr_raw_wqeMlx5QP.wr_set_dc_addrMlx5QP.wr_set_dc_addr_streamMlx5QP.wr_set_mkey_access_flagsMlx5QP.wr_set_mkey_cryptoMlx5QP.wr_set_mkey_layout_interleavedMlx5QP.wr_set_mkey_layout_listMlx5QP.wr_set_mkey_sig_blockMlx5UARMlx5UAR.__reduce_cython__Mlx5UAR.__setstate_cython__Mlx5UAR.closeMlx5UMEMMlx5UMEM.__reduce_cython__Mlx5UMEM.__setstate_cython__Mlx5UMEM.closeMlx5VARMlx5VAR.__reduce_cython__Mlx5VAR.__setstate_cython__Mlx5VAR.closeMlx5VfioAttrPyverbsErrorPyverbsRDMAErrnoPyverbsRDMAErrorPyverbsUserError__Pyx_PyDict_NextRefRCRTRRTSUCUDVXLANVersionWeakSetWqeWqeCtrlSegWqeCtrlSeg.__reduce_cython__WqeCtrlSeg.__setstate_cython__WqeCtrlSeg.set_ctrl_segWqeCtrlSeg.sizeofWqeDataSegWqeDataSeg.__reduce_cython__WqeDataSeg.__setstate_cython__WqeDataSeg.set_data_segWqeDataSeg.sizeofWqeSegWqeSeg.__reduce_cython__WqeSeg.__setstate_cython__WqeSeg._copy_to_bufferWqeSeg.closeWqeSeg.sizeofWqe.__reduce_cython__Wqe.__setstate_cython__Wqe.closeaccessaccess_flagsactive_port_numaddaddraddressahalignmentasyncio.coroutinesattrbitmask_to_strbitsblock_attrbufferbuffer_strbyte_cntbyte_countcancel_posted_send_wrs__class____class_getitem__cline_in_tracebackclock_infoclosecmd_compcmd_respcmd_resp_lencomp_maskcontextcontext_comp_mask_to_strcontext_flags_to_str_copy_to_buffercqecqe_comp_capscqe_comp_res_formatcqe_comp_to_strcqe_sizecreate_flagscrypto_capscrypto_enginescrypto_logincrypto_logoutctxdatadcdc_init_attrdc_odp_capsdc_typedc_type_to_strdci_streamsdci_streams_capsdct_access_keydctypedebugdest_addrdest_lkeydevdevice_timestampdevice_timestamp_to_nsdevx_general_cmddevx_query_eqn__dict__dmdmabuf_fddsdstdumpdump_formatdv_attrdv_init_attreqnfailed_selftestsfdfdsflagsflow_action_flagsfm_ce_seformat__func__g""etLoggerget_async_cmd_comp_get_comp_maskget_data_direct_sysfs_path__getstate__hexiibv_qp_attr_maskibv_qp_typeimmimm_inval_pkeyin_in_bytesin_mailbox__init____init__.<locals>.<lambda>init_attr_is_coroutineis_emptyitemskeysl<lambda>lengthlkeylog_max_num_dekslog_num_concurentlog_num_erroredlogginglogin_attr__main__mapmap_ah_to_qpmaskmasksmax_clock_info_update_nsecmax_dc_init_rd_atommax_dc_init_rd_atomicmax_dc_rd_atommax_dc_rd_atomicmax_dctmax_dynamic_bfregsmax_log_num_concurentmax_log_num_erroredmax_nummax_rcmax_single_stride_log_num_of_bytesmax_single_wqe_log_num_of_stridesmax_ucmax_udmax_wr_memcpy_lengthmax_xrcmin_single_stride_log_num_of_bytesmin_single_wqe_log_num_of_stridesmkeymkey_configmlx5dv_context_comp_maskmlx5dv_context_flagsmlx5dv_cq_init_attr_flagsmlx5dv_cq_init_attr_maskmlx5dv_cqe_comp_res_formatmlx5dv_crypto_login_statemlx5dv_dc_typemlx5dv_qp_create_flagsmlx5dv_qp_create_send_ops_flagsmlx5dv_qp_init_attr_maskmlx5dv_sw_parsing_offloadsmlx5dv_tunnel_offloadsmodifymodify_dci_stream_channel_idmodify_lag_portmodify_qp_sched_elemmodify_udp_sport__module__mr_interleaved_lstmr_interleaved_pname__name__ns_timenum_interleavednum_lag_portsnum_settersnum_sgesnumeric_bitsnumeric_typesooo_recv_wrs_capsopop_ownopcodeopmodoutout_dataout_mailboxoutlenpdpgsz_bitmappipopport_numposix_memalignpp_contextpyverbs.basepyverbs.libibverbs_enumspyverbs.mem_allocpyverbs.providers.mlx5.mlx5_enumspyverbs.providers.mlx5.mlx5dvpyverbs.pyverbs_error__pyx_state__pyx_vtable__qpqp_comp_mask_to_strqp_create_flags_to_strqp_numqp_typesqpnqpn_dsqptsqpts_strqpts_to_str__qualname__queryquery_asyncquery_lag_portquery_login_statequery_mlx5_devicequery_mlx5_portrcread__reduce____reduce_cython____reduce_ex__remote_dc_keyremote_dctnrepeat_countreq_sched_leafreq_seresreserved_qpn_allocreserved_qpn_deallocresp_sched_leafresp_sesegmentsselfsend_ops_flagssend_ops_flags_to_strset_ctrl_segset_data_seg__set_name__setdefault__setstate____setstate_cython__sge_listsge_psignaturesizesizeofsrc_addrsrc_lkeystatest""aticmethod__str__strstream_idstriding_rq_capssumsupersupported_formatsupported_qptssw_parsing_capssw_parsing_offloadsswp_to_strswpst__test__timestamptuntunnel_offloads_capstunnel_offloads_to_strudp_sportumem_addrumem_idunmapvaluesvectorversionwarnwarningsweakrefwqewqe_counterwqe_idwqe_ptrwr_idwr_memcpywr_mkey_configurewr_mr_interleavedwr_mr_listwr_raw_wqewr_set_dc_addrwr_set_dc_addr_streamwr_set_mkey_access_flagswr_set_mkey_cryptowr_set_mkey_layout_interleavedwr_set_mkey_layout_listwr_set_mkey_sig_blockwrapped_import_methodwritexPyObject *(PyObject *)\000close_weakrefsPyObject *(struct ibv_sge *, PyObject *, PyObject *)\000copy_sg_array\320\0040\260\001\330\010\034\230I\240V\2501\250C\250q\330\010\013\2107\220#\220Q\330\014\022\220+\230Q\230a\330\010\017\320\0171\260\021\260$\260j\300\010\310\001\330\010\013\2101\330\014\020\220\001\220\021\330\014\022\320\022\"\240!\320#I\310\021\330\010\025\220S\230\001\230\026\230w\240a\330\010\014\210A\210Q\330\010\017\210q\200\001\330\004\014\320\014)\250\021\330\014)\250\021\330\0140\260\001\330\004\013\210>\230\021\230%\230q\200\001\330\004\014\320\014;\2701\330\0149\270\021\330\014<\270A\330\014\r\330\t\n\330\014\r\330\t\n\330\004\013\210>\230\021\230%\230q\200\001\330\004\023\2201\330\004\n\210!\330\004\010\210\005\210V\2205\230\001\330\010\013\2102\210R\210q\330\014\023\2206\230\021\230#\230R\230q\330\014\024\220A\330\010\013\2105\220\003\2201\330\014\r\330\004\013\2103\210c\220\023\220B\220g\230W\240A\240Q\200\001\330\004\014\320\0141\260\021\330\014&\240a\330\014.\250a\330\0142\260!\330\014-\250Q\330\0144\260A\330\0144\260A\330\004\013\210>\230\021\230&\240\001\320\004+\2501\360\020\000\t\023\220-\230q\330\010\013\210:\220T\230\021\330\014\023\2201\330\0237\260q\330\023,\250A\330\0234\260A\330\0238\270\001\330\0233\2601\330\023:\270!\330\0234\260A\330\023:\270!\330\0234\260A\330\0239\270\021\330\0237\260q\330\0237\260q\330\023\024\340\014\023\220=\240\001\330\010\017\320\017#\2401\240D\250\n\260!\2607\270!\330\010\013""\2103\210c\220\021\330\014\022\320\022\"\240!\320#A\300\021\300$\300j\320PQ\330\010\017\210q\200\001\330\004\014\320\0147\260q\330\014*\250!\330\0146\260a\330\0143\2601\330\004\013\210>\230\021\230'\240\021\200A\330CD\330=>\360\016\000\t\022\220\036\230\177\320.B\300!\330\010\022\220/\240\037\3200E\300Q\330\010\017\320\017+\2501\250B\250e\2608\2701\330\010\013\2103\210c\220\021\330\014\022\320\022\"\240!\320#:\270!\2702\270S\320@Y\320YZ\200A\360\016\000\t\020\320\0170\260\003\3203O\310q\320PT\320TU\33012\330\010\013\2103\210b\220\001\330\014\022\320\022\"\240!\320#A\300\021\300!\330\010\017\210q\200A\360\020\000\t\020\320\017#\2401\240B\240e\2501\330\010\013\2103\210c\220\021\330\014\022\320\022\"\240!\320#=\270Q\270j\310\001\200A\360\016\000\t\020\320\017+\2501\250C\250z\270\021\330\010\013\2103\210c\220\021\330\014\022\320\022\"\240!\320#A\300\021\300(\310!\200A\360\022\000\t\020\320\017#\2401\240C\240z\260\021\260*\270A\330\010\013\2103\210c\220\021\330\014\022\320\022\"\240!\320#N\310a\200A\330\010\024\320\024)\250\031\3202E\300Q\330*7\260s\270!\330)1\260\033\270A\330*;\2701\330*+\330\024)\250\031\3202E\300Q\330*+\330)1\260\021\330)1\3201A\300\021\330*<\270A\330*<\270C\270\177\310a\330*+\330\010\013\2104\210y\230\003\2301\330\014\023\2205\230\002\230/\250\021\250!\330\010\017\210u\220A\220T\230\031\240!\2405\250\003\2501\200A\360\016\000\t\020\320\017*\250!\2502\250U\260!\330\010\013\2103\210c\220\021\330\014\022\320\022\"\240!\2401\330&'\240r\250\023\250K\260q\200A\360\016\000\t\020\320\017*\250!\2502\250U\260!\330\010\013\2103\210c\220\021\330\014\022\320\022\"\240!\320#@\300\001\300\021\330&'\240r\250\023\250K\260q\200A\360\022\000\013\034\2303\320\036:\270!\2704\270q\330\034'\240{\260*\270J\300a\200A\360\020\000\013$\2403\320&B\300!\3004\300q\330$(\250\016\260a\330$%\240[\260\001\200A\360\016\000\t\024\2203\220a\220q\330\010 \240\014\250F\260!\2603\260i\270r\300\021\330\010\013\2106\220\023\220A\330\014\022\220+\230Q\230a\330\010\025\220Q\220g\230Z\240q\330""\n\034\230C\320\037;\2701\270D\300\001\330\035!\240\036\250~\270Z\300q\330\010\014\210A\210Q\200A\360\n\000\t\024\2203\220a\220q\330\010 \240\014\250F\260!\2603\260i\270r\300\021\330\010\013\2106\220\023\220A\330\014\022\220+\230Q\230a\330\010\025\220Q\220g\230Z\240q\330\n)\250\023\320,H\310\001\310\024\310Q\330*4\260A\330\010\014\210A\210Q\200A\330\010\013\2104\210|\2303\230a\330\014\023\320\023/\250q\260\004\260A\330\014\017\210q\330\020\026\320\026&\240a\320'H\310\001\330\010\014\210N\230!\200A\330\010\013\2104\210t\2203\220a\330\016\035\230Q\230d\240!\330\014\020\220\006\220a\200A\330\010\013\2104\210t\2203\220a\330\014\020\220\007\220v\230Q\230a\330\014\023\320\023*\250!\2504\250q\330\014\017\210q\330\020\026\320\026&\240a\320'M\310Q\330\014\020\220\006\220a\330\014\020\220\013\2301\200A\330\010\013\2104\210u\220C\220q\330\016#\2401\240D\250\001\330\014\020\220\007\220q\200A\330\010\013\2104\210u\220C\220q\330\016\036\230a\230t\2401\330\014\020\220\007\220q\200A\330\010\013\2104\210u\220C\220q\330\014\017\210t\2201\330\020\024\220G\2306\240\021\240!\330\014\032\230!\2301\230D\320 7\260t\2701\330\014\023\320\023+\2501\250D\260\001\330\014\017\210q\330\020\026\320\026&\240a\320'J\310!\330\014\020\220\007\220q\330\014\020\220\013\2301\200A\330\010\013\2104\210v\220S\230\001\330\014\017\210t\2201\330\020\024\220G\2306\240\021\240!\330\014\023\320\023*\250!\2504\250q\330\014\r\330\020\023\2201\330\024\032\230,\240a\320'@\300\001\340\020\023\2204\220t\2301\330\024\030\230\001\230\024\230Q\330\014\020\220\010\230\001\330\014\020\220\013\2301\200A\330\010\013\2104\210v\220S\230\001\330\014\017\210t\2204\220q\330\020\024\220A\220T\230\021\330\014\020\220\010\230\001\200A\330\010\013\2104\210y\230\003\2301\330\014\032\230!\2301\230D\240\006\240d\250,\260d\270-\300t\3101\330\033\037\230q\330\014\021\220\021\220-\230u\240F\250!\200A\330\010\013\2104\210y\230\003\2301\330\014\020\220\001\220\024\220Q\330\014\020\220\013\2301\200A\330\010\013\2104\210z\230\023\230A\330\014""\020\220\007\220v\230Q\230a\330\016+\2501\250D\260\001\330\014\020\220\014\230A\330\014\020\220\013\2301\200A\360\024\000\t\020\320\017(\250\001\250\022\2505\260\001\260\032\2701\270A\330\010\013\2103\210c\220\021\330\014\022\320\022\"\240!\320#9\270\021\270\"\270C\270{\310!\330\010\017\210z\230\021\200A\360\026\000\t\024\2205\230\001\230\021\330\010 \320 3\2601\260A\330\010\017\320\017+\2501\250D\260\006\260l\300#\300Q\300a\330,4\260G\2708\3001\330\010\t\330\014\017\210q\330\020\026\320\026&\240a\320'F\300a\340\014\020\220\001\220\021\200A\360\022\000\t\024\2205\230\001\230\021\330\010 \320 3\2601\260A\330\010!\320!5\260Q\260a\330\010\017\320\017%\240Q\240d\250&\260\014\270C\270q\300\001\330&3\2601\330\010\t\330\014\017\210q\330\020\026\320\026&\240a\320'F\300a\330\014\022\220'\230\033\240B\240a\340\014\020\220\001\220\021\330\014\020\220\001\220\021\330\010\017\210q\200A\360\022\000\t\024\2205\230\001\230\021\330\010 \320 3\2601\260A\330\010!\320!5\260Q\260a\330\010\017\320\017&\240a\240t\2506\260\034\270S\300\001\300\021\330'4\260A\330\010\t\330\014\017\210q\330\020\026\320\026&\240a\320'G\300q\330\014\022\220'\230\033\240B\240a\340\014\020\220\001\220\021\330\014\020\220\001\220\021\330\010\017\210q\200A\360\024\000\t\024\2205\230\001\230\021\330\010 \320 3\2601\260A\330\010!\320!5\260Q\260a\330\010\017\320\017'\240q\250\004\250J\260l\300#\300Q\300a\330(5\260Q\330\010\t\330\014\017\210q\330\020\026\320\026&\240a\320'F\300a\330\014\022\220'\230\033\240B\240a\340\014\020\220\001\220\021\330\014\020\220\001\220\021\330\010\017\210q\200A\360\n\000\t\022\220\023\220A\220Q\330\024\031\230\021\230)\2404\240w\250h\260i\270v\300Q\200A\360\014\000\t\020\320\017$\240A\240S\250\001\330\010\013\2103\210c\220\021\330\014\022\320\022\"\240!\320#S\320ST\200A\360\n\000\013%\240C\320'C\3001\300D\310\001\330%&\240d\250!\200A\360\020\000\t\020\320\017)\250\021\250\"\250E\260\021\330\010\013\2103\210c\220\021\330\014\022\320\022\"\240!\320#A\300\021\300\"\300C\300{\320RS\200A\330""\010\014\210E\220\025\220a\220q\330\014\017\210w\220b\230\013\2404\240u\250A\250T\260\023\260A\330\020\027\220q\330\010\017\210q\200A\360\014\000\t\033\230&\240\001\240\030\250\021\330\024\031\230\021\230&\240\010\250\004\250G\2601\330\010\017\210y\230\005\230R\230q\330\010\014\210A\210Q\330\010\017\210q\200A\330\010\014\210H\220A\200A\360\n\000\013+\250#\320-I\310\021\310$\310a\330+,\200A\360\014\000\t\033\230#\230Q\230a\330\010\t\330\014'\240v\250Q\250c\3201A\300\022\3001\330\010\013\320\013\034\230C\230q\330\014\022\220+\230Q\230a\330\010!\240\021\320\"4\260A\330\n0\260\003\3203O\310q\320PT\320TU\3301?\270q\33012\330\010\014\210A\210Q\200A\360\024\000\t\033\230#\230Q\230a\330\010\t\330\014'\240v\250Q\250c\3201A\300\022\3001\330\010\013\320\013\034\230C\230q\330\014\022\220+\230Q\230a\330\010!\240\021\320\"4\260A\330\n#\2403\320&B\300!\3004\300q\330$(\250\016\260n\300A\330$5\260Q\330\010\014\210A\210Q\200A\360\016\000\t\020\320\017%\240Q\240d\250*\260H\270A\270Q\330\010\013\2101\330\014\022\320\022\"\240!\320#:\270!\330\010\017\210q\200A\360\026\000\t\026\320\025-\250V\2601\260C\260q\330\010\017\320\017%\240Q\240c\250\032\2601\330\010\013\2103\210c\220\021\330\014\022\320\022\"\240!\320#D\300A\340\010\024\320\024$\240A\240\\\260\021\330\010\014\210A\210Q\330\010\017\210q\200A\360\n\000\t\036\230Y\240l\260#\260Q\330\n\034\230C\320\037;\2701\270D\300\t\310\021\200A\360\020\000\t\020\320\017)\250\021\250#\250Z\260q\270\001\330\010\013\2103\210c\220\021\330\014\022\320\022\"\240!\320#J\310!\330\010\017\210q\200A\340\010\022\220.\240\001\330\010\017\320\017!\240\021\240#\240Z\250z\270\021\270'\300\021\330\010\013\2103\210c\220\021\330\014\022\320\022\"\240!\320#B\300!\3003\300l\320RS\320S`\320`a\330\010\017\210q\200A\330\n\036\230a\320\0377\260t\2701\330\037'\240v\250Q\200A\330\n\036\230a\320\0377\260t\270:\300T\310\021\330\037&\240h\250j\270\004\270K\300q\200A\330\010\026\220a\330\010\016\210a\330\010\014\210E\220\025\220a\220s\230$\230a\330\014\023\220;\230g\240Q""\240g\250R\250{\270$\270e\3001\300A\330&-\250R\250{\270$\270e\3001\300B\300b\310\001\330&-\250R\250{\270$\270e\3001\300B\300b\310\001\330&-\250R\250{\270$\270e\3001\300B\300b\310\001\330\010\017\210q\200A\330\010\016\210a\210t\2207\230!\200A\330\010\016\210a\210x\220{\240&\250\010\260\004\260J\270d\300'\310\021\200A\340\010\017\210q\200A\360\016\000\013!\240\003\320#?\270q\300\004\300A\330!#\2405\250\r\260Q\200A\360\020\000\t\020\320\017/\250q\260\003\260:\270Q\270a\330\010\013\2103\210c\220\021\330\014\022\320\022\"\240!\320#W\320WX\330\010\017\210q\200\001\330\004\024\220A\330\004\017\210q\330\004\r\210]\230'\240\035\250g\260]\300!\330\r\"\240/\3201D\300A\330\r \240\r\320->\270a\330\004\010\210\005\210T\220\025\220a\330\010\014\210B\210c\220\023\220B\220a\330\014\030\230\004\230A\230S\240\002\240!\330\014\030\230\001\330\010\013\2109\220C\220q\330\014\r\330\004\013\2108\2203\220c\230\022\2307\240'\250\021\250!\200A\360\n\000\013(\240s\320*F\300a\300t\3101\330()\250\032\2601\200A\360\020\000\013(\240s\320*F\300a\300t\3101\330(*\250%\250}\270A\330()\200\001\330\004\n\210+\220Q\200\001\330\004\014\320\014 \240\001\330\014%\240Q\330\014$\240A\330\004\013\210>\230\021\230&\240\001\320\004.\250a\340\010\017\320\017 \240\002\240!\330\010\023\320\0232\260&\270\001\270\021\330\010\013\2104\210q\330\014\022\220+\230Q\230a\330\010\017\320\017.\250a\250t\260;\270j\310\001\330\010\013\2103\210c\220\021\330\014\020\220\001\220\021\330\014\022\220,\230a\320\037A\300\021\330\010\020\220\010\230\001\330\010\023\2208\2309\240B\240a\330\010\014\210A\210Q\330\010\017\210w\220a\200\001\330\004\014\320\014 \240\n\320*>\270a\330\004\005\330\010\017\210q\220\001\220\021\330\013\014\330\010\017\320\017'\240w\250a\250s\260!\240j\260\001\260\027\270\006\270j\310\001\310\023\310M\320Y\\\320\\]\320]^\200\001\330\004\014\320\014*\250!\330\014/\250q\330\0140\260\001\330\0141\260\021\330\0140\260\001\330\014\r\330\t\n\330\014-\250Q\330\004\013\210>\230\021\230'\240\021\200\001\330\004\014\320""\014/\250q\330\014\r\330\r\016\330\014\r\330\r\016\330\0146\260a\330\0144\260A\330\014\r\330\r\016\330\014.\250a\330\004\013\210>\230\021\230'\240\021\200\001\330\004\014\320\014/\250q\330\014(\250\001\330\014/\250q\330\004\013\210>\230\021\230'\240\021";
    PyObject *data = NULL;
    CYTHON_UNUSED_VAR(__Pyx_DecompressString);
    #endif
    PyObject **stringtab = __pyx_mstate->__pyx_string_tab;
    Py_ssize_t pos = 0;
    for (int i = 0; i < 725; i++) {
      Py_ssize_t bytes_length = index[i].length;
      PyObject *string = PyUnicode_DecodeUTF8(bytes + pos, bytes_length, NULL);
      if (likely(string) && i >= 196) PyUnicode_InternInPlace(&string);
      if (unlikely(!string)) {
        Py_XDECREF(data);
        __PYX_ERR(0, 1, __pyx_L1_error)
      }
      stringtab[i] = string;
      pos += bytes_length;
    }
    for (int i = 725; i < 796; i++) {
      Py_ssize_t bytes_length = index[i].length;
      PyObject *string = PyBytes_FromStringAndSize(bytes + pos, bytes_length);
      stringtab[i] = string;
      pos += bytes_length;
      if (unlikely(!string)) {
        Py_XDECREF(data);
        __PYX_ERR(0, 1, __pyx_L1_error)
      }
    }
    Py_XDECREF(data);
    for (Py_ssize_t i = 0; i < 796; i++) {
      if (unlikely(PyObject_Hash(stringtab[i]) == -1)) {
        __PYX_ERR(0, 1, __pyx_L1_error)
      }
    }
    #if CYTHON_IMMORTAL_CONSTANTS
    {
      PyObject **table = stringtab + 725;
      for (Py_ssize_t i=0; i<71; ++i) {
        #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
        #if PY_VERSION_HEX < 0x030E0000
        if (_Py_IsOwnedByCurrentThread(table[i]) && Py_REFCNT(table[i]) == 1)
        #else
        if (PyUnstable_Object_IsUniquelyReferenced(table[i]))
        #endif
        {
          Py_SET_REFCNT(table[i], _Py_IMMORTAL_REFCNT_LOCAL);
        }
        #else
        Py_SET_REFCNT(table[i], _Py_IMMORTAL_INITIAL_REFCNT);
        #endif
      }
    }
    #endif
  }
  {
    PyObject **numbertab = __pyx_mstate->__pyx_number_tab + 0;
    int8_t const cint_constants_1[] = {0,-1,1,-2,2,3,4,8,64};
    int16_t const cint_constants_2[] = {512,1024};
    for (int i = 0; i < 11; i++) {
      numbertab[i] = PyLong_FromLong((i < 9 ? cint_constants_1[i - 0] : cint_constants_2[i - 9]));
      if (unlikely(!numbertab[i])) __PYX_ERR(0, 1, __pyx_L1_error)
    }
  }
  #if CYTHON_IMMORTAL_CONSTANTS
  {
    PyObject **table = __pyx_mstate->__pyx_number_tab;
    for (Py_ssize_t i=0; i<11; ++i) {
      #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
      #if PY_VERSION_HEX < 0x030E0000
      if (_Py_IsOwnedByCurrentThread(table[i]) && Py_REFCNT(table[i]) == 1)
      #else
      if (PyUnstable_Object_IsUniquelyReferenced(table[i]))
      #endif
      {
        Py_SET_REFCNT(table[i], _Py_IMMORTAL_REFCNT_LOCAL);
      }
      #else
      Py_SET_REFCNT(table[i], _Py_IMMORTAL_INITIAL_REFCNT);
      #endif
    }
  }
  #endif
  return 0;
  __pyx_L1_error:;
  return -1;
}
/* #### Code section: init_codeobjects ### */
typedef struct {
    unsigned int argcount : 4;
    unsigned int num_posonly_args : 1;
    unsigned int num_kwonly_args : 1;
    unsigned int nlocals : 4;
    unsigned int flags : 10;
    unsigned int first_line : 11;
} __Pyx_PyCode_New_function_description;
/* NewCodeObj.proto */
static PyObject* __Pyx_PyCode_New(
        const __Pyx_PyCode_New_function_description descr,
        PyObject * const *varnames,
        PyObject *filename,
        PyObject *funcname,
        PyObject *line_table,
        PyObject *tuple_dedup_map
);


static int __Pyx_CreateCodeObjects(__pyx_mstatetype *__pyx_mstate) {
  PyObject* tuple_dedup_map = PyDict_New();
  if (unlikely(!tuple_dedup_map)) return -1;
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1693};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_x};
    __pyx_mstate_global->__pyx_codeobj_tab[0] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_lambda, __pyx_mstate->__pyx_kp_b_iso88591_j_j_MY, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[0])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[1] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[1])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[2] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[2])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[3] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[3])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[4] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[4])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 198};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_in, __pyx_mstate->__pyx_n_u_outlen, __pyx_mstate->__pyx_n_u_in_bytes, __pyx_mstate->__pyx_n_u_in_mailbox, __pyx_mstate->__pyx_n_u_out_mailbox, __pyx_mstate->__pyx_n_u_rc, __pyx_mstate->__pyx_n_u_out};
    __pyx_mstate_global->__pyx_codeobj_tab[5] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_query, __pyx_mstate->__pyx_kp_b_iso88591_A_5_31A_5Qa_Qd_Cq_31_q_a_Fa_Ba_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[5])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 221};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_in, __pyx_mstate->__pyx_n_u_outlen, __pyx_mstate->__pyx_n_u_wr_id, __pyx_mstate->__pyx_n_u_cmd_comp, __pyx_mstate->__pyx_n_u_in_bytes, __pyx_mstate->__pyx_n_u_in_mailbox, __pyx_mstate->__pyx_n_u_rc};
    __pyx_mstate_global->__pyx_codeobj_tab[6] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_query_async, __pyx_mstate->__pyx_kp_b_iso88591_A_5_31A_1D_l_Qa_4G81_q_a_Fa, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[6])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 242};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_in, __pyx_mstate->__pyx_n_u_outlen, __pyx_mstate->__pyx_n_u_in_bytes, __pyx_mstate->__pyx_n_u_in_mailbox, __pyx_mstate->__pyx_n_u_out_mailbox, __pyx_mstate->__pyx_n_u_rc, __pyx_mstate->__pyx_n_u_out};
    __pyx_mstate_global->__pyx_codeobj_tab[7] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_modify, __pyx_mstate->__pyx_kp_b_iso88591_A_5_31A_5Qa_at6_S_4A_q_a_Gq_Ba_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[7])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 284};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[8] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_close, __pyx_mstate->__pyx_kp_b_iso88591_A_4uCq_t1_G6_1D_7t1_1D_q_a_J_q_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[8])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[9] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[9])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[10] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[10])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 319};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_comp_mask, __pyx_mstate->__pyx_n_u_dv_attr, __pyx_mstate->__pyx_n_u_rc};
    __pyx_mstate_global->__pyx_codeobj_tab[11] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_query_mlx5_device, __pyx_mstate->__pyx_kp_b_iso88591_1_q_T_1_7q_A_4A_8_31_4A_4A_9_7q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[11])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 350};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_ctx, __pyx_mstate->__pyx_n_u_port_num, __pyx_mstate->__pyx_n_u_dv_attr, __pyx_mstate->__pyx_n_u_rc};
    __pyx_mstate_global->__pyx_codeobj_tab[12] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_query_mlx5_port, __pyx_mstate->__pyx_kp_b_iso88591_A_Zz_3c_B_3lRSS_a_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[12])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 358};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_ctx, __pyx_mstate->__pyx_n_u_qpn, __pyx_mstate->__pyx_n_u_rc};
    __pyx_mstate_global->__pyx_codeobj_tab[13] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_reserved_qpn_alloc, __pyx_mstate->__pyx_kp_b_iso88591_A_Zq_3c_J_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[13])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 371};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_ctx, __pyx_mstate->__pyx_n_u_qpn, __pyx_mstate->__pyx_n_u_rc};
    __pyx_mstate_global->__pyx_codeobj_tab[14] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_reserved_qpn_dealloc, __pyx_mstate->__pyx_kp_b_iso88591_A_1Cz_3c_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[14])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 382};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_ctx, __pyx_mstate->__pyx_n_u_login_attr, __pyx_mstate->__pyx_n_u_rc};
    __pyx_mstate_global->__pyx_codeobj_tab[15] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_crypto_login, __pyx_mstate->__pyx_kp_b_iso88591_A_1Cz_A_3c_Na, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[15])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 395};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_ctx, __pyx_mstate->__pyx_n_u_state, __pyx_mstate->__pyx_n_u_rc};
    __pyx_mstate_global->__pyx_codeobj_tab[16] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_query_login_state, __pyx_mstate->__pyx_kp_b_iso88591_A_q_Qa_3c_WWX_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[16])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 408};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_ctx, __pyx_mstate->__pyx_n_u_rc};
    __pyx_mstate_global->__pyx_codeobj_tab[17] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_crypto_logout, __pyx_mstate->__pyx_kp_b_iso88591_A_AS_3c_SST, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[17])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 418};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_in, __pyx_mstate->__pyx_n_u_outlen, __pyx_mstate->__pyx_n_u_in_bytes, __pyx_mstate->__pyx_n_u_in_mailbox, __pyx_mstate->__pyx_n_u_out_mailbox, __pyx_mstate->__pyx_n_u_rc, __pyx_mstate->__pyx_n_u_out};
    __pyx_mstate_global->__pyx_codeobj_tab[18] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_devx_general_cmd, __pyx_mstate->__pyx_kp_b_iso88591_A_5_31A_5Qa_q_Jl_Qa_5Q_q_a_Fa_Ba, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[18])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 442};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_ctx, __pyx_mstate->__pyx_n_u_device_timestamp, __pyx_mstate->__pyx_n_u_clock_info, __pyx_mstate->__pyx_n_u_rc, __pyx_mstate->__pyx_n_u_ns_time};
    __pyx_mstate_global->__pyx_codeobj_tab[19] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_device_timestamp_to_ns, __pyx_mstate->__pyx_kp_b_iso88591_A_V1Cq_Qc_1_3c_DA_A_AQ_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[19])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 462};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_vector, __pyx_mstate->__pyx_n_u_eqn, __pyx_mstate->__pyx_n_u_rc};
    __pyx_mstate_global->__pyx_codeobj_tab[20] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_devx_query_eqn, __pyx_mstate->__pyx_kp_b_iso88591_A_Qd_HAQ_1_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[20])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 474};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_length, __pyx_mstate->__pyx_n_u_buffer, __pyx_mstate->__pyx_n_u_rc, __pyx_mstate->__pyx_n_u_buffer_str};
    __pyx_mstate_global->__pyx_codeobj_tab[21] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_get_data_direct_sysfs_path, __pyx_mstate->__pyx_kp_b_iso88591_0_IV1Cq_7_Q_Qa_1_j_1_I_S_wa_AQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[21])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 504};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[22] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_close, __pyx_mstate->__pyx_kp_b_iso88591_A_4y_1_1D_d_d_t1_q_uF, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[22])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[23] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[23])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[24] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[24])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[25] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[25])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[26] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[26])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[27] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[27])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[28] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[28])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[29] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[29])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[30] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[30])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[31] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[31])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[32] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[32])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 863};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_dst, __pyx_mstate->__pyx_n_u_masks};
    __pyx_mstate_global->__pyx_codeobj_tab[33] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_get_comp_mask, __pyx_mstate->__pyx_kp_b_iso88591_A_2EQ_7s_1_A_1_2EQ_1_11A_A_C_a_4, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[33])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 880};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_ah, __pyx_mstate->__pyx_n_u_remote_dctn, __pyx_mstate->__pyx_n_u_remote_dc_key};
    __pyx_mstate_global->__pyx_codeobj_tab[34] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_wr_set_dc_addr, __pyx_mstate->__pyx_kp_b_iso88591_A_q_A_5_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[34])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 890};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_wqe, __pyx_mstate->__pyx_n_u_wqe_ptr};
    __pyx_mstate_global->__pyx_codeobj_tab[35] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_wr_raw_wqe, __pyx_mstate->__pyx_kp_b_iso88591_A_Yl_Q_C_1D, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[35])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 898};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_mkey, __pyx_mstate->__pyx_n_u_access_flags, __pyx_mstate->__pyx_n_u_repeat_count, __pyx_mstate->__pyx_n_u_mr_interleaved_lst, __pyx_mstate->__pyx_n_u_num_interleaved, __pyx_mstate->__pyx_n_u_mr_interleaved_p};
    __pyx_mstate_global->__pyx_codeobj_tab[36] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_wr_mr_interleaved, __pyx_mstate->__pyx_kp_b_iso88591_A_Qa_vQc1A_1_Cq_Qa_4A_3_B_4q_nA, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[36])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 919};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_mkey, __pyx_mstate->__pyx_n_u_access_flags, __pyx_mstate->__pyx_n_u_sge_list, __pyx_mstate->__pyx_n_u_num_sges, __pyx_mstate->__pyx_n_u_sge_p};
    __pyx_mstate_global->__pyx_codeobj_tab[37] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_wr_mr_list, __pyx_mstate->__pyx_kp_b_iso88591_A_3aq_F_3ir_6_A_Qa_QgZq_C_1D_Zq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[37])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 935};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_mkey, __pyx_mstate->__pyx_n_u_num_setters, __pyx_mstate->__pyx_n_u_mkey_config};
    __pyx_mstate_global->__pyx_codeobj_tab[38] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_wr_mkey_configure, __pyx_mstate->__pyx_kp_b_iso88591_A_3_B_4q_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[38])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 947};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_access_flags};
    __pyx_mstate_global->__pyx_codeobj_tab[39] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_wr_set_mkey_access_flags, __pyx_mstate->__pyx_kp_b_iso88591_A_I_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[39])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 955};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_sge_list, __pyx_mstate->__pyx_n_u_num_sges, __pyx_mstate->__pyx_n_u_sge_p};
    __pyx_mstate_global->__pyx_codeobj_tab[40] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_wr_set_mkey_layout_list, __pyx_mstate->__pyx_kp_b_iso88591_A_3aq_F_3ir_6_A_Qa_QgZq_H_Q_4A_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[40])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 969};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_repeat_count, __pyx_mstate->__pyx_n_u_mr_interleaved_lst, __pyx_mstate->__pyx_n_u_num_interleaved, __pyx_mstate->__pyx_n_u_mr_interleaved_p};
    __pyx_mstate_global->__pyx_codeobj_tab[41] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_wr_set_mkey_layout_interleaved, __pyx_mstate->__pyx_kp_b_iso88591_A_Qa_vQc1A_1_Cq_Qa_4A_0_3OqPTTU1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[41])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 986};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_attr};
    __pyx_mstate_global->__pyx_codeobj_tab[42] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_wr_set_mkey_crypto, __pyx_mstate->__pyx_kp_b_iso88591_A_C_C1D_d, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[42])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 994};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_block_attr};
    __pyx_mstate_global->__pyx_codeobj_tab[43] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_wr_set_mkey_sig_block, __pyx_mstate->__pyx_kp_b_iso88591_A_s_Fat1_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[43])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {6, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1002};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_dest_lkey, __pyx_mstate->__pyx_n_u_dest_addr, __pyx_mstate->__pyx_n_u_src_lkey, __pyx_mstate->__pyx_n_u_src_addr, __pyx_mstate->__pyx_n_u_length};
    __pyx_mstate_global->__pyx_codeobj_tab[44] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_wr_memcpy, __pyx_mstate->__pyx_kp_b_iso88591_A_3_4q_Ja, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[44])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1014};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_wr_id, __pyx_mstate->__pyx_n_u_rc};
    __pyx_mstate_global->__pyx_codeobj_tab[45] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_cancel_posted_send_wrs, __pyx_mstate->__pyx_kp_b_iso88591_A_0_3OqPTTU12_3b_A_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[45])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1027};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_ah, __pyx_mstate->__pyx_n_u_remote_dctn, __pyx_mstate->__pyx_n_u_remote_dc_key, __pyx_mstate->__pyx_n_u_stream_id};
    __pyx_mstate_global->__pyx_codeobj_tab[46] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_wr_set_dc_addr_stream, __pyx_mstate->__pyx_kp_b_iso88591_A_s_Fat1_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[46])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1039};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_qp, __pyx_mstate->__pyx_n_u_port_num, __pyx_mstate->__pyx_n_u_active_port_num, __pyx_mstate->__pyx_n_u_rc};
    __pyx_mstate_global->__pyx_codeobj_tab[47] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_query_lag_port, __pyx_mstate->__pyx_kp_b_iso88591_A_5_1A_3c_9_C_z, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[47])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1054};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_qp, __pyx_mstate->__pyx_n_u_port_num, __pyx_mstate->__pyx_n_u_rc};
    __pyx_mstate_global->__pyx_codeobj_tab[48] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_modify_lag_port, __pyx_mstate->__pyx_kp_b_iso88591_A_E_3c_A_C_RS, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[48])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1066};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_qp, __pyx_mstate->__pyx_n_u_req_sched_leaf, __pyx_mstate->__pyx_n_u_resp_sched_leaf, __pyx_mstate->__pyx_n_u_req_se, __pyx_mstate->__pyx_n_u_resp_se, __pyx_mstate->__pyx_n_u_rc};
    __pyx_mstate_global->__pyx_codeobj_tab[49] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_modify_qp_sched_elem, __pyx_mstate->__pyx_kp_b_iso88591_ACD_B_0EQ_1Be81_3c_2S_YYZ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[49])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1081};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_qp, __pyx_mstate->__pyx_n_u_udp_sport, __pyx_mstate->__pyx_n_u_rc};
    __pyx_mstate_global->__pyx_codeobj_tab[50] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_modify_udp_sport, __pyx_mstate->__pyx_kp_b_iso88591_A_2U_3c_1_r_Kq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[50])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1093};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_ah, __pyx_mstate->__pyx_n_u_qp_num, __pyx_mstate->__pyx_n_u_rc};
    __pyx_mstate_global->__pyx_codeobj_tab[51] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_map_ah_to_qp, __pyx_mstate->__pyx_kp_b_iso88591_A_1Be1_3c_Qj, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[51])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1105};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_qp, __pyx_mstate->__pyx_n_u_stream_id, __pyx_mstate->__pyx_n_u_rc};
    __pyx_mstate_global->__pyx_codeobj_tab[52] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_modify_dci_stream_channel_id, __pyx_mstate->__pyx_kp_b_iso88591_A_2U_3c_r_Kq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[52])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[53] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[53])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[54] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[54])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[55] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[55])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[56] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[56])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[57] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[57])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[58] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[58])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1225};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_qp_types, __pyx_mstate->__pyx_n_u_numeric_types, __pyx_mstate->__pyx_n_u_qpts_str, __pyx_mstate->__pyx_n_u_qpts, __pyx_mstate->__pyx_n_u_t};
    __pyx_mstate_global->__pyx_codeobj_tab[59] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_qpts_to_str, __pyx_mstate->__pyx_kp_b_iso88591_A_q_g_1DA_a_T_a_Bc_Ba_AS_9Cq_83, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[59])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1240};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_bits, __pyx_mstate->__pyx_n_u_values, __pyx_mstate->__pyx_n_u_numeric_bits, __pyx_mstate->__pyx_n_u_res, __pyx_mstate->__pyx_n_u_t};
    __pyx_mstate_global->__pyx_codeobj_tab[60] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_bitmask_to_str, __pyx_mstate->__pyx_kp_b_iso88591_1_V5_2Rq_6_Rq_A_5_1_3c_BgWAQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[60])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1252};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_mask, __pyx_mstate->__pyx_n_u_l};
    __pyx_mstate_global->__pyx_codeobj_tab[61] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_context_comp_mask_to_str, __pyx_mstate->__pyx_kp_b_iso88591_1_a_a_2_Q_4A_4A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[61])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1263};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_flags, __pyx_mstate->__pyx_n_u_l};
    __pyx_mstate_global->__pyx_codeobj_tab[62] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_context_flags_to_str, __pyx_mstate->__pyx_kp_b_iso88591_q_0_1_0_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[62])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1275};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_swps, __pyx_mstate->__pyx_n_u_l};
    __pyx_mstate_global->__pyx_codeobj_tab[63] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_swp_to_str, __pyx_mstate->__pyx_kp_b_iso88591_Q_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[63])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1282};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_cqe, __pyx_mstate->__pyx_n_u_l};
    __pyx_mstate_global->__pyx_codeobj_tab[64] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_cqe_comp_to_str, __pyx_mstate->__pyx_kp_b_iso88591_0_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[64])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1289};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_tun, __pyx_mstate->__pyx_n_u_l};
    __pyx_mstate_global->__pyx_codeobj_tab[65] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_tunnel_offloads_to_str, __pyx_mstate->__pyx_kp_b_iso88591_1_9_A_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[65])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1300};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_dctype, __pyx_mstate->__pyx_n_u_l};
    __pyx_mstate_global->__pyx_codeobj_tab[66] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_dc_type_to_str, __pyx_mstate->__pyx_kp_b_iso88591_a_q_was, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[66])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1308};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_flags, __pyx_mstate->__pyx_n_u_l};
    __pyx_mstate_global->__pyx_codeobj_tab[67] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_qp_comp_mask_to_str, __pyx_mstate->__pyx_kp_b_iso88591_7q_6a_31, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[67])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1316};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_flags, __pyx_mstate->__pyx_n_u_l};
    __pyx_mstate_global->__pyx_codeobj_tab[68] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_qp_create_flags_to_str, __pyx_mstate->__pyx_kp_b_iso88591_q_6a_4A_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[68])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1330};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_flags, __pyx_mstate->__pyx_n_u_l};
    __pyx_mstate_global->__pyx_codeobj_tab[69] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_send_ops_flags_to_str, __pyx_mstate->__pyx_kp_b_iso88591_q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[69])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1348};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[70] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_close, __pyx_mstate->__pyx_kp_b_iso88591_A_4uCq_at1_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[70])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[71] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[71])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[72] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[72])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1401};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[73] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_close, __pyx_mstate->__pyx_kp_b_iso88591_A_4t3a_Qd_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[73])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[74] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[74])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[75] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[75])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1421};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[76] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_close, __pyx_mstate->__pyx_kp_b_iso88591_A_4uCq_1D_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[76])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[77] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[77])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[78] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[78])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1473};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_length};
    __pyx_mstate_global->__pyx_codeobj_tab[79] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_unmap, __pyx_mstate->__pyx_kp_b_iso88591_A_at7, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[79])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1498};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_data, __pyx_mstate->__pyx_n_u_length};
    __pyx_mstate_global->__pyx_codeobj_tab[80] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_write, __pyx_mstate->__pyx_kp_b_iso88591_A_AQ_4whivQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[80])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1507};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_length, __pyx_mstate->__pyx_n_u_data, __pyx_mstate->__pyx_n_u_res};
    __pyx_mstate_global->__pyx_codeobj_tab[81] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_read, __pyx_mstate->__pyx_kp_b_iso88591_A_G1_y_Rq_AQ_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[81])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1519};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[82] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_close, __pyx_mstate->__pyx_kp_b_iso88591_A_HA, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[82])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[83] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[83])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[84] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[84])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 0, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1534};
    PyObject* const varnames[] = {0};
    __pyx_mstate_global->__pyx_codeobj_tab[85] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_sizeof, __pyx_mstate->__pyx_kp_b_iso88591_A_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[85])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1538};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_addr};
    __pyx_mstate_global->__pyx_codeobj_tab[86] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_copy_to_buffer, __pyx_mstate->__pyx_kp_b_iso88591_A_ax_Jd, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[86])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1544};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[87] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_close, __pyx_mstate->__pyx_kp_b_iso88591_A_4y_1_Q_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[87])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[88] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[88])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[89] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[89])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {9, 0, 0, 9, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1578};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pi, __pyx_mstate->__pyx_n_u_opcode, __pyx_mstate->__pyx_n_u_opmod, __pyx_mstate->__pyx_n_u_qp_num, __pyx_mstate->__pyx_n_u_fm_ce_se, __pyx_mstate->__pyx_n_u_ds, __pyx_mstate->__pyx_n_u_signature, __pyx_mstate->__pyx_n_u_imm};
    __pyx_mstate_global->__pyx_codeobj_tab[90] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_set_ctrl_seg, __pyx_mstate->__pyx_kp_b_iso88591_A_a_7t_T_hj_Kq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[90])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 0, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1582};
    PyObject* const varnames[] = {0};
    __pyx_mstate_global->__pyx_codeobj_tab[91] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_sizeof, __pyx_mstate->__pyx_kp_b_iso88591_A_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[91])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[92] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[92])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[93] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[93])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 0, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1636};
    PyObject* const varnames[] = {0};
    __pyx_mstate_global->__pyx_codeobj_tab[94] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_sizeof, __pyx_mstate->__pyx_kp_b_iso88591_A_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[94])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1647};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_length, __pyx_mstate->__pyx_n_u_lkey, __pyx_mstate->__pyx_n_u_addr};
    __pyx_mstate_global->__pyx_codeobj_tab[95] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_set_data_seg, __pyx_mstate->__pyx_kp_b_iso88591_A_a_7t1_vQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[95])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[96] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[96])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[97] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[97])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1719};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[98] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_close, __pyx_mstate->__pyx_kp_b_iso88591_A_4vS_t4q_AT, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[98])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[99] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[99])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[100] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[100])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1775};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[101] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_close, __pyx_mstate->__pyx_kp_b_iso88591_A_4vS_t1_G6_4q_1_a_4t1_Q_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[101])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[102] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[102])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[103] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[103])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1808};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_dump_format, __pyx_mstate->__pyx_n_u_str_2, __pyx_mstate->__pyx_n_u_i};
    __pyx_mstate_global->__pyx_codeobj_tab[104] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_dump, __pyx_mstate->__pyx_kp_b_iso88591_A_a_a_E_as_a_gQgR_e1A_R_e1Bb_R_e, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[104])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1818};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_i};
    __pyx_mstate_global->__pyx_codeobj_tab[105] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_is_empty, __pyx_mstate->__pyx_kp_b_iso88591_A_E_aq_wb_4uAT_A_q_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[105])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[106] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[106])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[107] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[107])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1892};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[108] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_close, __pyx_mstate->__pyx_kp_b_iso88591_A_4_3a_q_A_q_a_H_N, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[108])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[109] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[109])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[110] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[110])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1946};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[111] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_close, __pyx_mstate->__pyx_kp_b_iso88591_A_4t3a_vQa_4q_q_a_MQ_a_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[111])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[112] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[112])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[113] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[113])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1972};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_cmd_resp_len, __pyx_mstate->__pyx_n_u_size, __pyx_mstate->__pyx_n_u_cmd_resp, __pyx_mstate->__pyx_n_u_rc, __pyx_mstate->__pyx_n_u_wr_id, __pyx_mstate->__pyx_n_u_out_data};
    __pyx_mstate_global->__pyx_codeobj_tab[114] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_get_async_cmd_comp, __pyx_mstate->__pyx_kp_b_iso88591_a_2_4q_Qa_at_j_3c_a_A_89Ba_AQ_w, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[114])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1994};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[115] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_pyverbs_providers_mlx5_mlx5dv_py, __pyx_mstate->__pyx_n_u_close, __pyx_mstate->__pyx_kp_b_iso88591_A_4z_A_vQa_1D_A_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[115])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[116] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[116])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[117] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_tree_fragment, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_mstate->__pyx_kp_b_iso88591_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[117])) goto bad;
  }
  Py_DECREF(tuple_dedup_map);
  return 0;
  bad:
  Py_DECREF(tuple_dedup_map);
  return -1;
}
/* #### Code section: init_globals ### */

static int __Pyx_InitGlobals(void) {
  /* PythonCompatibility.init */
  if (likely(__Pyx_init_co_variables() == 0)); else
  
  if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error)

  /* CommonTypesMetaclass.init */
  if (likely(__pyx_CommonTypesMetaclass_init(__pyx_m) == 0)); else
  
  if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error)

  /* CachedMethodType.init */
  #if CYTHON_COMPILING_IN_LIMITED_API
  {
      PyObject *typesModule=NULL;
      typesModule = PyImport_ImportModule("types");
      if (typesModule) {
          __pyx_mstate_global->__Pyx_CachedMethodType = PyObject_GetAttrString(typesModule, "MethodType");
          Py_DECREF(typesModule);
      }
  } // error handling follows
  #endif
  
  if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error)

  /* CythonFunctionShared.init */
  if (likely(__pyx_CyFunction_init(__pyx_m) == 0)); else
  
  if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error)

  return 0;
  __pyx_L1_error:;
  return -1;
}
/* #### Code section: cleanup_globals ### */
/* #### Code section: cleanup_module ### */
/* #### Code section: main_method ### */
/* #### Code section: utility_code_pragmas ### */
#ifdef _MSC_VER
#pragma warning( push )
/* Warning 4127: conditional expression is constant
 * Cython uses constant conditional expressions to allow in inline functions to be optimized at
 * compile-time, so this warning is not useful
 */
#pragma warning( disable : 4127 )
#endif



/* #### Code section: utility_code_def ### */

/* --- Runtime support code --- */
/* Refnanny */
#if CYTHON_REFNANNY
static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
    PyObject *m = NULL, *p = NULL;
    void *r = NULL;
    m = PyImport_ImportModule(modname);
    if (!m) goto end;
    p = PyObject_GetAttrString(m, "RefNannyAPI");
    if (!p) goto end;
    r = PyLong_AsVoidPtr(p);
end:
    Py_XDECREF(p);
    Py_XDECREF(m);
    return (__Pyx_RefNannyAPIStruct *)r;
}
#endif

/* PyErrExceptionMatches (used by PyObjectGetAttrStrNoError) */
#if CYTHON_FAST_THREAD_STATE
static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
    Py_ssize_t i, n;
    n = PyTuple_GET_SIZE(tuple);
    for (i=0; i<n; i++) {
        if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
    }
    for (i=0; i<n; i++) {
        if (__Pyx_PyErr_GivenExceptionMatches(exc_type, PyTuple_GET_ITEM(tuple, i))) return 1;
    }
    return 0;
}
static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) {
    int result;
    PyObject *exc_type;
#if PY_VERSION_HEX >= 0x030C00A6
    PyObject *current_exception = tstate->current_exception;
    if (unlikely(!current_exception)) return 0;
    exc_type = (PyObject*) Py_TYPE(current_exception);
    if (exc_type == err) return 1;
#else
    exc_type = tstate->curexc_type;
    if (exc_type == err) return 1;
    if (unlikely(!exc_type)) return 0;
#endif
    #if CYTHON_AVOID_BORROWED_REFS
    Py_INCREF(exc_type);
    #endif
    if (unlikely(PyTuple_Check(err))) {
        result = __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err);
    } else {
        result = __Pyx_PyErr_GivenExceptionMatches(exc_type, err);
    }
    #if CYTHON_AVOID_BORROWED_REFS
    Py_DECREF(exc_type);
    #endif
    return result;
}
#endif

/* PyErrFetchRestore (used by PyObjectGetAttrStrNoError) */
#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
#if PY_VERSION_HEX >= 0x030C00A6
    PyObject *tmp_value;
    assert(type == NULL || (value != NULL && type == (PyObject*) Py_TYPE(value)));
    if (value) {
        #if CYTHON_COMPILING_IN_CPYTHON
        if (unlikely(((PyBaseExceptionObject*) value)->traceback != tb))
        #endif
            PyException_SetTraceback(value, tb);
    }
    tmp_value = tstate->current_exception;
    tstate->current_exception = value;
    Py_XDECREF(tmp_value);
    Py_XDECREF(type);
    Py_XDECREF(tb);
#else
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    tmp_type = tstate->curexc_type;
    tmp_value = tstate->curexc_value;
    tmp_tb = tstate->curexc_traceback;
    tstate->curexc_type = type;
    tstate->curexc_value = value;
    tstate->curexc_traceback = tb;
    Py_XDECREF(tmp_type);
    Py_XDECREF(tmp_value);
    Py_XDECREF(tmp_tb);
#endif
}
static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
#if PY_VERSION_HEX >= 0x030C00A6
    PyObject* exc_value;
    exc_value = tstate->current_exception;
    tstate->current_exception = 0;
    *value = exc_value;
    *type = NULL;
    *tb = NULL;
    if (exc_value) {
        *type = (PyObject*) Py_TYPE(exc_value);
        Py_INCREF(*type);
        #if CYTHON_COMPILING_IN_CPYTHON
        *tb = ((PyBaseExceptionObject*) exc_value)->traceback;
        Py_XINCREF(*tb);
        #else
        *tb = PyException_GetTraceback(exc_value);
        #endif
    }
#else
    *type = tstate->curexc_type;
    *value = tstate->curexc_value;
    *tb = tstate->curexc_traceback;
    tstate->curexc_type = 0;
    tstate->curexc_value = 0;
    tstate->curexc_traceback = 0;
#endif
}
#endif

/* PyObjectGetAttrStr (used by PyObjectGetAttrStrNoError) */
#if CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) {
    PyTypeObject* tp = Py_TYPE(obj);
    if (likely(tp->tp_getattro))
        return tp->tp_getattro(obj, attr_name);
    return PyObject_GetAttr(obj, attr_name);
}
#endif

/* PyObjectGetAttrStrNoError (used by GetBuiltinName) */
#if __PYX_LIMITED_VERSION_HEX < 0x030d0000
static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
        __Pyx_PyErr_Clear();
}
#endif
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) {
    PyObject *result;
#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000
    (void) PyObject_GetOptionalAttr(obj, attr_name, &result);
    return result;
#else
#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS
    PyTypeObject* tp = Py_TYPE(obj);
    if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) {
        return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1);
    }
#endif
    result = __Pyx_PyObject_GetAttrStr(obj, attr_name);
    if (unlikely(!result)) {
        __Pyx_PyObject_GetAttrStr_ClearAttributeError();
    }
    return result;
#endif
}

/* GetBuiltinName */
static PyObject *__Pyx_GetBuiltinName(PyObject *name) {
    PyObject* result = __Pyx_PyObject_GetAttrStrNoError(__pyx_mstate_global->__pyx_b, name);
    if (unlikely(!result) && !PyErr_Occurred()) {
        PyErr_Format(PyExc_NameError,
            "name '%U' is not defined", name);
    }
    return result;
}

/* HasAttr (used by ImportImpl) */
#if __PYX_LIMITED_VERSION_HEX < 0x030d0000
static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
    PyObject *r;
    if (unlikely(!PyUnicode_Check(n))) {
        PyErr_SetString(PyExc_TypeError,
                        "hasattr(): attribute name must be string");
        return -1;
    }
    r = __Pyx_PyObject_GetAttrStrNoError(o, n);
    if (!r) {
        return (unlikely(PyErr_Occurred())) ? -1 : 0;
    } else {
        Py_DECREF(r);
        return 1;
    }
}
#endif

/* PyObjectCall (used by PyObjectFastCall) */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
    PyObject *result;
    ternaryfunc call = Py_TYPE(func)->tp_call;
    if (unlikely(!call))
        return PyObject_Call(func, arg, kw);
    if (unlikely(Py_EnterRecursiveCall(" while calling a Python object")))
        return NULL;
    result = (*call)(func, arg, kw);
    Py_LeaveRecursiveCall();
    if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
        PyErr_SetString(
            PyExc_SystemError,
            "NULL result without error in PyObject_Call");
    }
    return result;
}
#endif

/* PyObjectCallMethO (used by PyObjectFastCall) */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {
    PyObject *self, *result;
    PyCFunction cfunc;
    cfunc = __Pyx_CyOrPyCFunction_GET_FUNCTION(func);
    self = __Pyx_CyOrPyCFunction_GET_SELF(func);
    if (unlikely(Py_EnterRecursiveCall(" while calling a Python object")))
        return NULL;
    result = cfunc(self, arg);
    Py_LeaveRecursiveCall();
    if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
        PyErr_SetString(
            PyExc_SystemError,
            "NULL result without error in PyObject_Call");
    }
    return result;
}
#endif

/* PyObjectFastCall (used by PyObjectCallOneArg) */
#if PY_VERSION_HEX < 0x03090000 || CYTHON_COMPILING_IN_LIMITED_API
static PyObject* __Pyx_PyObject_FastCall_fallback(PyObject *func, PyObject * const*args, size_t nargs, PyObject *kwargs) {
    PyObject *argstuple;
    PyObject *result = 0;
    size_t i;
    argstuple = PyTuple_New((Py_ssize_t)nargs);
    if (unlikely(!argstuple)) return NULL;
    for (i = 0; i < nargs; i++) {
        Py_INCREF(args[i]);
        if (__Pyx_PyTuple_SET_ITEM(argstuple, (Py_ssize_t)i, args[i]) != (0)) goto bad;
    }
    result = __Pyx_PyObject_Call(func, argstuple, kwargs);
  bad:
    Py_DECREF(argstuple);
    return result;
}
#endif
#if CYTHON_VECTORCALL && !CYTHON_COMPILING_IN_LIMITED_API
  #if PY_VERSION_HEX < 0x03090000
    #define __Pyx_PyVectorcall_Function(callable) _PyVectorcall_Function(callable)
  #elif CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE vectorcallfunc __Pyx_PyVectorcall_Function(PyObject *callable) {
    PyTypeObject *tp = Py_TYPE(callable);
    #if defined(__Pyx_CyFunction_USED)
    if (__Pyx_CyFunction_CheckExact(callable)) {
        return __Pyx_CyFunction_func_vectorcall(callable);
    }
    #endif
    if (!PyType_HasFeature(tp, Py_TPFLAGS_HAVE_VECTORCALL)) {
        return NULL;
    }
    assert(PyCallable_Check(callable));
    Py_ssize_t offset = tp->tp_vectorcall_offset;
    assert(offset > 0);
    vectorcallfunc ptr;
    memcpy(&ptr, (char *) callable + offset, sizeof(ptr));
    return ptr;
}
  #else
    #define __Pyx_PyVectorcall_Function(callable) PyVectorcall_Function(callable)
  #endif
#endif
static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject *const *args, size_t _nargs, PyObject *kwargs) {
    Py_ssize_t nargs = __Pyx_PyVectorcall_NARGS(_nargs);
#if CYTHON_COMPILING_IN_CPYTHON
    if (nargs == 0 && kwargs == NULL) {
        if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_NOARGS))
            return __Pyx_PyObject_CallMethO(func, NULL);
    }
    else if (nargs == 1 && kwargs == NULL) {
        if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_O))
            return __Pyx_PyObject_CallMethO(func, args[0]);
    }
#endif
    if (kwargs == NULL) {
        #if CYTHON_VECTORCALL
          #if CYTHON_COMPILING_IN_LIMITED_API
            return PyObject_Vectorcall(func, args, _nargs, NULL);
          #else
            vectorcallfunc f = __Pyx_PyVectorcall_Function(func);
            if (f) {
                return f(func, args, _nargs, NULL);
            }
          #endif
        #endif
    }
    if (nargs == 0) {
        return __Pyx_PyObject_Call(func, __pyx_mstate_global->__pyx_empty_tuple, kwargs);
    }
    #if PY_VERSION_HEX >= 0x03090000 && !CYTHON_COMPILING_IN_LIMITED_API
    return PyObject_VectorcallDict(func, args, (size_t)nargs, kwargs);
    #else
    return __Pyx_PyObject_FastCall_fallback(func, args, (size_t)nargs, kwargs);
    #endif
}

/* PyObjectCallOneArg (used by ImportImpl) */
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
    PyObject *args[2] = {NULL, arg};
    return __Pyx_PyObject_FastCall(func, args+1, 1 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET);
}

/* TupleAndListFromArray (used by ImportImpl) */
#if !CYTHON_COMPILING_IN_CPYTHON && CYTHON_METH_FASTCALL
static CYTHON_INLINE PyObject *
__Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n)
{
    PyObject *res;
    Py_ssize_t i;
    if (n <= 0) {
        return __Pyx_NewRef(__pyx_mstate_global->__pyx_empty_tuple);
    }
    res = PyTuple_New(n);
    if (unlikely(res == NULL)) return NULL;
    for (i = 0; i < n; i++) {
        if (unlikely(__Pyx_PyTuple_SET_ITEM(res, i, src[i]) < (0))) {
            Py_DECREF(res);
            return NULL;
        }
        Py_INCREF(src[i]);
    }
    return res;
}
#elif CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE void __Pyx_copy_object_array(PyObject *const *CYTHON_RESTRICT src, PyObject** CYTHON_RESTRICT dest, Py_ssize_t length) {
    PyObject *v;
    Py_ssize_t i;
    for (i = 0; i < length; i++) {
        v = dest[i] = src[i];
        Py_INCREF(v);
    }
}
static CYTHON_INLINE PyObject *
__Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n)
{
    PyObject *res;
    if (n <= 0) {
        return __Pyx_NewRef(__pyx_mstate_global->__pyx_empty_tuple);
    }
    res = PyTuple_New(n);
    if (unlikely(res == NULL)) return NULL;
    __Pyx_copy_object_array(src, ((PyTupleObject*)res)->ob_item, n);
    return res;
}
static CYTHON_INLINE PyObject *
__Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n)
{
    PyObject *res;
    if (n <= 0) {
        return PyList_New(0);
    }
    res = PyList_New(n);
    if (unlikely(res == NULL)) return NULL;
    __Pyx_copy_object_array(src, ((PyListObject*)res)->ob_item, n);
    return res;
}
#endif

/* ImportImpl (used by Import) */
static int __Pyx__Import_GetModule(PyObject *qualname, PyObject **module) {
    PyObject *imported_module = PyImport_GetModule(qualname);
    if (unlikely(!imported_module)) {
        *module = NULL;
        if (PyErr_Occurred()) {
            return -1;
        }
        return 0;
    }
    *module = imported_module;
    return 1;
}
static int __Pyx__Import_Lookup(PyObject *qualname, PyObject *const *imported_names, Py_ssize_t len_imported_names, PyObject **module) {
    PyObject *imported_module;
    PyObject *top_level_package_name;
    Py_ssize_t i;
    int status, module_found;
    Py_ssize_t dot_index;
    module_found = __Pyx__Import_GetModule(qualname, &imported_module);
    if (unlikely(!module_found || module_found == -1)) {
        *module = NULL;
        return module_found;
    }
    if (imported_names) {
        for (i = 0; i < len_imported_names; i++) {
            PyObject *imported_name = imported_names[i];
#if __PYX_LIMITED_VERSION_HEX < 0x030d0000
            int has_imported_attribute = PyObject_HasAttr(imported_module, imported_name);
#else
            int has_imported_attribute = PyObject_HasAttrWithError(imported_module, imported_name);
            if (unlikely(has_imported_attribute == -1)) goto error;
#endif
            if (!has_imported_attribute) {
                goto not_found;
            }
        }
        *module = imported_module;
        return 1;
    }
    dot_index = PyUnicode_FindChar(qualname, '.', 0, PY_SSIZE_T_MAX, 1);
    if (dot_index == -1) {
        *module = imported_module;
        return 1;
    }
    if (unlikely(dot_index == -2)) goto error;
    top_level_package_name = PyUnicode_Substring(qualname, 0, dot_index);
    if (unlikely(!top_level_package_name)) goto error;
    Py_DECREF(imported_module);
    status = __Pyx__Import_GetModule(top_level_package_name, module);
    Py_DECREF(top_level_package_name);
    return status;
error:
    Py_DECREF(imported_module);
    *module = NULL;
    return -1;
not_found:
    Py_DECREF(imported_module);
    *module = NULL;
    return 0;
}
static PyObject *__Pyx__Import(PyObject *name, PyObject *const *imported_names, Py_ssize_t len_imported_names, PyObject *qualname, PyObject *moddict, int level) {
    PyObject *module = 0;
    PyObject *empty_dict = 0;
    PyObject *from_list = 0;
    int module_found;
    if (!qualname) {
        qualname = name;
    }
    module_found = __Pyx__Import_Lookup(qualname, imported_names, len_imported_names, &module);
    if (likely(module_found == 1)) {
        return module;
    } else if (unlikely(module_found == -1)) {
        return NULL;
    }
    empty_dict = PyDict_New();
    if (unlikely(!empty_dict))
        goto bad;
    if (imported_names) {
#if CYTHON_COMPILING_IN_CPYTHON
        from_list = __Pyx_PyList_FromArray(imported_names, len_imported_names);
        if (unlikely(!from_list))
            goto bad;
#else
        from_list = PyList_New(len_imported_names);
        if (unlikely(!from_list)) goto bad;
        for (Py_ssize_t i=0; i<len_imported_names; ++i) {
            if (PyList_SetItem(from_list, i, __Pyx_NewRef(imported_names[i])) < 0) goto bad;
        }
#endif
    }
    if (level == -1) {
        const char* package_sep = strchr(__Pyx_MODULE_NAME, '.');
        if (package_sep != (0)) {
            module = PyImport_ImportModuleLevelObject(
                name, moddict, empty_dict, from_list, 1);
            if (unlikely(!module)) {
                if (unlikely(!PyErr_ExceptionMatches(PyExc_ImportError)))
                    goto bad;
                PyErr_Clear();
            }
        }
        level = 0;
    }
    if (!module) {
        module = PyImport_ImportModuleLevelObject(
            name, moddict, empty_dict, from_list, level);
    }
bad:
    Py_XDECREF(from_list);
    Py_XDECREF(empty_dict);
    return module;
}

/* Import */
static PyObject *__Pyx_Import(PyObject *name, PyObject *const *imported_names, Py_ssize_t len_imported_names, PyObject *qualname, int level) {
    return __Pyx__Import(name, imported_names, len_imported_names, qualname, __pyx_mstate_global->__pyx_d, level);
}

/* ImportFrom */
static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
    PyObject* value = __Pyx_PyObject_GetAttrStr(module, name);
    if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) {
        const char* module_name_str = 0;
        PyObject* module_name = 0;
        PyObject* module_dot = 0;
        PyObject* full_name = 0;
        PyErr_Clear();
        module_name_str = PyModule_GetName(module);
        if (unlikely(!module_name_str)) { goto modbad; }
        module_name = PyUnicode_FromString(module_name_str);
        if (unlikely(!module_name)) { goto modbad; }
        module_dot = PyUnicode_Concat(module_name, __pyx_mstate_global->__pyx_kp_u_);
        if (unlikely(!module_dot)) { goto modbad; }
        full_name = PyUnicode_Concat(module_dot, name);
        if (unlikely(!full_name)) { goto modbad; }
        #if (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM  < 0x07030400) ||\
                CYTHON_COMPILING_IN_GRAAL
        {
            PyObject *modules = PyImport_GetModuleDict();
            if (unlikely(!modules))
                goto modbad;
            value = PyObject_GetItem(modules, full_name);
        }
        #else
        value = PyImport_GetModule(full_name);
        #endif
      modbad:
        Py_XDECREF(full_name);
        Py_XDECREF(module_dot);
        Py_XDECREF(module_name);
    }
    if (unlikely(!value)) {
        PyErr_Format(PyExc_ImportError, "cannot import name %S", name);
    }
    return value;
}

/* GetTopmostException (used by SaveResetException) */
#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE
static _PyErr_StackItem *
__Pyx_PyErr_GetTopmostException(PyThreadState *tstate)
{
    _PyErr_StackItem *exc_info = tstate->exc_info;
    while ((exc_info->exc_value == NULL || exc_info->exc_value == Py_None) &&
           exc_info->previous_item != NULL)
    {
        exc_info = exc_info->previous_item;
    }
    return exc_info;
}
#endif

/* SaveResetException */
#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
  #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4
    _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate);
    PyObject *exc_value = exc_info->exc_value;
    if (exc_value == NULL || exc_value == Py_None) {
        *value = NULL;
        *type = NULL;
        *tb = NULL;
    } else {
        *value = exc_value;
        Py_INCREF(*value);
        *type = (PyObject*) Py_TYPE(exc_value);
        Py_INCREF(*type);
        *tb = PyException_GetTraceback(exc_value);
    }
  #elif CYTHON_USE_EXC_INFO_STACK
    _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate);
    *type = exc_info->exc_type;
    *value = exc_info->exc_value;
    *tb = exc_info->exc_traceback;
    Py_XINCREF(*type);
    Py_XINCREF(*value);
    Py_XINCREF(*tb);
  #else
    *type = tstate->exc_type;
    *value = tstate->exc_value;
    *tb = tstate->exc_traceback;
    Py_XINCREF(*type);
    Py_XINCREF(*value);
    Py_XINCREF(*tb);
  #endif
}
static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
  #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4
    _PyErr_StackItem *exc_info = tstate->exc_info;
    PyObject *tmp_value = exc_info->exc_value;
    exc_info->exc_value = value;
    Py_XDECREF(tmp_value);
    Py_XDECREF(type);
    Py_XDECREF(tb);
  #else
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    #if CYTHON_USE_EXC_INFO_STACK
    _PyErr_StackItem *exc_info = tstate->exc_info;
    tmp_type = exc_info->exc_type;
    tmp_value = exc_info->exc_value;
    tmp_tb = exc_info->exc_traceback;
    exc_info->exc_type = type;
    exc_info->exc_value = value;
    exc_info->exc_traceback = tb;
    #else
    tmp_type = tstate->exc_type;
    tmp_value = tstate->exc_value;
    tmp_tb = tstate->exc_traceback;
    tstate->exc_type = type;
    tstate->exc_value = value;
    tstate->exc_traceback = tb;
    #endif
    Py_XDECREF(tmp_type);
    Py_XDECREF(tmp_value);
    Py_XDECREF(tmp_tb);
  #endif
}
#endif

/* GetException */
#if CYTHON_FAST_THREAD_STATE
static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb)
#else
static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
#endif
{
    PyObject *local_type = NULL, *local_value, *local_tb = NULL;
#if CYTHON_FAST_THREAD_STATE
    PyObject *tmp_type, *tmp_value, *tmp_tb;
  #if PY_VERSION_HEX >= 0x030C0000
    local_value = tstate->current_exception;
    tstate->current_exception = 0;
  #else
    local_type = tstate->curexc_type;
    local_value = tstate->curexc_value;
    local_tb = tstate->curexc_traceback;
    tstate->curexc_type = 0;
    tstate->curexc_value = 0;
    tstate->curexc_traceback = 0;
  #endif
#elif __PYX_LIMITED_VERSION_HEX > 0x030C0000
    local_value = PyErr_GetRaisedException();
#else
    PyErr_Fetch(&local_type, &local_value, &local_tb);
#endif
#if __PYX_LIMITED_VERSION_HEX > 0x030C0000
    if (likely(local_value)) {
        local_type = (PyObject*) Py_TYPE(local_value);
        Py_INCREF(local_type);
        local_tb = PyException_GetTraceback(local_value);
    }
#else
    PyErr_NormalizeException(&local_type, &local_value, &local_tb);
#if CYTHON_FAST_THREAD_STATE
    if (unlikely(tstate->curexc_type))
#else
    if (unlikely(PyErr_Occurred()))
#endif
        goto bad;
    if (local_tb) {
        if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
            goto bad;
    }
#endif // __PYX_LIMITED_VERSION_HEX > 0x030C0000
    Py_XINCREF(local_tb);
    Py_XINCREF(local_type);
    Py_XINCREF(local_value);
    *type = local_type;
    *value = local_value;
    *tb = local_tb;
#if CYTHON_FAST_THREAD_STATE
    #if CYTHON_USE_EXC_INFO_STACK
    {
        _PyErr_StackItem *exc_info = tstate->exc_info;
      #if PY_VERSION_HEX >= 0x030B00a4
        tmp_value = exc_info->exc_value;
        exc_info->exc_value = local_value;
        tmp_type = NULL;
        tmp_tb = NULL;
        Py_XDECREF(local_type);
        Py_XDECREF(local_tb);
      #else
        tmp_type = exc_info->exc_type;
        tmp_value = exc_info->exc_value;
        tmp_tb = exc_info->exc_traceback;
        exc_info->exc_type = local_type;
        exc_info->exc_value = local_value;
        exc_info->exc_traceback = local_tb;
      #endif
    }
    #else
    tmp_type = tstate->exc_type;
    tmp_value = tstate->exc_value;
    tmp_tb = tstate->exc_traceback;
    tstate->exc_type = local_type;
    tstate->exc_value = local_value;
    tstate->exc_traceback = local_tb;
    #endif
    Py_XDECREF(tmp_type);
    Py_XDECREF(tmp_value);
    Py_XDECREF(tmp_tb);
#elif __PYX_LIMITED_VERSION_HEX >= 0x030b0000
    PyErr_SetHandledException(local_value);
    Py_XDECREF(local_value);
    Py_XDECREF(local_type);
    Py_XDECREF(local_tb);
#else
    PyErr_SetExcInfo(local_type, local_value, local_tb);
#endif
    return 0;
#if __PYX_LIMITED_VERSION_HEX <= 0x030C0000
bad:
    *type = 0;
    *value = 0;
    *tb = 0;
    Py_XDECREF(local_type);
    Py_XDECREF(local_value);
    Py_XDECREF(local_tb);
    return -1;
#endif
}

/* PyObjectFastCallMethod */
#if !CYTHON_VECTORCALL || PY_VERSION_HEX < 0x03090000
static PyObject *__Pyx_PyObject_FastCallMethod(PyObject *name, PyObject *const *args, size_t nargsf) {
    PyObject *result;
    PyObject *attr = PyObject_GetAttr(args[0], name);
    if (unlikely(!attr))
        return NULL;
    result = __Pyx_PyObject_FastCall(attr, args+1, nargsf - 1);
    Py_DECREF(attr);
    return result;
}
#endif

/* DictGetItem */
#if !CYTHON_COMPILING_IN_PYPY
static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
    PyObject *value;
    if (unlikely(__Pyx_PyDict_GetItemRef(d, key, &value) == 0)) { // no value, no error
        if (unlikely(PyTuple_Check(key))) {
            PyObject* args = PyTuple_Pack(1, key);
            if (likely(args)) {
                PyErr_SetObject(PyExc_KeyError, args);
                Py_DECREF(args);
            }
        } else {
            PyErr_SetObject(PyExc_KeyError, key);
        }
    }
    return value;
}
#endif

/* RaiseException */
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
    PyObject* owned_instance = NULL;
    if (tb == Py_None) {
        tb = 0;
    } else if (tb && !PyTraceBack_Check(tb)) {
        PyErr_SetString(PyExc_TypeError,
            "raise: arg 3 must be a traceback or None");
        goto bad;
    }
    if (value == Py_None)
        value = 0;
    if (PyExceptionInstance_Check(type)) {
        if (value) {
            PyErr_SetString(PyExc_TypeError,
                "instance exception may not have a separate value");
            goto bad;
        }
        value = type;
        type = (PyObject*) Py_TYPE(value);
    } else if (PyExceptionClass_Check(type)) {
        PyObject *instance_class = NULL;
        if (value && PyExceptionInstance_Check(value)) {
            instance_class = (PyObject*) Py_TYPE(value);
            if (instance_class != type) {
                int is_subclass = PyObject_IsSubclass(instance_class, type);
                if (!is_subclass) {
                    instance_class = NULL;
                } else if (unlikely(is_subclass == -1)) {
                    goto bad;
                } else {
                    type = instance_class;
                }
            }
        }
        if (!instance_class) {
            PyObject *args;
            if (!value)
                args = PyTuple_New(0);
            else if (PyTuple_Check(value)) {
                Py_INCREF(value);
                args = value;
            } else
                args = PyTuple_Pack(1, value);
            if (!args)
                goto bad;
            owned_instance = PyObject_Call(type, args, NULL);
            Py_DECREF(args);
            if (!owned_instance)
                goto bad;
            value = owned_instance;
            if (!PyExceptionInstance_Check(value)) {
                PyErr_Format(PyExc_TypeError,
                             "calling %R should have returned an instance of "
                             "BaseException, not %R",
                             type, Py_TYPE(value));
                goto bad;
            }
        }
    } else {
        PyErr_SetString(PyExc_TypeError,
            "raise: exception class must be a subclass of BaseException");
        goto bad;
    }
    if (cause) {
        PyObject *fixed_cause;
        if (cause == Py_None) {
            fixed_cause = NULL;
        } else if (PyExceptionClass_Check(cause)) {
            fixed_cause = PyObject_CallObject(cause, NULL);
            if (fixed_cause == NULL)
                goto bad;
        } else if (PyExceptionInstance_Check(cause)) {
            fixed_cause = cause;
            Py_INCREF(fixed_cause);
        } else {
            PyErr_SetString(PyExc_TypeError,
                            "exception causes must derive from "
                            "BaseException");
            goto bad;
        }
        PyException_SetCause(value, fixed_cause);
    }
    PyErr_SetObject(type, value);
    if (tb) {
#if PY_VERSION_HEX >= 0x030C00A6
        PyException_SetTraceback(value, tb);
#elif CYTHON_FAST_THREAD_STATE
        PyThreadState *tstate = __Pyx_PyThreadState_Current;
        PyObject* tmp_tb = tstate->curexc_traceback;
        if (tb != tmp_tb) {
            Py_INCREF(tb);
            tstate->curexc_traceback = tb;
            Py_XDECREF(tmp_tb);
        }
#else
        PyObject *tmp_type, *tmp_value, *tmp_tb;
        PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb);
        Py_INCREF(tb);
        PyErr_Restore(tmp_type, tmp_value, tb);
        Py_XDECREF(tmp_tb);
#endif
    }
bad:
    Py_XDECREF(owned_instance);
    return;
}

/* BytesEquals (used by UnicodeEquals) */
static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_GRAAL ||\
        !(CYTHON_ASSUME_SAFE_SIZE && CYTHON_ASSUME_SAFE_MACROS)
    return PyObject_RichCompareBool(s1, s2, equals);
#else
    if (s1 == s2) {
        return (equals == Py_EQ);
    } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) {
        const char *ps1, *ps2;
        Py_ssize_t length = PyBytes_GET_SIZE(s1);
        if (length != PyBytes_GET_SIZE(s2))
            return (equals == Py_NE);
        ps1 = PyBytes_AS_STRING(s1);
        ps2 = PyBytes_AS_STRING(s2);
        if (ps1[0] != ps2[0]) {
            return (equals == Py_NE);
        } else if (length == 1) {
            return (equals == Py_EQ);
        } else {
            int result;
#if CYTHON_USE_UNICODE_INTERNALS && (PY_VERSION_HEX < 0x030B0000)
            Py_hash_t hash1, hash2;
            hash1 = ((PyBytesObject*)s1)->ob_shash;
            hash2 = ((PyBytesObject*)s2)->ob_shash;
            if (hash1 != hash2 && hash1 != -1 && hash2 != -1) {
                return (equals == Py_NE);
            }
#endif
            result = memcmp(ps1, ps2, (size_t)length);
            return (equals == Py_EQ) ? (result == 0) : (result != 0);
        }
    } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) {
        return (equals == Py_NE);
    } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) {
        return (equals == Py_NE);
    } else {
        int result;
        PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
        if (!py_result)
            return -1;
        result = __Pyx_PyObject_IsTrue(py_result);
        Py_DECREF(py_result);
        return result;
    }
#endif
}

/* UnicodeEquals (used by fastcall) */
static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_GRAAL
    return PyObject_RichCompareBool(s1, s2, equals);
#else
    int s1_is_unicode, s2_is_unicode;
    if (s1 == s2) {
        goto return_eq;
    }
    s1_is_unicode = PyUnicode_CheckExact(s1);
    s2_is_unicode = PyUnicode_CheckExact(s2);
    if (s1_is_unicode & s2_is_unicode) {
        Py_ssize_t length, length2;
        int kind;
        void *data1, *data2;
        #if !CYTHON_COMPILING_IN_LIMITED_API
        if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0))
            return -1;
        #endif
        length = __Pyx_PyUnicode_GET_LENGTH(s1);
        #if !CYTHON_ASSUME_SAFE_SIZE
        if (unlikely(length < 0)) return -1;
        #endif
        length2 = __Pyx_PyUnicode_GET_LENGTH(s2);
        #if !CYTHON_ASSUME_SAFE_SIZE
        if (unlikely(length2 < 0)) return -1;
        #endif
        if (length != length2) {
            goto return_ne;
        }
#if CYTHON_USE_UNICODE_INTERNALS
        {
            Py_hash_t hash1, hash2;
            hash1 = ((PyASCIIObject*)s1)->hash;
            hash2 = ((PyASCIIObject*)s2)->hash;
            if (hash1 != hash2 && hash1 != -1 && hash2 != -1) {
                goto return_ne;
            }
        }
#endif
        kind = __Pyx_PyUnicode_KIND(s1);
        if (kind != __Pyx_PyUnicode_KIND(s2)) {
            goto return_ne;
        }
        data1 = __Pyx_PyUnicode_DATA(s1);
        data2 = __Pyx_PyUnicode_DATA(s2);
        if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) {
            goto return_ne;
        } else if (length == 1) {
            goto return_eq;
        } else {
            int result = memcmp(data1, data2, (size_t)(length * kind));
            return (equals == Py_EQ) ? (result == 0) : (result != 0);
        }
    } else if ((s1 == Py_None) & s2_is_unicode) {
        goto return_ne;
    } else if ((s2 == Py_None) & s1_is_unicode) {
        goto return_ne;
    } else {
        int result;
        PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
        if (!py_result)
            return -1;
        result = __Pyx_PyObject_IsTrue(py_result);
        Py_DECREF(py_result);
        return result;
    }
return_eq:
    return (equals == Py_EQ);
return_ne:
    return (equals == Py_NE);
#endif
}

/* fastcall */
#if CYTHON_METH_FASTCALL
static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s)
{
    Py_ssize_t i, n = __Pyx_PyTuple_GET_SIZE(kwnames);
    #if !CYTHON_ASSUME_SAFE_SIZE
    if (unlikely(n == -1)) return NULL;
    #endif
    for (i = 0; i < n; i++)
    {
        PyObject *namei = __Pyx_PyTuple_GET_ITEM(kwnames, i);
        #if !CYTHON_ASSUME_SAFE_MACROS
        if (unlikely(!namei)) return NULL;
        #endif
        if (s == namei) return kwvalues[i];
    }
    for (i = 0; i < n; i++)
    {
        PyObject *namei = __Pyx_PyTuple_GET_ITEM(kwnames, i);
        #if !CYTHON_ASSUME_SAFE_MACROS
        if (unlikely(!namei)) return NULL;
        #endif
        int eq = __Pyx_PyUnicode_Equals(s, namei, Py_EQ);
        if (unlikely(eq != 0)) {
            if (unlikely(eq < 0)) return NULL;
            return kwvalues[i];
        }
    }
    return NULL;
}
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 || CYTHON_COMPILING_IN_LIMITED_API
CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues) {
    Py_ssize_t i, nkwargs;
    PyObject *dict;
#if !CYTHON_ASSUME_SAFE_SIZE
    nkwargs = PyTuple_Size(kwnames);
    if (unlikely(nkwargs < 0)) return NULL;
#else
    nkwargs = PyTuple_GET_SIZE(kwnames);
#endif
    dict = PyDict_New();
    if (unlikely(!dict))
        return NULL;
    for (i=0; i<nkwargs; i++) {
#if !CYTHON_ASSUME_SAFE_MACROS
        PyObject *key = PyTuple_GetItem(kwnames, i);
        if (!key) goto bad;
#else
        PyObject *key = PyTuple_GET_ITEM(kwnames, i);
#endif
        if (unlikely(PyDict_SetItem(dict, key, kwvalues[i]) < 0))
            goto bad;
    }
    return dict;
bad:
    Py_DECREF(dict);
    return NULL;
}
#endif
#endif

/* RaiseArgTupleInvalid */
static void __Pyx_RaiseArgtupleInvalid(
    const char* func_name,
    int exact,
    Py_ssize_t num_min,
    Py_ssize_t num_max,
    Py_ssize_t num_found)
{
    Py_ssize_t num_expected;
    const char *more_or_less;
    if (num_found < num_min) {
        num_expected = num_min;
        more_or_less = "at least";
    } else {
        num_expected = num_max;
        more_or_less = "at most";
    }
    if (exact) {
        more_or_less = "exactly";
    }
    PyErr_Format(PyExc_TypeError,
                 "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)",
                 func_name, more_or_less, num_expected,
                 (num_expected == 1) ? "" : "s", num_found);
}

/* UnpackUnboundCMethod (used by CallUnboundCMethod0) */
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030C0000
static PyObject *__Pyx_SelflessCall(PyObject *method, PyObject *args, PyObject *kwargs) {
    PyObject *result;
    PyObject *selfless_args = PyTuple_GetSlice(args, 1, PyTuple_Size(args));
    if (unlikely(!selfless_args)) return NULL;
    result = PyObject_Call(method, selfless_args, kwargs);
    Py_DECREF(selfless_args);
    return result;
}
#elif CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03090000
static PyObject *__Pyx_SelflessCall(PyObject *method, PyObject **args, Py_ssize_t nargs, PyObject *kwnames) {
        return _PyObject_Vectorcall
            (method, args ? args+1 : NULL, nargs ? nargs-1 : 0, kwnames);
}
#else
static PyObject *__Pyx_SelflessCall(PyObject *method, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) {
    return
#if PY_VERSION_HEX < 0x03090000
    _PyObject_Vectorcall
#else
    PyObject_Vectorcall
#endif
        (method, args ? args+1 : NULL, nargs ? (size_t) nargs-1 : 0, kwnames);
}
#endif
static PyMethodDef __Pyx_UnboundCMethod_Def = {
     "CythonUnboundCMethod",
     __PYX_REINTERPRET_FUNCION(PyCFunction, __Pyx_SelflessCall),
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030C0000
     METH_VARARGS | METH_KEYWORDS,
#else
     METH_FASTCALL | METH_KEYWORDS,
#endif
     NULL
};
static int __Pyx_TryUnpackUnboundCMethod(__Pyx_CachedCFunction* target) {
    PyObject *method, *result=NULL;
    method = __Pyx_PyObject_GetAttrStr(target->type, *target->method_name);
    if (unlikely(!method))
        return -1;
    result = method;
#if CYTHON_COMPILING_IN_CPYTHON
    if (likely(__Pyx_TypeCheck(method, &PyMethodDescr_Type)))
    {
        PyMethodDescrObject *descr = (PyMethodDescrObject*) method;
        target->func = descr->d_method->ml_meth;
        target->flag = descr->d_method->ml_flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_STACKLESS);
    } else
#endif
#if CYTHON_COMPILING_IN_PYPY
#else
    if (PyCFunction_Check(method))
#endif
    {
        PyObject *self;
        int self_found;
#if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_PYPY
        self = PyObject_GetAttrString(method, "__self__");
        if (!self) {
            PyErr_Clear();
        }
#else
        self = PyCFunction_GET_SELF(method);
#endif
        self_found = (self && self != Py_None);
#if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_PYPY
        Py_XDECREF(self);
#endif
        if (self_found) {
            PyObject *unbound_method = PyCFunction_New(&__Pyx_UnboundCMethod_Def, method);
            if (unlikely(!unbound_method)) return -1;
            Py_DECREF(method);
            result = unbound_method;
        }
    }
#if !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
    if (unlikely(target->method)) {
        Py_DECREF(result);
    } else
#endif
    target->method = result;
    return 0;
}

/* CallUnboundCMethod0 */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self) {
    int was_initialized = __Pyx_CachedCFunction_GetAndSetInitializing(cfunc);
    if (likely(was_initialized == 2 && cfunc->func)) {
        if (likely(cfunc->flag == METH_NOARGS))
            return __Pyx_CallCFunction(cfunc, self, NULL);
        if (likely(cfunc->flag == METH_FASTCALL))
            return __Pyx_CallCFunctionFast(cfunc, self, NULL, 0);
        if (cfunc->flag == (METH_FASTCALL | METH_KEYWORDS))
            return __Pyx_CallCFunctionFastWithKeywords(cfunc, self, NULL, 0, NULL);
        if (likely(cfunc->flag == (METH_VARARGS | METH_KEYWORDS)))
            return __Pyx_CallCFunctionWithKeywords(cfunc, self, __pyx_mstate_global->__pyx_empty_tuple, NULL);
        if (cfunc->flag == METH_VARARGS)
            return __Pyx_CallCFunction(cfunc, self, __pyx_mstate_global->__pyx_empty_tuple);
        return __Pyx__CallUnboundCMethod0(cfunc, self);
    }
#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
    else if (unlikely(was_initialized == 1)) {
        __Pyx_CachedCFunction tmp_cfunc = {
#ifndef __cplusplus
            0
#endif
        };
        tmp_cfunc.type = cfunc->type;
        tmp_cfunc.method_name = cfunc->method_name;
        return __Pyx__CallUnboundCMethod0(&tmp_cfunc, self);
    }
#endif
    PyObject *result = __Pyx__CallUnboundCMethod0(cfunc, self);
    __Pyx_CachedCFunction_SetFinishedInitializing(cfunc);
    return result;
}
#endif
static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self) {
    PyObject *result;
    if (unlikely(!cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL;
    result = __Pyx_PyObject_CallOneArg(cfunc->method, self);
    return result;
}

/* py_dict_items (used by OwnedDictNext) */
static CYTHON_INLINE PyObject* __Pyx_PyDict_Items(PyObject* d) {
    return __Pyx_CallUnboundCMethod0(&__pyx_mstate_global->__pyx_umethod_PyDict_Type_items, d);
}

/* py_dict_values (used by OwnedDictNext) */
static CYTHON_INLINE PyObject* __Pyx_PyDict_Values(PyObject* d) {
    return __Pyx_CallUnboundCMethod0(&__pyx_mstate_global->__pyx_umethod_PyDict_Type_values, d);
}

/* OwnedDictNext (used by RejectKeywords) */
#if CYTHON_AVOID_BORROWED_REFS
static int __Pyx_PyDict_NextRef(PyObject *p, PyObject **ppos, PyObject **pkey, PyObject **pvalue) {
    PyObject *next = NULL;
    if (!*ppos) {
        if (pvalue) {
            PyObject *dictview = pkey ? __Pyx_PyDict_Items(p) : __Pyx_PyDict_Values(p);
            if (unlikely(!dictview)) goto bad;
            *ppos = PyObject_GetIter(dictview);
            Py_DECREF(dictview);
        } else {
            *ppos = PyObject_GetIter(p);
        }
        if (unlikely(!*ppos)) goto bad;
    }
    next = PyIter_Next(*ppos);
    if (!next) {
        if (PyErr_Occurred()) goto bad;
        return 0;
    }
    if (pkey && pvalue) {
        *pkey = __Pyx_PySequence_ITEM(next, 0);
        if (unlikely(*pkey)) goto bad;
        *pvalue = __Pyx_PySequence_ITEM(next, 1);
        if (unlikely(*pvalue)) goto bad;
        Py_DECREF(next);
    } else if (pkey) {
        *pkey = next;
    } else {
        assert(pvalue);
        *pvalue = next;
    }
    return 1;
  bad:
    Py_XDECREF(next);
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d0000
    PyErr_FormatUnraisable("Exception ignored in __Pyx_PyDict_NextRef");
#else
    PyErr_WriteUnraisable(__pyx_mstate_global->__pyx_n_u_Pyx_PyDict_NextRef);
#endif
    if (pkey) *pkey = NULL;
    if (pvalue) *pvalue = NULL;
    return 0;
}
#else // !CYTHON_AVOID_BORROWED_REFS
static int __Pyx_PyDict_NextRef(PyObject *p, Py_ssize_t *ppos, PyObject **pkey, PyObject **pvalue) {
    int result = PyDict_Next(p, ppos, pkey, pvalue);
    if (likely(result == 1)) {
        if (pkey) Py_INCREF(*pkey);
        if (pvalue) Py_INCREF(*pvalue);
    }
    return result;
}
#endif

/* RejectKeywords */
static void __Pyx_RejectKeywords(const char* function_name, PyObject *kwds) {
    PyObject *key = NULL;
    if (CYTHON_METH_FASTCALL && likely(PyTuple_Check(kwds))) {
        key = __Pyx_PySequence_ITEM(kwds, 0);
    } else {
#if CYTHON_AVOID_BORROWED_REFS
        PyObject *pos = NULL;
#else
        Py_ssize_t pos = 0;
#endif
#if !CYTHON_COMPILING_IN_PYPY || defined(PyArg_ValidateKeywordArguments)
        if (unlikely(!PyArg_ValidateKeywordArguments(kwds))) return;
#endif
        __Pyx_PyDict_NextRef(kwds, &pos, &key, NULL);
#if CYTHON_AVOID_BORROWED_REFS
        Py_XDECREF(pos);
#endif
    }
    if (likely(key)) {
        PyErr_Format(PyExc_TypeError,
            "%s() got an unexpected keyword argument '%U'",
            function_name, key);
        Py_DECREF(key);
    }
}

/* CallUnboundCMethod2 */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2) {
    int was_initialized = __Pyx_CachedCFunction_GetAndSetInitializing(cfunc);
    if (likely(was_initialized == 2 && cfunc->func)) {
        PyObject *args[2] = {arg1, arg2};
        if (cfunc->flag == METH_FASTCALL) {
            return __Pyx_CallCFunctionFast(cfunc, self, args, 2);
        }
        if (cfunc->flag == (METH_FASTCALL | METH_KEYWORDS))
            return __Pyx_CallCFunctionFastWithKeywords(cfunc, self, args, 2, NULL);
    }
#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
    else if (unlikely(was_initialized == 1)) {
        __Pyx_CachedCFunction tmp_cfunc = {
#ifndef __cplusplus
            0
#endif
        };
        tmp_cfunc.type = cfunc->type;
        tmp_cfunc.method_name = cfunc->method_name;
        return __Pyx__CallUnboundCMethod2(&tmp_cfunc, self, arg1, arg2);
    }
#endif
    PyObject *result = __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2);
    __Pyx_CachedCFunction_SetFinishedInitializing(cfunc);
    return result;
}
#endif
static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2){
    if (unlikely(!cfunc->func && !cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL;
#if CYTHON_COMPILING_IN_CPYTHON
    if (cfunc->func && (cfunc->flag & METH_VARARGS)) {
        PyObject *result = NULL;
        PyObject *args = PyTuple_New(2);
        if (unlikely(!args)) return NULL;
        Py_INCREF(arg1);
        PyTuple_SET_ITEM(args, 0, arg1);
        Py_INCREF(arg2);
        PyTuple_SET_ITEM(args, 1, arg2);
        if (cfunc->flag & METH_KEYWORDS)
            result = __Pyx_CallCFunctionWithKeywords(cfunc, self, args, NULL);
        else
            result = __Pyx_CallCFunction(cfunc, self, args);
        Py_DECREF(args);
        return result;
    }
#endif
    {
        PyObject *args[4] = {NULL, self, arg1, arg2};
        return __Pyx_PyObject_FastCall(cfunc->method, args+1, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET);
    }
}

/* RaiseDoubleKeywords (used by ParseKeywordsImpl) */
static void __Pyx_RaiseDoubleKeywordsError(
    const char* func_name,
    PyObject* kw_name)
{
    PyErr_Format(PyExc_TypeError,
        "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
}

/* ParseKeywordsImpl (used by ParseKeywords) */
static int __Pyx_ValidateDuplicatePosArgs(
    PyObject *kwds,
    PyObject ** const argnames[],
    PyObject ** const *first_kw_arg,
    const char* function_name)
{
    PyObject ** const *name = argnames;
    while (name != first_kw_arg) {
        PyObject *key = **name;
        int found = PyDict_Contains(kwds, key);
        if (unlikely(found)) {
            if (found == 1) __Pyx_RaiseDoubleKeywordsError(function_name, key);
            goto bad;
        }
        name++;
    }
    return 0;
bad:
    return -1;
}
#if CYTHON_USE_UNICODE_INTERNALS
static CYTHON_INLINE int __Pyx_UnicodeKeywordsEqual(PyObject *s1, PyObject *s2) {
    int kind;
    Py_ssize_t len = PyUnicode_GET_LENGTH(s1);
    if (len != PyUnicode_GET_LENGTH(s2)) return 0;
    kind = PyUnicode_KIND(s1);
    if (kind != PyUnicode_KIND(s2)) return 0;
    const void *data1 = PyUnicode_DATA(s1);
    const void *data2 = PyUnicode_DATA(s2);
    return (memcmp(data1, data2, (size_t) len * (size_t) kind) == 0);
}
#endif
static int __Pyx_MatchKeywordArg_str(
    PyObject *key,
    PyObject ** const argnames[],
    PyObject ** const *first_kw_arg,
    size_t *index_found,
    const char *function_name)
{
    PyObject ** const *name;
    #if CYTHON_USE_UNICODE_INTERNALS
    Py_hash_t key_hash = ((PyASCIIObject*)key)->hash;
    if (unlikely(key_hash == -1)) {
        key_hash = PyObject_Hash(key);
        if (unlikely(key_hash == -1))
            goto bad;
    }
    #endif
    name = first_kw_arg;
    while (*name) {
        PyObject *name_str = **name;
        #if CYTHON_USE_UNICODE_INTERNALS
        if (key_hash == ((PyASCIIObject*)name_str)->hash && __Pyx_UnicodeKeywordsEqual(name_str, key)) {
            *index_found = (size_t) (name - argnames);
            return 1;
        }
        #else
        #if CYTHON_ASSUME_SAFE_SIZE
        if (PyUnicode_GET_LENGTH(name_str) == PyUnicode_GET_LENGTH(key))
        #endif
        {
            int cmp = PyUnicode_Compare(name_str, key);
            if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
            if (cmp == 0) {
                *index_found = (size_t) (name - argnames);
                return 1;
            }
        }
        #endif
        name++;
    }
    name = argnames;
    while (name != first_kw_arg) {
        PyObject *name_str = **name;
        #if CYTHON_USE_UNICODE_INTERNALS
        if (unlikely(key_hash == ((PyASCIIObject*)name_str)->hash)) {
            if (__Pyx_UnicodeKeywordsEqual(name_str, key))
                goto arg_passed_twice;
        }
        #else
        #if CYTHON_ASSUME_SAFE_SIZE
        if (PyUnicode_GET_LENGTH(name_str) == PyUnicode_GET_LENGTH(key))
        #endif
        {
            if (unlikely(name_str == key)) goto arg_passed_twice;
            int cmp = PyUnicode_Compare(name_str, key);
            if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
            if (cmp == 0) goto arg_passed_twice;
        }
        #endif
        name++;
    }
    return 0;
arg_passed_twice:
    __Pyx_RaiseDoubleKeywordsError(function_name, key);
    goto bad;
bad:
    return -1;
}
static int __Pyx_MatchKeywordArg_nostr(
    PyObject *key,
    PyObject ** const argnames[],
    PyObject ** const *first_kw_arg,
    size_t *index_found,
    const char *function_name)
{
    PyObject ** const *name;
    if (unlikely(!PyUnicode_Check(key))) goto invalid_keyword_type;
    name = first_kw_arg;
    while (*name) {
        int cmp = PyObject_RichCompareBool(**name, key, Py_EQ);
        if (cmp == 1) {
            *index_found = (size_t) (name - argnames);
            return 1;
        }
        if (unlikely(cmp == -1)) goto bad;
        name++;
    }
    name = argnames;
    while (name != first_kw_arg) {
        int cmp = PyObject_RichCompareBool(**name, key, Py_EQ);
        if (unlikely(cmp != 0)) {
            if (cmp == 1) goto arg_passed_twice;
            else goto bad;
        }
        name++;
    }
    return 0;
arg_passed_twice:
    __Pyx_RaiseDoubleKeywordsError(function_name, key);
    goto bad;
invalid_keyword_type:
    PyErr_Format(PyExc_TypeError,
        "%.200s() keywords must be strings", function_name);
    goto bad;
bad:
    return -1;
}
static CYTHON_INLINE int __Pyx_MatchKeywordArg(
    PyObject *key,
    PyObject ** const argnames[],
    PyObject ** const *first_kw_arg,
    size_t *index_found,
    const char *function_name)
{
    return likely(PyUnicode_CheckExact(key)) ?
        __Pyx_MatchKeywordArg_str(key, argnames, first_kw_arg, index_found, function_name) :
        __Pyx_MatchKeywordArg_nostr(key, argnames, first_kw_arg, index_found, function_name);
}
static void __Pyx_RejectUnknownKeyword(
    PyObject *kwds,
    PyObject ** const argnames[],
    PyObject ** const *first_kw_arg,
    const char *function_name)
{
    #if CYTHON_AVOID_BORROWED_REFS
    PyObject *pos = NULL;
    #else
    Py_ssize_t pos = 0;
    #endif
    PyObject *key = NULL;
    __Pyx_BEGIN_CRITICAL_SECTION(kwds);
    while (
        #if CYTHON_AVOID_BORROWED_REFS
        __Pyx_PyDict_NextRef(kwds, &pos, &key, NULL)
        #else
        PyDict_Next(kwds, &pos, &key, NULL)
        #endif
    ) {
        PyObject** const *name = first_kw_arg;
        while (*name && (**name != key)) name++;
        if (!*name) {
            size_t index_found = 0;
            int cmp = __Pyx_MatchKeywordArg(key, argnames, first_kw_arg, &index_found, function_name);
            if (cmp != 1) {
                if (cmp == 0) {
                    PyErr_Format(PyExc_TypeError,
                        "%s() got an unexpected keyword argument '%U'",
                        function_name, key);
                }
                #if CYTHON_AVOID_BORROWED_REFS
                Py_DECREF(key);
                #endif
                break;
            }
        }
        #if CYTHON_AVOID_BORROWED_REFS
        Py_DECREF(key);
        #endif
    }
    __Pyx_END_CRITICAL_SECTION();
    #if CYTHON_AVOID_BORROWED_REFS
    Py_XDECREF(pos);
    #endif
    assert(PyErr_Occurred());
}
static int __Pyx_ParseKeywordDict(
    PyObject *kwds,
    PyObject ** const argnames[],
    PyObject *values[],
    Py_ssize_t num_pos_args,
    Py_ssize_t num_kwargs,
    const char* function_name,
    int ignore_unknown_kwargs)
{
    PyObject** const *name;
    PyObject** const *first_kw_arg = argnames + num_pos_args;
    Py_ssize_t extracted = 0;
#if !CYTHON_COMPILING_IN_PYPY || defined(PyArg_ValidateKeywordArguments)
    if (unlikely(!PyArg_ValidateKeywordArguments(kwds))) return -1;
#endif
    name = first_kw_arg;
    while (*name && num_kwargs > extracted) {
        PyObject * key = **name;
        PyObject *value;
        int found = 0;
        #if __PYX_LIMITED_VERSION_HEX >= 0x030d0000
        found = PyDict_GetItemRef(kwds, key, &value);
        #else
        value = PyDict_GetItemWithError(kwds, key);
        if (value) {
            Py_INCREF(value);
            found = 1;
        } else {
            if (unlikely(PyErr_Occurred())) goto bad;
        }
        #endif
        if (found) {
            if (unlikely(found < 0)) goto bad;
            values[name-argnames] = value;
            extracted++;
        }
        name++;
    }
    if (num_kwargs > extracted) {
        if (ignore_unknown_kwargs) {
            if (unlikely(__Pyx_ValidateDuplicatePosArgs(kwds, argnames, first_kw_arg, function_name) == -1))
                goto bad;
        } else {
            __Pyx_RejectUnknownKeyword(kwds, argnames, first_kw_arg, function_name);
            goto bad;
        }
    }
    return 0;
bad:
    return -1;
}
static int __Pyx_ParseKeywordDictToDict(
    PyObject *kwds,
    PyObject ** const argnames[],
    PyObject *kwds2,
    PyObject *values[],
    Py_ssize_t num_pos_args,
    const char* function_name)
{
    PyObject** const *name;
    PyObject** const *first_kw_arg = argnames + num_pos_args;
    Py_ssize_t len;
#if !CYTHON_COMPILING_IN_PYPY || defined(PyArg_ValidateKeywordArguments)
    if (unlikely(!PyArg_ValidateKeywordArguments(kwds))) return -1;
#endif
    if (PyDict_Update(kwds2, kwds) < 0) goto bad;
    name = first_kw_arg;
    while (*name) {
        PyObject *key = **name;
        PyObject *value;
#if !CYTHON_COMPILING_IN_LIMITED_API && (PY_VERSION_HEX >= 0x030d00A2 || defined(PyDict_Pop))
        int found = PyDict_Pop(kwds2, key, &value);
        if (found) {
            if (unlikely(found < 0)) goto bad;
            values[name-argnames] = value;
        }
#elif __PYX_LIMITED_VERSION_HEX >= 0x030d0000
        int found = PyDict_GetItemRef(kwds2, key, &value);
        if (found) {
            if (unlikely(found < 0)) goto bad;
            values[name-argnames] = value;
            if (unlikely(PyDict_DelItem(kwds2, key) < 0)) goto bad;
        }
#else
    #if CYTHON_COMPILING_IN_CPYTHON
        value = _PyDict_Pop(kwds2, key, kwds2);
    #else
        value = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyDict_Type_pop, kwds2, key, kwds2);
    #endif
        if (value == kwds2) {
            Py_DECREF(value);
        } else {
            if (unlikely(!value)) goto bad;
            values[name-argnames] = value;
        }
#endif
        name++;
    }
    len = PyDict_Size(kwds2);
    if (len > 0) {
        return __Pyx_ValidateDuplicatePosArgs(kwds, argnames, first_kw_arg, function_name);
    } else if (unlikely(len == -1)) {
        goto bad;
    }
    return 0;
bad:
    return -1;
}
static int __Pyx_ParseKeywordsTuple(
    PyObject *kwds,
    PyObject * const *kwvalues,
    PyObject ** const argnames[],
    PyObject *kwds2,
    PyObject *values[],
    Py_ssize_t num_pos_args,
    Py_ssize_t num_kwargs,
    const char* function_name,
    int ignore_unknown_kwargs)
{
    PyObject *key = NULL;
    PyObject** const * name;
    PyObject** const *first_kw_arg = argnames + num_pos_args;
    for (Py_ssize_t pos = 0; pos < num_kwargs; pos++) {
#if CYTHON_AVOID_BORROWED_REFS
        key = __Pyx_PySequence_ITEM(kwds, pos);
#else
        key = __Pyx_PyTuple_GET_ITEM(kwds, pos);
#endif
#if !CYTHON_ASSUME_SAFE_MACROS
        if (unlikely(!key)) goto bad;
#endif
        name = first_kw_arg;
        while (*name && (**name != key)) name++;
        if (*name) {
            PyObject *value = kwvalues[pos];
            values[name-argnames] = __Pyx_NewRef(value);
        } else {
            size_t index_found = 0;
            int cmp = __Pyx_MatchKeywordArg(key, argnames, first_kw_arg, &index_found, function_name);
            if (cmp == 1) {
                PyObject *value = kwvalues[pos];
                values[index_found] = __Pyx_NewRef(value);
            } else {
                if (unlikely(cmp == -1)) goto bad;
                if (kwds2) {
                    PyObject *value = kwvalues[pos];
                    if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
                } else if (!ignore_unknown_kwargs) {
                    goto invalid_keyword;
                }
            }
        }
        #if CYTHON_AVOID_BORROWED_REFS
        Py_DECREF(key);
        key = NULL;
        #endif
    }
    return 0;
invalid_keyword:
    PyErr_Format(PyExc_TypeError,
        "%s() got an unexpected keyword argument '%U'",
        function_name, key);
    goto bad;
bad:
    #if CYTHON_AVOID_BORROWED_REFS
    Py_XDECREF(key);
    #endif
    return -1;
}

/* ParseKeywords */
static int __Pyx_ParseKeywords(
    PyObject *kwds,
    PyObject * const *kwvalues,
    PyObject ** const argnames[],
    PyObject *kwds2,
    PyObject *values[],
    Py_ssize_t num_pos_args,
    Py_ssize_t num_kwargs,
    const char* function_name,
    int ignore_unknown_kwargs)
{
    if (CYTHON_METH_FASTCALL && likely(PyTuple_Check(kwds)))
        return __Pyx_ParseKeywordsTuple(kwds, kwvalues, argnames, kwds2, values, num_pos_args, num_kwargs, function_name, ignore_unknown_kwargs);
    else if (kwds2)
        return __Pyx_ParseKeywordDictToDict(kwds, argnames, kwds2, values, num_pos_args, function_name);
    else
        return __Pyx_ParseKeywordDict(kwds, argnames, values, num_pos_args, num_kwargs, function_name, ignore_unknown_kwargs);
}

/* ArgTypeTestFunc (used by ArgTypeTest) */
static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
{
    __Pyx_TypeName type_name;
    __Pyx_TypeName obj_type_name;
    PyObject *extra_info = __pyx_mstate_global->__pyx_empty_unicode;
    int from_annotation_subclass = 0;
    if (unlikely(!type)) {
        PyErr_SetString(PyExc_SystemError, "Missing type object");
        return 0;
    }
    else if (!exact) {
        if (likely(__Pyx_TypeCheck(obj, type))) return 1;
    } else if (exact == 2) {
        if (__Pyx_TypeCheck(obj, type)) {
            from_annotation_subclass = 1;
            extra_info = __pyx_mstate_global->__pyx_kp_u_Note_that_Cython_is_deliberately;
        }
    }
    type_name = __Pyx_PyType_GetFullyQualifiedName(type);
    obj_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(obj));
    PyErr_Format(PyExc_TypeError,
        "Argument '%.200s' has incorrect type (expected " __Pyx_FMT_TYPENAME
        ", got " __Pyx_FMT_TYPENAME ")"
#if __PYX_LIMITED_VERSION_HEX < 0x030C0000
        "%s%U"
#endif
        , name, type_name, obj_type_name
#if __PYX_LIMITED_VERSION_HEX < 0x030C0000
        , (from_annotation_subclass ? ". " : ""), extra_info
#endif
        );
#if __PYX_LIMITED_VERSION_HEX >= 0x030C0000
    if (exact == 2 && from_annotation_subclass) {
        PyObject *res;
        PyObject *vargs[2];
        vargs[0] = PyErr_GetRaisedException();
        vargs[1] = extra_info;
        res = PyObject_VectorcallMethod(__pyx_mstate_global->__pyx_kp_u_add_note, vargs, 2, NULL);
        Py_XDECREF(res);
        PyErr_SetRaisedException(vargs[0]);
    }
#endif
    __Pyx_DECREF_TypeName(type_name);
    __Pyx_DECREF_TypeName(obj_type_name);
    return 0;
}

/* UnicodeConcatInPlace */
# if CYTHON_COMPILING_IN_CPYTHON
static int
__Pyx_unicode_modifiable(PyObject *unicode, int unsafe_shared)
{
    if (!__Pyx_IS_UNIQUELY_REFERENCED(unicode, unsafe_shared))
        return 0;
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX > 0x030F0000
    if (PyUnstable_Unicode_GET_CACHED_HASH(unicode) != -1)
        return 0;
#endif
    if (!PyUnicode_CheckExact(unicode))
        return 0;
    if (PyUnicode_CHECK_INTERNED(unicode))
        return 0;
    return 1;
}
static CYTHON_INLINE PyObject *__Pyx_PyUnicode_ConcatInPlaceImpl(PyObject **p_left, PyObject *right, int unsafe_shared
        #if CYTHON_REFNANNY
        , void* __pyx_refnanny
        #endif
    ) {
    PyObject *left = *p_left;
    Py_ssize_t left_len, right_len, new_len;
    if (unlikely(__Pyx_PyUnicode_READY(left) == -1))
        return NULL;
    if (unlikely(__Pyx_PyUnicode_READY(right) == -1))
        return NULL;
    left_len = PyUnicode_GET_LENGTH(left);
    if (left_len == 0) {
        Py_INCREF(right);
        return right;
    }
    right_len = PyUnicode_GET_LENGTH(right);
    if (right_len == 0) {
        Py_INCREF(left);
        return left;
    }
    if (unlikely(left_len > PY_SSIZE_T_MAX - right_len)) {
        PyErr_SetString(PyExc_OverflowError,
                        "strings are too large to concat");
        return NULL;
    }
    new_len = left_len + right_len;
    if (__Pyx_unicode_modifiable(left, unsafe_shared)
            && PyUnicode_CheckExact(right)
            && PyUnicode_KIND(right) <= PyUnicode_KIND(left)
            && !(PyUnicode_IS_ASCII(left) && !PyUnicode_IS_ASCII(right))) {
        int ret;
        __Pyx_GIVEREF(*p_left);
        ret = PyUnicode_Resize(p_left, new_len);
        __Pyx_GOTREF(*p_left);
        if (unlikely(ret != 0))
            return NULL;
        #if PY_VERSION_HEX >= 0x030d0000
        if (unlikely(PyUnicode_CopyCharacters(*p_left, left_len, right, 0, right_len) < 0)) return NULL;
        #else
        _PyUnicode_FastCopyCharacters(*p_left, left_len, right, 0, right_len);
        #endif
        __Pyx_INCREF(*p_left);
        __Pyx_GIVEREF(*p_left);
        return *p_left;
    } else {
        return __Pyx_PyUnicode_Concat(left, right);
    }
  }
#endif

/* PyDictVersioning (used by GetModuleGlobalName) */
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) {
    PyObject *dict = Py_TYPE(obj)->tp_dict;
    return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0;
}
static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) {
    PyObject **dictptr = NULL;
    Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset;
    if (offset) {
#if CYTHON_COMPILING_IN_CPYTHON
        dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj);
#else
        dictptr = _PyObject_GetDictPtr(obj);
#endif
    }
    return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0;
}
static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) {
    PyObject *dict = Py_TYPE(obj)->tp_dict;
    if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict)))
        return 0;
    return obj_dict_version == __Pyx_get_object_dict_version(obj);
}
#endif

/* GetModuleGlobalName */
#if CYTHON_USE_DICT_VERSIONS
static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value)
#else
static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name)
#endif
{
    PyObject *result;
#if CYTHON_COMPILING_IN_LIMITED_API
    if (unlikely(!__pyx_m)) {
        if (!PyErr_Occurred())
            PyErr_SetNone(PyExc_NameError);
        return NULL;
    }
    result = PyObject_GetAttr(__pyx_m, name);
    if (likely(result)) {
        return result;
    }
    PyErr_Clear();
#elif CYTHON_AVOID_BORROWED_REFS || CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS
    if (unlikely(__Pyx_PyDict_GetItemRef(__pyx_mstate_global->__pyx_d, name, &result) == -1)) PyErr_Clear();
    __PYX_UPDATE_DICT_CACHE(__pyx_mstate_global->__pyx_d, result, *dict_cached_value, *dict_version)
    if (likely(result)) {
        return result;
    }
#else
    result = _PyDict_GetItem_KnownHash(__pyx_mstate_global->__pyx_d, name, ((PyASCIIObject *) name)->hash);
    __PYX_UPDATE_DICT_CACHE(__pyx_mstate_global->__pyx_d, result, *dict_cached_value, *dict_version)
    if (likely(result)) {
        return __Pyx_NewRef(result);
    }
    PyErr_Clear();
#endif
    return __Pyx_GetBuiltinName(name);
}

/* GetItemInt */
static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
    PyObject *r;
    if (unlikely(!j)) return NULL;
    r = PyObject_GetItem(o, j);
    Py_DECREF(j);
    return r;
}
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
                                                              int wraparound, int boundscheck, int unsafe_shared) {
    CYTHON_MAYBE_UNUSED_VAR(unsafe_shared);
#if CYTHON_ASSUME_SAFE_SIZE
    Py_ssize_t wrapped_i = i;
    if (wraparound & unlikely(i < 0)) {
        wrapped_i += PyList_GET_SIZE(o);
    }
    if ((CYTHON_AVOID_BORROWED_REFS || CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS || !CYTHON_ASSUME_SAFE_MACROS)) {
        return __Pyx_PyList_GetItemRefFast(o, wrapped_i, unsafe_shared);
    } else
    if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) {
        return __Pyx_NewRef(PyList_GET_ITEM(o, wrapped_i));
    }
    return __Pyx_GetItemInt_Generic(o, PyLong_FromSsize_t(i));
#else
    (void)wraparound;
    (void)boundscheck;
    return PySequence_GetItem(o, i);
#endif
}
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
                                                              int wraparound, int boundscheck, int unsafe_shared) {
    CYTHON_MAYBE_UNUSED_VAR(unsafe_shared);
#if CYTHON_ASSUME_SAFE_SIZE && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    Py_ssize_t wrapped_i = i;
    if (wraparound & unlikely(i < 0)) {
        wrapped_i += PyTuple_GET_SIZE(o);
    }
    if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) {
        return __Pyx_NewRef(PyTuple_GET_ITEM(o, wrapped_i));
    }
    return __Pyx_GetItemInt_Generic(o, PyLong_FromSsize_t(i));
#else
    (void)wraparound;
    (void)boundscheck;
    return PySequence_GetItem(o, i);
#endif
}
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list,
                                                     int wraparound, int boundscheck, int unsafe_shared) {
    CYTHON_MAYBE_UNUSED_VAR(unsafe_shared);
#if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE
    if (is_list || PyList_CheckExact(o)) {
        Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
        if ((CYTHON_AVOID_BORROWED_REFS || CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS)) {
            return __Pyx_PyList_GetItemRefFast(o, n, unsafe_shared);
        } else if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) {
            return __Pyx_NewRef(PyList_GET_ITEM(o, n));
        }
    } else
    #if !CYTHON_AVOID_BORROWED_REFS
    if (PyTuple_CheckExact(o)) {
        Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
        if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) {
            return __Pyx_NewRef(PyTuple_GET_ITEM(o, n));
        }
    } else
    #endif
#endif
#if CYTHON_USE_TYPE_SLOTS && !CYTHON_COMPILING_IN_PYPY
    {
        PyMappingMethods *mm = Py_TYPE(o)->tp_as_mapping;
        PySequenceMethods *sm = Py_TYPE(o)->tp_as_sequence;
        if (!is_list && mm && mm->mp_subscript) {
            PyObject *r, *key = PyLong_FromSsize_t(i);
            if (unlikely(!key)) return NULL;
            r = mm->mp_subscript(o, key);
            Py_DECREF(key);
            return r;
        }
        if (is_list || likely(sm && sm->sq_item)) {
            if (wraparound && unlikely(i < 0) && likely(sm->sq_length)) {
                Py_ssize_t l = sm->sq_length(o);
                if (likely(l >= 0)) {
                    i += l;
                } else {
                    if (!PyErr_ExceptionMatches(PyExc_OverflowError))
                        return NULL;
                    PyErr_Clear();
                }
            }
            return sm->sq_item(o, i);
        }
    }
#else
    if (is_list || !PyMapping_Check(o)) {
        return PySequence_GetItem(o, i);
    }
#endif
    (void)wraparound;
    (void)boundscheck;
    return __Pyx_GetItemInt_Generic(o, PyLong_FromSsize_t(i));
}

/* SliceObject */
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(PyObject* obj,
        Py_ssize_t cstart, Py_ssize_t cstop,
        PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice,
        int has_cstart, int has_cstop, CYTHON_UNUSED int wraparound) {
    __Pyx_TypeName obj_type_name;
#if CYTHON_USE_TYPE_SLOTS
    PyMappingMethods* mp = Py_TYPE(obj)->tp_as_mapping;
    if (likely(mp && mp->mp_subscript))
#endif
    {
        PyObject* result;
        PyObject *py_slice, *py_start, *py_stop;
        if (_py_slice) {
            py_slice = *_py_slice;
        } else {
            PyObject* owned_start = NULL;
            PyObject* owned_stop = NULL;
            if (_py_start) {
                py_start = *_py_start;
            } else {
                if (has_cstart) {
                    owned_start = py_start = PyLong_FromSsize_t(cstart);
                    if (unlikely(!py_start)) goto bad;
                } else
                    py_start = Py_None;
            }
            if (_py_stop) {
                py_stop = *_py_stop;
            } else {
                if (has_cstop) {
                    owned_stop = py_stop = PyLong_FromSsize_t(cstop);
                    if (unlikely(!py_stop)) {
                        Py_XDECREF(owned_start);
                        goto bad;
                    }
                } else
                    py_stop = Py_None;
            }
            py_slice = PySlice_New(py_start, py_stop, Py_None);
            Py_XDECREF(owned_start);
            Py_XDECREF(owned_stop);
            if (unlikely(!py_slice)) goto bad;
        }
#if CYTHON_USE_TYPE_SLOTS
        result = mp->mp_subscript(obj, py_slice);
#else
        result = PyObject_GetItem(obj, py_slice);
#endif
        if (!_py_slice) {
            Py_DECREF(py_slice);
        }
        return result;
    }
    obj_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(obj));
    PyErr_Format(PyExc_TypeError,
        "'" __Pyx_FMT_TYPENAME "' object is unsliceable", obj_type_name);
    __Pyx_DECREF_TypeName(obj_type_name);
bad:
    return NULL;
}

/* PyUnicode_Unicode */
static CYTHON_INLINE PyObject* __Pyx_PyUnicode_Unicode(PyObject *obj) {
    if (unlikely(obj == Py_None))
        obj = __pyx_mstate_global->__pyx_kp_u_None;
    return __Pyx_NewRef(obj);
}

/* JoinPyUnicode */
static PyObject* __Pyx_PyUnicode_Join(PyObject** values, Py_ssize_t value_count, Py_ssize_t result_ulength,
                                      Py_UCS4 max_char) {
#if CYTHON_USE_UNICODE_INTERNALS && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    PyObject *result_uval;
    int result_ukind, kind_shift;
    Py_ssize_t i, char_pos;
    void *result_udata;
    if (max_char > 1114111) max_char = 1114111;
    result_uval = PyUnicode_New(result_ulength, max_char);
    if (unlikely(!result_uval)) return NULL;
    result_ukind = (max_char <= 255) ? PyUnicode_1BYTE_KIND : (max_char <= 65535) ? PyUnicode_2BYTE_KIND : PyUnicode_4BYTE_KIND;
    kind_shift = (result_ukind == PyUnicode_4BYTE_KIND) ? 2 : result_ukind - 1;
    result_udata = PyUnicode_DATA(result_uval);
    assert(kind_shift == 2 || kind_shift == 1 || kind_shift == 0);
    if (unlikely((PY_SSIZE_T_MAX >> kind_shift) - result_ulength < 0))
        goto overflow;
    char_pos = 0;
    for (i=0; i < value_count; i++) {
        int ukind;
        Py_ssize_t ulength;
        void *udata;
        PyObject *uval = values[i];
        #if !CYTHON_COMPILING_IN_LIMITED_API
        if (__Pyx_PyUnicode_READY(uval) == (-1))
            goto bad;
        #endif
        ulength = __Pyx_PyUnicode_GET_LENGTH(uval);
        #if !CYTHON_ASSUME_SAFE_SIZE
        if (unlikely(ulength < 0)) goto bad;
        #endif
        if (unlikely(!ulength))
            continue;
        if (unlikely((PY_SSIZE_T_MAX >> kind_shift) - ulength < char_pos))
            goto overflow;
        ukind = __Pyx_PyUnicode_KIND(uval);
        udata = __Pyx_PyUnicode_DATA(uval);
        if (ukind == result_ukind) {
            memcpy((char *)result_udata + (char_pos << kind_shift), udata, (size_t) (ulength << kind_shift));
        } else {
            #if PY_VERSION_HEX >= 0x030d0000
            if (unlikely(PyUnicode_CopyCharacters(result_uval, char_pos, uval, 0, ulength) < 0)) goto bad;
            #elif CYTHON_COMPILING_IN_CPYTHON || defined(_PyUnicode_FastCopyCharacters)
            _PyUnicode_FastCopyCharacters(result_uval, char_pos, uval, 0, ulength);
            #else
            Py_ssize_t j;
            for (j=0; j < ulength; j++) {
                Py_UCS4 uchar = __Pyx_PyUnicode_READ(ukind, udata, j);
                __Pyx_PyUnicode_WRITE(result_ukind, result_udata, char_pos+j, uchar);
            }
            #endif
        }
        char_pos += ulength;
    }
    return result_uval;
overflow:
    PyErr_SetString(PyExc_OverflowError, "join() result is too long for a Python string");
bad:
    Py_DECREF(result_uval);
    return NULL;
#else
    Py_ssize_t i;
    PyObject *result = NULL;
    PyObject *value_tuple = PyTuple_New(value_count);
    if (unlikely(!value_tuple)) return NULL;
    CYTHON_UNUSED_VAR(max_char);
    CYTHON_UNUSED_VAR(result_ulength);
    for (i=0; i<value_count; i++) {
        if (__Pyx_PyTuple_SET_ITEM(value_tuple, i, values[i]) != (0)) goto bad;
        Py_INCREF(values[i]);
    }
    result = PyUnicode_Join(__pyx_mstate_global->__pyx_empty_unicode, value_tuple);
bad:
    Py_DECREF(value_tuple);
    return result;
#endif
}

/* SwapException */
#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
    PyObject *tmp_type, *tmp_value, *tmp_tb;
  #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4
    _PyErr_StackItem *exc_info = tstate->exc_info;
    tmp_value = exc_info->exc_value;
    exc_info->exc_value = *value;
    if (tmp_value == NULL || tmp_value == Py_None) {
        Py_XDECREF(tmp_value);
        tmp_value = NULL;
        tmp_type = NULL;
        tmp_tb = NULL;
    } else {
        tmp_type = (PyObject*) Py_TYPE(tmp_value);
        Py_INCREF(tmp_type);
        #if CYTHON_COMPILING_IN_CPYTHON
        tmp_tb = ((PyBaseExceptionObject*) tmp_value)->traceback;
        Py_XINCREF(tmp_tb);
        #else
        tmp_tb = PyException_GetTraceback(tmp_value);
        #endif
    }
  #elif CYTHON_USE_EXC_INFO_STACK
    _PyErr_StackItem *exc_info = tstate->exc_info;
    tmp_type = exc_info->exc_type;
    tmp_value = exc_info->exc_value;
    tmp_tb = exc_info->exc_traceback;
    exc_info->exc_type = *type;
    exc_info->exc_value = *value;
    exc_info->exc_traceback = *tb;
  #else
    tmp_type = tstate->exc_type;
    tmp_value = tstate->exc_value;
    tmp_tb = tstate->exc_traceback;
    tstate->exc_type = *type;
    tstate->exc_value = *value;
    tstate->exc_traceback = *tb;
  #endif
    *type = tmp_type;
    *value = tmp_value;
    *tb = tmp_tb;
}
#else
static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) {
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb);
    PyErr_SetExcInfo(*type, *value, *tb);
    *type = tmp_type;
    *value = tmp_value;
    *tb = tmp_tb;
}
#endif

/* WriteUnraisableException */
static void __Pyx_WriteUnraisable(const char *name, int clineno,
                                  int lineno, const char *filename,
                                  int full_traceback, int nogil) {
    PyObject *old_exc, *old_val, *old_tb;
    PyObject *ctx;
    __Pyx_PyThreadState_declare
    PyGILState_STATE state;
    if (nogil)
        state = PyGILState_Ensure();
    else state = (PyGILState_STATE)0;
    CYTHON_UNUSED_VAR(clineno);
    CYTHON_UNUSED_VAR(lineno);
    CYTHON_UNUSED_VAR(filename);
    CYTHON_MAYBE_UNUSED_VAR(nogil);
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&old_exc, &old_val, &old_tb);
    if (full_traceback) {
        Py_XINCREF(old_exc);
        Py_XINCREF(old_val);
        Py_XINCREF(old_tb);
        __Pyx_ErrRestore(old_exc, old_val, old_tb);
        PyErr_PrintEx(0);
    }
    ctx = PyUnicode_FromString(name);
    __Pyx_ErrRestore(old_exc, old_val, old_tb);
    if (!ctx) {
        PyErr_WriteUnraisable(Py_None);
    } else {
        PyErr_WriteUnraisable(ctx);
        Py_DECREF(ctx);
    }
    if (nogil)
        PyGILState_Release(state);
}

/* PyObjectVectorCallKwBuilder (used by PyObjectVectorCallMethodKwBuilder) */
#if CYTHON_VECTORCALL
static int __Pyx_VectorcallBuilder_AddArg(PyObject *key, PyObject *value, PyObject *builder, PyObject **args, int n) {
    (void)__Pyx_PyObject_FastCallDict;
    if (__Pyx_PyTuple_SET_ITEM(builder, n, key) != (0)) return -1;
    Py_INCREF(key);
    args[n] = value;
    return 0;
}
CYTHON_UNUSED static int __Pyx_VectorcallBuilder_AddArg_Check(PyObject *key, PyObject *value, PyObject *builder, PyObject **args, int n) {
    (void)__Pyx_VectorcallBuilder_AddArgStr;
    if (unlikely(!PyUnicode_Check(key))) {
        PyErr_SetString(PyExc_TypeError, "keywords must be strings");
        return -1;
    }
    return __Pyx_VectorcallBuilder_AddArg(key, value, builder, args, n);
}
static int __Pyx_VectorcallBuilder_AddArgStr(const char *key, PyObject *value, PyObject *builder, PyObject **args, int n) {
    PyObject *pyKey = PyUnicode_FromString(key);
    if (!pyKey) return -1;
    return __Pyx_VectorcallBuilder_AddArg(pyKey, value, builder, args, n);
}
#else // CYTHON_VECTORCALL
CYTHON_UNUSED static int __Pyx_VectorcallBuilder_AddArg_Check(PyObject *key, PyObject *value, PyObject *builder, CYTHON_UNUSED PyObject **args, CYTHON_UNUSED int n) {
    if (unlikely(!PyUnicode_Check(key))) {
        PyErr_SetString(PyExc_TypeError, "keywords must be strings");
        return -1;
    }
    return PyDict_SetItem(builder, key, value);
}
#endif

/* PyObjectVectorCallMethodKwBuilder */
#if !CYTHON_VECTORCALL || PY_VERSION_HEX < 0x03090000
static PyObject *__Pyx_Object_VectorcallMethod_CallFromBuilder(PyObject *name, PyObject *const *args, size_t nargsf, PyObject *kwnames) {
    PyObject *result;
    PyObject *obj = PyObject_GetAttr(args[0], name);
    if (unlikely(!obj))
        return NULL;
    result = __Pyx_Object_Vectorcall_CallFromBuilder(obj, args+1, nargsf-1, kwnames);
    Py_DECREF(obj);
    return result;
}
#endif

/* PyLongCompare */
static CYTHON_INLINE int __Pyx_PyLong_BoolEqObjC(PyObject *op1, PyObject *op2, long intval, long inplace) {
    CYTHON_MAYBE_UNUSED_VAR(intval);
    CYTHON_UNUSED_VAR(inplace);
    if (op1 == op2) {
        return 1;
    }
    #if CYTHON_USE_PYLONG_INTERNALS
    if (likely(PyLong_CheckExact(op1))) {
        int unequal;
        unsigned long uintval;
        Py_ssize_t size = __Pyx_PyLong_DigitCount(op1);
        const digit* digits = __Pyx_PyLong_Digits(op1);
        if (intval == 0) {
            return (__Pyx_PyLong_IsZero(op1) == 1);
        } else if (intval < 0) {
            if (__Pyx_PyLong_IsNonNeg(op1))
                return 0;
            intval = -intval;
        } else {
            if (__Pyx_PyLong_IsNeg(op1))
                return 0;
        }
        uintval = (unsigned long) intval;
#if PyLong_SHIFT * 4 < SIZEOF_LONG*8
        if (uintval >> (PyLong_SHIFT * 4)) {
            unequal = (size != 5) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
                 | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[4] != ((uintval >> (4 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
        } else
#endif
#if PyLong_SHIFT * 3 < SIZEOF_LONG*8
        if (uintval >> (PyLong_SHIFT * 3)) {
            unequal = (size != 4) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
                 | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
        } else
#endif
#if PyLong_SHIFT * 2 < SIZEOF_LONG*8
        if (uintval >> (PyLong_SHIFT * 2)) {
            unequal = (size != 3) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
                 | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
        } else
#endif
#if PyLong_SHIFT * 1 < SIZEOF_LONG*8
        if (uintval >> (PyLong_SHIFT * 1)) {
            unequal = (size != 2) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
                 | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
        } else
#endif
            unequal = (size != 1) || (((unsigned long) digits[0]) != (uintval & (unsigned long) PyLong_MASK));
        return (unequal == 0);
    }
    #endif
    if (PyFloat_CheckExact(op1)) {
        const long b = intval;
        double a = __Pyx_PyFloat_AS_DOUBLE(op1);
        return ((double)a == (double)b);
    }
    return __Pyx_PyObject_IsTrueAndDecref(
        PyObject_RichCompare(op1, op2, Py_EQ));
}

/* PyObjectSetAttrStr */
#if CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) {
    PyTypeObject* tp = Py_TYPE(obj);
    if (likely(tp->tp_setattro))
        return tp->tp_setattro(obj, attr_name, value);
    return PyObject_SetAttr(obj, attr_name, value);
}
#endif

/* decode_c_string */
static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
         const char* cstring, Py_ssize_t start, Py_ssize_t stop,
         const char* encoding, const char* errors,
         PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) {
    Py_ssize_t length;
    if (unlikely((start < 0) | (stop < 0))) {
        size_t slen = strlen(cstring);
        if (unlikely(slen > (size_t) PY_SSIZE_T_MAX)) {
            PyErr_SetString(PyExc_OverflowError,
                            "c-string too long to convert to Python");
            return NULL;
        }
        length = (Py_ssize_t) slen;
        if (start < 0) {
            start += length;
            if (start < 0)
                start = 0;
        }
        if (stop < 0)
            stop += length;
    }
    if (unlikely(stop <= start))
        return __Pyx_NewRef(__pyx_mstate_global->__pyx_empty_unicode);
    length = stop - start;
    cstring += start;
    if (decode_func) {
        return decode_func(cstring, length, errors);
    } else {
        return PyUnicode_Decode(cstring, length, encoding, errors);
    }
}

/* FastTypeChecks */
#if CYTHON_COMPILING_IN_CPYTHON
static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {
    while (a) {
        a = __Pyx_PyType_GetSlot(a, tp_base, PyTypeObject*);
        if (a == b)
            return 1;
    }
    return b == &PyBaseObject_Type;
}
static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) {
    PyObject *mro;
    if (a == b) return 1;
    mro = a->tp_mro;
    if (likely(mro)) {
        Py_ssize_t i, n;
        n = PyTuple_GET_SIZE(mro);
        for (i = 0; i < n; i++) {
            if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b)
                return 1;
        }
        return 0;
    }
    return __Pyx_InBases(a, b);
}
static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b) {
    PyObject *mro;
    if (cls == a || cls == b) return 1;
    mro = cls->tp_mro;
    if (likely(mro)) {
        Py_ssize_t i, n;
        n = PyTuple_GET_SIZE(mro);
        for (i = 0; i < n; i++) {
            PyObject *base = PyTuple_GET_ITEM(mro, i);
            if (base == (PyObject *)a || base == (PyObject *)b)
                return 1;
        }
        return 0;
    }
    return __Pyx_InBases(cls, a) || __Pyx_InBases(cls, b);
}
static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) {
    if (exc_type1) {
        return __Pyx_IsAnySubtype2((PyTypeObject*)err, (PyTypeObject*)exc_type1, (PyTypeObject*)exc_type2);
    } else {
        return __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2);
    }
}
static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
    Py_ssize_t i, n;
    assert(PyExceptionClass_Check(exc_type));
    n = PyTuple_GET_SIZE(tuple);
    for (i=0; i<n; i++) {
        if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
    }
    for (i=0; i<n; i++) {
        PyObject *t = PyTuple_GET_ITEM(tuple, i);
        if (likely(PyExceptionClass_Check(t))) {
            if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1;
        } else {
        }
    }
    return 0;
}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) {
    if (likely(err == exc_type)) return 1;
    if (likely(PyExceptionClass_Check(err))) {
        if (likely(PyExceptionClass_Check(exc_type))) {
            return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
        } else if (likely(PyTuple_Check(exc_type))) {
            return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type);
        } else {
        }
    }
    return PyErr_GivenExceptionMatches(err, exc_type);
}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) {
    assert(PyExceptionClass_Check(exc_type1));
    assert(PyExceptionClass_Check(exc_type2));
    if (likely(err == exc_type1 || err == exc_type2)) return 1;
    if (likely(PyExceptionClass_Check(err))) {
        return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2);
    }
    return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2));
}
#endif

/* ObjectGetItem */
#if CYTHON_USE_TYPE_SLOTS
static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject *index) {
    PyObject *runerr = NULL;
    Py_ssize_t key_value;
    key_value = __Pyx_PyIndex_AsSsize_t(index);
    if (likely(key_value != -1 || !(runerr = PyErr_Occurred()))) {
        return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1, 1);
    }
    if (PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) {
        __Pyx_TypeName index_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(index));
        PyErr_Clear();
        PyErr_Format(PyExc_IndexError,
            "cannot fit '" __Pyx_FMT_TYPENAME "' into an index-sized integer", index_type_name);
        __Pyx_DECREF_TypeName(index_type_name);
    }
    return NULL;
}
static PyObject *__Pyx_PyObject_GetItem_Slow(PyObject *obj, PyObject *key) {
    __Pyx_TypeName obj_type_name;
    if (likely(PyType_Check(obj))) {
        PyObject *meth = __Pyx_PyObject_GetAttrStrNoError(obj, __pyx_mstate_global->__pyx_n_u_class_getitem);
        if (!meth) {
            PyErr_Clear();
        } else {
            PyObject *result = __Pyx_PyObject_CallOneArg(meth, key);
            Py_DECREF(meth);
            return result;
        }
    }
    obj_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(obj));
    PyErr_Format(PyExc_TypeError,
        "'" __Pyx_FMT_TYPENAME "' object is not subscriptable", obj_type_name);
    __Pyx_DECREF_TypeName(obj_type_name);
    return NULL;
}
static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject *key) {
    PyTypeObject *tp = Py_TYPE(obj);
    PyMappingMethods *mm = tp->tp_as_mapping;
    PySequenceMethods *sm = tp->tp_as_sequence;
    if (likely(mm && mm->mp_subscript)) {
        return mm->mp_subscript(obj, key);
    }
    if (likely(sm && sm->sq_item)) {
        return __Pyx_PyObject_GetIndex(obj, key);
    }
    return __Pyx_PyObject_GetItem_Slow(obj, key);
}
#endif

/* CIntToDigits (used by CIntToPyUnicode) */
static const char DIGIT_PAIRS_10[2*10*10+1] = {
    "00010203040506070809"
    "10111213141516171819"
    "20212223242526272829"
    "30313233343536373839"
    "40414243444546474849"
    "50515253545556575859"
    "60616263646566676869"
    "70717273747576777879"
    "80818283848586878889"
    "90919293949596979899"
};
static const char DIGIT_PAIRS_8[2*8*8+1] = {
    "0001020304050607"
    "1011121314151617"
    "2021222324252627"
    "3031323334353637"
    "4041424344454647"
    "5051525354555657"
    "6061626364656667"
    "7071727374757677"
};
static const char DIGITS_HEX[2*16+1] = {
    "0123456789abcdef"
    "0123456789ABCDEF"
};

/* BuildPyUnicode (used by COrdinalToPyUnicode) */
static PyObject* __Pyx_PyUnicode_BuildFromAscii(Py_ssize_t ulength, const char* chars, int clength,
                                                int prepend_sign, char padding_char) {
    PyObject *uval;
    Py_ssize_t uoffset = ulength - clength;
#if CYTHON_USE_UNICODE_INTERNALS
    Py_ssize_t i;
    void *udata;
    uval = PyUnicode_New(ulength, 127);
    if (unlikely(!uval)) return NULL;
    udata = PyUnicode_DATA(uval);
    if (uoffset > 0) {
        i = 0;
        if (prepend_sign) {
            __Pyx_PyUnicode_WRITE(PyUnicode_1BYTE_KIND, udata, 0, '-');
            i++;
        }
        for (; i < uoffset; i++) {
            __Pyx_PyUnicode_WRITE(PyUnicode_1BYTE_KIND, udata, i, padding_char);
        }
    }
    for (i=0; i < clength; i++) {
        __Pyx_PyUnicode_WRITE(PyUnicode_1BYTE_KIND, udata, uoffset+i, chars[i]);
    }
#else
    {
        PyObject *sign = NULL, *padding = NULL;
        uval = NULL;
        if (uoffset > 0) {
            prepend_sign = !!prepend_sign;
            if (uoffset > prepend_sign) {
                padding = PyUnicode_FromOrdinal(padding_char);
                if (likely(padding) && uoffset > prepend_sign + 1) {
                    PyObject *tmp = PySequence_Repeat(padding, uoffset - prepend_sign);
                    Py_DECREF(padding);
                    padding = tmp;
                }
                if (unlikely(!padding)) goto done_or_error;
            }
            if (prepend_sign) {
                sign = PyUnicode_FromOrdinal('-');
                if (unlikely(!sign)) goto done_or_error;
            }
        }
        uval = PyUnicode_DecodeASCII(chars, clength, NULL);
        if (likely(uval) && padding) {
            PyObject *tmp = PyUnicode_Concat(padding, uval);
            Py_DECREF(uval);
            uval = tmp;
        }
        if (likely(uval) && sign) {
            PyObject *tmp = PyUnicode_Concat(sign, uval);
            Py_DECREF(uval);
            uval = tmp;
        }
done_or_error:
        Py_XDECREF(padding);
        Py_XDECREF(sign);
    }
#endif
    return uval;
}

/* COrdinalToPyUnicode (used by CIntToPyUnicode) */
static CYTHON_INLINE int __Pyx_CheckUnicodeValue(int value) {
    return value <= 1114111;
}
static PyObject* __Pyx_PyUnicode_FromOrdinal_Padded(int value, Py_ssize_t ulength, char padding_char) {
    Py_ssize_t padding_length = ulength - 1;
    if (likely((padding_length <= 250) && (value < 0xD800 || value > 0xDFFF))) {
        char chars[256];
        if (value <= 255) {
            memset(chars, padding_char, (size_t) padding_length);
            chars[ulength-1] = (char) value;
            return PyUnicode_DecodeLatin1(chars, ulength, NULL);
        }
        char *cpos = chars + sizeof(chars);
        if (value < 0x800) {
            *--cpos = (char) (0x80 | (value & 0x3f));
            value >>= 6;
            *--cpos = (char) (0xc0 | (value & 0x1f));
        } else if (value < 0x10000) {
            *--cpos = (char) (0x80 | (value & 0x3f));
            value >>= 6;
            *--cpos = (char) (0x80 | (value & 0x3f));
            value >>= 6;
            *--cpos = (char) (0xe0 | (value & 0x0f));
        } else {
            *--cpos = (char) (0x80 | (value & 0x3f));
            value >>= 6;
            *--cpos = (char) (0x80 | (value & 0x3f));
            value >>= 6;
            *--cpos = (char) (0x80 | (value & 0x3f));
            value >>= 6;
            *--cpos = (char) (0xf0 | (value & 0x07));
        }
        cpos -= padding_length;
        memset(cpos, padding_char, (size_t) padding_length);
        return PyUnicode_DecodeUTF8(cpos, chars + sizeof(chars) - cpos, NULL);
    }
    if (value <= 127 && CYTHON_USE_UNICODE_INTERNALS) {
        const char chars[1] = {(char) value};
        return __Pyx_PyUnicode_BuildFromAscii(ulength, chars, 1, 0, padding_char);
    }
    {
        PyObject *uchar, *padding_uchar, *padding, *result;
        padding_uchar = PyUnicode_FromOrdinal(padding_char);
        if (unlikely(!padding_uchar)) return NULL;
        padding = PySequence_Repeat(padding_uchar, padding_length);
        Py_DECREF(padding_uchar);
        if (unlikely(!padding)) return NULL;
        uchar = PyUnicode_FromOrdinal(value);
        if (unlikely(!uchar)) {
            Py_DECREF(padding);
            return NULL;
        }
        result = PyUnicode_Concat(padding, uchar);
        Py_DECREF(padding);
        Py_DECREF(uchar);
        return result;
    }
}

/* CIntToPyUnicode */
static CYTHON_INLINE PyObject* __Pyx_uchar___Pyx_PyUnicode_From_unsigned_int(unsigned int value, Py_ssize_t width, char padding_char) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const unsigned int neg_one = (unsigned int) -1, const_zero = (unsigned int) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (unlikely(!(is_unsigned || value == 0 || value > 0) ||
                    !(sizeof(value) <= 2 || value & ~ (unsigned int) 0x01fffff || __Pyx_CheckUnicodeValue((int) value)))) {
        PyErr_SetString(PyExc_OverflowError, "%c arg not in range(0x110000)");
        return NULL;
    }
    if (width <= 1) {
        return PyUnicode_FromOrdinal((int) value);
    }
    return __Pyx_PyUnicode_FromOrdinal_Padded((int) value, width, padding_char);
}
static CYTHON_INLINE PyObject* __Pyx____Pyx_PyUnicode_From_unsigned_int(unsigned int value, Py_ssize_t width, char padding_char, char format_char) {
    char digits[sizeof(unsigned int)*3+2];
    char *dpos, *end = digits + sizeof(unsigned int)*3+2;
    const char *hex_digits = DIGITS_HEX;
    Py_ssize_t length, ulength;
    int prepend_sign, last_one_off;
    unsigned int remaining;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const unsigned int neg_one = (unsigned int) -1, const_zero = (unsigned int) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (format_char == 'X') {
        hex_digits += 16;
        format_char = 'x';
    }
    remaining = value;
    last_one_off = 0;
    dpos = end;
    do {
        int digit_pos;
        switch (format_char) {
        case 'o':
            digit_pos = abs((int)(remaining % (8*8)));
            remaining = (unsigned int) (remaining / (8*8));
            dpos -= 2;
            memcpy(dpos, DIGIT_PAIRS_8 + digit_pos * 2, 2);
            last_one_off = (digit_pos < 8);
            break;
        case 'd':
            digit_pos = abs((int)(remaining % (10*10)));
            remaining = (unsigned int) (remaining / (10*10));
            dpos -= 2;
            memcpy(dpos, DIGIT_PAIRS_10 + digit_pos * 2, 2);
            last_one_off = (digit_pos < 10);
            break;
        case 'x':
            *(--dpos) = hex_digits[abs((int)(remaining % 16))];
            remaining = (unsigned int) (remaining / 16);
            break;
        default:
            assert(0);
            break;
        }
    } while (unlikely(remaining != 0));
    assert(!last_one_off || *dpos == '0');
    dpos += last_one_off;
    length = end - dpos;
    ulength = length;
    prepend_sign = 0;
    if (!is_unsigned && value <= neg_one) {
        if (padding_char == ' ' || width <= length + 1) {
            *(--dpos) = '-';
            ++length;
        } else {
            prepend_sign = 1;
        }
        ++ulength;
    }
    if (width > ulength) {
        ulength = width;
    }
    if (ulength == 1) {
        return PyUnicode_FromOrdinal(*dpos);
    }
    return __Pyx_PyUnicode_BuildFromAscii(ulength, dpos, (int) length, prepend_sign, padding_char);
}

/* CIntToPyUnicode */
static CYTHON_INLINE PyObject* __Pyx_uchar___Pyx_PyUnicode_From_uint16_t(uint16_t value, Py_ssize_t width, char padding_char) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const uint16_t neg_one = (uint16_t) -1, const_zero = (uint16_t) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (unlikely(!(is_unsigned || value == 0 || value > 0) ||
                    !(sizeof(value) <= 2 || value & ~ (uint16_t) 0x01fffff || __Pyx_CheckUnicodeValue((int) value)))) {
        PyErr_SetString(PyExc_OverflowError, "%c arg not in range(0x110000)");
        return NULL;
    }
    if (width <= 1) {
        return PyUnicode_FromOrdinal((int) value);
    }
    return __Pyx_PyUnicode_FromOrdinal_Padded((int) value, width, padding_char);
}
static CYTHON_INLINE PyObject* __Pyx____Pyx_PyUnicode_From_uint16_t(uint16_t value, Py_ssize_t width, char padding_char, char format_char) {
    char digits[sizeof(uint16_t)*3+2];
    char *dpos, *end = digits + sizeof(uint16_t)*3+2;
    const char *hex_digits = DIGITS_HEX;
    Py_ssize_t length, ulength;
    int prepend_sign, last_one_off;
    uint16_t remaining;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const uint16_t neg_one = (uint16_t) -1, const_zero = (uint16_t) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (format_char == 'X') {
        hex_digits += 16;
        format_char = 'x';
    }
    remaining = value;
    last_one_off = 0;
    dpos = end;
    do {
        int digit_pos;
        switch (format_char) {
        case 'o':
            digit_pos = abs((int)(remaining % (8*8)));
            remaining = (uint16_t) (remaining / (8*8));
            dpos -= 2;
            memcpy(dpos, DIGIT_PAIRS_8 + digit_pos * 2, 2);
            last_one_off = (digit_pos < 8);
            break;
        case 'd':
            digit_pos = abs((int)(remaining % (10*10)));
            remaining = (uint16_t) (remaining / (10*10));
            dpos -= 2;
            memcpy(dpos, DIGIT_PAIRS_10 + digit_pos * 2, 2);
            last_one_off = (digit_pos < 10);
            break;
        case 'x':
            *(--dpos) = hex_digits[abs((int)(remaining % 16))];
            remaining = (uint16_t) (remaining / 16);
            break;
        default:
            assert(0);
            break;
        }
    } while (unlikely(remaining != 0));
    assert(!last_one_off || *dpos == '0');
    dpos += last_one_off;
    length = end - dpos;
    ulength = length;
    prepend_sign = 0;
    if (!is_unsigned && value <= neg_one) {
        if (padding_char == ' ' || width <= length + 1) {
            *(--dpos) = '-';
            ++length;
        } else {
            prepend_sign = 1;
        }
        ++ulength;
    }
    if (width > ulength) {
        ulength = width;
    }
    if (ulength == 1) {
        return PyUnicode_FromOrdinal(*dpos);
    }
    return __Pyx_PyUnicode_BuildFromAscii(ulength, dpos, (int) length, prepend_sign, padding_char);
}

/* IterFinish (used by dict_iter) */
static CYTHON_INLINE int __Pyx_IterFinish(void) {
    PyObject* exc_type;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    exc_type = __Pyx_PyErr_CurrentExceptionType();
    if (unlikely(exc_type)) {
        if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))
            return -1;
        __Pyx_PyErr_Clear();
        return 0;
    }
    return 0;
}

/* PyObjectCallNoArg (used by PyObjectCallMethod0) */
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
    PyObject *arg[2] = {NULL, NULL};
    return __Pyx_PyObject_FastCall(func, arg + 1, 0 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET);
}

/* PyObjectGetMethod (used by PyObjectCallMethod0) */
#if !(CYTHON_VECTORCALL && (__PYX_LIMITED_VERSION_HEX >= 0x030C0000 || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x03090000)))
static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) {
    PyObject *attr;
#if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP
    __Pyx_TypeName type_name;
    PyTypeObject *tp = Py_TYPE(obj);
    PyObject *descr;
    descrgetfunc f = NULL;
    PyObject **dictptr, *dict;
    int meth_found = 0;
    assert (*method == NULL);
    if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) {
        attr = __Pyx_PyObject_GetAttrStr(obj, name);
        goto try_unpack;
    }
    if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) {
        return 0;
    }
    descr = _PyType_Lookup(tp, name);
    if (likely(descr != NULL)) {
        Py_INCREF(descr);
#if defined(Py_TPFLAGS_METHOD_DESCRIPTOR) && Py_TPFLAGS_METHOD_DESCRIPTOR
        if (__Pyx_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR))
#else
        #ifdef __Pyx_CyFunction_USED
        if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr)))
        #else
        if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type)))
        #endif
#endif
        {
            meth_found = 1;
        } else {
            f = Py_TYPE(descr)->tp_descr_get;
            if (f != NULL && PyDescr_IsData(descr)) {
                attr = f(descr, obj, (PyObject *)Py_TYPE(obj));
                Py_DECREF(descr);
                goto try_unpack;
            }
        }
    }
    dictptr = _PyObject_GetDictPtr(obj);
    if (dictptr != NULL && (dict = *dictptr) != NULL) {
        Py_INCREF(dict);
        attr = __Pyx_PyDict_GetItemStr(dict, name);
        if (attr != NULL) {
            Py_INCREF(attr);
            Py_DECREF(dict);
            Py_XDECREF(descr);
            goto try_unpack;
        }
        Py_DECREF(dict);
    }
    if (meth_found) {
        *method = descr;
        return 1;
    }
    if (f != NULL) {
        attr = f(descr, obj, (PyObject *)Py_TYPE(obj));
        Py_DECREF(descr);
        goto try_unpack;
    }
    if (likely(descr != NULL)) {
        *method = descr;
        return 0;
    }
    type_name = __Pyx_PyType_GetFullyQualifiedName(tp);
    PyErr_Format(PyExc_AttributeError,
                 "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'",
                 type_name, name);
    __Pyx_DECREF_TypeName(type_name);
    return 0;
#else
    attr = __Pyx_PyObject_GetAttrStr(obj, name);
    goto try_unpack;
#endif
try_unpack:
#if CYTHON_UNPACK_METHODS
    if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) {
        PyObject *function = PyMethod_GET_FUNCTION(attr);
        Py_INCREF(function);
        Py_DECREF(attr);
        *method = function;
        return 1;
    }
#endif
    *method = attr;
    return 0;
}
#endif

/* PyObjectCallMethod0 (used by dict_iter) */
static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) {
#if CYTHON_VECTORCALL && (__PYX_LIMITED_VERSION_HEX >= 0x030C0000 || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x03090000))
    PyObject *args[1] = {obj};
    (void) __Pyx_PyObject_CallOneArg;
    (void) __Pyx_PyObject_CallNoArg;
    return PyObject_VectorcallMethod(method_name, args, 1 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL);
#else
    PyObject *method = NULL, *result = NULL;
    int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method);
    if (likely(is_method)) {
        result = __Pyx_PyObject_CallOneArg(method, obj);
        Py_DECREF(method);
        return result;
    }
    if (unlikely(!method)) goto bad;
    result = __Pyx_PyObject_CallNoArg(method);
    Py_DECREF(method);
bad:
    return result;
#endif
}

/* RaiseNeedMoreValuesToUnpack (used by UnpackTuple2) */
static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
    PyErr_Format(PyExc_ValueError,
                 "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack",
                 index, (index == 1) ? "" : "s");
}

/* RaiseTooManyValuesToUnpack (used by UnpackItemEndCheck) */
static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
    PyErr_Format(PyExc_ValueError,
                 "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected);
}

/* UnpackItemEndCheck (used by UnpackTuple2) */
static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
    if (unlikely(retval)) {
        Py_DECREF(retval);
        __Pyx_RaiseTooManyValuesError(expected);
        return -1;
    }
    return __Pyx_IterFinish();
}

/* RaiseNoneIterError (used by UnpackTupleError) */
static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
}

/* UnpackTupleError (used by UnpackTuple2) */
static void __Pyx_UnpackTupleError(PyObject *t, Py_ssize_t index) {
    if (t == Py_None) {
      __Pyx_RaiseNoneNotIterableError();
    } else {
      Py_ssize_t size = __Pyx_PyTuple_GET_SIZE(t);
 #if !CYTHON_ASSUME_SAFE_SIZE
      if (unlikely(size < 0)) return;
 #endif
      if (size < index) {
        __Pyx_RaiseNeedMoreValuesError(size);
      } else {
        __Pyx_RaiseTooManyValuesError(index);
      }
    }
}

/* UnpackTuple2 (used by dict_iter) */
static CYTHON_INLINE int __Pyx_unpack_tuple2(
        PyObject* tuple, PyObject** value1, PyObject** value2, int is_tuple, int has_known_size, int decref_tuple) {
    if (likely(is_tuple || PyTuple_Check(tuple))) {
        Py_ssize_t size;
        if (has_known_size) {
            return __Pyx_unpack_tuple2_exact(tuple, value1, value2, decref_tuple);
        }
        size = __Pyx_PyTuple_GET_SIZE(tuple);
        if (likely(size == 2)) {
            return __Pyx_unpack_tuple2_exact(tuple, value1, value2, decref_tuple);
        }
        if (size >= 0) {
            __Pyx_UnpackTupleError(tuple, 2);
        }
        return -1;
    } else {
        return __Pyx_unpack_tuple2_generic(tuple, value1, value2, has_known_size, decref_tuple);
    }
}
static CYTHON_INLINE int __Pyx_unpack_tuple2_exact(
        PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2, int decref_tuple) {
    PyObject *value1 = NULL, *value2 = NULL;
#if CYTHON_AVOID_BORROWED_REFS || !CYTHON_ASSUME_SAFE_MACROS
    value1 = __Pyx_PySequence_ITEM(tuple, 0);  if (unlikely(!value1)) goto bad;
    value2 = __Pyx_PySequence_ITEM(tuple, 1);  if (unlikely(!value2)) goto bad;
#else
    value1 = PyTuple_GET_ITEM(tuple, 0);  Py_INCREF(value1);
    value2 = PyTuple_GET_ITEM(tuple, 1);  Py_INCREF(value2);
#endif
    if (decref_tuple) {
        Py_DECREF(tuple);
    }
    *pvalue1 = value1;
    *pvalue2 = value2;
    return 0;
#if CYTHON_AVOID_BORROWED_REFS || !CYTHON_ASSUME_SAFE_MACROS
bad:
    Py_XDECREF(value1);
    Py_XDECREF(value2);
    if (decref_tuple) { Py_XDECREF(tuple); }
    return -1;
#endif
}
static int __Pyx_unpack_tuple2_generic(PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2,
                                       int has_known_size, int decref_tuple) {
    Py_ssize_t index;
    PyObject *value1 = NULL, *value2 = NULL, *iter = NULL;
    iternextfunc iternext;
    iter = PyObject_GetIter(tuple);
    if (unlikely(!iter)) goto bad;
    if (decref_tuple) { Py_DECREF(tuple); tuple = NULL; }
    iternext = __Pyx_PyObject_GetIterNextFunc(iter);
    value1 = iternext(iter); if (unlikely(!value1)) { index = 0; goto unpacking_failed; }
    value2 = iternext(iter); if (unlikely(!value2)) { index = 1; goto unpacking_failed; }
    if (!has_known_size && unlikely(__Pyx_IternextUnpackEndCheck(iternext(iter), 2))) goto bad;
    Py_DECREF(iter);
    *pvalue1 = value1;
    *pvalue2 = value2;
    return 0;
unpacking_failed:
    if (!has_known_size && __Pyx_IterFinish() == 0)
        __Pyx_RaiseNeedMoreValuesError(index);
bad:
    Py_XDECREF(iter);
    Py_XDECREF(value1);
    Py_XDECREF(value2);
    if (decref_tuple) { Py_XDECREF(tuple); }
    return -1;
}

/* dict_iter */
#if CYTHON_COMPILING_IN_PYPY
#include <string.h>
#endif
static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* iterable, int is_dict, PyObject* method_name,
                                                   Py_ssize_t* p_orig_length, int* p_source_is_dict) {
    is_dict = is_dict || likely(PyDict_CheckExact(iterable));
    *p_source_is_dict = is_dict;
    if (is_dict) {
#if !CYTHON_COMPILING_IN_PYPY
        *p_orig_length = PyDict_Size(iterable);
        Py_INCREF(iterable);
        return iterable;
#else
        static PyObject *py_items = NULL, *py_keys = NULL, *py_values = NULL;
        PyObject **pp = NULL;
        if (method_name) {
            const char *name = PyUnicode_AsUTF8(method_name);
            if (strcmp(name, "iteritems") == 0) pp = &py_items;
            else if (strcmp(name, "iterkeys") == 0) pp = &py_keys;
            else if (strcmp(name, "itervalues") == 0) pp = &py_values;
            if (pp) {
                if (!*pp) {
                    *pp = PyUnicode_FromString(name + 4);
                    if (!*pp)
                        return NULL;
                }
                method_name = *pp;
            }
        }
#endif
    }
    *p_orig_length = 0;
    if (method_name) {
        PyObject* iter;
        iterable = __Pyx_PyObject_CallMethod0(iterable, method_name);
        if (!iterable)
            return NULL;
#if !CYTHON_COMPILING_IN_PYPY
        if (PyTuple_CheckExact(iterable) || PyList_CheckExact(iterable))
            return iterable;
#endif
        iter = PyObject_GetIter(iterable);
        Py_DECREF(iterable);
        return iter;
    }
    return PyObject_GetIter(iterable);
}
#if !CYTHON_AVOID_BORROWED_REFS
static CYTHON_INLINE int __Pyx_dict_iter_next_source_is_dict(
        PyObject* iter_obj, CYTHON_NCP_UNUSED Py_ssize_t orig_length, CYTHON_NCP_UNUSED Py_ssize_t* ppos,
        PyObject** pkey, PyObject** pvalue, PyObject** pitem) {
    PyObject *key, *value;
    if (unlikely(orig_length != PyDict_Size(iter_obj))) {
        PyErr_SetString(PyExc_RuntimeError, "dictionary changed size during iteration");
        return -1;
    }
    if (unlikely(!PyDict_Next(iter_obj, ppos, &key, &value))) {
        return 0;
    }
    if (pitem) {
        PyObject* tuple = PyTuple_New(2);
        if (unlikely(!tuple)) {
            return -1;
        }
        Py_INCREF(key);
        Py_INCREF(value);
        #if CYTHON_ASSUME_SAFE_MACROS
        PyTuple_SET_ITEM(tuple, 0, key);
        PyTuple_SET_ITEM(tuple, 1, value);
        #else
        if (unlikely(PyTuple_SetItem(tuple, 0, key) < 0)) {
            Py_DECREF(value);
            Py_DECREF(tuple);
            return -1;
        }
        if (unlikely(PyTuple_SetItem(tuple, 1, value) < 0)) {
            Py_DECREF(tuple);
            return -1;
        }
        #endif
        *pitem = tuple;
    } else {
        if (pkey) {
            Py_INCREF(key);
            *pkey = key;
        }
        if (pvalue) {
            Py_INCREF(value);
            *pvalue = value;
        }
    }
    return 1;
}
#endif
static CYTHON_INLINE int __Pyx_dict_iter_next(
        PyObject* iter_obj, CYTHON_NCP_UNUSED Py_ssize_t orig_length, CYTHON_NCP_UNUSED Py_ssize_t* ppos,
        PyObject** pkey, PyObject** pvalue, PyObject** pitem, int source_is_dict) {
    PyObject* next_item;
#if !CYTHON_AVOID_BORROWED_REFS
    if (source_is_dict) {
        int result;
#if PY_VERSION_HEX >= 0x030d0000 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_BEGIN_CRITICAL_SECTION(iter_obj);
#endif
        result = __Pyx_dict_iter_next_source_is_dict(iter_obj, orig_length, ppos, pkey, pvalue, pitem);
#if PY_VERSION_HEX >= 0x030d0000 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_END_CRITICAL_SECTION();
#endif
        return result;
    } else if (PyTuple_CheckExact(iter_obj)) {
        Py_ssize_t pos = *ppos;
        Py_ssize_t tuple_size = __Pyx_PyTuple_GET_SIZE(iter_obj);
        #if !CYTHON_ASSUME_SAFE_SIZE
        if (unlikely(tuple_size < 0)) return -1;
        #endif
        if (unlikely(pos >= tuple_size)) return 0;
        *ppos = pos + 1;
        #if CYTHON_ASSUME_SAFE_MACROS
        next_item = PyTuple_GET_ITEM(iter_obj, pos);
        #else
        next_item = PyTuple_GetItem(iter_obj, pos);
        if (unlikely(!next_item)) return -1;
        #endif
        Py_INCREF(next_item);
    } else if (PyList_CheckExact(iter_obj)) {
        Py_ssize_t pos = *ppos;
        Py_ssize_t list_size = __Pyx_PyList_GET_SIZE(iter_obj);
        #if !CYTHON_ASSUME_SAFE_SIZE
        if (unlikely(list_size < 0)) return -1;
        #endif
        if (unlikely(pos >= list_size)) return 0;
        *ppos = pos + 1;
        next_item = __Pyx_PyList_GetItemRef(iter_obj, pos);
        if (unlikely(!next_item)) return -1;
    } else
#endif
    {
        next_item = PyIter_Next(iter_obj);
        if (unlikely(!next_item)) {
            return __Pyx_IterFinish();
        }
    }
    if (pitem) {
        *pitem = next_item;
    } else if (pkey && pvalue) {
        if (__Pyx_unpack_tuple2(next_item, pkey, pvalue, source_is_dict, source_is_dict, 1))
            return -1;
    } else if (pkey) {
        *pkey = next_item;
    } else {
        *pvalue = next_item;
    }
    return 1;
}

/* CIntToPyUnicode */
static CYTHON_INLINE PyObject* __Pyx_uchar___Pyx_PyUnicode_From_int(int value, Py_ssize_t width, char padding_char) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const int neg_one = (int) -1, const_zero = (int) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (unlikely(!(is_unsigned || value == 0 || value > 0) ||
                    !(sizeof(value) <= 2 || value & ~ (int) 0x01fffff || __Pyx_CheckUnicodeValue((int) value)))) {
        PyErr_SetString(PyExc_OverflowError, "%c arg not in range(0x110000)");
        return NULL;
    }
    if (width <= 1) {
        return PyUnicode_FromOrdinal((int) value);
    }
    return __Pyx_PyUnicode_FromOrdinal_Padded((int) value, width, padding_char);
}
static CYTHON_INLINE PyObject* __Pyx____Pyx_PyUnicode_From_int(int value, Py_ssize_t width, char padding_char, char format_char) {
    char digits[sizeof(int)*3+2];
    char *dpos, *end = digits + sizeof(int)*3+2;
    const char *hex_digits = DIGITS_HEX;
    Py_ssize_t length, ulength;
    int prepend_sign, last_one_off;
    int remaining;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const int neg_one = (int) -1, const_zero = (int) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (format_char == 'X') {
        hex_digits += 16;
        format_char = 'x';
    }
    remaining = value;
    last_one_off = 0;
    dpos = end;
    do {
        int digit_pos;
        switch (format_char) {
        case 'o':
            digit_pos = abs((int)(remaining % (8*8)));
            remaining = (int) (remaining / (8*8));
            dpos -= 2;
            memcpy(dpos, DIGIT_PAIRS_8 + digit_pos * 2, 2);
            last_one_off = (digit_pos < 8);
            break;
        case 'd':
            digit_pos = abs((int)(remaining % (10*10)));
            remaining = (int) (remaining / (10*10));
            dpos -= 2;
            memcpy(dpos, DIGIT_PAIRS_10 + digit_pos * 2, 2);
            last_one_off = (digit_pos < 10);
            break;
        case 'x':
            *(--dpos) = hex_digits[abs((int)(remaining % 16))];
            remaining = (int) (remaining / 16);
            break;
        default:
            assert(0);
            break;
        }
    } while (unlikely(remaining != 0));
    assert(!last_one_off || *dpos == '0');
    dpos += last_one_off;
    length = end - dpos;
    ulength = length;
    prepend_sign = 0;
    if (!is_unsigned && value <= neg_one) {
        if (padding_char == ' ' || width <= length + 1) {
            *(--dpos) = '-';
            ++length;
        } else {
            prepend_sign = 1;
        }
        ++ulength;
    }
    if (width > ulength) {
        ulength = width;
    }
    if (ulength == 1) {
        return PyUnicode_FromOrdinal(*dpos);
    }
    return __Pyx_PyUnicode_BuildFromAscii(ulength, dpos, (int) length, prepend_sign, padding_char);
}

/* dict_setdefault (used by FetchCommonType) */
static CYTHON_INLINE PyObject *__Pyx_PyDict_SetDefault(PyObject *d, PyObject *key, PyObject *default_value) {
    PyObject* value;
#if __PYX_LIMITED_VERSION_HEX >= 0x030F0000 || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4)
    PyDict_SetDefaultRef(d, key, default_value, &value);
#elif CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX >= 0x030C0000
    PyObject *args[] = {d, key, default_value};
    value = PyObject_VectorcallMethod(__pyx_mstate_global->__pyx_n_u_setdefault, args, 3 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL);
#elif CYTHON_COMPILING_IN_LIMITED_API
    value = PyObject_CallMethodObjArgs(d, __pyx_mstate_global->__pyx_n_u_setdefault, key, default_value, NULL);
#else
    value = PyDict_SetDefault(d, key, default_value);
    if (unlikely(!value)) return NULL;
    Py_INCREF(value);
#endif
    return value;
}

/* LimitedApiGetTypeDict (used by SetItemOnTypeDict) */
#if CYTHON_COMPILING_IN_LIMITED_API
static Py_ssize_t __Pyx_GetTypeDictOffset(void) {
    PyObject *tp_dictoffset_o;
    Py_ssize_t tp_dictoffset;
    tp_dictoffset_o = PyObject_GetAttrString((PyObject*)(&PyType_Type), "__dictoffset__");
    if (unlikely(!tp_dictoffset_o)) return -1;
    tp_dictoffset = PyLong_AsSsize_t(tp_dictoffset_o);
    Py_DECREF(tp_dictoffset_o);
    if (unlikely(tp_dictoffset == 0)) {
        PyErr_SetString(
            PyExc_TypeError,
            "'type' doesn't have a dictoffset");
        return -1;
    } else if (unlikely(tp_dictoffset < 0)) {
        PyErr_SetString(
            PyExc_TypeError,
            "'type' has an unexpected negative dictoffset. "
            "Please report this as Cython bug");
        return -1;
    }
    return tp_dictoffset;
}
static PyObject *__Pyx_GetTypeDict(PyTypeObject *tp) {
    static Py_ssize_t tp_dictoffset = 0;
    if (unlikely(tp_dictoffset == 0)) {
        tp_dictoffset = __Pyx_GetTypeDictOffset();
        if (unlikely(tp_dictoffset == -1 && PyErr_Occurred())) {
            tp_dictoffset = 0; // try again next time?
            return NULL;
        }
    }
    return *(PyObject**)((char*)tp + tp_dictoffset);
}
#endif

/* SetItemOnTypeDict (used by FixUpExtensionType) */
static int __Pyx__SetItemOnTypeDict(PyTypeObject *tp, PyObject *k, PyObject *v) {
    int result;
    PyObject *tp_dict;
#if CYTHON_COMPILING_IN_LIMITED_API
    tp_dict = __Pyx_GetTypeDict(tp);
    if (unlikely(!tp_dict)) return -1;
#else
    tp_dict = tp->tp_dict;
#endif
    result = PyDict_SetItem(tp_dict, k, v);
    if (likely(!result)) {
        PyType_Modified(tp);
        if (unlikely(PyObject_HasAttr(v, __pyx_mstate_global->__pyx_n_u_set_name))) {
            PyObject *setNameResult = PyObject_CallMethodObjArgs(v, __pyx_mstate_global->__pyx_n_u_set_name,  (PyObject *) tp, k, NULL);
            if (!setNameResult) return -1;
            Py_DECREF(setNameResult);
        }
    }
    return result;
}

/* FixUpExtensionType (used by FetchCommonType) */
static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type) {
#if __PYX_LIMITED_VERSION_HEX > 0x030900B1
    CYTHON_UNUSED_VAR(spec);
    CYTHON_UNUSED_VAR(type);
    CYTHON_UNUSED_VAR(__Pyx__SetItemOnTypeDict);
#else
    const PyType_Slot *slot = spec->slots;
    int changed = 0;
#if !CYTHON_COMPILING_IN_LIMITED_API
    while (slot && slot->slot && slot->slot != Py_tp_members)
        slot++;
    if (slot && slot->slot == Py_tp_members) {
#if !CYTHON_COMPILING_IN_CPYTHON
        const
#endif  // !CYTHON_COMPILING_IN_CPYTHON)
            PyMemberDef *memb = (PyMemberDef*) slot->pfunc;
        while (memb && memb->name) {
            if (memb->name[0] == '_' && memb->name[1] == '_') {
                if (strcmp(memb->name, "__weaklistoffset__") == 0) {
                    assert(memb->type == T_PYSSIZET);
                    assert(memb->flags == READONLY);
                    type->tp_weaklistoffset = memb->offset;
                    changed = 1;
                }
                else if (strcmp(memb->name, "__dictoffset__") == 0) {
                    assert(memb->type == T_PYSSIZET);
                    assert(memb->flags == READONLY);
                    type->tp_dictoffset = memb->offset;
                    changed = 1;
                }
#if CYTHON_METH_FASTCALL
                else if (strcmp(memb->name, "__vectorcalloffset__") == 0) {
                    assert(memb->type == T_PYSSIZET);
                    assert(memb->flags == READONLY);
                    type->tp_vectorcall_offset = memb->offset;
                    changed = 1;
                }
#endif  // CYTHON_METH_FASTCALL
#if !CYTHON_COMPILING_IN_PYPY
                else if (strcmp(memb->name, "__module__") == 0) {
                    PyObject *descr;
                    assert(memb->type == T_OBJECT);
                    assert(memb->flags == 0 || memb->flags == READONLY);
                    descr = PyDescr_NewMember(type, memb);
                    if (unlikely(!descr))
                        return -1;
                    int set_item_result = PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr);
                    Py_DECREF(descr);
                    if (unlikely(set_item_result < 0)) {
                        return -1;
                    }
                    changed = 1;
                }
#endif  // !CYTHON_COMPILING_IN_PYPY
            }
            memb++;
        }
    }
#endif  // !CYTHON_COMPILING_IN_LIMITED_API
#if !CYTHON_COMPILING_IN_PYPY
    slot = spec->slots;
    while (slot && slot->slot && slot->slot != Py_tp_getset)
        slot++;
    if (slot && slot->slot == Py_tp_getset) {
        PyGetSetDef *getset = (PyGetSetDef*) slot->pfunc;
        while (getset && getset->name) {
            if (getset->name[0] == '_' && getset->name[1] == '_' && strcmp(getset->name, "__module__") == 0) {
                PyObject *descr = PyDescr_NewGetSet(type, getset);
                if (unlikely(!descr))
                    return -1;
                #if CYTHON_COMPILING_IN_LIMITED_API
                PyObject *pyname = PyUnicode_FromString(getset->name);
                if (unlikely(!pyname)) {
                    Py_DECREF(descr);
                    return -1;
                }
                int set_item_result = __Pyx_SetItemOnTypeDict(type, pyname, descr);
                Py_DECREF(pyname);
                #else
                CYTHON_UNUSED_VAR(__Pyx__SetItemOnTypeDict);
                int set_item_result = PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr);
                #endif
                Py_DECREF(descr);
                if (unlikely(set_item_result < 0)) {
                    return -1;
                }
                changed = 1;
            }
            ++getset;
        }
    }
#else
    CYTHON_UNUSED_VAR(__Pyx__SetItemOnTypeDict);
#endif  // !CYTHON_COMPILING_IN_PYPY
    if (changed)
        PyType_Modified(type);
#endif  // PY_VERSION_HEX > 0x030900B1
    return 0;
}

/* AddModuleRef (used by FetchSharedCythonModule) */
#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
  static PyObject *__Pyx_PyImport_AddModuleObjectRef(PyObject *name) {
      PyObject *module_dict = PyImport_GetModuleDict();
      PyObject *m;
      if (PyMapping_GetOptionalItem(module_dict, name, &m) < 0) {
          return NULL;
      }
      if (m != NULL && PyModule_Check(m)) {
          return m;
      }
      Py_XDECREF(m);
      m = PyModule_NewObject(name);
      if (m == NULL)
          return NULL;
      if (PyDict_CheckExact(module_dict)) {
          PyObject *new_m;
          (void)PyDict_SetDefaultRef(module_dict, name, m, &new_m);
          Py_DECREF(m);
          return new_m;
      } else {
           if (PyObject_SetItem(module_dict, name, m) != 0) {
                Py_DECREF(m);
                return NULL;
            }
            return m;
      }
  }
  static PyObject *__Pyx_PyImport_AddModuleRef(const char *name) {
      PyObject *py_name = PyUnicode_FromString(name);
      if (!py_name) return NULL;
      PyObject *module = __Pyx_PyImport_AddModuleObjectRef(py_name);
      Py_DECREF(py_name);
      return module;
  }
#elif __PYX_LIMITED_VERSION_HEX >= 0x030d0000
  #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name)
#else
  static PyObject *__Pyx_PyImport_AddModuleRef(const char *name) {
      PyObject *module = PyImport_AddModule(name);
      Py_XINCREF(module);
      return module;
  }
#endif

/* FetchSharedCythonModule (used by FetchCommonType) */
static PyObject *__Pyx_FetchSharedCythonABIModule(void) {
    return __Pyx_PyImport_AddModuleRef(__PYX_ABI_MODULE_NAME);
}

/* FetchCommonType (used by CommonTypesMetaclass) */
#if __PYX_LIMITED_VERSION_HEX < 0x030C0000
static PyObject* __Pyx_PyType_FromMetaclass(PyTypeObject *metaclass, PyObject *module, PyType_Spec *spec, PyObject *bases) {
    PyObject *result = __Pyx_PyType_FromModuleAndSpec(module, spec, bases);
    if (result && metaclass) {
        PyObject *old_tp = (PyObject*)Py_TYPE(result);
    Py_INCREF((PyObject*)metaclass);
#if __PYX_LIMITED_VERSION_HEX >= 0x03090000
        Py_SET_TYPE(result, metaclass);
#else
        result->ob_type = metaclass;
#endif
        Py_DECREF(old_tp);
    }
    return result;
}
#else
#define __Pyx_PyType_FromMetaclass(me, mo, s, b) PyType_FromMetaclass(me, mo, s, b)
#endif
static int __Pyx_VerifyCachedType(PyObject *cached_type,
                               const char *name,
                               Py_ssize_t expected_basicsize) {
    Py_ssize_t basicsize;
    if (!PyType_Check(cached_type)) {
        PyErr_Format(PyExc_TypeError,
            "Shared Cython type %.200s is not a type object", name);
        return -1;
    }
    if (expected_basicsize == 0) {
        return 0; // size is inherited, nothing useful to check
    }
#if CYTHON_COMPILING_IN_LIMITED_API
    PyObject *py_basicsize;
    py_basicsize = PyObject_GetAttrString(cached_type, "__basicsize__");
    if (unlikely(!py_basicsize)) return -1;
    basicsize = PyLong_AsSsize_t(py_basicsize);
    Py_DECREF(py_basicsize);
    py_basicsize = NULL;
    if (unlikely(basicsize == (Py_ssize_t)-1) && PyErr_Occurred()) return -1;
#else
    basicsize = ((PyTypeObject*) cached_type)->tp_basicsize;
#endif
    if (basicsize != expected_basicsize) {
        PyErr_Format(PyExc_TypeError,
            "Shared Cython type %.200s has the wrong size, try recompiling",
            name);
        return -1;
    }
    return 0;
}
static PyTypeObject *__Pyx_FetchCommonTypeFromSpec(PyTypeObject *metaclass, PyObject *module, PyType_Spec *spec, PyObject *bases) {
    PyObject *abi_module = NULL, *cached_type = NULL, *abi_module_dict, *new_cached_type, *py_object_name;
    int get_item_ref_result;
    const char* object_name = strrchr(spec->name, '.');
    object_name = object_name ? object_name+1 : spec->name;
    py_object_name = PyUnicode_FromString(object_name);
    if (!py_object_name) return NULL;
    abi_module = __Pyx_FetchSharedCythonABIModule();
    if (!abi_module) goto done;
    abi_module_dict = PyModule_GetDict(abi_module);
    if (!abi_module_dict) goto done;
    get_item_ref_result = __Pyx_PyDict_GetItemRef(abi_module_dict, py_object_name, &cached_type);
    if (get_item_ref_result == 1) {
        if (__Pyx_VerifyCachedType(
              cached_type,
              object_name,
              spec->basicsize) < 0) {
            goto bad;
        }
        goto done;
    } else if (unlikely(get_item_ref_result == -1)) {
        goto bad;
    }
    cached_type = __Pyx_PyType_FromMetaclass(
        metaclass,
        CYTHON_USE_MODULE_STATE ? module : abi_module,
        spec, bases);
    if (unlikely(!cached_type)) goto bad;
    if (unlikely(__Pyx_fix_up_extension_type_from_spec(spec, (PyTypeObject *) cached_type) < 0)) goto bad;
    new_cached_type = __Pyx_PyDict_SetDefault(abi_module_dict, py_object_name, cached_type);
    if (unlikely(new_cached_type != cached_type)) {
        if (unlikely(!new_cached_type)) goto bad;
        Py_DECREF(cached_type);
        cached_type = new_cached_type;
        if (__Pyx_VerifyCachedType(
                cached_type,
                object_name,
                spec->basicsize) < 0) {
            goto bad;
        }
        goto done;
    } else {
        Py_DECREF(new_cached_type);
    }
done:
    Py_XDECREF(abi_module);
    Py_DECREF(py_object_name);
    assert(cached_type == NULL || PyType_Check(cached_type));
    return (PyTypeObject *) cached_type;
bad:
    Py_XDECREF(cached_type);
    cached_type = NULL;
    goto done;
}

/* CommonTypesMetaclass (used by CythonFunctionShared) */
static PyObject* __pyx_CommonTypesMetaclass_get_module(CYTHON_UNUSED PyObject *self, CYTHON_UNUSED void* context) {
    return PyUnicode_FromString(__PYX_ABI_MODULE_NAME);
}
#if __PYX_LIMITED_VERSION_HEX < 0x030A0000
static PyObject* __pyx_CommonTypesMetaclass_call(CYTHON_UNUSED PyObject *self, CYTHON_UNUSED PyObject *args, CYTHON_UNUSED PyObject *kwds) {
    PyErr_SetString(PyExc_TypeError, "Cannot instantiate Cython internal types");
    return NULL;
}
static int __pyx_CommonTypesMetaclass_setattr(CYTHON_UNUSED PyObject *self, CYTHON_UNUSED PyObject *attr, CYTHON_UNUSED PyObject *value) {
    PyErr_SetString(PyExc_TypeError, "Cython internal types are immutable");
    return -1;
}
#endif
static PyGetSetDef __pyx_CommonTypesMetaclass_getset[] = {
    {"__module__", __pyx_CommonTypesMetaclass_get_module, NULL, NULL, NULL},
    {0, 0, 0, 0, 0}
};
static PyType_Slot __pyx_CommonTypesMetaclass_slots[] = {
    {Py_tp_getset, (void *)__pyx_CommonTypesMetaclass_getset},
    #if __PYX_LIMITED_VERSION_HEX < 0x030A0000
    {Py_tp_call, (void*)__pyx_CommonTypesMetaclass_call},
    {Py_tp_new, (void*)__pyx_CommonTypesMetaclass_call},
    {Py_tp_setattro, (void*)__pyx_CommonTypesMetaclass_setattr},
    #endif
    {0, 0}
};
static PyType_Spec __pyx_CommonTypesMetaclass_spec = {
    __PYX_TYPE_MODULE_PREFIX "_common_types_metatype",
    0,
    0,
    Py_TPFLAGS_IMMUTABLETYPE |
    Py_TPFLAGS_DISALLOW_INSTANTIATION |
    Py_TPFLAGS_DEFAULT,
    __pyx_CommonTypesMetaclass_slots
};
static int __pyx_CommonTypesMetaclass_init(PyObject *module) {
    __pyx_mstatetype *mstate = __Pyx_PyModule_GetState(module);
    PyObject *bases = PyTuple_Pack(1, &PyType_Type);
    if (unlikely(!bases)) {
        return -1;
    }
    mstate->__pyx_CommonTypesMetaclassType = __Pyx_FetchCommonTypeFromSpec(NULL, module, &__pyx_CommonTypesMetaclass_spec, bases);
    Py_DECREF(bases);
    if (unlikely(mstate->__pyx_CommonTypesMetaclassType == NULL)) {
        return -1;
    }
    return 0;
}

/* CallTypeTraverse (used by CythonFunctionShared) */
#if !CYTHON_USE_TYPE_SPECS || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x03090000)
#else
static int __Pyx_call_type_traverse(PyObject *o, int always_call, visitproc visit, void *arg) {
    #if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x03090000
    if (__Pyx_get_runtime_version() < 0x03090000) return 0;
    #endif
    if (!always_call) {
        PyTypeObject *base = __Pyx_PyObject_GetSlot(o, tp_base, PyTypeObject*);
        unsigned long flags = PyType_GetFlags(base);
        if (flags & Py_TPFLAGS_HEAPTYPE) {
            return 0;
        }
    }
    Py_VISIT((PyObject*)Py_TYPE(o));
    return 0;
}
#endif

/* PyMethodNew (used by CythonFunctionShared) */
#if CYTHON_COMPILING_IN_LIMITED_API
static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) {
    PyObject *result;
    CYTHON_UNUSED_VAR(typ);
    if (!self)
        return __Pyx_NewRef(func);
    #if __PYX_LIMITED_VERSION_HEX >= 0x030C0000
    {
        PyObject *args[] = {func, self};
        result = PyObject_Vectorcall(__pyx_mstate_global->__Pyx_CachedMethodType, args, 2, NULL);
    }
    #else
    result = PyObject_CallFunctionObjArgs(__pyx_mstate_global->__Pyx_CachedMethodType, func, self, NULL);
    #endif
    return result;
}
#else
static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) {
    CYTHON_UNUSED_VAR(typ);
    if (!self)
        return __Pyx_NewRef(func);
    return PyMethod_New(func, self);
}
#endif

/* PyVectorcallFastCallDict (used by CythonFunctionShared) */
#if CYTHON_METH_FASTCALL && CYTHON_VECTORCALL
static PyObject *__Pyx_PyVectorcall_FastCallDict_kw(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw)
{
    PyObject *res = NULL;
    PyObject *kwnames;
    PyObject **newargs;
    PyObject **kwvalues;
    Py_ssize_t i;
    #if CYTHON_AVOID_BORROWED_REFS
    PyObject *pos;
    #else
    Py_ssize_t pos;
    #endif
    size_t j;
    PyObject *key, *value;
    unsigned long keys_are_strings;
    #if !CYTHON_ASSUME_SAFE_SIZE
    Py_ssize_t nkw = PyDict_Size(kw);
    if (unlikely(nkw == -1)) return NULL;
    #else
    Py_ssize_t nkw = PyDict_GET_SIZE(kw);
    #endif
    newargs = (PyObject **)PyMem_Malloc((nargs + (size_t)nkw) * sizeof(args[0]));
    if (unlikely(newargs == NULL)) {
        PyErr_NoMemory();
        return NULL;
    }
    for (j = 0; j < nargs; j++) newargs[j] = args[j];
    kwnames = PyTuple_New(nkw);
    if (unlikely(kwnames == NULL)) {
        PyMem_Free(newargs);
        return NULL;
    }
    kwvalues = newargs + nargs;
    pos = 0;
    i = 0;
    keys_are_strings = Py_TPFLAGS_UNICODE_SUBCLASS;
    while (__Pyx_PyDict_NextRef(kw, &pos, &key, &value)) {
        keys_are_strings &=
        #if CYTHON_COMPILING_IN_LIMITED_API
            PyType_GetFlags(Py_TYPE(key));
        #else
            Py_TYPE(key)->tp_flags;
        #endif
        #if !CYTHON_ASSUME_SAFE_MACROS
        if (unlikely(PyTuple_SetItem(kwnames, i, key) < 0)) goto cleanup;
        #else
        PyTuple_SET_ITEM(kwnames, i, key);
        #endif
        kwvalues[i] = value;
        i++;
    }
    if (unlikely(!keys_are_strings)) {
        PyErr_SetString(PyExc_TypeError, "keywords must be strings");
        goto cleanup;
    }
    res = vc(func, newargs, nargs, kwnames);
cleanup:
    #if CYTHON_AVOID_BORROWED_REFS
    Py_DECREF(pos);
    #endif
    Py_DECREF(kwnames);
    for (i = 0; i < nkw; i++)
        Py_DECREF(kwvalues[i]);
    PyMem_Free(newargs);
    return res;
}
static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw)
{
    Py_ssize_t kw_size =
        likely(kw == NULL) ?
        0 :
#if !CYTHON_ASSUME_SAFE_SIZE
        PyDict_Size(kw);
#else
        PyDict_GET_SIZE(kw);
#endif
    if (kw_size == 0) {
        return vc(func, args, nargs, NULL);
    }
#if !CYTHON_ASSUME_SAFE_SIZE
    else if (unlikely(kw_size == -1)) {
        return NULL;
    }
#endif
    return __Pyx_PyVectorcall_FastCallDict_kw(func, vc, args, nargs, kw);
}
#endif

/* CythonFunctionShared (used by CythonFunction) */
#if CYTHON_COMPILING_IN_LIMITED_API
static CYTHON_INLINE int __Pyx__IsSameCyOrCFunctionNoMethod(PyObject *func, void (*cfunc)(void)) {
    if (__Pyx_CyFunction_Check(func)) {
        return PyCFunction_GetFunction(((__pyx_CyFunctionObject*)func)->func) == (PyCFunction) cfunc;
    } else if (PyCFunction_Check(func)) {
        return PyCFunction_GetFunction(func) == (PyCFunction) cfunc;
    }
    return 0;
}
static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void (*cfunc)(void)) {
    if ((PyObject*)Py_TYPE(func) == __pyx_mstate_global->__Pyx_CachedMethodType) {
        int result;
        PyObject *newFunc = PyObject_GetAttr(func, __pyx_mstate_global->__pyx_n_u_func);
        if (unlikely(!newFunc)) {
            PyErr_Clear(); // It's only an optimization, so don't throw an error
            return 0;
        }
        result = __Pyx__IsSameCyOrCFunctionNoMethod(newFunc, cfunc);
        Py_DECREF(newFunc);
        return result;
    }
    return __Pyx__IsSameCyOrCFunctionNoMethod(func, cfunc);
}
#else
static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void (*cfunc)(void)) {
    if (PyMethod_Check(func)) {
        func = PyMethod_GET_FUNCTION(func);
    }
    return __Pyx_CyOrPyCFunction_Check(func) && __Pyx_CyOrPyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc;
}
#endif
static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj) {
#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
    __Pyx_Py_XDECREF_SET(
        __Pyx_CyFunction_GetClassObj(f),
            ((classobj) ? __Pyx_NewRef(classobj) : NULL));
#else
    __Pyx_Py_XDECREF_SET(
        ((PyCMethodObject *) (f))->mm_class,
        (PyTypeObject*)((classobj) ? __Pyx_NewRef(classobj) : NULL));
#endif
}
static PyObject *
__Pyx_CyFunction_get_doc_locked(__pyx_CyFunctionObject *op)
{
    if (unlikely(op->func_doc == NULL)) {
#if CYTHON_COMPILING_IN_LIMITED_API
        op->func_doc = PyObject_GetAttrString(op->func, "__doc__");
        if (unlikely(!op->func_doc)) return NULL;
#else
        if (((PyCFunctionObject*)op)->m_ml->ml_doc) {
            op->func_doc = PyUnicode_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc);
            if (unlikely(op->func_doc == NULL))
                return NULL;
        } else {
            Py_INCREF(Py_None);
            return Py_None;
        }
#endif
    }
    Py_INCREF(op->func_doc);
    return op->func_doc;
}
static PyObject *
__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, void *closure) {
    PyObject *result;
    CYTHON_UNUSED_VAR(closure);
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    result = __Pyx_CyFunction_get_doc_locked(op);
    __Pyx_END_CRITICAL_SECTION();
    return result;
}
static int
__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, void *context)
{
    CYTHON_UNUSED_VAR(context);
    if (value == NULL) {
        value = Py_None;
    }
    Py_INCREF(value);
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    __Pyx_Py_XDECREF_SET(op->func_doc, value);
    __Pyx_END_CRITICAL_SECTION();
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_name_locked(__pyx_CyFunctionObject *op)
{
    if (unlikely(op->func_name == NULL)) {
#if CYTHON_COMPILING_IN_LIMITED_API
        op->func_name = PyObject_GetAttrString(op->func, "__name__");
#else
        op->func_name = PyUnicode_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name);
#endif
        if (unlikely(op->func_name == NULL))
            return NULL;
    }
    Py_INCREF(op->func_name);
    return op->func_name;
}
static PyObject *
__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, void *context)
{
    PyObject *result = NULL;
    CYTHON_UNUSED_VAR(context);
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    result = __Pyx_CyFunction_get_name_locked(op);
    __Pyx_END_CRITICAL_SECTION();
    return result;
}
static int
__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, void *context)
{
    CYTHON_UNUSED_VAR(context);
    if (unlikely(value == NULL || !PyUnicode_Check(value))) {
        PyErr_SetString(PyExc_TypeError,
                        "__name__ must be set to a string object");
        return -1;
    }
    Py_INCREF(value);
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    __Pyx_Py_XDECREF_SET(op->func_name, value);
    __Pyx_END_CRITICAL_SECTION();
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, void *context)
{
    CYTHON_UNUSED_VAR(context);
    PyObject *result;
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    Py_INCREF(op->func_qualname);
    result = op->func_qualname;
    __Pyx_END_CRITICAL_SECTION();
    return result;
}
static int
__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, void *context)
{
    CYTHON_UNUSED_VAR(context);
    if (unlikely(value == NULL || !PyUnicode_Check(value))) {
        PyErr_SetString(PyExc_TypeError,
                        "__qualname__ must be set to a string object");
        return -1;
    }
    Py_INCREF(value);
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    __Pyx_Py_XDECREF_SET(op->func_qualname, value);
    __Pyx_END_CRITICAL_SECTION();
    return 0;
}
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000
static PyObject *
__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, void *context)
{
    CYTHON_UNUSED_VAR(context);
    if (unlikely(op->func_dict == NULL)) {
        op->func_dict = PyDict_New();
        if (unlikely(op->func_dict == NULL))
            return NULL;
    }
    Py_INCREF(op->func_dict);
    return op->func_dict;
}
#endif
static PyObject *
__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, void *context)
{
    CYTHON_UNUSED_VAR(context);
    Py_INCREF(op->func_globals);
    return op->func_globals;
}
static PyObject *
__Pyx_CyFunction_get_closure(__pyx_CyFunctionObject *op, void *context)
{
    CYTHON_UNUSED_VAR(op);
    CYTHON_UNUSED_VAR(context);
    Py_INCREF(Py_None);
    return Py_None;
}
static PyObject *
__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, void *context)
{
    PyObject* result = (op->func_code) ? op->func_code : Py_None;
    CYTHON_UNUSED_VAR(context);
    Py_INCREF(result);
    return result;
}
static int
__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) {
    int result = 0;
    PyObject *res = op->defaults_getter((PyObject *) op);
    if (unlikely(!res))
        return -1;
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    op->defaults_tuple = PyTuple_GET_ITEM(res, 0);
    Py_INCREF(op->defaults_tuple);
    op->defaults_kwdict = PyTuple_GET_ITEM(res, 1);
    Py_INCREF(op->defaults_kwdict);
    #else
    op->defaults_tuple = __Pyx_PySequence_ITEM(res, 0);
    if (unlikely(!op->defaults_tuple)) result = -1;
    else {
        op->defaults_kwdict = __Pyx_PySequence_ITEM(res, 1);
        if (unlikely(!op->defaults_kwdict)) result = -1;
    }
    #endif
    Py_DECREF(res);
    return result;
}
static int
__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
    CYTHON_UNUSED_VAR(context);
    if (!value) {
        value = Py_None;
    } else if (unlikely(value != Py_None && !PyTuple_Check(value))) {
        PyErr_SetString(PyExc_TypeError,
                        "__defaults__ must be set to a tuple object");
        return -1;
    }
    PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__defaults__ will not "
                 "currently affect the values used in function calls", 1);
    Py_INCREF(value);
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    __Pyx_Py_XDECREF_SET(op->defaults_tuple, value);
    __Pyx_END_CRITICAL_SECTION();
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_defaults_locked(__pyx_CyFunctionObject *op) {
    PyObject* result = op->defaults_tuple;
    if (unlikely(!result)) {
        if (op->defaults_getter) {
            if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL;
            result = op->defaults_tuple;
        } else {
            result = Py_None;
        }
    }
    Py_INCREF(result);
    return result;
}
static PyObject *
__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, void *context) {
    PyObject* result = NULL;
    CYTHON_UNUSED_VAR(context);
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    result = __Pyx_CyFunction_get_defaults_locked(op);
    __Pyx_END_CRITICAL_SECTION();
    return result;
}
static int
__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
    CYTHON_UNUSED_VAR(context);
    if (!value) {
        value = Py_None;
    } else if (unlikely(value != Py_None && !PyDict_Check(value))) {
        PyErr_SetString(PyExc_TypeError,
                        "__kwdefaults__ must be set to a dict object");
        return -1;
    }
    PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__kwdefaults__ will not "
                 "currently affect the values used in function calls", 1);
    Py_INCREF(value);
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    __Pyx_Py_XDECREF_SET(op->defaults_kwdict, value);
    __Pyx_END_CRITICAL_SECTION();
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_kwdefaults_locked(__pyx_CyFunctionObject *op) {
    PyObject* result = op->defaults_kwdict;
    if (unlikely(!result)) {
        if (op->defaults_getter) {
            if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL;
            result = op->defaults_kwdict;
        } else {
            result = Py_None;
        }
    }
    Py_INCREF(result);
    return result;
}
static PyObject *
__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, void *context) {
    PyObject* result;
    CYTHON_UNUSED_VAR(context);
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    result = __Pyx_CyFunction_get_kwdefaults_locked(op);
    __Pyx_END_CRITICAL_SECTION();
    return result;
}
static int
__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
    CYTHON_UNUSED_VAR(context);
    if (!value || value == Py_None) {
        value = NULL;
    } else if (unlikely(!PyDict_Check(value))) {
        PyErr_SetString(PyExc_TypeError,
                        "__annotations__ must be set to a dict object");
        return -1;
    }
    Py_XINCREF(value);
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    __Pyx_Py_XDECREF_SET(op->func_annotations, value);
    __Pyx_END_CRITICAL_SECTION();
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_annotations_locked(__pyx_CyFunctionObject *op) {
    PyObject* result = op->func_annotations;
    if (unlikely(!result)) {
        result = PyDict_New();
        if (unlikely(!result)) return NULL;
        op->func_annotations = result;
    }
    Py_INCREF(result);
    return result;
}
static PyObject *
__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, void *context) {
    PyObject *result;
    CYTHON_UNUSED_VAR(context);
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    result = __Pyx_CyFunction_get_annotations_locked(op);
    __Pyx_END_CRITICAL_SECTION();
    return result;
}
static PyObject *
__Pyx_CyFunction_get_is_coroutine_value(__pyx_CyFunctionObject *op) {
    int is_coroutine = op->flags & __Pyx_CYFUNCTION_COROUTINE;
    if (is_coroutine) {
        PyObject *is_coroutine_value, *module, *fromlist, *marker = __pyx_mstate_global->__pyx_n_u_is_coroutine;
        fromlist = PyList_New(1);
        if (unlikely(!fromlist)) return NULL;
        Py_INCREF(marker);
#if CYTHON_ASSUME_SAFE_MACROS
        PyList_SET_ITEM(fromlist, 0, marker);
#else
        if (unlikely(PyList_SetItem(fromlist, 0, marker) < 0)) {
            Py_DECREF(marker);
            Py_DECREF(fromlist);
            return NULL;
        }
#endif
        module = PyImport_ImportModuleLevelObject(__pyx_mstate_global->__pyx_n_u_asyncio_coroutines, NULL, NULL, fromlist, 0);
        Py_DECREF(fromlist);
        if (unlikely(!module)) goto ignore;
        is_coroutine_value = __Pyx_PyObject_GetAttrStr(module, marker);
        Py_DECREF(module);
        if (likely(is_coroutine_value)) {
            return is_coroutine_value;
        }
ignore:
        PyErr_Clear();
    }
    return __Pyx_PyBool_FromLong(is_coroutine);
}
static PyObject *
__Pyx_CyFunction_get_is_coroutine(__pyx_CyFunctionObject *op, void *context) {
    PyObject *result;
    CYTHON_UNUSED_VAR(context);
    if (op->func_is_coroutine) {
        return __Pyx_NewRef(op->func_is_coroutine);
    }
    result = __Pyx_CyFunction_get_is_coroutine_value(op);
    if (unlikely(!result))
        return NULL;
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    if (op->func_is_coroutine) {
        Py_DECREF(result);
        result = __Pyx_NewRef(op->func_is_coroutine);
    } else {
        op->func_is_coroutine = __Pyx_NewRef(result);
    }
    __Pyx_END_CRITICAL_SECTION();
    return result;
}
static void __Pyx_CyFunction_raise_argument_count_error(__pyx_CyFunctionObject *func, const char* message, Py_ssize_t size) {
#if CYTHON_COMPILING_IN_LIMITED_API
    PyObject *py_name = __Pyx_CyFunction_get_name(func, NULL);
    if (!py_name) return;
    PyErr_Format(PyExc_TypeError,
        "%.200S() %s (%" CYTHON_FORMAT_SSIZE_T "d given)",
        py_name, message, size);
    Py_DECREF(py_name);
#else
    const char* name = ((PyCFunctionObject*)func)->m_ml->ml_name;
    PyErr_Format(PyExc_TypeError,
        "%.200s() %s (%" CYTHON_FORMAT_SSIZE_T "d given)",
        name, message, size);
#endif
}
static void __Pyx_CyFunction_raise_type_error(__pyx_CyFunctionObject *func, const char* message) {
#if CYTHON_COMPILING_IN_LIMITED_API
    PyObject *py_name = __Pyx_CyFunction_get_name(func, NULL);
    if (!py_name) return;
    PyErr_Format(PyExc_TypeError,
        "%.200S() %s",
        py_name, message);
    Py_DECREF(py_name);
#else
    const char* name = ((PyCFunctionObject*)func)->m_ml->ml_name;
    PyErr_Format(PyExc_TypeError,
        "%.200s() %s",
        name, message);
#endif
}
#if CYTHON_COMPILING_IN_LIMITED_API
static PyObject *
__Pyx_CyFunction_get_module(__pyx_CyFunctionObject *op, void *context) {
    CYTHON_UNUSED_VAR(context);
    return PyObject_GetAttrString(op->func, "__module__");
}
static int
__Pyx_CyFunction_set_module(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
    CYTHON_UNUSED_VAR(context);
    return PyObject_SetAttrString(op->func, "__module__", value);
}
#endif
static PyGetSetDef __pyx_CyFunction_getsets[] = {
    {"func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
    {"__doc__",  (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
    {"func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
    {"__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
    {"__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0},
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000
    {"func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)PyObject_GenericSetDict, 0, 0},
    {"__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)PyObject_GenericSetDict, 0, 0},
#else
    {"func_dict", (getter)PyObject_GenericGetDict, (setter)PyObject_GenericSetDict, 0, 0},
    {"__dict__", (getter)PyObject_GenericGetDict, (setter)PyObject_GenericSetDict, 0, 0},
#endif
    {"func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
    {"__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
    {"func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
    {"__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
    {"func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
    {"__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
    {"func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
    {"__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
    {"__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0},
    {"__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0},
    {"_is_coroutine", (getter)__Pyx_CyFunction_get_is_coroutine, 0, 0, 0},
#if CYTHON_COMPILING_IN_LIMITED_API
    {"__module__", (getter)__Pyx_CyFunction_get_module, (setter)__Pyx_CyFunction_set_module, 0, 0},
#endif
    {0, 0, 0, 0, 0}
};
static PyMemberDef __pyx_CyFunction_members[] = {
#if !CYTHON_COMPILING_IN_LIMITED_API
    {"__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), 0, 0},
#endif
#if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API
    {"__dictoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_dict), READONLY, 0},
#endif
#if CYTHON_METH_FASTCALL
#if CYTHON_COMPILING_IN_LIMITED_API
    {"__vectorcalloffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_vectorcall), READONLY, 0},
#else
    {"__vectorcalloffset__", T_PYSSIZET, offsetof(PyCFunctionObject, vectorcall), READONLY, 0},
#endif
#if CYTHON_COMPILING_IN_LIMITED_API
    {"__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_weakreflist), READONLY, 0},
#else
    {"__weaklistoffset__", T_PYSSIZET, offsetof(PyCFunctionObject, m_weakreflist), READONLY, 0},
#endif
#endif
    {0, 0, 0,  0, 0}
};
static PyObject *
__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, PyObject *args)
{
    PyObject *result = NULL;
    CYTHON_UNUSED_VAR(args);
    __Pyx_BEGIN_CRITICAL_SECTION(m);
    Py_INCREF(m->func_qualname);
    result = m->func_qualname;
    __Pyx_END_CRITICAL_SECTION();
    return result;
}
static PyMethodDef __pyx_CyFunction_methods[] = {
    {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0},
    {0, 0, 0, 0}
};
#if CYTHON_COMPILING_IN_LIMITED_API
#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist)
#else
#define __Pyx_CyFunction_weakreflist(cyfunc) (((PyCFunctionObject*)cyfunc)->m_weakreflist)
#endif
static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname,
                                       PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) {
#if !CYTHON_COMPILING_IN_LIMITED_API
    PyCFunctionObject *cf = (PyCFunctionObject*) op;
#endif
    if (unlikely(op == NULL))
        return NULL;
#if CYTHON_COMPILING_IN_LIMITED_API
    op->func = PyCFunction_NewEx(ml, (PyObject*)op, module);
    if (unlikely(!op->func)) return NULL;
#endif
    op->flags = flags;
    __Pyx_CyFunction_weakreflist(op) = NULL;
#if !CYTHON_COMPILING_IN_LIMITED_API
    cf->m_ml = ml;
    cf->m_self = (PyObject *) op;
#endif
    Py_XINCREF(closure);
    op->func_closure = closure;
#if !CYTHON_COMPILING_IN_LIMITED_API
    Py_XINCREF(module);
    cf->m_module = module;
#endif
#if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API
    op->func_dict = NULL;
#endif
    op->func_name = NULL;
    Py_INCREF(qualname);
    op->func_qualname = qualname;
    op->func_doc = NULL;
#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
    op->func_classobj = NULL;
#else
    ((PyCMethodObject*)op)->mm_class = NULL;
#endif
    op->func_globals = globals;
    Py_INCREF(op->func_globals);
    Py_XINCREF(code);
    op->func_code = code;
    op->defaults = NULL;
    op->defaults_tuple = NULL;
    op->defaults_kwdict = NULL;
    op->defaults_getter = NULL;
    op->func_annotations = NULL;
    op->func_is_coroutine = NULL;
#if CYTHON_METH_FASTCALL
    switch (ml->ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O | METH_KEYWORDS | METH_METHOD)) {
    case METH_NOARGS:
        __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_NOARGS;
        break;
    case METH_O:
        __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_O;
        break;
    case METH_METHOD | METH_FASTCALL | METH_KEYWORDS:
        __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD;
        break;
    case METH_FASTCALL | METH_KEYWORDS:
        __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS;
        break;
    case METH_VARARGS | METH_KEYWORDS:
        __Pyx_CyFunction_func_vectorcall(op) = NULL;
        break;
    default:
        PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction");
        Py_DECREF(op);
        return NULL;
    }
#endif
    return (PyObject *) op;
}
static int
__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m)
{
    Py_CLEAR(m->func_closure);
#if CYTHON_COMPILING_IN_LIMITED_API
    Py_CLEAR(m->func);
#else
    Py_CLEAR(((PyCFunctionObject*)m)->m_module);
#endif
#if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API
    Py_CLEAR(m->func_dict);
#elif PY_VERSION_HEX < 0x030d0000
    _PyObject_ClearManagedDict((PyObject*)m);
#else
    PyObject_ClearManagedDict((PyObject*)m);
#endif
    Py_CLEAR(m->func_name);
    Py_CLEAR(m->func_qualname);
    Py_CLEAR(m->func_doc);
    Py_CLEAR(m->func_globals);
    Py_CLEAR(m->func_code);
#if !CYTHON_COMPILING_IN_LIMITED_API
#if PY_VERSION_HEX < 0x030900B1
    Py_CLEAR(__Pyx_CyFunction_GetClassObj(m));
#else
    {
        PyObject *cls = (PyObject*) ((PyCMethodObject *) (m))->mm_class;
        ((PyCMethodObject *) (m))->mm_class = NULL;
        Py_XDECREF(cls);
    }
#endif
#endif
    Py_CLEAR(m->defaults_tuple);
    Py_CLEAR(m->defaults_kwdict);
    Py_CLEAR(m->func_annotations);
    Py_CLEAR(m->func_is_coroutine);
    Py_CLEAR(m->defaults);
    return 0;
}
static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m)
{
    if (__Pyx_CyFunction_weakreflist(m) != NULL)
        PyObject_ClearWeakRefs((PyObject *) m);
    __Pyx_CyFunction_clear(m);
    __Pyx_PyHeapTypeObject_GC_Del(m);
}
static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m)
{
    PyObject_GC_UnTrack(m);
    __Pyx__CyFunction_dealloc(m);
}
static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg)
{
    {
        int e = __Pyx_call_type_traverse((PyObject*)m, 1, visit, arg);
        if (e) return e;
    }
    Py_VISIT(m->func_closure);
#if CYTHON_COMPILING_IN_LIMITED_API
    Py_VISIT(m->func);
#else
    Py_VISIT(((PyCFunctionObject*)m)->m_module);
#endif
#if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API
    Py_VISIT(m->func_dict);
#else
    {
        int e =
#if PY_VERSION_HEX < 0x030d0000
            _PyObject_VisitManagedDict
#else
            PyObject_VisitManagedDict
#endif
                ((PyObject*)m, visit, arg);
        if (e != 0) return e;
    }
#endif
    __Pyx_VISIT_CONST(m->func_name);
    __Pyx_VISIT_CONST(m->func_qualname);
    Py_VISIT(m->func_doc);
    Py_VISIT(m->func_globals);
    __Pyx_VISIT_CONST(m->func_code);
#if !CYTHON_COMPILING_IN_LIMITED_API
    Py_VISIT(__Pyx_CyFunction_GetClassObj(m));
#endif
    Py_VISIT(m->defaults_tuple);
    Py_VISIT(m->defaults_kwdict);
    Py_VISIT(m->func_is_coroutine);
    Py_VISIT(m->defaults);
    return 0;
}
static PyObject*
__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op)
{
    PyObject *repr;
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    repr = PyUnicode_FromFormat("<cyfunction %U at %p>",
                                op->func_qualname, (void *)op);
    __Pyx_END_CRITICAL_SECTION();
    return repr;
}
static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) {
#if CYTHON_COMPILING_IN_LIMITED_API
    PyObject *f = ((__pyx_CyFunctionObject*)func)->func;
    PyCFunction meth;
    int flags;
    meth = PyCFunction_GetFunction(f);
    if (unlikely(!meth)) return NULL;
    flags = PyCFunction_GetFlags(f);
    if (unlikely(flags < 0)) return NULL;
#else
    PyCFunctionObject* f = (PyCFunctionObject*)func;
    PyCFunction meth = f->m_ml->ml_meth;
    int flags = f->m_ml->ml_flags;
#endif
    Py_ssize_t size;
    switch (flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) {
    case METH_VARARGS:
        if (likely(kw == NULL || PyDict_Size(kw) == 0))
            return (*meth)(self, arg);
        break;
    case METH_VARARGS | METH_KEYWORDS:
        return (*(PyCFunctionWithKeywords)(void(*)(void))meth)(self, arg, kw);
    case METH_NOARGS:
        if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
#if CYTHON_ASSUME_SAFE_SIZE
            size = PyTuple_GET_SIZE(arg);
#else
            size = PyTuple_Size(arg);
            if (unlikely(size < 0)) return NULL;
#endif
            if (likely(size == 0))
                return (*meth)(self, NULL);
            __Pyx_CyFunction_raise_argument_count_error(
                (__pyx_CyFunctionObject*)func,
                "takes no arguments", size);
            return NULL;
        }
        break;
    case METH_O:
        if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
#if CYTHON_ASSUME_SAFE_SIZE
            size = PyTuple_GET_SIZE(arg);
#else
            size = PyTuple_Size(arg);
            if (unlikely(size < 0)) return NULL;
#endif
            if (likely(size == 1)) {
                PyObject *result, *arg0;
                #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
                arg0 = PyTuple_GET_ITEM(arg, 0);
                #else
                arg0 = __Pyx_PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL;
                #endif
                result = (*meth)(self, arg0);
                #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS)
                Py_DECREF(arg0);
                #endif
                return result;
            }
            __Pyx_CyFunction_raise_argument_count_error(
                (__pyx_CyFunctionObject*)func,
                "takes exactly one argument", size);
            return NULL;
        }
        break;
    default:
        PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction");
        return NULL;
    }
    __Pyx_CyFunction_raise_type_error(
        (__pyx_CyFunctionObject*)func, "takes no keyword arguments");
    return NULL;
}
static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) {
    PyObject *self, *result;
#if CYTHON_COMPILING_IN_LIMITED_API
    self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)func)->func);
    if (unlikely(!self) && PyErr_Occurred()) return NULL;
#else
    self = ((PyCFunctionObject*)func)->m_self;
#endif
    result = __Pyx_CyFunction_CallMethod(func, self, arg, kw);
    return result;
}
static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) {
    PyObject *result;
    __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func;
#if CYTHON_METH_FASTCALL && CYTHON_VECTORCALL
     __pyx_vectorcallfunc vc = __Pyx_CyFunction_func_vectorcall(cyfunc);
    if (vc) {
#if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE
        return __Pyx_PyVectorcall_FastCallDict(func, vc, &PyTuple_GET_ITEM(args, 0), (size_t)PyTuple_GET_SIZE(args), kw);
#else
        (void) &__Pyx_PyVectorcall_FastCallDict;
        return PyVectorcall_Call(func, args, kw);
#endif
    }
#endif
    if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) {
        Py_ssize_t argc;
        PyObject *new_args;
        PyObject *self;
#if CYTHON_ASSUME_SAFE_SIZE
        argc = PyTuple_GET_SIZE(args);
#else
        argc = PyTuple_Size(args);
        if (unlikely(argc < 0)) return NULL;
#endif
        new_args = PyTuple_GetSlice(args, 1, argc);
        if (unlikely(!new_args))
            return NULL;
        self = PyTuple_GetItem(args, 0);
        if (unlikely(!self)) {
            Py_DECREF(new_args);
            PyErr_Format(PyExc_TypeError,
                         "unbound method %.200S() needs an argument",
                         cyfunc->func_qualname);
            return NULL;
        }
        result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw);
        Py_DECREF(new_args);
    } else {
        result = __Pyx_CyFunction_Call(func, args, kw);
    }
    return result;
}
#if CYTHON_METH_FASTCALL && CYTHON_VECTORCALL
static CYTHON_INLINE int __Pyx_CyFunction_Vectorcall_CheckArgs(__pyx_CyFunctionObject *cyfunc, Py_ssize_t nargs, PyObject *kwnames)
{
    int ret = 0;
    if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) {
        if (unlikely(nargs < 1)) {
            __Pyx_CyFunction_raise_type_error(
                cyfunc, "needs an argument");
            return -1;
        }
        ret = 1;
    }
    if (unlikely(kwnames) && unlikely(__Pyx_PyTuple_GET_SIZE(kwnames))) {
        __Pyx_CyFunction_raise_type_error(
            cyfunc, "takes no keyword arguments");
        return -1;
    }
    return ret;
}
static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
{
    __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func;
    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
    PyObject *self;
#if CYTHON_COMPILING_IN_LIMITED_API
    PyCFunction meth = PyCFunction_GetFunction(cyfunc->func);
    if (unlikely(!meth)) return NULL;
#else
    PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth;
#endif
    switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) {
    case 1:
        self = args[0];
        args += 1;
        nargs -= 1;
        break;
    case 0:
#if CYTHON_COMPILING_IN_LIMITED_API
        self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func);
        if (unlikely(!self) && PyErr_Occurred()) return NULL;
#else
        self = ((PyCFunctionObject*)cyfunc)->m_self;
#endif
        break;
    default:
        return NULL;
    }
    if (unlikely(nargs != 0)) {
        __Pyx_CyFunction_raise_argument_count_error(
            cyfunc, "takes no arguments", nargs);
        return NULL;
    }
    return meth(self, NULL);
}
static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
{
    __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func;
    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
    PyObject *self;
#if CYTHON_COMPILING_IN_LIMITED_API
    PyCFunction meth = PyCFunction_GetFunction(cyfunc->func);
    if (unlikely(!meth)) return NULL;
#else
    PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth;
#endif
    switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) {
    case 1:
        self = args[0];
        args += 1;
        nargs -= 1;
        break;
    case 0:
#if CYTHON_COMPILING_IN_LIMITED_API
        self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func);
        if (unlikely(!self) && PyErr_Occurred()) return NULL;
#else
        self = ((PyCFunctionObject*)cyfunc)->m_self;
#endif
        break;
    default:
        return NULL;
    }
    if (unlikely(nargs != 1)) {
        __Pyx_CyFunction_raise_argument_count_error(
            cyfunc, "takes exactly one argument", nargs);
        return NULL;
    }
    return meth(self, args[0]);
}
static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
{
    __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func;
    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
    PyObject *self;
#if CYTHON_COMPILING_IN_LIMITED_API
    PyCFunction meth = PyCFunction_GetFunction(cyfunc->func);
    if (unlikely(!meth)) return NULL;
#else
    PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth;
#endif
    switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) {
    case 1:
        self = args[0];
        args += 1;
        nargs -= 1;
        break;
    case 0:
#if CYTHON_COMPILING_IN_LIMITED_API
        self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func);
        if (unlikely(!self) && PyErr_Occurred()) return NULL;
#else
        self = ((PyCFunctionObject*)cyfunc)->m_self;
#endif
        break;
    default:
        return NULL;
    }
    return ((__Pyx_PyCFunctionFastWithKeywords)(void(*)(void))meth)(self, args, nargs, kwnames);
}
static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
{
    __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func;
    PyTypeObject *cls = (PyTypeObject *) __Pyx_CyFunction_GetClassObj(cyfunc);
    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
    PyObject *self;
#if CYTHON_COMPILING_IN_LIMITED_API
    PyCFunction meth = PyCFunction_GetFunction(cyfunc->func);
    if (unlikely(!meth)) return NULL;
#else
    PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth;
#endif
    switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) {
    case 1:
        self = args[0];
        args += 1;
        nargs -= 1;
        break;
    case 0:
#if CYTHON_COMPILING_IN_LIMITED_API
        self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func);
        if (unlikely(!self) && PyErr_Occurred()) return NULL;
#else
        self = ((PyCFunctionObject*)cyfunc)->m_self;
#endif
        break;
    default:
        return NULL;
    }
    #if PY_VERSION_HEX < 0x030e00A6
    size_t nargs_value = (size_t) nargs;
    #else
    Py_ssize_t nargs_value = nargs;
    #endif
    return ((__Pyx_PyCMethod)(void(*)(void))meth)(self, cls, args, nargs_value, kwnames);
}
#endif
static PyType_Slot __pyx_CyFunctionType_slots[] = {
    {Py_tp_dealloc, (void *)__Pyx_CyFunction_dealloc},
    {Py_tp_repr, (void *)__Pyx_CyFunction_repr},
    {Py_tp_call, (void *)__Pyx_CyFunction_CallAsMethod},
    {Py_tp_traverse, (void *)__Pyx_CyFunction_traverse},
    {Py_tp_clear, (void *)__Pyx_CyFunction_clear},
    {Py_tp_methods, (void *)__pyx_CyFunction_methods},
    {Py_tp_members, (void *)__pyx_CyFunction_members},
    {Py_tp_getset, (void *)__pyx_CyFunction_getsets},
    {Py_tp_descr_get, (void *)__Pyx_PyMethod_New},
    {0, 0},
};
static PyType_Spec __pyx_CyFunctionType_spec = {
    __PYX_TYPE_MODULE_PREFIX "cython_function_or_method",
    sizeof(__pyx_CyFunctionObject),
    0,
#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR
    Py_TPFLAGS_METHOD_DESCRIPTOR |
#endif
#if CYTHON_METH_FASTCALL
#if defined(Py_TPFLAGS_HAVE_VECTORCALL)
    Py_TPFLAGS_HAVE_VECTORCALL |
#elif defined(_Py_TPFLAGS_HAVE_VECTORCALL)
    _Py_TPFLAGS_HAVE_VECTORCALL |
#endif
#endif // CYTHON_METH_FASTCALL
#if PY_VERSION_HEX >= 0x030C0000 && !CYTHON_COMPILING_IN_LIMITED_API
    Py_TPFLAGS_MANAGED_DICT |
#endif
    Py_TPFLAGS_IMMUTABLETYPE | Py_TPFLAGS_DISALLOW_INSTANTIATION |
    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE,
    __pyx_CyFunctionType_slots
};
static int __pyx_CyFunction_init(PyObject *module) {
    __pyx_mstatetype *mstate = __Pyx_PyModule_GetState(module);
    mstate->__pyx_CyFunctionType = __Pyx_FetchCommonTypeFromSpec(
        mstate->__pyx_CommonTypesMetaclassType, module, &__pyx_CyFunctionType_spec, NULL);
    if (unlikely(mstate->__pyx_CyFunctionType == NULL)) {
        return -1;
    }
    return 0;
}
static CYTHON_INLINE PyObject *__Pyx_CyFunction_InitDefaults(PyObject *func, PyTypeObject *defaults_type) {
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    m->defaults = PyObject_CallObject((PyObject*)defaults_type, NULL); // _PyObject_New(defaults_type);
    if (unlikely(!m->defaults))
        return NULL;
    return m->defaults;
}
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) {
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    m->defaults_tuple = tuple;
    Py_INCREF(tuple);
}
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) {
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    m->defaults_kwdict = dict;
    Py_INCREF(dict);
}
static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) {
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    m->func_annotations = dict;
    Py_INCREF(dict);
}

/* CythonFunction */
static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname,
                                      PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) {
    PyObject *op = __Pyx_CyFunction_Init(
        PyObject_GC_New(__pyx_CyFunctionObject, __pyx_mstate_global->__pyx_CyFunctionType),
        ml, flags, qualname, closure, module, globals, code
    );
    if (likely(op)) {
        PyObject_GC_Track(op);
    }
    return op;
}

/* PyLongBinop */
#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_Fallback___Pyx_PyLong_AddObjC(PyObject *op1, PyObject *op2, int inplace) {
    return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2);
}
#if CYTHON_USE_PYLONG_INTERNALS
static PyObject* __Pyx_Unpacked___Pyx_PyLong_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) {
    CYTHON_MAYBE_UNUSED_VAR(inplace);
    CYTHON_UNUSED_VAR(zerodivision_check);
    const long b = intval;
    long a;
    const PY_LONG_LONG llb = intval;
    PY_LONG_LONG lla;
    if (unlikely(__Pyx_PyLong_IsZero(op1))) {
        return __Pyx_NewRef(op2);
    }
    const int is_positive = __Pyx_PyLong_IsPos(op1);
    const digit* digits = __Pyx_PyLong_Digits(op1);
    const Py_ssize_t size = __Pyx_PyLong_DigitCount(op1);
    if (likely(size == 1)) {
        a = (long) digits[0];
        if (!is_positive) a *= -1;
    } else {
        switch (size) {
            case 2:
                if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                    a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    if (!is_positive) a *= -1;
                    goto calculate_long;
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
                    lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    if (!is_positive) lla *= -1;
                    goto calculate_long_long;
                }
                break;
            case 3:
                if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                    a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    if (!is_positive) a *= -1;
                    goto calculate_long;
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
                    lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    if (!is_positive) lla *= -1;
                    goto calculate_long_long;
                }
                break;
            case 4:
                if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                    a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    if (!is_positive) a *= -1;
                    goto calculate_long;
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
                    lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    if (!is_positive) lla *= -1;
                    goto calculate_long_long;
                }
                break;
        }
        return PyLong_Type.tp_as_number->nb_add(op1, op2);
    }
    calculate_long:
        {
            long x;
            x = a + b;
            return PyLong_FromLong(x);
        }
    calculate_long_long:
        {
            PY_LONG_LONG llx;
            llx = lla + llb;
            return PyLong_FromLongLong(llx);
        }
    
}
#endif
static PyObject* __Pyx_Float___Pyx_PyLong_AddObjC(PyObject *float_val, long intval, int zerodivision_check) {
    CYTHON_UNUSED_VAR(zerodivision_check);
    const long b = intval;
    double a = __Pyx_PyFloat_AS_DOUBLE(float_val);
        double result;
        
        result = ((double)a) + (double)b;
        return PyFloat_FromDouble(result);
}
static CYTHON_INLINE PyObject* __Pyx_PyLong_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) {
    CYTHON_MAYBE_UNUSED_VAR(intval);
    CYTHON_UNUSED_VAR(zerodivision_check);
    #if CYTHON_USE_PYLONG_INTERNALS
    if (likely(PyLong_CheckExact(op1))) {
        return __Pyx_Unpacked___Pyx_PyLong_AddObjC(op1, op2, intval, inplace, zerodivision_check);
    }
    #endif
    if (PyFloat_CheckExact(op1)) {
        return __Pyx_Float___Pyx_PyLong_AddObjC(op1, intval, zerodivision_check);
    }
    return __Pyx_Fallback___Pyx_PyLong_AddObjC(op1, op2, inplace);
}
#endif

/* CallNextTpDealloc */
static void __Pyx_call_next_tp_dealloc(PyObject* obj, destructor current_tp_dealloc) {
    PyTypeObject* type = Py_TYPE(obj);
    destructor tp_dealloc = NULL;
    while (type && __Pyx_PyType_GetSlot(type, tp_dealloc, destructor) != current_tp_dealloc)
        type = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*);
    while (type && (tp_dealloc = __Pyx_PyType_GetSlot(type, tp_dealloc, destructor)) == current_tp_dealloc)
        type = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*);
    if (type)
        tp_dealloc(obj);
}

/* CallNextTpTraverse */
static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse) {
    PyTypeObject* type = Py_TYPE(obj);
    traverseproc tp_traverse = NULL;
    while (type && __Pyx_PyType_GetSlot(type, tp_traverse, traverseproc) != current_tp_traverse)
        type = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*);
    while (type && (tp_traverse = __Pyx_PyType_GetSlot(type, tp_traverse, traverseproc)) == current_tp_traverse)
        type = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*);
    if (type && tp_traverse)
        return tp_traverse(obj, v, a);
    return 0;
}

/* CallNextTpClear */
static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_clear) {
    PyTypeObject* type = Py_TYPE(obj);
    inquiry tp_clear = NULL;
    while (type && __Pyx_PyType_GetSlot(type, tp_clear, inquiry) != current_tp_clear)
        type = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*);
    while (type && (tp_clear = __Pyx_PyType_GetSlot(type, tp_clear, inquiry)) == current_tp_clear)
        type = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*);
    if (type && tp_clear)
        tp_clear(obj);
}

/* TypeImport */
#ifndef __PYX_HAVE_RT_ImportType_3_2_4
#define __PYX_HAVE_RT_ImportType_3_2_4
static PyTypeObject *__Pyx_ImportType_3_2_4(PyObject *module, const char *module_name, const char *class_name,
    size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_2_4 check_size)
{
    PyObject *result = 0;
    Py_ssize_t basicsize;
    Py_ssize_t itemsize;
#if defined(Py_LIMITED_API) || (defined(CYTHON_COMPILING_IN_LIMITED_API) && CYTHON_COMPILING_IN_LIMITED_API)
    PyObject *py_basicsize;
    PyObject *py_itemsize;
#endif
    result = PyObject_GetAttrString(module, class_name);
    if (!result)
        goto bad;
    if (!PyType_Check(result)) {
        PyErr_Format(PyExc_TypeError,
            "%.200s.%.200s is not a type object",
            module_name, class_name);
        goto bad;
    }
#if !( defined(Py_LIMITED_API) || (defined(CYTHON_COMPILING_IN_LIMITED_API) && CYTHON_COMPILING_IN_LIMITED_API) )
    basicsize = ((PyTypeObject *)result)->tp_basicsize;
    itemsize = ((PyTypeObject *)result)->tp_itemsize;
#else
    if (size == 0) {
        return (PyTypeObject *)result;
    }
    py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
    if (!py_basicsize)
        goto bad;
    basicsize = PyLong_AsSsize_t(py_basicsize);
    Py_DECREF(py_basicsize);
    py_basicsize = 0;
    if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
        goto bad;
    py_itemsize = PyObject_GetAttrString(result, "__itemsize__");
    if (!py_itemsize)
        goto bad;
    itemsize = PyLong_AsSsize_t(py_itemsize);
    Py_DECREF(py_itemsize);
    py_itemsize = 0;
    if (itemsize == (Py_ssize_t)-1 && PyErr_Occurred())
        goto bad;
#endif
    if (itemsize) {
        if (size % alignment) {
            alignment = size % alignment;
        }
        if (itemsize < (Py_ssize_t)alignment)
            itemsize = (Py_ssize_t)alignment;
    }
    if ((size_t)(basicsize + itemsize) < size) {
        PyErr_Format(PyExc_ValueError,
            "%.200s.%.200s size changed, may indicate binary incompatibility. "
            "Expected %zd from C header, got %zd from PyObject",
            module_name, class_name, size, basicsize+itemsize);
        goto bad;
    }
    if (check_size == __Pyx_ImportType_CheckSize_Error_3_2_4 &&
            ((size_t)basicsize > size || (size_t)(basicsize + itemsize) < size)) {
        PyErr_Format(PyExc_ValueError,
            "%.200s.%.200s size changed, may indicate binary incompatibility. "
            "Expected %zd from C header, got %zd-%zd from PyObject",
            module_name, class_name, size, basicsize, basicsize+itemsize);
        goto bad;
    }
    else if (check_size == __Pyx_ImportType_CheckSize_Warn_3_2_4 && (size_t)basicsize > size) {
        if (PyErr_WarnFormat(NULL, 0,
                "%.200s.%.200s size changed, may indicate binary incompatibility. "
                "Expected %zd from C header, got %zd from PyObject",
                module_name, class_name, size, basicsize) < 0) {
            goto bad;
        }
    }
    return (PyTypeObject *)result;
bad:
    Py_XDECREF(result);
    return NULL;
}
#endif

/* GetVTable */
static void* __Pyx_GetVtable(PyTypeObject *type) {
    void* ptr;
#if CYTHON_COMPILING_IN_LIMITED_API
    PyObject *ob = PyObject_GetAttr((PyObject *)type, __pyx_mstate_global->__pyx_n_u_pyx_vtable);
#else
    PyObject *ob = PyObject_GetItem(type->tp_dict, __pyx_mstate_global->__pyx_n_u_pyx_vtable);
#endif
    if (!ob)
        goto bad;
    ptr = PyCapsule_GetPointer(ob, 0);
    if (!ptr && !PyErr_Occurred())
        PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type");
    Py_DECREF(ob);
    return ptr;
bad:
    Py_XDECREF(ob);
    return NULL;
}

/* ValidateBasesTuple (used by PyType_Ready) */
#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS
static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases) {
    Py_ssize_t i, n;
#if CYTHON_ASSUME_SAFE_SIZE
    n = PyTuple_GET_SIZE(bases);
#else
    n = PyTuple_Size(bases);
    if (unlikely(n < 0)) return -1;
#endif
    for (i = 1; i < n; i++)
    {
        PyTypeObject *b;
#if CYTHON_AVOID_BORROWED_REFS
        PyObject *b0 = PySequence_GetItem(bases, i);
        if (!b0) return -1;
#elif CYTHON_ASSUME_SAFE_MACROS
        PyObject *b0 = PyTuple_GET_ITEM(bases, i);
#else
        PyObject *b0 = PyTuple_GetItem(bases, i);
        if (!b0) return -1;
#endif
        b = (PyTypeObject*) b0;
        if (!__Pyx_PyType_HasFeature(b, Py_TPFLAGS_HEAPTYPE))
        {
            __Pyx_TypeName b_name = __Pyx_PyType_GetFullyQualifiedName(b);
            PyErr_Format(PyExc_TypeError,
                "base class '" __Pyx_FMT_TYPENAME "' is not a heap type", b_name);
            __Pyx_DECREF_TypeName(b_name);
#if CYTHON_AVOID_BORROWED_REFS
            Py_DECREF(b0);
#endif
            return -1;
        }
        if (dictoffset == 0)
        {
            Py_ssize_t b_dictoffset = 0;
#if CYTHON_USE_TYPE_SLOTS
            b_dictoffset = b->tp_dictoffset;
#else
            PyObject *py_b_dictoffset = PyObject_GetAttrString((PyObject*)b, "__dictoffset__");
            if (!py_b_dictoffset) goto dictoffset_return;
            b_dictoffset = PyLong_AsSsize_t(py_b_dictoffset);
            Py_DECREF(py_b_dictoffset);
            if (b_dictoffset == -1 && PyErr_Occurred()) goto dictoffset_return;
#endif
            if (b_dictoffset) {
                {
                    __Pyx_TypeName b_name = __Pyx_PyType_GetFullyQualifiedName(b);
                    PyErr_Format(PyExc_TypeError,
                        "extension type '%.200s' has no __dict__ slot, "
                        "but base type '" __Pyx_FMT_TYPENAME "' has: "
                        "either add 'cdef dict __dict__' to the extension type "
                        "or add '__slots__ = [...]' to the base type",
                        type_name, b_name);
                    __Pyx_DECREF_TypeName(b_name);
                }
#if !CYTHON_USE_TYPE_SLOTS
              dictoffset_return:
#endif
#if CYTHON_AVOID_BORROWED_REFS
                Py_DECREF(b0);
#endif
                return -1;
            }
        }
#if CYTHON_AVOID_BORROWED_REFS
        Py_DECREF(b0);
#endif
    }
    return 0;
}
#endif

/* PyType_Ready */
CYTHON_UNUSED static int __Pyx_PyType_HasMultipleInheritance(PyTypeObject *t) {
    while (t) {
        PyObject *bases = __Pyx_PyType_GetSlot(t, tp_bases, PyObject*);
        if (bases) {
            return 1;
        }
        t = __Pyx_PyType_GetSlot(t, tp_base, PyTypeObject*);
    }
    return 0;
}
static int __Pyx_PyType_Ready(PyTypeObject *t) {
#if CYTHON_USE_TYPE_SPECS || !CYTHON_COMPILING_IN_CPYTHON || defined(PYSTON_MAJOR_VERSION)
    (void)__Pyx_PyObject_CallMethod0;
#if CYTHON_USE_TYPE_SPECS
    (void)__Pyx_validate_bases_tuple;
#endif
    return PyType_Ready(t);
#else
    int r;
    if (!__Pyx_PyType_HasMultipleInheritance(t)) {
        return PyType_Ready(t);
    }
    PyObject *bases = __Pyx_PyType_GetSlot(t, tp_bases, PyObject*);
    if (bases && unlikely(__Pyx_validate_bases_tuple(t->tp_name, t->tp_dictoffset, bases) == -1))
        return -1;
#if !defined(PYSTON_MAJOR_VERSION)
    {
        int gc_was_enabled;
    #if PY_VERSION_HEX >= 0x030A00b1
        gc_was_enabled = PyGC_Disable();
        (void)__Pyx_PyObject_CallMethod0;
    #else
        PyObject *ret, *py_status;
        PyObject *gc = NULL;
        #if (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM+0 >= 0x07030400) &&\
                !CYTHON_COMPILING_IN_GRAAL
        gc = PyImport_GetModule(__pyx_mstate_global->__pyx_kp_u_gc);
        #endif
        if (unlikely(!gc)) gc = PyImport_Import(__pyx_mstate_global->__pyx_kp_u_gc);
        if (unlikely(!gc)) return -1;
        py_status = __Pyx_PyObject_CallMethod0(gc, __pyx_mstate_global->__pyx_kp_u_isenabled);
        if (unlikely(!py_status)) {
            Py_DECREF(gc);
            return -1;
        }
        gc_was_enabled = __Pyx_PyObject_IsTrue(py_status);
        Py_DECREF(py_status);
        if (gc_was_enabled > 0) {
            ret = __Pyx_PyObject_CallMethod0(gc, __pyx_mstate_global->__pyx_kp_u_disable);
            if (unlikely(!ret)) {
                Py_DECREF(gc);
                return -1;
            }
            Py_DECREF(ret);
        } else if (unlikely(gc_was_enabled == -1)) {
            Py_DECREF(gc);
            return -1;
        }
    #endif
        t->tp_flags |= Py_TPFLAGS_HEAPTYPE;
#if PY_VERSION_HEX >= 0x030A0000
        t->tp_flags |= Py_TPFLAGS_IMMUTABLETYPE;
#endif
#else
        (void)__Pyx_PyObject_CallMethod0;
#endif
    r = PyType_Ready(t);
#if !defined(PYSTON_MAJOR_VERSION)
        t->tp_flags &= ~Py_TPFLAGS_HEAPTYPE;
    #if PY_VERSION_HEX >= 0x030A00b1
        if (gc_was_enabled)
            PyGC_Enable();
    #else
        if (gc_was_enabled) {
            PyObject *tp, *v, *tb;
            PyErr_Fetch(&tp, &v, &tb);
            ret = __Pyx_PyObject_CallMethod0(gc, __pyx_mstate_global->__pyx_kp_u_enable);
            if (likely(ret || r == -1)) {
                Py_XDECREF(ret);
                PyErr_Restore(tp, v, tb);
            } else {
                Py_XDECREF(tp);
                Py_XDECREF(v);
                Py_XDECREF(tb);
                r = -1;
            }
        }
        Py_DECREF(gc);
    #endif
    }
#endif
    return r;
#endif
}

/* SetVTable */
static int __Pyx_SetVtable(PyTypeObject *type, void *vtable) {
    PyObject *ob = PyCapsule_New(vtable, 0, 0);
    if (unlikely(!ob))
        goto bad;
#if CYTHON_COMPILING_IN_LIMITED_API
    if (unlikely(PyObject_SetAttr((PyObject *) type, __pyx_mstate_global->__pyx_n_u_pyx_vtable, ob) < 0))
#else
    if (unlikely(PyDict_SetItem(type->tp_dict, __pyx_mstate_global->__pyx_n_u_pyx_vtable, ob) < 0))
#endif
        goto bad;
    Py_DECREF(ob);
    return 0;
bad:
    Py_XDECREF(ob);
    return -1;
}

/* MergeVTables */
static int __Pyx_MergeVtables(PyTypeObject *type) {
    int i=0;
    Py_ssize_t size;
    void** base_vtables;
    __Pyx_TypeName tp_base_name = NULL;
    __Pyx_TypeName base_name = NULL;
    void* unknown = (void*)-1;
    PyObject* bases = __Pyx_PyType_GetSlot(type, tp_bases, PyObject*);
    int base_depth = 0;
    {
        PyTypeObject* base = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*);
        while (base) {
            base_depth += 1;
            base = __Pyx_PyType_GetSlot(base, tp_base, PyTypeObject*);
        }
    }
    base_vtables = (void**) PyMem_Malloc(sizeof(void*) * (size_t)(base_depth + 1));
    base_vtables[0] = unknown;
#if CYTHON_COMPILING_IN_LIMITED_API
    size = PyTuple_Size(bases);
    if (size < 0) goto other_failure;
#else
    size = PyTuple_GET_SIZE(bases);
#endif
    for (i = 1; i < size; i++) {
        PyObject *basei;
        void* base_vtable;
#if CYTHON_AVOID_BORROWED_REFS
        basei = PySequence_GetItem(bases, i);
        if (unlikely(!basei)) goto other_failure;
#elif !CYTHON_ASSUME_SAFE_MACROS
        basei = PyTuple_GetItem(bases, i);
        if (unlikely(!basei)) goto other_failure;
#else
        basei = PyTuple_GET_ITEM(bases, i);
#endif
        base_vtable = __Pyx_GetVtable((PyTypeObject*)basei);
#if CYTHON_AVOID_BORROWED_REFS
        Py_DECREF(basei);
#endif
        if (base_vtable != NULL) {
            int j;
            PyTypeObject* base = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*);
            for (j = 0; j < base_depth; j++) {
                if (base_vtables[j] == unknown) {
                    base_vtables[j] = __Pyx_GetVtable(base);
                    base_vtables[j + 1] = unknown;
                }
                if (base_vtables[j] == base_vtable) {
                    break;
                } else if (base_vtables[j] == NULL) {
                    goto bad;
                }
                base = __Pyx_PyType_GetSlot(base, tp_base, PyTypeObject*);
            }
        }
    }
    PyErr_Clear();
    PyMem_Free(base_vtables);
    return 0;
bad:
    {
        PyTypeObject* basei = NULL;
        PyTypeObject* tp_base = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*);
        tp_base_name = __Pyx_PyType_GetFullyQualifiedName(tp_base);
#if CYTHON_AVOID_BORROWED_REFS
        basei = (PyTypeObject*)PySequence_GetItem(bases, i);
        if (unlikely(!basei)) goto really_bad;
#elif !CYTHON_ASSUME_SAFE_MACROS
        basei = (PyTypeObject*)PyTuple_GetItem(bases, i);
        if (unlikely(!basei)) goto really_bad;
#else
        basei = (PyTypeObject*)PyTuple_GET_ITEM(bases, i);
#endif
        base_name = __Pyx_PyType_GetFullyQualifiedName(basei);
#if CYTHON_AVOID_BORROWED_REFS
        Py_DECREF(basei);
#endif
    }
    PyErr_Format(PyExc_TypeError,
        "multiple bases have vtable conflict: '" __Pyx_FMT_TYPENAME "' and '" __Pyx_FMT_TYPENAME "'", tp_base_name, base_name);
#if CYTHON_AVOID_BORROWED_REFS || !CYTHON_ASSUME_SAFE_MACROS
really_bad: // bad has failed!
#endif
    __Pyx_DECREF_TypeName(tp_base_name);
    __Pyx_DECREF_TypeName(base_name);
#if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_AVOID_BORROWED_REFS || !CYTHON_ASSUME_SAFE_MACROS
other_failure:
#endif
    PyMem_Free(base_vtables);
    return -1;
}

/* DelItemOnTypeDict (used by SetupReduce) */
static int __Pyx__DelItemOnTypeDict(PyTypeObject *tp, PyObject *k) {
    int result;
    PyObject *tp_dict;
#if CYTHON_COMPILING_IN_LIMITED_API
    tp_dict = __Pyx_GetTypeDict(tp);
    if (unlikely(!tp_dict)) return -1;
#else
    tp_dict = tp->tp_dict;
#endif
    result = PyDict_DelItem(tp_dict, k);
    if (likely(!result)) PyType_Modified(tp);
    return result;
}

/* SetupReduce */
static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
  int ret;
  PyObject *name_attr;
  name_attr = __Pyx_PyObject_GetAttrStrNoError(meth, __pyx_mstate_global->__pyx_n_u_name_2);
  if (likely(name_attr)) {
      ret = PyObject_RichCompareBool(name_attr, name, Py_EQ);
  } else {
      ret = -1;
  }
  if (unlikely(ret < 0)) {
      PyErr_Clear();
      ret = 0;
  }
  Py_XDECREF(name_attr);
  return ret;
}
static int __Pyx_setup_reduce(PyObject* type_obj) {
    int ret = 0;
    PyObject *object_reduce = NULL;
    PyObject *object_getstate = NULL;
    PyObject *object_reduce_ex = NULL;
    PyObject *reduce = NULL;
    PyObject *reduce_ex = NULL;
    PyObject *reduce_cython = NULL;
    PyObject *setstate = NULL;
    PyObject *setstate_cython = NULL;
    PyObject *getstate = NULL;
#if CYTHON_USE_PYTYPE_LOOKUP
    getstate = _PyType_Lookup((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_getstate);
#else
    getstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_getstate);
    if (!getstate && PyErr_Occurred()) {
        goto __PYX_BAD;
    }
#endif
    if (getstate) {
#if CYTHON_USE_PYTYPE_LOOKUP
        object_getstate = _PyType_Lookup(&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_getstate);
#else
        object_getstate = __Pyx_PyObject_GetAttrStrNoError((PyObject*)&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_getstate);
        if (!object_getstate && PyErr_Occurred()) {
            goto __PYX_BAD;
        }
#endif
        if (object_getstate != getstate) {
            goto __PYX_GOOD;
        }
    }
#if CYTHON_USE_PYTYPE_LOOKUP
    object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD;
#else
    object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD;
#endif
    reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_mstate_global->__pyx_n_u_reduce_ex); if (unlikely(!reduce_ex)) goto __PYX_BAD;
    if (reduce_ex == object_reduce_ex) {
#if CYTHON_USE_PYTYPE_LOOKUP
        object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_reduce); if (!object_reduce) goto __PYX_BAD;
#else
        object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_reduce); if (!object_reduce) goto __PYX_BAD;
#endif
        reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_mstate_global->__pyx_n_u_reduce); if (unlikely(!reduce)) goto __PYX_BAD;
        if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_mstate_global->__pyx_n_u_reduce_cython)) {
            reduce_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_reduce_cython);
            if (likely(reduce_cython)) {
                ret = __Pyx_SetItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_reduce, reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
                ret = __Pyx_DelItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
            } else if (reduce == object_reduce || PyErr_Occurred()) {
                goto __PYX_BAD;
            }
            setstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_setstate);
            if (!setstate) PyErr_Clear();
            if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_mstate_global->__pyx_n_u_setstate_cython)) {
                setstate_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_setstate_cython);
                if (likely(setstate_cython)) {
                    ret = __Pyx_SetItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_setstate, setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
                    ret = __Pyx_DelItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
                } else if (!setstate || PyErr_Occurred()) {
                    goto __PYX_BAD;
                }
            }
            PyType_Modified((PyTypeObject*)type_obj);
        }
    }
    goto __PYX_GOOD;
__PYX_BAD:
    if (!PyErr_Occurred()) {
        __Pyx_TypeName type_obj_name =
            __Pyx_PyType_GetFullyQualifiedName((PyTypeObject*)type_obj);
        PyErr_Format(PyExc_RuntimeError,
            "Unable to initialize pickling for " __Pyx_FMT_TYPENAME, type_obj_name);
        __Pyx_DECREF_TypeName(type_obj_name);
    }
    ret = -1;
__PYX_GOOD:
#if !CYTHON_USE_PYTYPE_LOOKUP
    Py_XDECREF(object_reduce);
    Py_XDECREF(object_reduce_ex);
    Py_XDECREF(object_getstate);
    Py_XDECREF(getstate);
#endif
    Py_XDECREF(reduce);
    Py_XDECREF(reduce_ex);
    Py_XDECREF(reduce_cython);
    Py_XDECREF(setstate);
    Py_XDECREF(setstate_cython);
    return ret;
}

/* PxdImportShared (used by FunctionImport) */
#ifndef __PYX_HAVE_RT_ImportFromPxd_3_2_4
#define __PYX_HAVE_RT_ImportFromPxd_3_2_4
static int __Pyx_ImportFromPxd_3_2_4(PyObject *module, const char *name, void **p, const char *sig, const char *what) {
    PyObject *d = 0;
    PyObject *cobj = 0;
    d = PyObject_GetAttrString(module, "__pyx_capi__");
    if (!d)
        goto bad;
#if (defined(Py_LIMITED_API) && Py_LIMITED_API >= 0x030d0000) || (!defined(Py_LIMITED_API) && PY_VERSION_HEX >= 0x030d0000)
    PyDict_GetItemStringRef(d, name, &cobj);
#else
    cobj = PyDict_GetItemString(d, name);
    Py_XINCREF(cobj);
#endif
    if (!cobj) {
        PyErr_Format(PyExc_ImportError,
            "%.200s does not export expected C %.8s %.200s",
                PyModule_GetName(module), what, name);
        goto bad;
    }
    if (!PyCapsule_IsValid(cobj, sig)) {
        PyErr_Format(PyExc_TypeError,
            "C %.8s %.200s.%.200s has wrong signature (expected %.500s, got %.500s)",
             what, PyModule_GetName(module), name, sig, PyCapsule_GetName(cobj));
        goto bad;
    }
    *p = PyCapsule_GetPointer(cobj, sig);
    if (!(*p))
        goto bad;
    Py_DECREF(d);
    Py_DECREF(cobj);
    return 0;
bad:
    Py_XDECREF(d);
    Py_XDECREF(cobj);
    return -1;
}
#endif

/* FunctionImport */
#ifndef __PYX_HAVE_RT_ImportFunction_3_2_4
#define __PYX_HAVE_RT_ImportFunction_3_2_4
static int __Pyx_ImportFunction_3_2_4(PyObject *module, const char *funcname, void (**f)(void), const char *sig) {
    union {
        void (*fp)(void);
        void *p;
    } tmp;
    int result = __Pyx_ImportFromPxd_3_2_4(module, funcname, &tmp.p, sig, "function");
    if (result == 0) {
        *f = tmp.fp;
    }
    return result;
}
#endif

/* GetNameInClass */
static PyObject *__Pyx__GetNameInClass(PyObject *nmspace, PyObject *name) {
    PyObject *result;
    PyObject *dict;
    assert(PyType_Check(nmspace));
#if CYTHON_USE_TYPE_SLOTS
    dict = ((PyTypeObject*)nmspace)->tp_dict;
    Py_XINCREF(dict);
#else
    dict = PyObject_GetAttr(nmspace, __pyx_mstate_global->__pyx_n_u_dict);
#endif
    if (likely(dict)) {
        result = PyObject_GetItem(dict, name);
        Py_DECREF(dict);
        if (result) {
            return result;
        }
    }
    PyErr_Clear();
    __Pyx_GetModuleGlobalNameUncached(result, name);
    return result;
}

/* CLineInTraceback (used by AddTraceback) */
#if CYTHON_CLINE_IN_TRACEBACK && CYTHON_CLINE_IN_TRACEBACK_RUNTIME
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000
#define __Pyx_PyProbablyModule_GetDict(o) __Pyx_XNewRef(PyModule_GetDict(o))
#elif !CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
#define __Pyx_PyProbablyModule_GetDict(o) PyObject_GenericGetDict(o, NULL);
#else
PyObject* __Pyx_PyProbablyModule_GetDict(PyObject *o) {
    PyObject **dict_ptr = _PyObject_GetDictPtr(o);
    return dict_ptr ? __Pyx_XNewRef(*dict_ptr) : NULL;
}
#endif
static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) {
    PyObject *use_cline = NULL;
    PyObject *ptype, *pvalue, *ptraceback;
    PyObject *cython_runtime_dict;
    CYTHON_MAYBE_UNUSED_VAR(tstate);
    if (unlikely(!__pyx_mstate_global->__pyx_cython_runtime)) {
        return c_line;
    }
    __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
    cython_runtime_dict = __Pyx_PyProbablyModule_GetDict(__pyx_mstate_global->__pyx_cython_runtime);
    if (likely(cython_runtime_dict)) {
        __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
            use_cline, cython_runtime_dict,
            __Pyx_PyDict_SetDefault(cython_runtime_dict, __pyx_mstate_global->__pyx_n_u_cline_in_traceback, Py_False))
    }
    if (use_cline == NULL || use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) {
        c_line = 0;
    }
    Py_XDECREF(use_cline);
    Py_XDECREF(cython_runtime_dict);
    __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
    return c_line;
}
#endif

/* CodeObjectCache (used by AddTraceback) */
static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
    int start = 0, mid = 0, end = count - 1;
    if (end >= 0 && code_line > entries[end].code_line) {
        return count;
    }
    while (start < end) {
        mid = start + (end - start) / 2;
        if (code_line < entries[mid].code_line) {
            end = mid;
        } else if (code_line > entries[mid].code_line) {
             start = mid + 1;
        } else {
            return mid;
        }
    }
    if (code_line <= entries[mid].code_line) {
        return mid;
    } else {
        return mid + 1;
    }
}
static __Pyx_CachedCodeObjectType *__pyx__find_code_object(struct __Pyx_CodeObjectCache *code_cache, int code_line) {
    __Pyx_CachedCodeObjectType* code_object;
    int pos;
    if (unlikely(!code_line) || unlikely(!code_cache->entries)) {
        return NULL;
    }
    pos = __pyx_bisect_code_objects(code_cache->entries, code_cache->count, code_line);
    if (unlikely(pos >= code_cache->count) || unlikely(code_cache->entries[pos].code_line != code_line)) {
        return NULL;
    }
    code_object = code_cache->entries[pos].code_object;
    Py_INCREF(code_object);
    return code_object;
}
static __Pyx_CachedCodeObjectType *__pyx_find_code_object(int code_line) {
#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING && !CYTHON_ATOMICS
    (void)__pyx__find_code_object;
    return NULL; // Most implementation should have atomics. But otherwise, don't make it thread-safe, just miss.
#else
    struct __Pyx_CodeObjectCache *code_cache = &__pyx_mstate_global->__pyx_code_cache;
#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
    __pyx_nonatomic_int_type old_count = __pyx_atomic_incr_acq_rel(&code_cache->accessor_count);
    if (old_count < 0) {
        __pyx_atomic_decr_acq_rel(&code_cache->accessor_count);
        return NULL;
    }
#endif
    __Pyx_CachedCodeObjectType *result = __pyx__find_code_object(code_cache, code_line);
#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
    __pyx_atomic_decr_acq_rel(&code_cache->accessor_count);
#endif
    return result;
#endif
}
static void __pyx__insert_code_object(struct __Pyx_CodeObjectCache *code_cache, int code_line, __Pyx_CachedCodeObjectType* code_object)
{
    int pos, i;
    __Pyx_CodeObjectCacheEntry* entries = code_cache->entries;
    if (unlikely(!code_line)) {
        return;
    }
    if (unlikely(!entries)) {
        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
        if (likely(entries)) {
            code_cache->entries = entries;
            code_cache->max_count = 64;
            code_cache->count = 1;
            entries[0].code_line = code_line;
            entries[0].code_object = code_object;
            Py_INCREF(code_object);
        }
        return;
    }
    pos = __pyx_bisect_code_objects(code_cache->entries, code_cache->count, code_line);
    if ((pos < code_cache->count) && unlikely(code_cache->entries[pos].code_line == code_line)) {
        __Pyx_CachedCodeObjectType* tmp = entries[pos].code_object;
        entries[pos].code_object = code_object;
        Py_INCREF(code_object);
        Py_DECREF(tmp);
        return;
    }
    if (code_cache->count == code_cache->max_count) {
        int new_max = code_cache->max_count + 64;
        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
            code_cache->entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry));
        if (unlikely(!entries)) {
            return;
        }
        code_cache->entries = entries;
        code_cache->max_count = new_max;
    }
    for (i=code_cache->count; i>pos; i--) {
        entries[i] = entries[i-1];
    }
    entries[pos].code_line = code_line;
    entries[pos].code_object = code_object;
    code_cache->count++;
    Py_INCREF(code_object);
}
static void __pyx_insert_code_object(int code_line, __Pyx_CachedCodeObjectType* code_object) {
#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING && !CYTHON_ATOMICS
    (void)__pyx__insert_code_object;
    return; // Most implementation should have atomics. But otherwise, don't make it thread-safe, just fail.
#else
    struct __Pyx_CodeObjectCache *code_cache = &__pyx_mstate_global->__pyx_code_cache;
#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
    __pyx_nonatomic_int_type expected = 0;
    if (!__pyx_atomic_int_cmp_exchange(&code_cache->accessor_count, &expected, INT_MIN)) {
        return;
    }
#endif
    __pyx__insert_code_object(code_cache, code_line, code_object);
#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
    __pyx_atomic_sub(&code_cache->accessor_count, INT_MIN);
#endif
#endif
}

/* AddTraceback */
#include "compile.h"
#include "frameobject.h"
#include "traceback.h"
#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API && !defined(PYPY_VERSION)
  #ifndef Py_BUILD_CORE
    #define Py_BUILD_CORE 1
  #endif
  #include "internal/pycore_frame.h"
#endif
#if CYTHON_COMPILING_IN_LIMITED_API
static PyObject *__Pyx_PyCode_Replace_For_AddTraceback(PyObject *code, PyObject *scratch_dict,
                                                       PyObject *firstlineno, PyObject *name) {
    PyObject *replace = NULL;
    if (unlikely(PyDict_SetItemString(scratch_dict, "co_firstlineno", firstlineno))) return NULL;
    if (unlikely(PyDict_SetItemString(scratch_dict, "co_name", name))) return NULL;
    replace = PyObject_GetAttrString(code, "replace");
    if (likely(replace)) {
        PyObject *result = PyObject_Call(replace, __pyx_mstate_global->__pyx_empty_tuple, scratch_dict);
        Py_DECREF(replace);
        return result;
    }
    PyErr_Clear();
    return NULL;
}
static void __Pyx_AddTraceback(const char *funcname, int c_line,
                               int py_line, const char *filename) {
    PyObject *code_object = NULL, *py_py_line = NULL, *py_funcname = NULL, *dict = NULL;
    PyObject *replace = NULL, *getframe = NULL, *frame = NULL;
    PyObject *exc_type, *exc_value, *exc_traceback;
    int success = 0;
    if (c_line) {
        c_line = __Pyx_CLineForTraceback(__Pyx_PyThreadState_Current, c_line);
    }
    PyErr_Fetch(&exc_type, &exc_value, &exc_traceback);
    code_object = __pyx_find_code_object(c_line ? -c_line : py_line);
    if (!code_object) {
        code_object = Py_CompileString("_getframe()", filename, Py_eval_input);
        if (unlikely(!code_object)) goto bad;
        py_py_line = PyLong_FromLong(py_line);
        if (unlikely(!py_py_line)) goto bad;
        if (c_line) {
            py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
        } else {
            py_funcname = PyUnicode_FromString(funcname);
        }
        if (unlikely(!py_funcname)) goto bad;
        dict = PyDict_New();
        if (unlikely(!dict)) goto bad;
        {
            PyObject *old_code_object = code_object;
            code_object = __Pyx_PyCode_Replace_For_AddTraceback(code_object, dict, py_py_line, py_funcname);
            Py_DECREF(old_code_object);
        }
        if (unlikely(!code_object)) goto bad;
        __pyx_insert_code_object(c_line ? -c_line : py_line, code_object);
    } else {
        dict = PyDict_New();
    }
    getframe = PySys_GetObject("_getframe");
    if (unlikely(!getframe)) goto bad;
    if (unlikely(PyDict_SetItemString(dict, "_getframe", getframe))) goto bad;
    frame = PyEval_EvalCode(code_object, dict, dict);
    if (unlikely(!frame) || frame == Py_None) goto bad;
    success = 1;
  bad:
    PyErr_Restore(exc_type, exc_value, exc_traceback);
    Py_XDECREF(code_object);
    Py_XDECREF(py_py_line);
    Py_XDECREF(py_funcname);
    Py_XDECREF(dict);
    Py_XDECREF(replace);
    if (success) {
        PyTraceBack_Here(
            (struct _frame*)frame);
    }
    Py_XDECREF(frame);
}
#else
static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
            const char *funcname, int c_line,
            int py_line, const char *filename) {
    PyCodeObject *py_code = NULL;
    PyObject *py_funcname = NULL;
    if (c_line) {
        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
        if (!py_funcname) goto bad;
        funcname = PyUnicode_AsUTF8(py_funcname);
        if (!funcname) goto bad;
    }
    py_code = PyCode_NewEmpty(filename, funcname, py_line);
    Py_XDECREF(py_funcname);
    return py_code;
bad:
    Py_XDECREF(py_funcname);
    return NULL;
}
static void __Pyx_AddTraceback(const char *funcname, int c_line,
                               int py_line, const char *filename) {
    PyCodeObject *py_code = 0;
    PyFrameObject *py_frame = 0;
    PyThreadState *tstate = __Pyx_PyThreadState_Current;
    PyObject *ptype, *pvalue, *ptraceback;
    if (c_line) {
        c_line = __Pyx_CLineForTraceback(tstate, c_line);
    }
    py_code = __pyx_find_code_object(c_line ? -c_line : py_line);
    if (!py_code) {
        __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
        py_code = __Pyx_CreateCodeObjectForTraceback(
            funcname, c_line, py_line, filename);
        if (!py_code) {
            /* If the code object creation fails, then we should clear the
               fetched exception references and propagate the new exception */
            Py_XDECREF(ptype);
            Py_XDECREF(pvalue);
            Py_XDECREF(ptraceback);
            goto bad;
        }
        __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
        __pyx_insert_code_object(c_line ? -c_line : py_line, py_code);
    }
    py_frame = PyFrame_New(
        tstate,            /*PyThreadState *tstate,*/
        py_code,           /*PyCodeObject *code,*/
        __pyx_mstate_global->__pyx_d,    /*PyObject *globals,*/
        0                  /*PyObject *locals*/
    );
    if (!py_frame) goto bad;
    __Pyx_PyFrame_SetLineNumber(py_frame, py_line);
    PyTraceBack_Here(py_frame);
bad:
    Py_XDECREF(py_code);
    Py_XDECREF(py_frame);
}
#endif

/* CIntFromPyVerify */
#define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
    __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
    __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\
    {\
        func_type value = func_value;\
        if (sizeof(target_type) < sizeof(func_type)) {\
            if (unlikely(value != (func_type) (target_type) value)) {\
                func_type zero = 0;\
                if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\
                    return (target_type) -1;\
                if (is_unsigned && unlikely(value < zero))\
                    goto raise_neg_overflow;\
                else\
                    goto raise_overflow;\
            }\
        }\
        return (target_type) value;\
    }

static PyObject* __pyx_convert__to_py_struct__mlx5dv_cqe_comp_caps(struct mlx5dv_cqe_comp_caps s) {
  PyObject* res;
  PyObject* member;
  res = __Pyx_PyDict_NewPresized(2); if (unlikely(!res)) return NULL;
  member = __Pyx_PyLong_From_unsigned_int(s.max_num); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_max_num_2, member) < 0)) goto bad;
  Py_DECREF(member);
  member = __Pyx_PyLong_From_unsigned_int(s.supported_format); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_supported_format, member) < 0)) goto bad;
  Py_DECREF(member);
  return res;
  bad:
  Py_XDECREF(member);
  Py_DECREF(res);
  return NULL;
}
static PyObject* __pyx_convert__to_py_struct__mlx5dv_sw_parsing_caps(struct mlx5dv_sw_parsing_caps s) {
  PyObject* res;
  PyObject* member;
  res = __Pyx_PyDict_NewPresized(2); if (unlikely(!res)) return NULL;
  member = __Pyx_PyLong_From_unsigned_int(s.sw_parsing_offloads); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_sw_parsing_offloads, member) < 0)) goto bad;
  Py_DECREF(member);
  member = __Pyx_PyLong_From_unsigned_int(s.supported_qpts); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_supported_qpts, member) < 0)) goto bad;
  Py_DECREF(member);
  return res;
  bad:
  Py_XDECREF(member);
  Py_DECREF(res);
  return NULL;
}
static PyObject* __pyx_convert__to_py_struct__mlx5dv_striding_rq_caps(struct mlx5dv_striding_rq_caps s) {
  PyObject* res;
  PyObject* member;
  res = __Pyx_PyDict_NewPresized(5); if (unlikely(!res)) return NULL;
  member = __Pyx_PyLong_From_unsigned_int(s.min_single_stride_log_num_of_bytes); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_min_single_stride_log_num_of_byt_2, member) < 0)) goto bad;
  Py_DECREF(member);
  member = __Pyx_PyLong_From_unsigned_int(s.max_single_stride_log_num_of_bytes); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_max_single_stride_log_num_of_byt_2, member) < 0)) goto bad;
  Py_DECREF(member);
  member = __Pyx_PyLong_From_unsigned_int(s.min_single_wqe_log_num_of_strides); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_min_single_wqe_log_num_of_stride_2, member) < 0)) goto bad;
  Py_DECREF(member);
  member = __Pyx_PyLong_From_unsigned_int(s.max_single_wqe_log_num_of_strides); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_max_single_wqe_log_num_of_stride_2, member) < 0)) goto bad;
  Py_DECREF(member);
  member = __Pyx_PyLong_From_unsigned_int(s.supported_qpts); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_supported_qpts, member) < 0)) goto bad;
  Py_DECREF(member);
  return res;
  bad:
  Py_XDECREF(member);
  Py_DECREF(res);
  return NULL;
}
static PyObject* __pyx_convert__to_py_struct__mlx5dv_crypto_caps(struct mlx5dv_crypto_caps s) {
  PyObject* res;
  PyObject* member;
  res = __Pyx_PyDict_NewPresized(5); if (unlikely(!res)) return NULL;
  member = __Pyx_PyLong_From_uint16_t(s.failed_selftests); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_failed_selftests, member) < 0)) goto bad;
  Py_DECREF(member);
  member = __Pyx_PyLong_From_uint8_t(s.crypto_engines); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_crypto_engines, member) < 0)) goto bad;
  Py_DECREF(member);
  member = __Pyx_PyLong_From_uint8_t(s.wrapped_import_method); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_wrapped_import_method, member) < 0)) goto bad;
  Py_DECREF(member);
  member = __Pyx_PyLong_From_uint8_t(s.log_max_num_deks); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_log_max_num_deks, member) < 0)) goto bad;
  Py_DECREF(member);
  member = __Pyx_PyLong_From_uint32_t(s.flags); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_flags, member) < 0)) goto bad;
  Py_DECREF(member);
  return res;
  bad:
  Py_XDECREF(member);
  Py_DECREF(res);
  return NULL;
}
static PyObject* __pyx_convert__to_py_struct__mlx5dv_dci_streams_caps(struct mlx5dv_dci_streams_caps s) {
  PyObject* res;
  PyObject* member;
  res = __Pyx_PyDict_NewPresized(2); if (unlikely(!res)) return NULL;
  member = __Pyx_PyLong_From_uint8_t(s.max_log_num_concurent); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_max_log_num_concurent, member) < 0)) goto bad;
  Py_DECREF(member);
  member = __Pyx_PyLong_From_uint8_t(s.max_log_num_errored); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_max_log_num_errored, member) < 0)) goto bad;
  Py_DECREF(member);
  return res;
  bad:
  Py_XDECREF(member);
  Py_DECREF(res);
  return NULL;
}
static PyObject* __pyx_convert__to_py_struct__mlx5dv_ooo_recv_wrs_caps(struct mlx5dv_ooo_recv_wrs_caps s) {
  PyObject* res;
  PyObject* member;
  res = __Pyx_PyDict_NewPresized(5); if (unlikely(!res)) return NULL;
  member = __Pyx_PyLong_From_uint32_t(s.max_rc); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_max_rc, member) < 0)) goto bad;
  Py_DECREF(member);
  member = __Pyx_PyLong_From_uint32_t(s.max_xrc); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_max_xrc, member) < 0)) goto bad;
  Py_DECREF(member);
  member = __Pyx_PyLong_From_uint32_t(s.max_dct); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_max_dct, member) < 0)) goto bad;
  Py_DECREF(member);
  member = __Pyx_PyLong_From_uint32_t(s.max_ud); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_max_ud, member) < 0)) goto bad;
  Py_DECREF(member);
  member = __Pyx_PyLong_From_uint32_t(s.max_uc); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_max_uc, member) < 0)) goto bad;
  Py_DECREF(member);
  return res;
  bad:
  Py_XDECREF(member);
  Py_DECREF(res);
  return NULL;
}
static PyObject* __pyx_convert__to_py_struct__mlx5dv_context(struct mlx5dv_context s) {
  PyObject* res;
  PyObject* member;
  res = __Pyx_PyDict_NewPresized(18); if (unlikely(!res)) return NULL;
  member = __Pyx_PyLong_From_unsigned_char(s.version); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_version, member) < 0)) goto bad;
  Py_DECREF(member);
  member = __Pyx_PyLong_From_unsigned_long(s.flags); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_flags, member) < 0)) goto bad;
  Py_DECREF(member);
  member = __Pyx_PyLong_From_unsigned_long(s.comp_mask); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_comp_mask, member) < 0)) goto bad;
  Py_DECREF(member);
  member = __pyx_convert__to_py_struct__mlx5dv_cqe_comp_caps(s.cqe_comp_caps); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_cqe_comp_caps, member) < 0)) goto bad;
  Py_DECREF(member);
  member = __pyx_convert__to_py_struct__mlx5dv_sw_parsing_caps(s.sw_parsing_caps); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_sw_parsing_caps, member) < 0)) goto bad;
  Py_DECREF(member);
  member = __pyx_convert__to_py_struct__mlx5dv_striding_rq_caps(s.striding_rq_caps); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_striding_rq_caps, member) < 0)) goto bad;
  Py_DECREF(member);
  member = __pyx_convert__to_py_struct__mlx5dv_dci_streams_caps(s.dci_streams_caps); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_dci_streams_caps, member) < 0)) goto bad;
  Py_DECREF(member);
  member = __Pyx_PyLong_From_unsigned_int(s.tunnel_offloads_caps); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_tunnel_offloads_caps, member) < 0)) goto bad;
  Py_DECREF(member);
  member = __Pyx_PyLong_From_unsigned_int(s.max_dynamic_bfregs); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_max_dynamic_bfregs, member) < 0)) goto bad;
  Py_DECREF(member);
  member = __Pyx_PyLong_From_unsigned_long(s.max_clock_info_update_nsec); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_max_clock_info_update_nsec, member) < 0)) goto bad;
  Py_DECREF(member);
  member = __Pyx_PyLong_From_unsigned_int(s.flow_action_flags); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_flow_action_flags, member) < 0)) goto bad;
  Py_DECREF(member);
  member = __Pyx_PyLong_From_unsigned_int(s.dc_odp_caps); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_dc_odp_caps, member) < 0)) goto bad;
  Py_DECREF(member);
  member = __Pyx_PyLong_From_uint8_t(s.num_lag_ports); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_num_lag_ports, member) < 0)) goto bad;
  Py_DECREF(member);
  member = __pyx_convert__to_py_struct__mlx5dv_crypto_caps(s.crypto_caps); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_crypto_caps, member) < 0)) goto bad;
  Py_DECREF(member);
  member = __Pyx_PyLong_FromSize_t(s.max_wr_memcpy_length); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_max_wr_memcpy_length, member) < 0)) goto bad;
  Py_DECREF(member);
  member = __Pyx_PyLong_From_uint64_t(s.max_dc_rd_atom); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_max_dc_rd_atom, member) < 0)) goto bad;
  Py_DECREF(member);
  member = __Pyx_PyLong_From_uint64_t(s.max_dc_init_rd_atom); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_max_dc_init_rd_atom, member) < 0)) goto bad;
  Py_DECREF(member);
  member = __pyx_convert__to_py_struct__mlx5dv_ooo_recv_wrs_caps(s.ooo_recv_wrs_caps); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_ooo_recv_wrs_caps, member) < 0)) goto bad;
  Py_DECREF(member);
  return res;
  bad:
  Py_XDECREF(member);
  Py_DECREF(res);
  return NULL;
}
static PyObject* __pyx_convert__to_py_struct__mlx5dv_dci_streams(struct mlx5dv_dci_streams s) {
  PyObject* res;
  PyObject* member;
  res = __Pyx_PyDict_NewPresized(2); if (unlikely(!res)) return NULL;
  member = __Pyx_PyLong_From_uint8_t(s.log_num_concurent); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_log_num_concurent, member) < 0)) goto bad;
  Py_DECREF(member);
  member = __Pyx_PyLong_From_uint8_t(s.log_num_errored); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_log_num_errored, member) < 0)) goto bad;
  Py_DECREF(member);
  return res;
  bad:
  Py_XDECREF(member);
  Py_DECREF(res);
  return NULL;
}
/* RaiseUnexpectedTypeError */
static int
__Pyx_RaiseUnexpectedTypeError(const char *expected, PyObject *obj)
{
    __Pyx_TypeName obj_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(obj));
    PyErr_Format(PyExc_TypeError, "Expected %s, got " __Pyx_FMT_TYPENAME,
                 expected, obj_type_name);
    __Pyx_DECREF_TypeName(obj_type_name);
    return 0;
}

static PyObject* __pyx_convert__to_py_struct__mlx5_cqe64(struct mlx5_cqe64 s) {
  PyObject* res;
  PyObject* member;
  res = __Pyx_PyDict_NewPresized(7); if (unlikely(!res)) return NULL;
  member = __Pyx_PyLong_From_uint16_t(s.wqe_id); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_wqe_id, member) < 0)) goto bad;
  Py_DECREF(member);
  member = __Pyx_PyLong_From_uint32_t(s.imm_inval_pkey); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_imm_inval_pkey, member) < 0)) goto bad;
  Py_DECREF(member);
  member = __Pyx_PyLong_From_uint32_t(s.byte_cnt); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_byte_cnt, member) < 0)) goto bad;
  Py_DECREF(member);
  member = __Pyx_PyLong_From_uint64_t(s.timestamp); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_timestamp, member) < 0)) goto bad;
  Py_DECREF(member);
  member = __Pyx_PyLong_From_uint16_t(s.wqe_counter); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_wqe_counter, member) < 0)) goto bad;
  Py_DECREF(member);
  member = __Pyx_PyLong_From_uint8_t(s.signature); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_signature, member) < 0)) goto bad;
  Py_DECREF(member);
  member = __Pyx_PyLong_From_uint8_t(s.op_own); if (unlikely(!member)) goto bad;
  if (unlikely(PyDict_SetItem(res, __pyx_mstate_global->__pyx_n_u_op_own, member) < 0)) goto bad;
  Py_DECREF(member);
  return res;
  bad:
  Py_XDECREF(member);
  Py_DECREF(res);
  return NULL;
}
/* CIntFromPy */
static CYTHON_INLINE uint8_t __Pyx_PyLong_As_uint8_t(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const uint8_t neg_one = (uint8_t) -1, const_zero = (uint8_t) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (unlikely(!PyLong_Check(x))) {
        uint8_t val;
        PyObject *tmp = __Pyx_PyNumber_Long(x);
        if (!tmp) return (uint8_t) -1;
        val = __Pyx_PyLong_As_uint8_t(tmp);
        Py_DECREF(tmp);
        return val;
    }
    if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (unlikely(__Pyx_PyLong_IsNeg(x))) {
            goto raise_neg_overflow;
        } else if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(uint8_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_DigitCount(x)) {
                case 2:
                    if ((8 * sizeof(uint8_t) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint8_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint8_t) >= 2 * PyLong_SHIFT)) {
                            return (uint8_t) (((((uint8_t)digits[1]) << PyLong_SHIFT) | (uint8_t)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(uint8_t) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint8_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint8_t) >= 3 * PyLong_SHIFT)) {
                            return (uint8_t) (((((((uint8_t)digits[2]) << PyLong_SHIFT) | (uint8_t)digits[1]) << PyLong_SHIFT) | (uint8_t)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(uint8_t) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint8_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint8_t) >= 4 * PyLong_SHIFT)) {
                            return (uint8_t) (((((((((uint8_t)digits[3]) << PyLong_SHIFT) | (uint8_t)digits[2]) << PyLong_SHIFT) | (uint8_t)digits[1]) << PyLong_SHIFT) | (uint8_t)digits[0]));
                        }
                    }
                    break;
            }
        }
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
        if (unlikely(Py_SIZE(x) < 0)) {
            goto raise_neg_overflow;
        }
#else
        {
            int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
            if (unlikely(result < 0))
                return (uint8_t) -1;
            if (unlikely(result == 1))
                goto raise_neg_overflow;
        }
#endif
        if ((sizeof(uint8_t) <= sizeof(unsigned long))) {
            __PYX_VERIFY_RETURN_INT_EXC(uint8_t, unsigned long, PyLong_AsUnsignedLong(x))
        } else if ((sizeof(uint8_t) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(uint8_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
        }
    } else {
#if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(uint8_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_SignedDigitCount(x)) {
                case -2:
                    if ((8 * sizeof(uint8_t) - 1 > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint8_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint8_t) - 1 > 2 * PyLong_SHIFT)) {
                            return (uint8_t) (((uint8_t)-1)*(((((uint8_t)digits[1]) << PyLong_SHIFT) | (uint8_t)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if ((8 * sizeof(uint8_t) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint8_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint8_t) - 1 > 2 * PyLong_SHIFT)) {
                            return (uint8_t) ((((((uint8_t)digits[1]) << PyLong_SHIFT) | (uint8_t)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if ((8 * sizeof(uint8_t) - 1 > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint8_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint8_t) - 1 > 3 * PyLong_SHIFT)) {
                            return (uint8_t) (((uint8_t)-1)*(((((((uint8_t)digits[2]) << PyLong_SHIFT) | (uint8_t)digits[1]) << PyLong_SHIFT) | (uint8_t)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(uint8_t) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint8_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint8_t) - 1 > 3 * PyLong_SHIFT)) {
                            return (uint8_t) ((((((((uint8_t)digits[2]) << PyLong_SHIFT) | (uint8_t)digits[1]) << PyLong_SHIFT) | (uint8_t)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if ((8 * sizeof(uint8_t) - 1 > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint8_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint8_t) - 1 > 4 * PyLong_SHIFT)) {
                            return (uint8_t) (((uint8_t)-1)*(((((((((uint8_t)digits[3]) << PyLong_SHIFT) | (uint8_t)digits[2]) << PyLong_SHIFT) | (uint8_t)digits[1]) << PyLong_SHIFT) | (uint8_t)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(uint8_t) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint8_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint8_t) - 1 > 4 * PyLong_SHIFT)) {
                            return (uint8_t) ((((((((((uint8_t)digits[3]) << PyLong_SHIFT) | (uint8_t)digits[2]) << PyLong_SHIFT) | (uint8_t)digits[1]) << PyLong_SHIFT) | (uint8_t)digits[0])));
                        }
                    }
                    break;
            }
        }
#endif
        if ((sizeof(uint8_t) <= sizeof(long))) {
            __PYX_VERIFY_RETURN_INT_EXC(uint8_t, long, PyLong_AsLong(x))
        } else if ((sizeof(uint8_t) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(uint8_t, PY_LONG_LONG, PyLong_AsLongLong(x))
        }
    }
    {
        uint8_t val;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
        int one = 1; int is_little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        ret = _PyLong_AsByteArray((PyLongObject *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyObject *v;
        PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
        int bits, remaining_bits, is_negative = 0;
        int chunk_size = (sizeof(long) < 8) ? 30 : 62;
        if (likely(PyLong_CheckExact(x))) {
            v = __Pyx_NewRef(x);
        } else {
            v = PyNumber_Long(x);
            if (unlikely(!v)) return (uint8_t) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (uint8_t) -1;
            }
            is_negative = result == 1;
        }
        if (is_unsigned && unlikely(is_negative)) {
            Py_DECREF(v);
            goto raise_neg_overflow;
        } else if (is_negative) {
            stepval = PyNumber_Invert(v);
            Py_DECREF(v);
            if (unlikely(!stepval))
                return (uint8_t) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        val = (uint8_t) 0;
        mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
        shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
        for (bits = 0; bits < (int) sizeof(uint8_t) * 8 - chunk_size; bits += chunk_size) {
            PyObject *tmp, *digit;
            long idigit;
            digit = PyNumber_And(stepval, mask);
            if (unlikely(!digit)) goto done;
            idigit = PyLong_AsLong(digit);
            Py_DECREF(digit);
            if (unlikely(idigit < 0)) goto done;
            val |= ((uint8_t) idigit) << bits;
            tmp = PyNumber_Rshift(stepval, shift);
            if (unlikely(!tmp)) goto done;
            Py_DECREF(stepval); stepval = tmp;
        }
        Py_DECREF(shift); shift = NULL;
        Py_DECREF(mask); mask = NULL;
        {
            long idigit = PyLong_AsLong(stepval);
            if (unlikely(idigit < 0)) goto done;
            remaining_bits = ((int) sizeof(uint8_t) * 8) - bits - (is_unsigned ? 0 : 1);
            if (unlikely(idigit >= (1L << remaining_bits)))
                goto raise_overflow;
            val |= ((uint8_t) idigit) << bits;
        }
        if (!is_unsigned) {
            if (unlikely(val & (((uint8_t) 1) << (sizeof(uint8_t) * 8 - 1))))
                goto raise_overflow;
            if (is_negative)
                val = ~val;
        }
        ret = 0;
    done:
        Py_XDECREF(shift);
        Py_XDECREF(mask);
        Py_XDECREF(stepval);
#endif
        if (unlikely(ret))
            return (uint8_t) -1;
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to uint8_t");
    return (uint8_t) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to uint8_t");
    return (uint8_t) -1;
}

/* CIntFromPy */
static CYTHON_INLINE uint16_t __Pyx_PyLong_As_uint16_t(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const uint16_t neg_one = (uint16_t) -1, const_zero = (uint16_t) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (unlikely(!PyLong_Check(x))) {
        uint16_t val;
        PyObject *tmp = __Pyx_PyNumber_Long(x);
        if (!tmp) return (uint16_t) -1;
        val = __Pyx_PyLong_As_uint16_t(tmp);
        Py_DECREF(tmp);
        return val;
    }
    if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (unlikely(__Pyx_PyLong_IsNeg(x))) {
            goto raise_neg_overflow;
        } else if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(uint16_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_DigitCount(x)) {
                case 2:
                    if ((8 * sizeof(uint16_t) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint16_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint16_t) >= 2 * PyLong_SHIFT)) {
                            return (uint16_t) (((((uint16_t)digits[1]) << PyLong_SHIFT) | (uint16_t)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(uint16_t) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint16_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint16_t) >= 3 * PyLong_SHIFT)) {
                            return (uint16_t) (((((((uint16_t)digits[2]) << PyLong_SHIFT) | (uint16_t)digits[1]) << PyLong_SHIFT) | (uint16_t)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(uint16_t) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint16_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint16_t) >= 4 * PyLong_SHIFT)) {
                            return (uint16_t) (((((((((uint16_t)digits[3]) << PyLong_SHIFT) | (uint16_t)digits[2]) << PyLong_SHIFT) | (uint16_t)digits[1]) << PyLong_SHIFT) | (uint16_t)digits[0]));
                        }
                    }
                    break;
            }
        }
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
        if (unlikely(Py_SIZE(x) < 0)) {
            goto raise_neg_overflow;
        }
#else
        {
            int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
            if (unlikely(result < 0))
                return (uint16_t) -1;
            if (unlikely(result == 1))
                goto raise_neg_overflow;
        }
#endif
        if ((sizeof(uint16_t) <= sizeof(unsigned long))) {
            __PYX_VERIFY_RETURN_INT_EXC(uint16_t, unsigned long, PyLong_AsUnsignedLong(x))
        } else if ((sizeof(uint16_t) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(uint16_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
        }
    } else {
#if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(uint16_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_SignedDigitCount(x)) {
                case -2:
                    if ((8 * sizeof(uint16_t) - 1 > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint16_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint16_t) - 1 > 2 * PyLong_SHIFT)) {
                            return (uint16_t) (((uint16_t)-1)*(((((uint16_t)digits[1]) << PyLong_SHIFT) | (uint16_t)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if ((8 * sizeof(uint16_t) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint16_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint16_t) - 1 > 2 * PyLong_SHIFT)) {
                            return (uint16_t) ((((((uint16_t)digits[1]) << PyLong_SHIFT) | (uint16_t)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if ((8 * sizeof(uint16_t) - 1 > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint16_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint16_t) - 1 > 3 * PyLong_SHIFT)) {
                            return (uint16_t) (((uint16_t)-1)*(((((((uint16_t)digits[2]) << PyLong_SHIFT) | (uint16_t)digits[1]) << PyLong_SHIFT) | (uint16_t)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(uint16_t) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint16_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint16_t) - 1 > 3 * PyLong_SHIFT)) {
                            return (uint16_t) ((((((((uint16_t)digits[2]) << PyLong_SHIFT) | (uint16_t)digits[1]) << PyLong_SHIFT) | (uint16_t)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if ((8 * sizeof(uint16_t) - 1 > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint16_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint16_t) - 1 > 4 * PyLong_SHIFT)) {
                            return (uint16_t) (((uint16_t)-1)*(((((((((uint16_t)digits[3]) << PyLong_SHIFT) | (uint16_t)digits[2]) << PyLong_SHIFT) | (uint16_t)digits[1]) << PyLong_SHIFT) | (uint16_t)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(uint16_t) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint16_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint16_t) - 1 > 4 * PyLong_SHIFT)) {
                            return (uint16_t) ((((((((((uint16_t)digits[3]) << PyLong_SHIFT) | (uint16_t)digits[2]) << PyLong_SHIFT) | (uint16_t)digits[1]) << PyLong_SHIFT) | (uint16_t)digits[0])));
                        }
                    }
                    break;
            }
        }
#endif
        if ((sizeof(uint16_t) <= sizeof(long))) {
            __PYX_VERIFY_RETURN_INT_EXC(uint16_t, long, PyLong_AsLong(x))
        } else if ((sizeof(uint16_t) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(uint16_t, PY_LONG_LONG, PyLong_AsLongLong(x))
        }
    }
    {
        uint16_t val;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
        int one = 1; int is_little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        ret = _PyLong_AsByteArray((PyLongObject *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyObject *v;
        PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
        int bits, remaining_bits, is_negative = 0;
        int chunk_size = (sizeof(long) < 8) ? 30 : 62;
        if (likely(PyLong_CheckExact(x))) {
            v = __Pyx_NewRef(x);
        } else {
            v = PyNumber_Long(x);
            if (unlikely(!v)) return (uint16_t) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (uint16_t) -1;
            }
            is_negative = result == 1;
        }
        if (is_unsigned && unlikely(is_negative)) {
            Py_DECREF(v);
            goto raise_neg_overflow;
        } else if (is_negative) {
            stepval = PyNumber_Invert(v);
            Py_DECREF(v);
            if (unlikely(!stepval))
                return (uint16_t) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        val = (uint16_t) 0;
        mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
        shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
        for (bits = 0; bits < (int) sizeof(uint16_t) * 8 - chunk_size; bits += chunk_size) {
            PyObject *tmp, *digit;
            long idigit;
            digit = PyNumber_And(stepval, mask);
            if (unlikely(!digit)) goto done;
            idigit = PyLong_AsLong(digit);
            Py_DECREF(digit);
            if (unlikely(idigit < 0)) goto done;
            val |= ((uint16_t) idigit) << bits;
            tmp = PyNumber_Rshift(stepval, shift);
            if (unlikely(!tmp)) goto done;
            Py_DECREF(stepval); stepval = tmp;
        }
        Py_DECREF(shift); shift = NULL;
        Py_DECREF(mask); mask = NULL;
        {
            long idigit = PyLong_AsLong(stepval);
            if (unlikely(idigit < 0)) goto done;
            remaining_bits = ((int) sizeof(uint16_t) * 8) - bits - (is_unsigned ? 0 : 1);
            if (unlikely(idigit >= (1L << remaining_bits)))
                goto raise_overflow;
            val |= ((uint16_t) idigit) << bits;
        }
        if (!is_unsigned) {
            if (unlikely(val & (((uint16_t) 1) << (sizeof(uint16_t) * 8 - 1))))
                goto raise_overflow;
            if (is_negative)
                val = ~val;
        }
        ret = 0;
    done:
        Py_XDECREF(shift);
        Py_XDECREF(mask);
        Py_XDECREF(stepval);
#endif
        if (unlikely(ret))
            return (uint16_t) -1;
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to uint16_t");
    return (uint16_t) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to uint16_t");
    return (uint16_t) -1;
}

/* CIntFromPy */
static CYTHON_INLINE size_t __Pyx_PyLong_As_size_t(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const size_t neg_one = (size_t) -1, const_zero = (size_t) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (unlikely(!PyLong_Check(x))) {
        size_t val;
        PyObject *tmp = __Pyx_PyNumber_Long(x);
        if (!tmp) return (size_t) -1;
        val = __Pyx_PyLong_As_size_t(tmp);
        Py_DECREF(tmp);
        return val;
    }
    if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (unlikely(__Pyx_PyLong_IsNeg(x))) {
            goto raise_neg_overflow;
        } else if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(size_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_DigitCount(x)) {
                case 2:
                    if ((8 * sizeof(size_t) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(size_t) >= 2 * PyLong_SHIFT)) {
                            return (size_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(size_t) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(size_t) >= 3 * PyLong_SHIFT)) {
                            return (size_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(size_t) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(size_t) >= 4 * PyLong_SHIFT)) {
                            return (size_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
                        }
                    }
                    break;
            }
        }
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
        if (unlikely(Py_SIZE(x) < 0)) {
            goto raise_neg_overflow;
        }
#else
        {
            int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
            if (unlikely(result < 0))
                return (size_t) -1;
            if (unlikely(result == 1))
                goto raise_neg_overflow;
        }
#endif
        if ((sizeof(size_t) <= sizeof(unsigned long))) {
            __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned long, PyLong_AsUnsignedLong(x))
        } else if ((sizeof(size_t) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
        }
    } else {
#if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(size_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_SignedDigitCount(x)) {
                case -2:
                    if ((8 * sizeof(size_t) - 1 > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT)) {
                            return (size_t) (((size_t)-1)*(((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if ((8 * sizeof(size_t) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT)) {
                            return (size_t) ((((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if ((8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT)) {
                            return (size_t) (((size_t)-1)*(((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(size_t) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT)) {
                            return (size_t) ((((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if ((8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT)) {
                            return (size_t) (((size_t)-1)*(((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(size_t) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT)) {
                            return (size_t) ((((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                        }
                    }
                    break;
            }
        }
#endif
        if ((sizeof(size_t) <= sizeof(long))) {
            __PYX_VERIFY_RETURN_INT_EXC(size_t, long, PyLong_AsLong(x))
        } else if ((sizeof(size_t) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(size_t, PY_LONG_LONG, PyLong_AsLongLong(x))
        }
    }
    {
        size_t val;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
        int one = 1; int is_little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        ret = _PyLong_AsByteArray((PyLongObject *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyObject *v;
        PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
        int bits, remaining_bits, is_negative = 0;
        int chunk_size = (sizeof(long) < 8) ? 30 : 62;
        if (likely(PyLong_CheckExact(x))) {
            v = __Pyx_NewRef(x);
        } else {
            v = PyNumber_Long(x);
            if (unlikely(!v)) return (size_t) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (size_t) -1;
            }
            is_negative = result == 1;
        }
        if (is_unsigned && unlikely(is_negative)) {
            Py_DECREF(v);
            goto raise_neg_overflow;
        } else if (is_negative) {
            stepval = PyNumber_Invert(v);
            Py_DECREF(v);
            if (unlikely(!stepval))
                return (size_t) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        val = (size_t) 0;
        mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
        shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
        for (bits = 0; bits < (int) sizeof(size_t) * 8 - chunk_size; bits += chunk_size) {
            PyObject *tmp, *digit;
            long idigit;
            digit = PyNumber_And(stepval, mask);
            if (unlikely(!digit)) goto done;
            idigit = PyLong_AsLong(digit);
            Py_DECREF(digit);
            if (unlikely(idigit < 0)) goto done;
            val |= ((size_t) idigit) << bits;
            tmp = PyNumber_Rshift(stepval, shift);
            if (unlikely(!tmp)) goto done;
            Py_DECREF(stepval); stepval = tmp;
        }
        Py_DECREF(shift); shift = NULL;
        Py_DECREF(mask); mask = NULL;
        {
            long idigit = PyLong_AsLong(stepval);
            if (unlikely(idigit < 0)) goto done;
            remaining_bits = ((int) sizeof(size_t) * 8) - bits - (is_unsigned ? 0 : 1);
            if (unlikely(idigit >= (1L << remaining_bits)))
                goto raise_overflow;
            val |= ((size_t) idigit) << bits;
        }
        if (!is_unsigned) {
            if (unlikely(val & (((size_t) 1) << (sizeof(size_t) * 8 - 1))))
                goto raise_overflow;
            if (is_negative)
                val = ~val;
        }
        ret = 0;
    done:
        Py_XDECREF(shift);
        Py_XDECREF(mask);
        Py_XDECREF(stepval);
#endif
        if (unlikely(ret))
            return (size_t) -1;
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to size_t");
    return (size_t) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to size_t");
    return (size_t) -1;
}

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_uint64_t(uint64_t value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const uint64_t neg_one = (uint64_t) -1, const_zero = (uint64_t) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(uint64_t) < sizeof(long)) {
            return PyLong_FromLong((long) value);
        } else if (sizeof(uint64_t) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#if !CYTHON_COMPILING_IN_PYPY
        } else if (sizeof(uint64_t) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(uint64_t) <= sizeof(long)) {
            return PyLong_FromLong((long) value);
        } else if (sizeof(uint64_t) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
        }
    }
    {
        unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
        if (is_unsigned) {
            return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
        } else {
            return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
        }
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
        int one = 1; int little = (int)*(unsigned char *)&one;
        return _PyLong_FromByteArray(bytes, sizeof(uint64_t),
                                     little, !is_unsigned);
#else
        int one = 1; int little = (int)*(unsigned char *)&one;
        PyObject *from_bytes, *result = NULL, *kwds = NULL;
        PyObject *py_bytes = NULL, *order_str = NULL;
        from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
        if (!from_bytes) return NULL;
        py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(uint64_t));
        if (!py_bytes) goto limited_bad;
        order_str = PyUnicode_FromString(little ? "little" : "big");
        if (!order_str) goto limited_bad;
        {
            PyObject *args[3+(CYTHON_VECTORCALL ? 1 : 0)] = { NULL, py_bytes, order_str };
            if (!is_unsigned) {
                kwds = __Pyx_MakeVectorcallBuilderKwds(1);
                if (!kwds) goto limited_bad;
                if (__Pyx_VectorcallBuilder_AddArgStr("signed", __Pyx_NewRef(Py_True), kwds, args+3, 0) < 0) goto limited_bad;
            }
            result = __Pyx_Object_Vectorcall_CallFromBuilder(from_bytes, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds);
        }
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_uint16_t(uint16_t value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const uint16_t neg_one = (uint16_t) -1, const_zero = (uint16_t) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(uint16_t) < sizeof(long)) {
            return PyLong_FromLong((long) value);
        } else if (sizeof(uint16_t) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#if !CYTHON_COMPILING_IN_PYPY
        } else if (sizeof(uint16_t) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(uint16_t) <= sizeof(long)) {
            return PyLong_FromLong((long) value);
        } else if (sizeof(uint16_t) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
        }
    }
    {
        unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
        if (is_unsigned) {
            return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
        } else {
            return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
        }
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
        int one = 1; int little = (int)*(unsigned char *)&one;
        return _PyLong_FromByteArray(bytes, sizeof(uint16_t),
                                     little, !is_unsigned);
#else
        int one = 1; int little = (int)*(unsigned char *)&one;
        PyObject *from_bytes, *result = NULL, *kwds = NULL;
        PyObject *py_bytes = NULL, *order_str = NULL;
        from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
        if (!from_bytes) return NULL;
        py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(uint16_t));
        if (!py_bytes) goto limited_bad;
        order_str = PyUnicode_FromString(little ? "little" : "big");
        if (!order_str) goto limited_bad;
        {
            PyObject *args[3+(CYTHON_VECTORCALL ? 1 : 0)] = { NULL, py_bytes, order_str };
            if (!is_unsigned) {
                kwds = __Pyx_MakeVectorcallBuilderKwds(1);
                if (!kwds) goto limited_bad;
                if (__Pyx_VectorcallBuilder_AddArgStr("signed", __Pyx_NewRef(Py_True), kwds, args+3, 0) < 0) goto limited_bad;
            }
            result = __Pyx_Object_Vectorcall_CallFromBuilder(from_bytes, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds);
        }
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_uint32_t(uint32_t value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const uint32_t neg_one = (uint32_t) -1, const_zero = (uint32_t) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(uint32_t) < sizeof(long)) {
            return PyLong_FromLong((long) value);
        } else if (sizeof(uint32_t) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#if !CYTHON_COMPILING_IN_PYPY
        } else if (sizeof(uint32_t) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(uint32_t) <= sizeof(long)) {
            return PyLong_FromLong((long) value);
        } else if (sizeof(uint32_t) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
        }
    }
    {
        unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
        if (is_unsigned) {
            return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
        } else {
            return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
        }
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
        int one = 1; int little = (int)*(unsigned char *)&one;
        return _PyLong_FromByteArray(bytes, sizeof(uint32_t),
                                     little, !is_unsigned);
#else
        int one = 1; int little = (int)*(unsigned char *)&one;
        PyObject *from_bytes, *result = NULL, *kwds = NULL;
        PyObject *py_bytes = NULL, *order_str = NULL;
        from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
        if (!from_bytes) return NULL;
        py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(uint32_t));
        if (!py_bytes) goto limited_bad;
        order_str = PyUnicode_FromString(little ? "little" : "big");
        if (!order_str) goto limited_bad;
        {
            PyObject *args[3+(CYTHON_VECTORCALL ? 1 : 0)] = { NULL, py_bytes, order_str };
            if (!is_unsigned) {
                kwds = __Pyx_MakeVectorcallBuilderKwds(1);
                if (!kwds) goto limited_bad;
                if (__Pyx_VectorcallBuilder_AddArgStr("signed", __Pyx_NewRef(Py_True), kwds, args+3, 0) < 0) goto limited_bad;
            }
            result = __Pyx_Object_Vectorcall_CallFromBuilder(from_bytes, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds);
        }
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* CIntFromPy */
static CYTHON_INLINE unsigned int __Pyx_PyLong_As_unsigned_int(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const unsigned int neg_one = (unsigned int) -1, const_zero = (unsigned int) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (unlikely(!PyLong_Check(x))) {
        unsigned int val;
        PyObject *tmp = __Pyx_PyNumber_Long(x);
        if (!tmp) return (unsigned int) -1;
        val = __Pyx_PyLong_As_unsigned_int(tmp);
        Py_DECREF(tmp);
        return val;
    }
    if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (unlikely(__Pyx_PyLong_IsNeg(x))) {
            goto raise_neg_overflow;
        } else if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(unsigned int, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_DigitCount(x)) {
                case 2:
                    if ((8 * sizeof(unsigned int) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned int) >= 2 * PyLong_SHIFT)) {
                            return (unsigned int) (((((unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(unsigned int) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned int) >= 3 * PyLong_SHIFT)) {
                            return (unsigned int) (((((((unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(unsigned int) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned int) >= 4 * PyLong_SHIFT)) {
                            return (unsigned int) (((((((((unsigned int)digits[3]) << PyLong_SHIFT) | (unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]));
                        }
                    }
                    break;
            }
        }
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
        if (unlikely(Py_SIZE(x) < 0)) {
            goto raise_neg_overflow;
        }
#else
        {
            int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
            if (unlikely(result < 0))
                return (unsigned int) -1;
            if (unlikely(result == 1))
                goto raise_neg_overflow;
        }
#endif
        if ((sizeof(unsigned int) <= sizeof(unsigned long))) {
            __PYX_VERIFY_RETURN_INT_EXC(unsigned int, unsigned long, PyLong_AsUnsignedLong(x))
        } else if ((sizeof(unsigned int) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(unsigned int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
        }
    } else {
#if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(unsigned int, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_SignedDigitCount(x)) {
                case -2:
                    if ((8 * sizeof(unsigned int) - 1 > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned int) - 1 > 2 * PyLong_SHIFT)) {
                            return (unsigned int) (((unsigned int)-1)*(((((unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if ((8 * sizeof(unsigned int) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned int) - 1 > 2 * PyLong_SHIFT)) {
                            return (unsigned int) ((((((unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if ((8 * sizeof(unsigned int) - 1 > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned int) - 1 > 3 * PyLong_SHIFT)) {
                            return (unsigned int) (((unsigned int)-1)*(((((((unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(unsigned int) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned int) - 1 > 3 * PyLong_SHIFT)) {
                            return (unsigned int) ((((((((unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if ((8 * sizeof(unsigned int) - 1 > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned int) - 1 > 4 * PyLong_SHIFT)) {
                            return (unsigned int) (((unsigned int)-1)*(((((((((unsigned int)digits[3]) << PyLong_SHIFT) | (unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(unsigned int) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned int) - 1 > 4 * PyLong_SHIFT)) {
                            return (unsigned int) ((((((((((unsigned int)digits[3]) << PyLong_SHIFT) | (unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
                        }
                    }
                    break;
            }
        }
#endif
        if ((sizeof(unsigned int) <= sizeof(long))) {
            __PYX_VERIFY_RETURN_INT_EXC(unsigned int, long, PyLong_AsLong(x))
        } else if ((sizeof(unsigned int) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(unsigned int, PY_LONG_LONG, PyLong_AsLongLong(x))
        }
    }
    {
        unsigned int val;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
        int one = 1; int is_little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        ret = _PyLong_AsByteArray((PyLongObject *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyObject *v;
        PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
        int bits, remaining_bits, is_negative = 0;
        int chunk_size = (sizeof(long) < 8) ? 30 : 62;
        if (likely(PyLong_CheckExact(x))) {
            v = __Pyx_NewRef(x);
        } else {
            v = PyNumber_Long(x);
            if (unlikely(!v)) return (unsigned int) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (unsigned int) -1;
            }
            is_negative = result == 1;
        }
        if (is_unsigned && unlikely(is_negative)) {
            Py_DECREF(v);
            goto raise_neg_overflow;
        } else if (is_negative) {
            stepval = PyNumber_Invert(v);
            Py_DECREF(v);
            if (unlikely(!stepval))
                return (unsigned int) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        val = (unsigned int) 0;
        mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
        shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
        for (bits = 0; bits < (int) sizeof(unsigned int) * 8 - chunk_size; bits += chunk_size) {
            PyObject *tmp, *digit;
            long idigit;
            digit = PyNumber_And(stepval, mask);
            if (unlikely(!digit)) goto done;
            idigit = PyLong_AsLong(digit);
            Py_DECREF(digit);
            if (unlikely(idigit < 0)) goto done;
            val |= ((unsigned int) idigit) << bits;
            tmp = PyNumber_Rshift(stepval, shift);
            if (unlikely(!tmp)) goto done;
            Py_DECREF(stepval); stepval = tmp;
        }
        Py_DECREF(shift); shift = NULL;
        Py_DECREF(mask); mask = NULL;
        {
            long idigit = PyLong_AsLong(stepval);
            if (unlikely(idigit < 0)) goto done;
            remaining_bits = ((int) sizeof(unsigned int) * 8) - bits - (is_unsigned ? 0 : 1);
            if (unlikely(idigit >= (1L << remaining_bits)))
                goto raise_overflow;
            val |= ((unsigned int) idigit) << bits;
        }
        if (!is_unsigned) {
            if (unlikely(val & (((unsigned int) 1) << (sizeof(unsigned int) * 8 - 1))))
                goto raise_overflow;
            if (is_negative)
                val = ~val;
        }
        ret = 0;
    done:
        Py_XDECREF(shift);
        Py_XDECREF(mask);
        Py_XDECREF(stepval);
#endif
        if (unlikely(ret))
            return (unsigned int) -1;
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to unsigned int");
    return (unsigned int) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to unsigned int");
    return (unsigned int) -1;
}

/* CIntFromPy */
static CYTHON_INLINE unsigned long __Pyx_PyLong_As_unsigned_long(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const unsigned long neg_one = (unsigned long) -1, const_zero = (unsigned long) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (unlikely(!PyLong_Check(x))) {
        unsigned long val;
        PyObject *tmp = __Pyx_PyNumber_Long(x);
        if (!tmp) return (unsigned long) -1;
        val = __Pyx_PyLong_As_unsigned_long(tmp);
        Py_DECREF(tmp);
        return val;
    }
    if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (unlikely(__Pyx_PyLong_IsNeg(x))) {
            goto raise_neg_overflow;
        } else if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(unsigned long, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_DigitCount(x)) {
                case 2:
                    if ((8 * sizeof(unsigned long) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned long) >= 2 * PyLong_SHIFT)) {
                            return (unsigned long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned long) >= 3 * PyLong_SHIFT)) {
                            return (unsigned long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned long) >= 4 * PyLong_SHIFT)) {
                            return (unsigned long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        }
                    }
                    break;
            }
        }
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
        if (unlikely(Py_SIZE(x) < 0)) {
            goto raise_neg_overflow;
        }
#else
        {
            int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
            if (unlikely(result < 0))
                return (unsigned long) -1;
            if (unlikely(result == 1))
                goto raise_neg_overflow;
        }
#endif
        if ((sizeof(unsigned long) <= sizeof(unsigned long))) {
            __PYX_VERIFY_RETURN_INT_EXC(unsigned long, unsigned long, PyLong_AsUnsignedLong(x))
        } else if ((sizeof(unsigned long) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(unsigned long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
        }
    } else {
#if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(unsigned long, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_SignedDigitCount(x)) {
                case -2:
                    if ((8 * sizeof(unsigned long) - 1 > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned long) - 1 > 2 * PyLong_SHIFT)) {
                            return (unsigned long) (((unsigned long)-1)*(((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if ((8 * sizeof(unsigned long) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned long) - 1 > 2 * PyLong_SHIFT)) {
                            return (unsigned long) ((((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if ((8 * sizeof(unsigned long) - 1 > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned long) - 1 > 3 * PyLong_SHIFT)) {
                            return (unsigned long) (((unsigned long)-1)*(((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned long) - 1 > 3 * PyLong_SHIFT)) {
                            return (unsigned long) ((((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if ((8 * sizeof(unsigned long) - 1 > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned long) - 1 > 4 * PyLong_SHIFT)) {
                            return (unsigned long) (((unsigned long)-1)*(((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned long) - 1 > 4 * PyLong_SHIFT)) {
                            return (unsigned long) ((((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])));
                        }
                    }
                    break;
            }
        }
#endif
        if ((sizeof(unsigned long) <= sizeof(long))) {
            __PYX_VERIFY_RETURN_INT_EXC(unsigned long, long, PyLong_AsLong(x))
        } else if ((sizeof(unsigned long) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(unsigned long, PY_LONG_LONG, PyLong_AsLongLong(x))
        }
    }
    {
        unsigned long val;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
        int one = 1; int is_little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        ret = _PyLong_AsByteArray((PyLongObject *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyObject *v;
        PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
        int bits, remaining_bits, is_negative = 0;
        int chunk_size = (sizeof(long) < 8) ? 30 : 62;
        if (likely(PyLong_CheckExact(x))) {
            v = __Pyx_NewRef(x);
        } else {
            v = PyNumber_Long(x);
            if (unlikely(!v)) return (unsigned long) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (unsigned long) -1;
            }
            is_negative = result == 1;
        }
        if (is_unsigned && unlikely(is_negative)) {
            Py_DECREF(v);
            goto raise_neg_overflow;
        } else if (is_negative) {
            stepval = PyNumber_Invert(v);
            Py_DECREF(v);
            if (unlikely(!stepval))
                return (unsigned long) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        val = (unsigned long) 0;
        mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
        shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
        for (bits = 0; bits < (int) sizeof(unsigned long) * 8 - chunk_size; bits += chunk_size) {
            PyObject *tmp, *digit;
            long idigit;
            digit = PyNumber_And(stepval, mask);
            if (unlikely(!digit)) goto done;
            idigit = PyLong_AsLong(digit);
            Py_DECREF(digit);
            if (unlikely(idigit < 0)) goto done;
            val |= ((unsigned long) idigit) << bits;
            tmp = PyNumber_Rshift(stepval, shift);
            if (unlikely(!tmp)) goto done;
            Py_DECREF(stepval); stepval = tmp;
        }
        Py_DECREF(shift); shift = NULL;
        Py_DECREF(mask); mask = NULL;
        {
            long idigit = PyLong_AsLong(stepval);
            if (unlikely(idigit < 0)) goto done;
            remaining_bits = ((int) sizeof(unsigned long) * 8) - bits - (is_unsigned ? 0 : 1);
            if (unlikely(idigit >= (1L << remaining_bits)))
                goto raise_overflow;
            val |= ((unsigned long) idigit) << bits;
        }
        if (!is_unsigned) {
            if (unlikely(val & (((unsigned long) 1) << (sizeof(unsigned long) * 8 - 1))))
                goto raise_overflow;
            if (is_negative)
                val = ~val;
        }
        ret = 0;
    done:
        Py_XDECREF(shift);
        Py_XDECREF(mask);
        Py_XDECREF(stepval);
#endif
        if (unlikely(ret))
            return (unsigned long) -1;
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to unsigned long");
    return (unsigned long) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to unsigned long");
    return (unsigned long) -1;
}

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_unsigned_int(unsigned int value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const unsigned int neg_one = (unsigned int) -1, const_zero = (unsigned int) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(unsigned int) < sizeof(long)) {
            return PyLong_FromLong((long) value);
        } else if (sizeof(unsigned int) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#if !CYTHON_COMPILING_IN_PYPY
        } else if (sizeof(unsigned int) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(unsigned int) <= sizeof(long)) {
            return PyLong_FromLong((long) value);
        } else if (sizeof(unsigned int) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
        }
    }
    {
        unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
        if (is_unsigned) {
            return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
        } else {
            return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
        }
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
        int one = 1; int little = (int)*(unsigned char *)&one;
        return _PyLong_FromByteArray(bytes, sizeof(unsigned int),
                                     little, !is_unsigned);
#else
        int one = 1; int little = (int)*(unsigned char *)&one;
        PyObject *from_bytes, *result = NULL, *kwds = NULL;
        PyObject *py_bytes = NULL, *order_str = NULL;
        from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
        if (!from_bytes) return NULL;
        py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(unsigned int));
        if (!py_bytes) goto limited_bad;
        order_str = PyUnicode_FromString(little ? "little" : "big");
        if (!order_str) goto limited_bad;
        {
            PyObject *args[3+(CYTHON_VECTORCALL ? 1 : 0)] = { NULL, py_bytes, order_str };
            if (!is_unsigned) {
                kwds = __Pyx_MakeVectorcallBuilderKwds(1);
                if (!kwds) goto limited_bad;
                if (__Pyx_VectorcallBuilder_AddArgStr("signed", __Pyx_NewRef(Py_True), kwds, args+3, 0) < 0) goto limited_bad;
            }
            result = __Pyx_Object_Vectorcall_CallFromBuilder(from_bytes, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds);
        }
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_unsigned_long(unsigned long value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const unsigned long neg_one = (unsigned long) -1, const_zero = (unsigned long) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(unsigned long) < sizeof(long)) {
            return PyLong_FromLong((long) value);
        } else if (sizeof(unsigned long) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#if !CYTHON_COMPILING_IN_PYPY
        } else if (sizeof(unsigned long) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(unsigned long) <= sizeof(long)) {
            return PyLong_FromLong((long) value);
        } else if (sizeof(unsigned long) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
        }
    }
    {
        unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
        if (is_unsigned) {
            return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
        } else {
            return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
        }
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
        int one = 1; int little = (int)*(unsigned char *)&one;
        return _PyLong_FromByteArray(bytes, sizeof(unsigned long),
                                     little, !is_unsigned);
#else
        int one = 1; int little = (int)*(unsigned char *)&one;
        PyObject *from_bytes, *result = NULL, *kwds = NULL;
        PyObject *py_bytes = NULL, *order_str = NULL;
        from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
        if (!from_bytes) return NULL;
        py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(unsigned long));
        if (!py_bytes) goto limited_bad;
        order_str = PyUnicode_FromString(little ? "little" : "big");
        if (!order_str) goto limited_bad;
        {
            PyObject *args[3+(CYTHON_VECTORCALL ? 1 : 0)] = { NULL, py_bytes, order_str };
            if (!is_unsigned) {
                kwds = __Pyx_MakeVectorcallBuilderKwds(1);
                if (!kwds) goto limited_bad;
                if (__Pyx_VectorcallBuilder_AddArgStr("signed", __Pyx_NewRef(Py_True), kwds, args+3, 0) < 0) goto limited_bad;
            }
            result = __Pyx_Object_Vectorcall_CallFromBuilder(from_bytes, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds);
        }
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_long(long value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const long neg_one = (long) -1, const_zero = (long) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(long) < sizeof(long)) {
            return PyLong_FromLong((long) value);
        } else if (sizeof(long) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#if !CYTHON_COMPILING_IN_PYPY
        } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(long) <= sizeof(long)) {
            return PyLong_FromLong((long) value);
        } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
        }
    }
    {
        unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
        if (is_unsigned) {
            return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
        } else {
            return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
        }
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
        int one = 1; int little = (int)*(unsigned char *)&one;
        return _PyLong_FromByteArray(bytes, sizeof(long),
                                     little, !is_unsigned);
#else
        int one = 1; int little = (int)*(unsigned char *)&one;
        PyObject *from_bytes, *result = NULL, *kwds = NULL;
        PyObject *py_bytes = NULL, *order_str = NULL;
        from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
        if (!from_bytes) return NULL;
        py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(long));
        if (!py_bytes) goto limited_bad;
        order_str = PyUnicode_FromString(little ? "little" : "big");
        if (!order_str) goto limited_bad;
        {
            PyObject *args[3+(CYTHON_VECTORCALL ? 1 : 0)] = { NULL, py_bytes, order_str };
            if (!is_unsigned) {
                kwds = __Pyx_MakeVectorcallBuilderKwds(1);
                if (!kwds) goto limited_bad;
                if (__Pyx_VectorcallBuilder_AddArgStr("signed", __Pyx_NewRef(Py_True), kwds, args+3, 0) < 0) goto limited_bad;
            }
            result = __Pyx_Object_Vectorcall_CallFromBuilder(from_bytes, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds);
        }
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_int(int value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const int neg_one = (int) -1, const_zero = (int) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(int) < sizeof(long)) {
            return PyLong_FromLong((long) value);
        } else if (sizeof(int) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#if !CYTHON_COMPILING_IN_PYPY
        } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(int) <= sizeof(long)) {
            return PyLong_FromLong((long) value);
        } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
        }
    }
    {
        unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
        if (is_unsigned) {
            return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
        } else {
            return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
        }
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
        int one = 1; int little = (int)*(unsigned char *)&one;
        return _PyLong_FromByteArray(bytes, sizeof(int),
                                     little, !is_unsigned);
#else
        int one = 1; int little = (int)*(unsigned char *)&one;
        PyObject *from_bytes, *result = NULL, *kwds = NULL;
        PyObject *py_bytes = NULL, *order_str = NULL;
        from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
        if (!from_bytes) return NULL;
        py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(int));
        if (!py_bytes) goto limited_bad;
        order_str = PyUnicode_FromString(little ? "little" : "big");
        if (!order_str) goto limited_bad;
        {
            PyObject *args[3+(CYTHON_VECTORCALL ? 1 : 0)] = { NULL, py_bytes, order_str };
            if (!is_unsigned) {
                kwds = __Pyx_MakeVectorcallBuilderKwds(1);
                if (!kwds) goto limited_bad;
                if (__Pyx_VectorcallBuilder_AddArgStr("signed", __Pyx_NewRef(Py_True), kwds, args+3, 0) < 0) goto limited_bad;
            }
            result = __Pyx_Object_Vectorcall_CallFromBuilder(from_bytes, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds);
        }
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* CIntFromPy */
static CYTHON_INLINE uint64_t __Pyx_PyLong_As_uint64_t(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const uint64_t neg_one = (uint64_t) -1, const_zero = (uint64_t) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (unlikely(!PyLong_Check(x))) {
        uint64_t val;
        PyObject *tmp = __Pyx_PyNumber_Long(x);
        if (!tmp) return (uint64_t) -1;
        val = __Pyx_PyLong_As_uint64_t(tmp);
        Py_DECREF(tmp);
        return val;
    }
    if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (unlikely(__Pyx_PyLong_IsNeg(x))) {
            goto raise_neg_overflow;
        } else if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(uint64_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_DigitCount(x)) {
                case 2:
                    if ((8 * sizeof(uint64_t) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint64_t) >= 2 * PyLong_SHIFT)) {
                            return (uint64_t) (((((uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(uint64_t) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint64_t) >= 3 * PyLong_SHIFT)) {
                            return (uint64_t) (((((((uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(uint64_t) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint64_t) >= 4 * PyLong_SHIFT)) {
                            return (uint64_t) (((((((((uint64_t)digits[3]) << PyLong_SHIFT) | (uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0]));
                        }
                    }
                    break;
            }
        }
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
        if (unlikely(Py_SIZE(x) < 0)) {
            goto raise_neg_overflow;
        }
#else
        {
            int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
            if (unlikely(result < 0))
                return (uint64_t) -1;
            if (unlikely(result == 1))
                goto raise_neg_overflow;
        }
#endif
        if ((sizeof(uint64_t) <= sizeof(unsigned long))) {
            __PYX_VERIFY_RETURN_INT_EXC(uint64_t, unsigned long, PyLong_AsUnsignedLong(x))
        } else if ((sizeof(uint64_t) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(uint64_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
        }
    } else {
#if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(uint64_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_SignedDigitCount(x)) {
                case -2:
                    if ((8 * sizeof(uint64_t) - 1 > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint64_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint64_t) - 1 > 2 * PyLong_SHIFT)) {
                            return (uint64_t) (((uint64_t)-1)*(((((uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if ((8 * sizeof(uint64_t) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint64_t) - 1 > 2 * PyLong_SHIFT)) {
                            return (uint64_t) ((((((uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if ((8 * sizeof(uint64_t) - 1 > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint64_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint64_t) - 1 > 3 * PyLong_SHIFT)) {
                            return (uint64_t) (((uint64_t)-1)*(((((((uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(uint64_t) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint64_t) - 1 > 3 * PyLong_SHIFT)) {
                            return (uint64_t) ((((((((uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if ((8 * sizeof(uint64_t) - 1 > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint64_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint64_t) - 1 > 4 * PyLong_SHIFT)) {
                            return (uint64_t) (((uint64_t)-1)*(((((((((uint64_t)digits[3]) << PyLong_SHIFT) | (uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(uint64_t) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint64_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint64_t) - 1 > 4 * PyLong_SHIFT)) {
                            return (uint64_t) ((((((((((uint64_t)digits[3]) << PyLong_SHIFT) | (uint64_t)digits[2]) << PyLong_SHIFT) | (uint64_t)digits[1]) << PyLong_SHIFT) | (uint64_t)digits[0])));
                        }
                    }
                    break;
            }
        }
#endif
        if ((sizeof(uint64_t) <= sizeof(long))) {
            __PYX_VERIFY_RETURN_INT_EXC(uint64_t, long, PyLong_AsLong(x))
        } else if ((sizeof(uint64_t) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(uint64_t, PY_LONG_LONG, PyLong_AsLongLong(x))
        }
    }
    {
        uint64_t val;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
        int one = 1; int is_little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        ret = _PyLong_AsByteArray((PyLongObject *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyObject *v;
        PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
        int bits, remaining_bits, is_negative = 0;
        int chunk_size = (sizeof(long) < 8) ? 30 : 62;
        if (likely(PyLong_CheckExact(x))) {
            v = __Pyx_NewRef(x);
        } else {
            v = PyNumber_Long(x);
            if (unlikely(!v)) return (uint64_t) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (uint64_t) -1;
            }
            is_negative = result == 1;
        }
        if (is_unsigned && unlikely(is_negative)) {
            Py_DECREF(v);
            goto raise_neg_overflow;
        } else if (is_negative) {
            stepval = PyNumber_Invert(v);
            Py_DECREF(v);
            if (unlikely(!stepval))
                return (uint64_t) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        val = (uint64_t) 0;
        mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
        shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
        for (bits = 0; bits < (int) sizeof(uint64_t) * 8 - chunk_size; bits += chunk_size) {
            PyObject *tmp, *digit;
            long idigit;
            digit = PyNumber_And(stepval, mask);
            if (unlikely(!digit)) goto done;
            idigit = PyLong_AsLong(digit);
            Py_DECREF(digit);
            if (unlikely(idigit < 0)) goto done;
            val |= ((uint64_t) idigit) << bits;
            tmp = PyNumber_Rshift(stepval, shift);
            if (unlikely(!tmp)) goto done;
            Py_DECREF(stepval); stepval = tmp;
        }
        Py_DECREF(shift); shift = NULL;
        Py_DECREF(mask); mask = NULL;
        {
            long idigit = PyLong_AsLong(stepval);
            if (unlikely(idigit < 0)) goto done;
            remaining_bits = ((int) sizeof(uint64_t) * 8) - bits - (is_unsigned ? 0 : 1);
            if (unlikely(idigit >= (1L << remaining_bits)))
                goto raise_overflow;
            val |= ((uint64_t) idigit) << bits;
        }
        if (!is_unsigned) {
            if (unlikely(val & (((uint64_t) 1) << (sizeof(uint64_t) * 8 - 1))))
                goto raise_overflow;
            if (is_negative)
                val = ~val;
        }
        ret = 0;
    done:
        Py_XDECREF(shift);
        Py_XDECREF(mask);
        Py_XDECREF(stepval);
#endif
        if (unlikely(ret))
            return (uint64_t) -1;
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to uint64_t");
    return (uint64_t) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to uint64_t");
    return (uint64_t) -1;
}

/* CIntFromPy */
static CYTHON_INLINE uint32_t __Pyx_PyLong_As_uint32_t(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const uint32_t neg_one = (uint32_t) -1, const_zero = (uint32_t) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (unlikely(!PyLong_Check(x))) {
        uint32_t val;
        PyObject *tmp = __Pyx_PyNumber_Long(x);
        if (!tmp) return (uint32_t) -1;
        val = __Pyx_PyLong_As_uint32_t(tmp);
        Py_DECREF(tmp);
        return val;
    }
    if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (unlikely(__Pyx_PyLong_IsNeg(x))) {
            goto raise_neg_overflow;
        } else if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(uint32_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_DigitCount(x)) {
                case 2:
                    if ((8 * sizeof(uint32_t) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint32_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint32_t) >= 2 * PyLong_SHIFT)) {
                            return (uint32_t) (((((uint32_t)digits[1]) << PyLong_SHIFT) | (uint32_t)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(uint32_t) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint32_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint32_t) >= 3 * PyLong_SHIFT)) {
                            return (uint32_t) (((((((uint32_t)digits[2]) << PyLong_SHIFT) | (uint32_t)digits[1]) << PyLong_SHIFT) | (uint32_t)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(uint32_t) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint32_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint32_t) >= 4 * PyLong_SHIFT)) {
                            return (uint32_t) (((((((((uint32_t)digits[3]) << PyLong_SHIFT) | (uint32_t)digits[2]) << PyLong_SHIFT) | (uint32_t)digits[1]) << PyLong_SHIFT) | (uint32_t)digits[0]));
                        }
                    }
                    break;
            }
        }
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
        if (unlikely(Py_SIZE(x) < 0)) {
            goto raise_neg_overflow;
        }
#else
        {
            int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
            if (unlikely(result < 0))
                return (uint32_t) -1;
            if (unlikely(result == 1))
                goto raise_neg_overflow;
        }
#endif
        if ((sizeof(uint32_t) <= sizeof(unsigned long))) {
            __PYX_VERIFY_RETURN_INT_EXC(uint32_t, unsigned long, PyLong_AsUnsignedLong(x))
        } else if ((sizeof(uint32_t) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(uint32_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
        }
    } else {
#if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(uint32_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_SignedDigitCount(x)) {
                case -2:
                    if ((8 * sizeof(uint32_t) - 1 > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint32_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint32_t) - 1 > 2 * PyLong_SHIFT)) {
                            return (uint32_t) (((uint32_t)-1)*(((((uint32_t)digits[1]) << PyLong_SHIFT) | (uint32_t)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if ((8 * sizeof(uint32_t) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint32_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint32_t) - 1 > 2 * PyLong_SHIFT)) {
                            return (uint32_t) ((((((uint32_t)digits[1]) << PyLong_SHIFT) | (uint32_t)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if ((8 * sizeof(uint32_t) - 1 > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint32_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint32_t) - 1 > 3 * PyLong_SHIFT)) {
                            return (uint32_t) (((uint32_t)-1)*(((((((uint32_t)digits[2]) << PyLong_SHIFT) | (uint32_t)digits[1]) << PyLong_SHIFT) | (uint32_t)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(uint32_t) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint32_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint32_t) - 1 > 3 * PyLong_SHIFT)) {
                            return (uint32_t) ((((((((uint32_t)digits[2]) << PyLong_SHIFT) | (uint32_t)digits[1]) << PyLong_SHIFT) | (uint32_t)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if ((8 * sizeof(uint32_t) - 1 > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint32_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint32_t) - 1 > 4 * PyLong_SHIFT)) {
                            return (uint32_t) (((uint32_t)-1)*(((((((((uint32_t)digits[3]) << PyLong_SHIFT) | (uint32_t)digits[2]) << PyLong_SHIFT) | (uint32_t)digits[1]) << PyLong_SHIFT) | (uint32_t)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(uint32_t) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint32_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint32_t) - 1 > 4 * PyLong_SHIFT)) {
                            return (uint32_t) ((((((((((uint32_t)digits[3]) << PyLong_SHIFT) | (uint32_t)digits[2]) << PyLong_SHIFT) | (uint32_t)digits[1]) << PyLong_SHIFT) | (uint32_t)digits[0])));
                        }
                    }
                    break;
            }
        }
#endif
        if ((sizeof(uint32_t) <= sizeof(long))) {
            __PYX_VERIFY_RETURN_INT_EXC(uint32_t, long, PyLong_AsLong(x))
        } else if ((sizeof(uint32_t) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(uint32_t, PY_LONG_LONG, PyLong_AsLongLong(x))
        }
    }
    {
        uint32_t val;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
        int one = 1; int is_little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        ret = _PyLong_AsByteArray((PyLongObject *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyObject *v;
        PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
        int bits, remaining_bits, is_negative = 0;
        int chunk_size = (sizeof(long) < 8) ? 30 : 62;
        if (likely(PyLong_CheckExact(x))) {
            v = __Pyx_NewRef(x);
        } else {
            v = PyNumber_Long(x);
            if (unlikely(!v)) return (uint32_t) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (uint32_t) -1;
            }
            is_negative = result == 1;
        }
        if (is_unsigned && unlikely(is_negative)) {
            Py_DECREF(v);
            goto raise_neg_overflow;
        } else if (is_negative) {
            stepval = PyNumber_Invert(v);
            Py_DECREF(v);
            if (unlikely(!stepval))
                return (uint32_t) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        val = (uint32_t) 0;
        mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
        shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
        for (bits = 0; bits < (int) sizeof(uint32_t) * 8 - chunk_size; bits += chunk_size) {
            PyObject *tmp, *digit;
            long idigit;
            digit = PyNumber_And(stepval, mask);
            if (unlikely(!digit)) goto done;
            idigit = PyLong_AsLong(digit);
            Py_DECREF(digit);
            if (unlikely(idigit < 0)) goto done;
            val |= ((uint32_t) idigit) << bits;
            tmp = PyNumber_Rshift(stepval, shift);
            if (unlikely(!tmp)) goto done;
            Py_DECREF(stepval); stepval = tmp;
        }
        Py_DECREF(shift); shift = NULL;
        Py_DECREF(mask); mask = NULL;
        {
            long idigit = PyLong_AsLong(stepval);
            if (unlikely(idigit < 0)) goto done;
            remaining_bits = ((int) sizeof(uint32_t) * 8) - bits - (is_unsigned ? 0 : 1);
            if (unlikely(idigit >= (1L << remaining_bits)))
                goto raise_overflow;
            val |= ((uint32_t) idigit) << bits;
        }
        if (!is_unsigned) {
            if (unlikely(val & (((uint32_t) 1) << (sizeof(uint32_t) * 8 - 1))))
                goto raise_overflow;
            if (is_negative)
                val = ~val;
        }
        ret = 0;
    done:
        Py_XDECREF(shift);
        Py_XDECREF(mask);
        Py_XDECREF(stepval);
#endif
        if (unlikely(ret))
            return (uint32_t) -1;
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to uint32_t");
    return (uint32_t) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to uint32_t");
    return (uint32_t) -1;
}

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_unsigned_char(unsigned char value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const unsigned char neg_one = (unsigned char) -1, const_zero = (unsigned char) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(unsigned char) < sizeof(long)) {
            return PyLong_FromLong((long) value);
        } else if (sizeof(unsigned char) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#if !CYTHON_COMPILING_IN_PYPY
        } else if (sizeof(unsigned char) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(unsigned char) <= sizeof(long)) {
            return PyLong_FromLong((long) value);
        } else if (sizeof(unsigned char) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
        }
    }
    {
        unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
        if (is_unsigned) {
            return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
        } else {
            return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
        }
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
        int one = 1; int little = (int)*(unsigned char *)&one;
        return _PyLong_FromByteArray(bytes, sizeof(unsigned char),
                                     little, !is_unsigned);
#else
        int one = 1; int little = (int)*(unsigned char *)&one;
        PyObject *from_bytes, *result = NULL, *kwds = NULL;
        PyObject *py_bytes = NULL, *order_str = NULL;
        from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
        if (!from_bytes) return NULL;
        py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(unsigned char));
        if (!py_bytes) goto limited_bad;
        order_str = PyUnicode_FromString(little ? "little" : "big");
        if (!order_str) goto limited_bad;
        {
            PyObject *args[3+(CYTHON_VECTORCALL ? 1 : 0)] = { NULL, py_bytes, order_str };
            if (!is_unsigned) {
                kwds = __Pyx_MakeVectorcallBuilderKwds(1);
                if (!kwds) goto limited_bad;
                if (__Pyx_VectorcallBuilder_AddArgStr("signed", __Pyx_NewRef(Py_True), kwds, args+3, 0) < 0) goto limited_bad;
            }
            result = __Pyx_Object_Vectorcall_CallFromBuilder(from_bytes, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds);
        }
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_uint8_t(uint8_t value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const uint8_t neg_one = (uint8_t) -1, const_zero = (uint8_t) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(uint8_t) < sizeof(long)) {
            return PyLong_FromLong((long) value);
        } else if (sizeof(uint8_t) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#if !CYTHON_COMPILING_IN_PYPY
        } else if (sizeof(uint8_t) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(uint8_t) <= sizeof(long)) {
            return PyLong_FromLong((long) value);
        } else if (sizeof(uint8_t) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
        }
    }
    {
        unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
        if (is_unsigned) {
            return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
        } else {
            return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
        }
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
        int one = 1; int little = (int)*(unsigned char *)&one;
        return _PyLong_FromByteArray(bytes, sizeof(uint8_t),
                                     little, !is_unsigned);
#else
        int one = 1; int little = (int)*(unsigned char *)&one;
        PyObject *from_bytes, *result = NULL, *kwds = NULL;
        PyObject *py_bytes = NULL, *order_str = NULL;
        from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
        if (!from_bytes) return NULL;
        py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(uint8_t));
        if (!py_bytes) goto limited_bad;
        order_str = PyUnicode_FromString(little ? "little" : "big");
        if (!order_str) goto limited_bad;
        {
            PyObject *args[3+(CYTHON_VECTORCALL ? 1 : 0)] = { NULL, py_bytes, order_str };
            if (!is_unsigned) {
                kwds = __Pyx_MakeVectorcallBuilderKwds(1);
                if (!kwds) goto limited_bad;
                if (__Pyx_VectorcallBuilder_AddArgStr("signed", __Pyx_NewRef(Py_True), kwds, args+3, 0) < 0) goto limited_bad;
            }
            result = __Pyx_Object_Vectorcall_CallFromBuilder(from_bytes, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds);
        }
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* CIntFromPy */
static CYTHON_INLINE enum mlx5dv_dc_type __Pyx_PyLong_As_enum__mlx5dv_dc_type(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const enum mlx5dv_dc_type neg_one = (enum mlx5dv_dc_type) -1, const_zero = (enum mlx5dv_dc_type) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (unlikely(!PyLong_Check(x))) {
        enum mlx5dv_dc_type val;
        PyObject *tmp = __Pyx_PyNumber_Long(x);
        if (!tmp) return (enum mlx5dv_dc_type) -1;
        val = __Pyx_PyLong_As_enum__mlx5dv_dc_type(tmp);
        Py_DECREF(tmp);
        return val;
    }
    if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (unlikely(__Pyx_PyLong_IsNeg(x))) {
            goto raise_neg_overflow;
        } else if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(enum mlx5dv_dc_type, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_DigitCount(x)) {
                case 2:
                    if ((8 * sizeof(enum mlx5dv_dc_type) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(enum mlx5dv_dc_type, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(enum mlx5dv_dc_type) >= 2 * PyLong_SHIFT)) {
                            return (enum mlx5dv_dc_type) (((((enum mlx5dv_dc_type)digits[1]) << PyLong_SHIFT) | (enum mlx5dv_dc_type)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(enum mlx5dv_dc_type) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(enum mlx5dv_dc_type, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(enum mlx5dv_dc_type) >= 3 * PyLong_SHIFT)) {
                            return (enum mlx5dv_dc_type) (((((((enum mlx5dv_dc_type)digits[2]) << PyLong_SHIFT) | (enum mlx5dv_dc_type)digits[1]) << PyLong_SHIFT) | (enum mlx5dv_dc_type)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(enum mlx5dv_dc_type) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(enum mlx5dv_dc_type, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(enum mlx5dv_dc_type) >= 4 * PyLong_SHIFT)) {
                            return (enum mlx5dv_dc_type) (((((((((enum mlx5dv_dc_type)digits[3]) << PyLong_SHIFT) | (enum mlx5dv_dc_type)digits[2]) << PyLong_SHIFT) | (enum mlx5dv_dc_type)digits[1]) << PyLong_SHIFT) | (enum mlx5dv_dc_type)digits[0]));
                        }
                    }
                    break;
            }
        }
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
        if (unlikely(Py_SIZE(x) < 0)) {
            goto raise_neg_overflow;
        }
#else
        {
            int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
            if (unlikely(result < 0))
                return (enum mlx5dv_dc_type) -1;
            if (unlikely(result == 1))
                goto raise_neg_overflow;
        }
#endif
        if ((sizeof(enum mlx5dv_dc_type) <= sizeof(unsigned long))) {
            __PYX_VERIFY_RETURN_INT_EXC(enum mlx5dv_dc_type, unsigned long, PyLong_AsUnsignedLong(x))
        } else if ((sizeof(enum mlx5dv_dc_type) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(enum mlx5dv_dc_type, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
        }
    } else {
#if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(enum mlx5dv_dc_type, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_SignedDigitCount(x)) {
                case -2:
                    if ((8 * sizeof(enum mlx5dv_dc_type) - 1 > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(enum mlx5dv_dc_type, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(enum mlx5dv_dc_type) - 1 > 2 * PyLong_SHIFT)) {
                            return (enum mlx5dv_dc_type) (((enum mlx5dv_dc_type)-1)*(((((enum mlx5dv_dc_type)digits[1]) << PyLong_SHIFT) | (enum mlx5dv_dc_type)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if ((8 * sizeof(enum mlx5dv_dc_type) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(enum mlx5dv_dc_type, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(enum mlx5dv_dc_type) - 1 > 2 * PyLong_SHIFT)) {
                            return (enum mlx5dv_dc_type) ((((((enum mlx5dv_dc_type)digits[1]) << PyLong_SHIFT) | (enum mlx5dv_dc_type)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if ((8 * sizeof(enum mlx5dv_dc_type) - 1 > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(enum mlx5dv_dc_type, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(enum mlx5dv_dc_type) - 1 > 3 * PyLong_SHIFT)) {
                            return (enum mlx5dv_dc_type) (((enum mlx5dv_dc_type)-1)*(((((((enum mlx5dv_dc_type)digits[2]) << PyLong_SHIFT) | (enum mlx5dv_dc_type)digits[1]) << PyLong_SHIFT) | (enum mlx5dv_dc_type)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(enum mlx5dv_dc_type) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(enum mlx5dv_dc_type, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(enum mlx5dv_dc_type) - 1 > 3 * PyLong_SHIFT)) {
                            return (enum mlx5dv_dc_type) ((((((((enum mlx5dv_dc_type)digits[2]) << PyLong_SHIFT) | (enum mlx5dv_dc_type)digits[1]) << PyLong_SHIFT) | (enum mlx5dv_dc_type)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if ((8 * sizeof(enum mlx5dv_dc_type) - 1 > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(enum mlx5dv_dc_type, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(enum mlx5dv_dc_type) - 1 > 4 * PyLong_SHIFT)) {
                            return (enum mlx5dv_dc_type) (((enum mlx5dv_dc_type)-1)*(((((((((enum mlx5dv_dc_type)digits[3]) << PyLong_SHIFT) | (enum mlx5dv_dc_type)digits[2]) << PyLong_SHIFT) | (enum mlx5dv_dc_type)digits[1]) << PyLong_SHIFT) | (enum mlx5dv_dc_type)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(enum mlx5dv_dc_type) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(enum mlx5dv_dc_type, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(enum mlx5dv_dc_type) - 1 > 4 * PyLong_SHIFT)) {
                            return (enum mlx5dv_dc_type) ((((((((((enum mlx5dv_dc_type)digits[3]) << PyLong_SHIFT) | (enum mlx5dv_dc_type)digits[2]) << PyLong_SHIFT) | (enum mlx5dv_dc_type)digits[1]) << PyLong_SHIFT) | (enum mlx5dv_dc_type)digits[0])));
                        }
                    }
                    break;
            }
        }
#endif
        if ((sizeof(enum mlx5dv_dc_type) <= sizeof(long))) {
            __PYX_VERIFY_RETURN_INT_EXC(enum mlx5dv_dc_type, long, PyLong_AsLong(x))
        } else if ((sizeof(enum mlx5dv_dc_type) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(enum mlx5dv_dc_type, PY_LONG_LONG, PyLong_AsLongLong(x))
        }
    }
    {
        enum mlx5dv_dc_type val;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
        int one = 1; int is_little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        ret = _PyLong_AsByteArray((PyLongObject *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyErr_SetString(PyExc_RuntimeError,
                        "_PyLong_AsByteArray() or PyLong_AsNativeBytes() not available, cannot convert large enums");
        val = (enum mlx5dv_dc_type) -1;
#endif
        if (unlikely(ret))
            return (enum mlx5dv_dc_type) -1;
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to enum mlx5dv_dc_type");
    return (enum mlx5dv_dc_type) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to enum mlx5dv_dc_type");
    return (enum mlx5dv_dc_type) -1;
}

/* CIntFromPy */
static CYTHON_INLINE int __Pyx_PyLong_As_int(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const int neg_one = (int) -1, const_zero = (int) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (unlikely(!PyLong_Check(x))) {
        int val;
        PyObject *tmp = __Pyx_PyNumber_Long(x);
        if (!tmp) return (int) -1;
        val = __Pyx_PyLong_As_int(tmp);
        Py_DECREF(tmp);
        return val;
    }
    if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (unlikely(__Pyx_PyLong_IsNeg(x))) {
            goto raise_neg_overflow;
        } else if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_DigitCount(x)) {
                case 2:
                    if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(int) >= 2 * PyLong_SHIFT)) {
                            return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(int) >= 3 * PyLong_SHIFT)) {
                            return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(int) >= 4 * PyLong_SHIFT)) {
                            return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
                        }
                    }
                    break;
            }
        }
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
        if (unlikely(Py_SIZE(x) < 0)) {
            goto raise_neg_overflow;
        }
#else
        {
            int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
            if (unlikely(result < 0))
                return (int) -1;
            if (unlikely(result == 1))
                goto raise_neg_overflow;
        }
#endif
        if ((sizeof(int) <= sizeof(unsigned long))) {
            __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x))
        } else if ((sizeof(int) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
        }
    } else {
#if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_SignedDigitCount(x)) {
                case -2:
                    if ((8 * sizeof(int) - 1 > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) {
                            return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) {
                            return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) {
                            return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) {
                            return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) {
                            return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) {
                            return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
            }
        }
#endif
        if ((sizeof(int) <= sizeof(long))) {
            __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x))
        } else if ((sizeof(int) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x))
        }
    }
    {
        int val;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
        int one = 1; int is_little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        ret = _PyLong_AsByteArray((PyLongObject *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyObject *v;
        PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
        int bits, remaining_bits, is_negative = 0;
        int chunk_size = (sizeof(long) < 8) ? 30 : 62;
        if (likely(PyLong_CheckExact(x))) {
            v = __Pyx_NewRef(x);
        } else {
            v = PyNumber_Long(x);
            if (unlikely(!v)) return (int) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (int) -1;
            }
            is_negative = result == 1;
        }
        if (is_unsigned && unlikely(is_negative)) {
            Py_DECREF(v);
            goto raise_neg_overflow;
        } else if (is_negative) {
            stepval = PyNumber_Invert(v);
            Py_DECREF(v);
            if (unlikely(!stepval))
                return (int) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        val = (int) 0;
        mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
        shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
        for (bits = 0; bits < (int) sizeof(int) * 8 - chunk_size; bits += chunk_size) {
            PyObject *tmp, *digit;
            long idigit;
            digit = PyNumber_And(stepval, mask);
            if (unlikely(!digit)) goto done;
            idigit = PyLong_AsLong(digit);
            Py_DECREF(digit);
            if (unlikely(idigit < 0)) goto done;
            val |= ((int) idigit) << bits;
            tmp = PyNumber_Rshift(stepval, shift);
            if (unlikely(!tmp)) goto done;
            Py_DECREF(stepval); stepval = tmp;
        }
        Py_DECREF(shift); shift = NULL;
        Py_DECREF(mask); mask = NULL;
        {
            long idigit = PyLong_AsLong(stepval);
            if (unlikely(idigit < 0)) goto done;
            remaining_bits = ((int) sizeof(int) * 8) - bits - (is_unsigned ? 0 : 1);
            if (unlikely(idigit >= (1L << remaining_bits)))
                goto raise_overflow;
            val |= ((int) idigit) << bits;
        }
        if (!is_unsigned) {
            if (unlikely(val & (((int) 1) << (sizeof(int) * 8 - 1))))
                goto raise_overflow;
            if (is_negative)
                val = ~val;
        }
        ret = 0;
    done:
        Py_XDECREF(shift);
        Py_XDECREF(mask);
        Py_XDECREF(stepval);
#endif
        if (unlikely(ret))
            return (int) -1;
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to int");
    return (int) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to int");
    return (int) -1;
}

/* CIntFromPy */
static CYTHON_INLINE unsigned char __Pyx_PyLong_As_unsigned_char(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const unsigned char neg_one = (unsigned char) -1, const_zero = (unsigned char) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (unlikely(!PyLong_Check(x))) {
        unsigned char val;
        PyObject *tmp = __Pyx_PyNumber_Long(x);
        if (!tmp) return (unsigned char) -1;
        val = __Pyx_PyLong_As_unsigned_char(tmp);
        Py_DECREF(tmp);
        return val;
    }
    if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (unlikely(__Pyx_PyLong_IsNeg(x))) {
            goto raise_neg_overflow;
        } else if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(unsigned char, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_DigitCount(x)) {
                case 2:
                    if ((8 * sizeof(unsigned char) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned char, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned char) >= 2 * PyLong_SHIFT)) {
                            return (unsigned char) (((((unsigned char)digits[1]) << PyLong_SHIFT) | (unsigned char)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(unsigned char) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned char, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned char) >= 3 * PyLong_SHIFT)) {
                            return (unsigned char) (((((((unsigned char)digits[2]) << PyLong_SHIFT) | (unsigned char)digits[1]) << PyLong_SHIFT) | (unsigned char)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(unsigned char) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned char, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned char) >= 4 * PyLong_SHIFT)) {
                            return (unsigned char) (((((((((unsigned char)digits[3]) << PyLong_SHIFT) | (unsigned char)digits[2]) << PyLong_SHIFT) | (unsigned char)digits[1]) << PyLong_SHIFT) | (unsigned char)digits[0]));
                        }
                    }
                    break;
            }
        }
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
        if (unlikely(Py_SIZE(x) < 0)) {
            goto raise_neg_overflow;
        }
#else
        {
            int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
            if (unlikely(result < 0))
                return (unsigned char) -1;
            if (unlikely(result == 1))
                goto raise_neg_overflow;
        }
#endif
        if ((sizeof(unsigned char) <= sizeof(unsigned long))) {
            __PYX_VERIFY_RETURN_INT_EXC(unsigned char, unsigned long, PyLong_AsUnsignedLong(x))
        } else if ((sizeof(unsigned char) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(unsigned char, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
        }
    } else {
#if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(unsigned char, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_SignedDigitCount(x)) {
                case -2:
                    if ((8 * sizeof(unsigned char) - 1 > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned char, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned char) - 1 > 2 * PyLong_SHIFT)) {
                            return (unsigned char) (((unsigned char)-1)*(((((unsigned char)digits[1]) << PyLong_SHIFT) | (unsigned char)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if ((8 * sizeof(unsigned char) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned char, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned char) - 1 > 2 * PyLong_SHIFT)) {
                            return (unsigned char) ((((((unsigned char)digits[1]) << PyLong_SHIFT) | (unsigned char)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if ((8 * sizeof(unsigned char) - 1 > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned char, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned char) - 1 > 3 * PyLong_SHIFT)) {
                            return (unsigned char) (((unsigned char)-1)*(((((((unsigned char)digits[2]) << PyLong_SHIFT) | (unsigned char)digits[1]) << PyLong_SHIFT) | (unsigned char)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(unsigned char) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned char, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned char) - 1 > 3 * PyLong_SHIFT)) {
                            return (unsigned char) ((((((((unsigned char)digits[2]) << PyLong_SHIFT) | (unsigned char)digits[1]) << PyLong_SHIFT) | (unsigned char)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if ((8 * sizeof(unsigned char) - 1 > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned char, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned char) - 1 > 4 * PyLong_SHIFT)) {
                            return (unsigned char) (((unsigned char)-1)*(((((((((unsigned char)digits[3]) << PyLong_SHIFT) | (unsigned char)digits[2]) << PyLong_SHIFT) | (unsigned char)digits[1]) << PyLong_SHIFT) | (unsigned char)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(unsigned char) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned char, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned char) - 1 > 4 * PyLong_SHIFT)) {
                            return (unsigned char) ((((((((((unsigned char)digits[3]) << PyLong_SHIFT) | (unsigned char)digits[2]) << PyLong_SHIFT) | (unsigned char)digits[1]) << PyLong_SHIFT) | (unsigned char)digits[0])));
                        }
                    }
                    break;
            }
        }
#endif
        if ((sizeof(unsigned char) <= sizeof(long))) {
            __PYX_VERIFY_RETURN_INT_EXC(unsigned char, long, PyLong_AsLong(x))
        } else if ((sizeof(unsigned char) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(unsigned char, PY_LONG_LONG, PyLong_AsLongLong(x))
        }
    }
    {
        unsigned char val;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
        int one = 1; int is_little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        ret = _PyLong_AsByteArray((PyLongObject *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyObject *v;
        PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
        int bits, remaining_bits, is_negative = 0;
        int chunk_size = (sizeof(long) < 8) ? 30 : 62;
        if (likely(PyLong_CheckExact(x))) {
            v = __Pyx_NewRef(x);
        } else {
            v = PyNumber_Long(x);
            if (unlikely(!v)) return (unsigned char) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (unsigned char) -1;
            }
            is_negative = result == 1;
        }
        if (is_unsigned && unlikely(is_negative)) {
            Py_DECREF(v);
            goto raise_neg_overflow;
        } else if (is_negative) {
            stepval = PyNumber_Invert(v);
            Py_DECREF(v);
            if (unlikely(!stepval))
                return (unsigned char) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        val = (unsigned char) 0;
        mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
        shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
        for (bits = 0; bits < (int) sizeof(unsigned char) * 8 - chunk_size; bits += chunk_size) {
            PyObject *tmp, *digit;
            long idigit;
            digit = PyNumber_And(stepval, mask);
            if (unlikely(!digit)) goto done;
            idigit = PyLong_AsLong(digit);
            Py_DECREF(digit);
            if (unlikely(idigit < 0)) goto done;
            val |= ((unsigned char) idigit) << bits;
            tmp = PyNumber_Rshift(stepval, shift);
            if (unlikely(!tmp)) goto done;
            Py_DECREF(stepval); stepval = tmp;
        }
        Py_DECREF(shift); shift = NULL;
        Py_DECREF(mask); mask = NULL;
        {
            long idigit = PyLong_AsLong(stepval);
            if (unlikely(idigit < 0)) goto done;
            remaining_bits = ((int) sizeof(unsigned char) * 8) - bits - (is_unsigned ? 0 : 1);
            if (unlikely(idigit >= (1L << remaining_bits)))
                goto raise_overflow;
            val |= ((unsigned char) idigit) << bits;
        }
        if (!is_unsigned) {
            if (unlikely(val & (((unsigned char) 1) << (sizeof(unsigned char) * 8 - 1))))
                goto raise_overflow;
            if (is_negative)
                val = ~val;
        }
        ret = 0;
    done:
        Py_XDECREF(shift);
        Py_XDECREF(mask);
        Py_XDECREF(stepval);
#endif
        if (unlikely(ret))
            return (unsigned char) -1;
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to unsigned char");
    return (unsigned char) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to unsigned char");
    return (unsigned char) -1;
}

/* CIntFromPy */
static CYTHON_INLINE unsigned short __Pyx_PyLong_As_unsigned_short(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const unsigned short neg_one = (unsigned short) -1, const_zero = (unsigned short) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (unlikely(!PyLong_Check(x))) {
        unsigned short val;
        PyObject *tmp = __Pyx_PyNumber_Long(x);
        if (!tmp) return (unsigned short) -1;
        val = __Pyx_PyLong_As_unsigned_short(tmp);
        Py_DECREF(tmp);
        return val;
    }
    if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (unlikely(__Pyx_PyLong_IsNeg(x))) {
            goto raise_neg_overflow;
        } else if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(unsigned short, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_DigitCount(x)) {
                case 2:
                    if ((8 * sizeof(unsigned short) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned short, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned short) >= 2 * PyLong_SHIFT)) {
                            return (unsigned short) (((((unsigned short)digits[1]) << PyLong_SHIFT) | (unsigned short)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(unsigned short) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned short, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned short) >= 3 * PyLong_SHIFT)) {
                            return (unsigned short) (((((((unsigned short)digits[2]) << PyLong_SHIFT) | (unsigned short)digits[1]) << PyLong_SHIFT) | (unsigned short)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(unsigned short) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned short, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned short) >= 4 * PyLong_SHIFT)) {
                            return (unsigned short) (((((((((unsigned short)digits[3]) << PyLong_SHIFT) | (unsigned short)digits[2]) << PyLong_SHIFT) | (unsigned short)digits[1]) << PyLong_SHIFT) | (unsigned short)digits[0]));
                        }
                    }
                    break;
            }
        }
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
        if (unlikely(Py_SIZE(x) < 0)) {
            goto raise_neg_overflow;
        }
#else
        {
            int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
            if (unlikely(result < 0))
                return (unsigned short) -1;
            if (unlikely(result == 1))
                goto raise_neg_overflow;
        }
#endif
        if ((sizeof(unsigned short) <= sizeof(unsigned long))) {
            __PYX_VERIFY_RETURN_INT_EXC(unsigned short, unsigned long, PyLong_AsUnsignedLong(x))
        } else if ((sizeof(unsigned short) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(unsigned short, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
        }
    } else {
#if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(unsigned short, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_SignedDigitCount(x)) {
                case -2:
                    if ((8 * sizeof(unsigned short) - 1 > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned short, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned short) - 1 > 2 * PyLong_SHIFT)) {
                            return (unsigned short) (((unsigned short)-1)*(((((unsigned short)digits[1]) << PyLong_SHIFT) | (unsigned short)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if ((8 * sizeof(unsigned short) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned short, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned short) - 1 > 2 * PyLong_SHIFT)) {
                            return (unsigned short) ((((((unsigned short)digits[1]) << PyLong_SHIFT) | (unsigned short)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if ((8 * sizeof(unsigned short) - 1 > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned short, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned short) - 1 > 3 * PyLong_SHIFT)) {
                            return (unsigned short) (((unsigned short)-1)*(((((((unsigned short)digits[2]) << PyLong_SHIFT) | (unsigned short)digits[1]) << PyLong_SHIFT) | (unsigned short)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(unsigned short) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned short, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned short) - 1 > 3 * PyLong_SHIFT)) {
                            return (unsigned short) ((((((((unsigned short)digits[2]) << PyLong_SHIFT) | (unsigned short)digits[1]) << PyLong_SHIFT) | (unsigned short)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if ((8 * sizeof(unsigned short) - 1 > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned short, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned short) - 1 > 4 * PyLong_SHIFT)) {
                            return (unsigned short) (((unsigned short)-1)*(((((((((unsigned short)digits[3]) << PyLong_SHIFT) | (unsigned short)digits[2]) << PyLong_SHIFT) | (unsigned short)digits[1]) << PyLong_SHIFT) | (unsigned short)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(unsigned short) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(unsigned short, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(unsigned short) - 1 > 4 * PyLong_SHIFT)) {
                            return (unsigned short) ((((((((((unsigned short)digits[3]) << PyLong_SHIFT) | (unsigned short)digits[2]) << PyLong_SHIFT) | (unsigned short)digits[1]) << PyLong_SHIFT) | (unsigned short)digits[0])));
                        }
                    }
                    break;
            }
        }
#endif
        if ((sizeof(unsigned short) <= sizeof(long))) {
            __PYX_VERIFY_RETURN_INT_EXC(unsigned short, long, PyLong_AsLong(x))
        } else if ((sizeof(unsigned short) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(unsigned short, PY_LONG_LONG, PyLong_AsLongLong(x))
        }
    }
    {
        unsigned short val;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
        int one = 1; int is_little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        ret = _PyLong_AsByteArray((PyLongObject *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyObject *v;
        PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
        int bits, remaining_bits, is_negative = 0;
        int chunk_size = (sizeof(long) < 8) ? 30 : 62;
        if (likely(PyLong_CheckExact(x))) {
            v = __Pyx_NewRef(x);
        } else {
            v = PyNumber_Long(x);
            if (unlikely(!v)) return (unsigned short) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (unsigned short) -1;
            }
            is_negative = result == 1;
        }
        if (is_unsigned && unlikely(is_negative)) {
            Py_DECREF(v);
            goto raise_neg_overflow;
        } else if (is_negative) {
            stepval = PyNumber_Invert(v);
            Py_DECREF(v);
            if (unlikely(!stepval))
                return (unsigned short) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        val = (unsigned short) 0;
        mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
        shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
        for (bits = 0; bits < (int) sizeof(unsigned short) * 8 - chunk_size; bits += chunk_size) {
            PyObject *tmp, *digit;
            long idigit;
            digit = PyNumber_And(stepval, mask);
            if (unlikely(!digit)) goto done;
            idigit = PyLong_AsLong(digit);
            Py_DECREF(digit);
            if (unlikely(idigit < 0)) goto done;
            val |= ((unsigned short) idigit) << bits;
            tmp = PyNumber_Rshift(stepval, shift);
            if (unlikely(!tmp)) goto done;
            Py_DECREF(stepval); stepval = tmp;
        }
        Py_DECREF(shift); shift = NULL;
        Py_DECREF(mask); mask = NULL;
        {
            long idigit = PyLong_AsLong(stepval);
            if (unlikely(idigit < 0)) goto done;
            remaining_bits = ((int) sizeof(unsigned short) * 8) - bits - (is_unsigned ? 0 : 1);
            if (unlikely(idigit >= (1L << remaining_bits)))
                goto raise_overflow;
            val |= ((unsigned short) idigit) << bits;
        }
        if (!is_unsigned) {
            if (unlikely(val & (((unsigned short) 1) << (sizeof(unsigned short) * 8 - 1))))
                goto raise_overflow;
            if (is_negative)
                val = ~val;
        }
        ret = 0;
    done:
        Py_XDECREF(shift);
        Py_XDECREF(mask);
        Py_XDECREF(stepval);
#endif
        if (unlikely(ret))
            return (unsigned short) -1;
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to unsigned short");
    return (unsigned short) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to unsigned short");
    return (unsigned short) -1;
}

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_unsigned_short(unsigned short value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const unsigned short neg_one = (unsigned short) -1, const_zero = (unsigned short) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(unsigned short) < sizeof(long)) {
            return PyLong_FromLong((long) value);
        } else if (sizeof(unsigned short) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#if !CYTHON_COMPILING_IN_PYPY
        } else if (sizeof(unsigned short) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(unsigned short) <= sizeof(long)) {
            return PyLong_FromLong((long) value);
        } else if (sizeof(unsigned short) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
        }
    }
    {
        unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
        if (is_unsigned) {
            return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
        } else {
            return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
        }
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
        int one = 1; int little = (int)*(unsigned char *)&one;
        return _PyLong_FromByteArray(bytes, sizeof(unsigned short),
                                     little, !is_unsigned);
#else
        int one = 1; int little = (int)*(unsigned char *)&one;
        PyObject *from_bytes, *result = NULL, *kwds = NULL;
        PyObject *py_bytes = NULL, *order_str = NULL;
        from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
        if (!from_bytes) return NULL;
        py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(unsigned short));
        if (!py_bytes) goto limited_bad;
        order_str = PyUnicode_FromString(little ? "little" : "big");
        if (!order_str) goto limited_bad;
        {
            PyObject *args[3+(CYTHON_VECTORCALL ? 1 : 0)] = { NULL, py_bytes, order_str };
            if (!is_unsigned) {
                kwds = __Pyx_MakeVectorcallBuilderKwds(1);
                if (!kwds) goto limited_bad;
                if (__Pyx_VectorcallBuilder_AddArgStr("signed", __Pyx_NewRef(Py_True), kwds, args+3, 0) < 0) goto limited_bad;
            }
            result = __Pyx_Object_Vectorcall_CallFromBuilder(from_bytes, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds);
        }
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* CIntFromPy */
static CYTHON_INLINE long __Pyx_PyLong_As_long(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const long neg_one = (long) -1, const_zero = (long) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (unlikely(!PyLong_Check(x))) {
        long val;
        PyObject *tmp = __Pyx_PyNumber_Long(x);
        if (!tmp) return (long) -1;
        val = __Pyx_PyLong_As_long(tmp);
        Py_DECREF(tmp);
        return val;
    }
    if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (unlikely(__Pyx_PyLong_IsNeg(x))) {
            goto raise_neg_overflow;
        } else if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_DigitCount(x)) {
                case 2:
                    if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(long) >= 2 * PyLong_SHIFT)) {
                            return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(long) >= 3 * PyLong_SHIFT)) {
                            return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(long) >= 4 * PyLong_SHIFT)) {
                            return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
                        }
                    }
                    break;
            }
        }
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
        if (unlikely(Py_SIZE(x) < 0)) {
            goto raise_neg_overflow;
        }
#else
        {
            int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
            if (unlikely(result < 0))
                return (long) -1;
            if (unlikely(result == 1))
                goto raise_neg_overflow;
        }
#endif
        if ((sizeof(long) <= sizeof(unsigned long))) {
            __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x))
        } else if ((sizeof(long) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
        }
    } else {
#if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_SignedDigitCount(x)) {
                case -2:
                    if ((8 * sizeof(long) - 1 > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) {
                            return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) {
                            return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) {
                            return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) {
                            return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) {
                            return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) {
                            return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
            }
        }
#endif
        if ((sizeof(long) <= sizeof(long))) {
            __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x))
        } else if ((sizeof(long) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x))
        }
    }
    {
        long val;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
        int one = 1; int is_little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        ret = _PyLong_AsByteArray((PyLongObject *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyObject *v;
        PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
        int bits, remaining_bits, is_negative = 0;
        int chunk_size = (sizeof(long) < 8) ? 30 : 62;
        if (likely(PyLong_CheckExact(x))) {
            v = __Pyx_NewRef(x);
        } else {
            v = PyNumber_Long(x);
            if (unlikely(!v)) return (long) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (long) -1;
            }
            is_negative = result == 1;
        }
        if (is_unsigned && unlikely(is_negative)) {
            Py_DECREF(v);
            goto raise_neg_overflow;
        } else if (is_negative) {
            stepval = PyNumber_Invert(v);
            Py_DECREF(v);
            if (unlikely(!stepval))
                return (long) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        val = (long) 0;
        mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
        shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
        for (bits = 0; bits < (int) sizeof(long) * 8 - chunk_size; bits += chunk_size) {
            PyObject *tmp, *digit;
            long idigit;
            digit = PyNumber_And(stepval, mask);
            if (unlikely(!digit)) goto done;
            idigit = PyLong_AsLong(digit);
            Py_DECREF(digit);
            if (unlikely(idigit < 0)) goto done;
            val |= ((long) idigit) << bits;
            tmp = PyNumber_Rshift(stepval, shift);
            if (unlikely(!tmp)) goto done;
            Py_DECREF(stepval); stepval = tmp;
        }
        Py_DECREF(shift); shift = NULL;
        Py_DECREF(mask); mask = NULL;
        {
            long idigit = PyLong_AsLong(stepval);
            if (unlikely(idigit < 0)) goto done;
            remaining_bits = ((int) sizeof(long) * 8) - bits - (is_unsigned ? 0 : 1);
            if (unlikely(idigit >= (1L << remaining_bits)))
                goto raise_overflow;
            val |= ((long) idigit) << bits;
        }
        if (!is_unsigned) {
            if (unlikely(val & (((long) 1) << (sizeof(long) * 8 - 1))))
                goto raise_overflow;
            if (is_negative)
                val = ~val;
        }
        ret = 0;
    done:
        Py_XDECREF(shift);
        Py_XDECREF(mask);
        Py_XDECREF(stepval);
#endif
        if (unlikely(ret))
            return (long) -1;
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to long");
    return (long) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to long");
    return (long) -1;
}

/* FormatTypeName */
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030d0000
static __Pyx_TypeName
__Pyx_PyType_GetFullyQualifiedName(PyTypeObject* tp)
{
    PyObject *module = NULL, *name = NULL, *result = NULL;
    #if __PYX_LIMITED_VERSION_HEX < 0x030b0000
    name = __Pyx_PyObject_GetAttrStr((PyObject *)tp,
                                               __pyx_mstate_global->__pyx_n_u_qualname);
    #else
    name = PyType_GetQualName(tp);
    #endif
    if (unlikely(name == NULL) || unlikely(!PyUnicode_Check(name))) goto bad;
    module = __Pyx_PyObject_GetAttrStr((PyObject *)tp,
                                               __pyx_mstate_global->__pyx_n_u_module);
    if (unlikely(module == NULL) || unlikely(!PyUnicode_Check(module))) goto bad;
    if (PyUnicode_CompareWithASCIIString(module, "builtins") == 0) {
        result = name;
        name = NULL;
        goto done;
    }
    result = PyUnicode_FromFormat("%U.%U", module, name);
    if (unlikely(result == NULL)) goto bad;
  done:
    Py_XDECREF(name);
    Py_XDECREF(module);
    return result;
  bad:
    PyErr_Clear();
    if (name) {
        result = name;
        name = NULL;
    } else {
        result = __Pyx_NewRef(__pyx_mstate_global->__pyx_kp_u__9);
    }
    goto done;
}
#endif

/* GetRuntimeVersion */
#if __PYX_LIMITED_VERSION_HEX < 0x030b0000
void __Pyx_init_runtime_version(void) {
    if (__Pyx_cached_runtime_version == 0) {
        const char* rt_version = Py_GetVersion();
        unsigned long version = 0;
        unsigned long factor = 0x01000000UL;
        unsigned int digit = 0;
        int i = 0;
        while (factor) {
            while ('0' <= rt_version[i] && rt_version[i] <= '9') {
                digit = digit * 10 + (unsigned int) (rt_version[i] - '0');
                ++i;
            }
            version += factor * digit;
            if (rt_version[i] != '.')
                break;
            digit = 0;
            factor >>= 8;
            ++i;
        }
        __Pyx_cached_runtime_version = version;
    }
}
#endif
static unsigned long __Pyx_get_runtime_version(void) {
#if __PYX_LIMITED_VERSION_HEX >= 0x030b0000
    return Py_Version & ~0xFFUL;
#else
    return __Pyx_cached_runtime_version;
#endif
}

/* CheckBinaryVersion */
static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer) {
    const unsigned long MAJOR_MINOR = 0xFFFF0000UL;
    if ((rt_version & MAJOR_MINOR) == (ct_version & MAJOR_MINOR))
        return 0;
    if (likely(allow_newer && (rt_version & MAJOR_MINOR) > (ct_version & MAJOR_MINOR)))
        return 1;
    {
        char message[200];
        PyOS_snprintf(message, sizeof(message),
                      "compile time Python version %d.%d "
                      "of module '%.100s' "
                      "%s "
                      "runtime version %d.%d",
                       (int) (ct_version >> 24), (int) ((ct_version >> 16) & 0xFF),
                       __Pyx_MODULE_NAME,
                       (allow_newer) ? "was newer than" : "does not match",
                       (int) (rt_version >> 24), (int) ((rt_version >> 16) & 0xFF)
       );
        return PyErr_WarnEx(NULL, message, 1);
    }
}

/* NewCodeObj */
#if CYTHON_COMPILING_IN_LIMITED_API
    static PyObject* __Pyx__PyCode_New(int a, int p, int k, int l, int s, int f,
                                       PyObject *code, PyObject *c, PyObject* n, PyObject *v,
                                       PyObject *fv, PyObject *cell, PyObject* fn,
                                       PyObject *name, int fline, PyObject *lnos) {
        PyObject *exception_table = NULL;
        PyObject *types_module=NULL, *code_type=NULL, *result=NULL;
        #if __PYX_LIMITED_VERSION_HEX < 0x030b0000
        PyObject *version_info;
        PyObject *py_minor_version = NULL;
        #endif
        long minor_version = 0;
        PyObject *type, *value, *traceback;
        PyErr_Fetch(&type, &value, &traceback);
        #if __PYX_LIMITED_VERSION_HEX >= 0x030b0000
        minor_version = 11;
        #else
        if (!(version_info = PySys_GetObject("version_info"))) goto end;
        if (!(py_minor_version = PySequence_GetItem(version_info, 1))) goto end;
        minor_version = PyLong_AsLong(py_minor_version);
        Py_DECREF(py_minor_version);
        if (minor_version == -1 && PyErr_Occurred()) goto end;
        #endif
        if (!(types_module = PyImport_ImportModule("types"))) goto end;
        if (!(code_type = PyObject_GetAttrString(types_module, "CodeType"))) goto end;
        if (minor_version <= 7) {
            (void)p;
            result = PyObject_CallFunction(code_type, "iiiiiOOOOOOiOOO", a, k, l, s, f, code,
                          c, n, v, fn, name, fline, lnos, fv, cell);
        } else if (minor_version <= 10) {
            result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOiOOO", a,p, k, l, s, f, code,
                          c, n, v, fn, name, fline, lnos, fv, cell);
        } else {
            if (!(exception_table = PyBytes_FromStringAndSize(NULL, 0))) goto end;
            result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOOiOOOO", a,p, k, l, s, f, code,
                          c, n, v, fn, name, name, fline, lnos, exception_table, fv, cell);
        }
    end:
        Py_XDECREF(code_type);
        Py_XDECREF(exception_table);
        Py_XDECREF(types_module);
        if (type) {
            PyErr_Restore(type, value, traceback);
        }
        return result;
    }
#elif PY_VERSION_HEX >= 0x030B0000
  static PyCodeObject* __Pyx__PyCode_New(int a, int p, int k, int l, int s, int f,
                                         PyObject *code, PyObject *c, PyObject* n, PyObject *v,
                                         PyObject *fv, PyObject *cell, PyObject* fn,
                                         PyObject *name, int fline, PyObject *lnos) {
    PyCodeObject *result;
    result =
      #if PY_VERSION_HEX >= 0x030C0000
        PyUnstable_Code_NewWithPosOnlyArgs
      #else
        PyCode_NewWithPosOnlyArgs
      #endif
        (a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, name, fline, lnos, __pyx_mstate_global->__pyx_empty_bytes);
    #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030c00A1
    if (likely(result))
        result->_co_firsttraceable = 0;
    #endif
    return result;
  }
#elif !CYTHON_COMPILING_IN_PYPY
  #define __Pyx__PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
          PyCode_NewWithPosOnlyArgs(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
#else
  #define __Pyx__PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
          PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
#endif
static PyObject* __Pyx_PyCode_New(
        const __Pyx_PyCode_New_function_description descr,
        PyObject * const *varnames,
        PyObject *filename,
        PyObject *funcname,
        PyObject *line_table,
        PyObject *tuple_dedup_map
) {
    PyObject *code_obj = NULL, *varnames_tuple_dedup = NULL, *code_bytes = NULL;
    Py_ssize_t var_count = (Py_ssize_t) descr.nlocals;
    PyObject *varnames_tuple = PyTuple_New(var_count);
    if (unlikely(!varnames_tuple)) return NULL;
    for (Py_ssize_t i=0; i < var_count; i++) {
        Py_INCREF(varnames[i]);
        if (__Pyx_PyTuple_SET_ITEM(varnames_tuple, i, varnames[i]) != (0)) goto done;
    }
    #if CYTHON_COMPILING_IN_LIMITED_API
    varnames_tuple_dedup = PyDict_GetItem(tuple_dedup_map, varnames_tuple);
    if (!varnames_tuple_dedup) {
        if (unlikely(PyDict_SetItem(tuple_dedup_map, varnames_tuple, varnames_tuple) < 0)) goto done;
        varnames_tuple_dedup = varnames_tuple;
    }
    #else
    varnames_tuple_dedup = PyDict_SetDefault(tuple_dedup_map, varnames_tuple, varnames_tuple);
    if (unlikely(!varnames_tuple_dedup)) goto done;
    #endif
    #if CYTHON_AVOID_BORROWED_REFS
    Py_INCREF(varnames_tuple_dedup);
    #endif
    if (__PYX_LIMITED_VERSION_HEX >= (0x030b0000) && line_table != NULL && !CYTHON_COMPILING_IN_GRAAL) {
        Py_ssize_t line_table_length = __Pyx_PyBytes_GET_SIZE(line_table);
        #if !CYTHON_ASSUME_SAFE_SIZE
        if (unlikely(line_table_length == -1)) goto done;
        #endif
        Py_ssize_t code_len = (line_table_length * 2 + 4) & ~3LL;
        code_bytes = PyBytes_FromStringAndSize(NULL, code_len);
        if (unlikely(!code_bytes)) goto done;
        char* c_code_bytes = PyBytes_AsString(code_bytes);
        if (unlikely(!c_code_bytes)) goto done;
        memset(c_code_bytes, 0, (size_t) code_len);
    }
    code_obj = (PyObject*) __Pyx__PyCode_New(
        (int) descr.argcount,
        (int) descr.num_posonly_args,
        (int) descr.num_kwonly_args,
        (int) descr.nlocals,
        0,
        (int) descr.flags,
        code_bytes ? code_bytes : __pyx_mstate_global->__pyx_empty_bytes,
        __pyx_mstate_global->__pyx_empty_tuple,
        __pyx_mstate_global->__pyx_empty_tuple,
        varnames_tuple_dedup,
        __pyx_mstate_global->__pyx_empty_tuple,
        __pyx_mstate_global->__pyx_empty_tuple,
        filename,
        funcname,
        (int) descr.first_line,
        (__PYX_LIMITED_VERSION_HEX >= (0x030b0000) && line_table) ? line_table : __pyx_mstate_global->__pyx_empty_bytes
    );
done:
    Py_XDECREF(code_bytes);
    #if CYTHON_AVOID_BORROWED_REFS
    Py_XDECREF(varnames_tuple_dedup);
    #endif
    Py_DECREF(varnames_tuple);
    return code_obj;
}

/* DecompressString */
static PyObject *__Pyx_DecompressString(const char *s, Py_ssize_t length, int algo) {
    PyObject *module = NULL, *decompress, *compressed_bytes, *decompressed;
    const char* module_name = algo == 3 ? "compression.zstd" : algo == 2 ? "bz2" : "zlib";
    PyObject *methodname = PyUnicode_FromString("decompress");
    if (unlikely(!methodname)) return NULL;
    #if __PYX_LIMITED_VERSION_HEX >= 0x030e0000
    if (algo == 3) {
        PyObject *fromlist = Py_BuildValue("[O]", methodname);
        if (unlikely(!fromlist)) goto bad;
        module = PyImport_ImportModuleLevel("compression.zstd", NULL, NULL, fromlist, 0);
        Py_DECREF(fromlist);
    } else
    #endif
        module = PyImport_ImportModule(module_name);
    if (unlikely(!module)) goto import_failed;
    decompress = PyObject_GetAttr(module, methodname);
    if (unlikely(!decompress)) goto import_failed;
    {
        #ifdef __cplusplus
            char *memview_bytes = const_cast<char*>(s);
        #else
            #if defined(__clang__)
              #pragma clang diagnostic push
              #pragma clang diagnostic ignored "-Wcast-qual"
            #elif !defined(__INTEL_COMPILER) && defined(__GNUC__)
              #pragma GCC diagnostic push
              #pragma GCC diagnostic ignored "-Wcast-qual"
            #endif
            char *memview_bytes = (char*) s;
            #if defined(__clang__)
              #pragma clang diagnostic pop
            #elif !defined(__INTEL_COMPILER) && defined(__GNUC__)
              #pragma GCC diagnostic pop
            #endif
        #endif
        #if CYTHON_COMPILING_IN_LIMITED_API && !defined(PyBUF_READ)
        int memview_flags = 0x100;
        #else
        int memview_flags = PyBUF_READ;
        #endif
        compressed_bytes = PyMemoryView_FromMemory(memview_bytes, length, memview_flags);
    }
    if (unlikely(!compressed_bytes)) {
        Py_DECREF(decompress);
        goto bad;
    }
    decompressed = PyObject_CallFunctionObjArgs(decompress, compressed_bytes, NULL);
    Py_DECREF(compressed_bytes);
    Py_DECREF(decompress);
    Py_DECREF(module);
    Py_DECREF(methodname);
    return decompressed;
import_failed:
    PyErr_Format(PyExc_ImportError,
        "Failed to import '%.20s.decompress' - cannot initialise module strings. "
        "String compression was configured with the C macro 'CYTHON_COMPRESS_STRINGS=%d'.",
        module_name, algo);
bad:
    Py_XDECREF(module);
    Py_DECREF(methodname);
    return NULL;
}

#include <string.h>
static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s) {
    size_t len = strlen(s);
    if (unlikely(len > (size_t) PY_SSIZE_T_MAX)) {
        PyErr_SetString(PyExc_OverflowError, "byte string is too long");
        return -1;
    }
    return (Py_ssize_t) len;
}
static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) {
    Py_ssize_t len = __Pyx_ssize_strlen(c_str);
    if (unlikely(len < 0)) return NULL;
    return __Pyx_PyUnicode_FromStringAndSize(c_str, len);
}
static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char* c_str) {
    Py_ssize_t len = __Pyx_ssize_strlen(c_str);
    if (unlikely(len < 0)) return NULL;
    return PyByteArray_FromStringAndSize(c_str, len);
}
static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) {
    Py_ssize_t ignore;
    return __Pyx_PyObject_AsStringAndSize(o, &ignore);
}
#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_UTF8
static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
    if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL;
#if CYTHON_COMPILING_IN_LIMITED_API
    {
        const char* result;
        Py_ssize_t unicode_length;
        CYTHON_MAYBE_UNUSED_VAR(unicode_length); // only for __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
        #if __PYX_LIMITED_VERSION_HEX < 0x030A0000
        if (unlikely(PyArg_Parse(o, "s#", &result, length) < 0)) return NULL;
        #else
        result = PyUnicode_AsUTF8AndSize(o, length);
        #endif
        #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
        unicode_length = PyUnicode_GetLength(o);
        if (unlikely(unicode_length < 0)) return NULL;
        if (unlikely(unicode_length != *length)) {
            PyUnicode_AsASCIIString(o);
            return NULL;
        }
        #endif
        return result;
    }
#else
#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
    if (likely(PyUnicode_IS_ASCII(o))) {
        *length = PyUnicode_GET_LENGTH(o);
        return PyUnicode_AsUTF8(o);
    } else {
        PyUnicode_AsASCIIString(o);
        return NULL;
    }
#else
    return PyUnicode_AsUTF8AndSize(o, length);
#endif
#endif
}
#endif
static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_UTF8
    if (PyUnicode_Check(o)) {
        return __Pyx_PyUnicode_AsStringAndSize(o, length);
    } else
#endif
    if (PyByteArray_Check(o)) {
#if (CYTHON_ASSUME_SAFE_SIZE && CYTHON_ASSUME_SAFE_MACROS) || (CYTHON_COMPILING_IN_PYPY && (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)))
        *length = PyByteArray_GET_SIZE(o);
        return PyByteArray_AS_STRING(o);
#else
        *length = PyByteArray_Size(o);
        if (*length == -1) return NULL;
        return PyByteArray_AsString(o);
#endif
    } else
    {
        char* result;
        int r = PyBytes_AsStringAndSize(o, &result, length);
        if (unlikely(r < 0)) {
            return NULL;
        } else {
            return result;
        }
    }
}
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
   int is_true = x == Py_True;
   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
   else return PyObject_IsTrue(x);
}
static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) {
    int retval;
    if (unlikely(!x)) return -1;
    retval = __Pyx_PyObject_IsTrue(x);
    Py_DECREF(x);
    return retval;
}
static PyObject* __Pyx_PyNumber_LongWrongResultType(PyObject* result) {
    __Pyx_TypeName result_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(result));
    if (PyLong_Check(result)) {
        if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1,
                "__int__ returned non-int (type " __Pyx_FMT_TYPENAME ").  "
                "The ability to return an instance of a strict subclass of int is deprecated, "
                "and may be removed in a future version of Python.",
                result_type_name)) {
            __Pyx_DECREF_TypeName(result_type_name);
            Py_DECREF(result);
            return NULL;
        }
        __Pyx_DECREF_TypeName(result_type_name);
        return result;
    }
    PyErr_Format(PyExc_TypeError,
                 "__int__ returned non-int (type " __Pyx_FMT_TYPENAME ")",
                 result_type_name);
    __Pyx_DECREF_TypeName(result_type_name);
    Py_DECREF(result);
    return NULL;
}
static CYTHON_INLINE PyObject* __Pyx_PyNumber_Long(PyObject* x) {
#if CYTHON_USE_TYPE_SLOTS
  PyNumberMethods *m;
#endif
  PyObject *res = NULL;
  if (likely(PyLong_Check(x)))
      return __Pyx_NewRef(x);
#if CYTHON_USE_TYPE_SLOTS
  m = Py_TYPE(x)->tp_as_number;
  if (likely(m && m->nb_int)) {
      res = m->nb_int(x);
  }
#else
  if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) {
      res = PyNumber_Long(x);
  }
#endif
  if (likely(res)) {
      if (unlikely(!PyLong_CheckExact(res))) {
          return __Pyx_PyNumber_LongWrongResultType(res);
      }
  }
  else if (!PyErr_Occurred()) {
      PyErr_SetString(PyExc_TypeError,
                      "an integer is required");
  }
  return res;
}
static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
  Py_ssize_t ival;
  PyObject *x;
  if (likely(PyLong_CheckExact(b))) {
    #if CYTHON_USE_PYLONG_INTERNALS
    if (likely(__Pyx_PyLong_IsCompact(b))) {
        return __Pyx_PyLong_CompactValue(b);
    } else {
      const digit* digits = __Pyx_PyLong_Digits(b);
      const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(b);
      switch (size) {
         case 2:
           if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
             return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case -2:
           if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
             return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case 3:
           if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
             return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case -3:
           if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
             return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case 4:
           if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
             return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case -4:
           if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
             return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
      }
    }
    #endif
    return PyLong_AsSsize_t(b);
  }
  x = PyNumber_Index(b);
  if (!x) return -1;
  ival = PyLong_AsSsize_t(x);
  Py_DECREF(x);
  return ival;
}
static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) {
  if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) {
    return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o);
  } else {
    Py_ssize_t ival;
    PyObject *x;
    x = PyNumber_Index(o);
    if (!x) return -1;
    ival = PyLong_AsLong(x);
    Py_DECREF(x);
    return ival;
  }
}
static CYTHON_INLINE PyObject *__Pyx_Owned_Py_None(int b) {
    CYTHON_UNUSED_VAR(b);
    return __Pyx_NewRef(Py_None);
}
static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) {
  return __Pyx_NewRef(b ? Py_True: Py_False);
}
static CYTHON_INLINE PyObject * __Pyx_PyLong_FromSize_t(size_t ival) {
    return PyLong_FromSize_t(ival);
}


/* MultiPhaseInitModuleState */
#if CYTHON_PEP489_MULTI_PHASE_INIT && CYTHON_USE_MODULE_STATE
#ifndef CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
#if (CYTHON_COMPILING_IN_LIMITED_API || PY_VERSION_HEX >= 0x030C0000)
  #define CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE 1
#else
  #define CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE 0
#endif
#endif
#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE && !CYTHON_ATOMICS
#error "Module state with PEP489 requires atomics. Currently that's one of\
 C11, C++11, gcc atomic intrinsics or MSVC atomic intrinsics"
#endif
#if !CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
#define __Pyx_ModuleStateLookup_Lock()
#define __Pyx_ModuleStateLookup_Unlock()
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d0000
static PyMutex __Pyx_ModuleStateLookup_mutex = {0};
#define __Pyx_ModuleStateLookup_Lock() PyMutex_Lock(&__Pyx_ModuleStateLookup_mutex)
#define __Pyx_ModuleStateLookup_Unlock() PyMutex_Unlock(&__Pyx_ModuleStateLookup_mutex)
#elif defined(__cplusplus) && __cplusplus >= 201103L
#include <mutex>
static std::mutex __Pyx_ModuleStateLookup_mutex;
#define __Pyx_ModuleStateLookup_Lock() __Pyx_ModuleStateLookup_mutex.lock()
#define __Pyx_ModuleStateLookup_Unlock() __Pyx_ModuleStateLookup_mutex.unlock()
#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ > 201112L) && !defined(__STDC_NO_THREADS__)
#include <threads.h>
static mtx_t __Pyx_ModuleStateLookup_mutex;
static once_flag __Pyx_ModuleStateLookup_mutex_once_flag = ONCE_FLAG_INIT;
static void __Pyx_ModuleStateLookup_initialize_mutex(void) {
    mtx_init(&__Pyx_ModuleStateLookup_mutex, mtx_plain);
}
#define __Pyx_ModuleStateLookup_Lock()\
  call_once(&__Pyx_ModuleStateLookup_mutex_once_flag, __Pyx_ModuleStateLookup_initialize_mutex);\
  mtx_lock(&__Pyx_ModuleStateLookup_mutex)
#define __Pyx_ModuleStateLookup_Unlock() mtx_unlock(&__Pyx_ModuleStateLookup_mutex)
#elif defined(HAVE_PTHREAD_H)
#include <pthread.h>
static pthread_mutex_t __Pyx_ModuleStateLookup_mutex = PTHREAD_MUTEX_INITIALIZER;
#define __Pyx_ModuleStateLookup_Lock() pthread_mutex_lock(&__Pyx_ModuleStateLookup_mutex)
#define __Pyx_ModuleStateLookup_Unlock() pthread_mutex_unlock(&__Pyx_ModuleStateLookup_mutex)
#elif defined(_WIN32)
#include <Windows.h>  // synchapi.h on its own doesn't work
static SRWLOCK __Pyx_ModuleStateLookup_mutex = SRWLOCK_INIT;
#define __Pyx_ModuleStateLookup_Lock() AcquireSRWLockExclusive(&__Pyx_ModuleStateLookup_mutex)
#define __Pyx_ModuleStateLookup_Unlock() ReleaseSRWLockExclusive(&__Pyx_ModuleStateLookup_mutex)
#else
#error "No suitable lock available for CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE.\
 Requires C standard >= C11, or C++ standard >= C++11,\
 or pthreads, or the Windows 32 API, or Python >= 3.13."
#endif
typedef struct {
    int64_t id;
    PyObject *module;
} __Pyx_InterpreterIdAndModule;
typedef struct {
    char interpreter_id_as_index;
    Py_ssize_t count;
    Py_ssize_t allocated;
    __Pyx_InterpreterIdAndModule table[1];
} __Pyx_ModuleStateLookupData;
#define __PYX_MODULE_STATE_LOOKUP_SMALL_SIZE 32
#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
static __pyx_atomic_int_type __Pyx_ModuleStateLookup_read_counter = 0;
#endif
#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
static __pyx_atomic_ptr_type __Pyx_ModuleStateLookup_data = 0;
#else
static __Pyx_ModuleStateLookupData* __Pyx_ModuleStateLookup_data = NULL;
#endif
static __Pyx_InterpreterIdAndModule* __Pyx_State_FindModuleStateLookupTableLowerBound(
        __Pyx_InterpreterIdAndModule* table,
        Py_ssize_t count,
        int64_t interpreterId) {
    __Pyx_InterpreterIdAndModule* begin = table;
    __Pyx_InterpreterIdAndModule* end = begin + count;
    if (begin->id == interpreterId) {
        return begin;
    }
    while ((end - begin) > __PYX_MODULE_STATE_LOOKUP_SMALL_SIZE) {
        __Pyx_InterpreterIdAndModule* halfway = begin + (end - begin)/2;
        if (halfway->id == interpreterId) {
            return halfway;
        }
        if (halfway->id < interpreterId) {
            begin = halfway;
        } else {
            end = halfway;
        }
    }
    for (; begin < end; ++begin) {
        if (begin->id >= interpreterId) return begin;
    }
    return begin;
}
static PyObject *__Pyx_State_FindModule(CYTHON_UNUSED void* dummy) {
    int64_t interpreter_id = PyInterpreterState_GetID(__Pyx_PyInterpreterState_Get());
    if (interpreter_id == -1) return NULL;
#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
    __Pyx_ModuleStateLookupData* data = (__Pyx_ModuleStateLookupData*)__pyx_atomic_pointer_load_relaxed(&__Pyx_ModuleStateLookup_data);
    {
        __pyx_atomic_incr_acq_rel(&__Pyx_ModuleStateLookup_read_counter);
        if (likely(data)) {
            __Pyx_ModuleStateLookupData* new_data = (__Pyx_ModuleStateLookupData*)__pyx_atomic_pointer_load_acquire(&__Pyx_ModuleStateLookup_data);
            if (likely(data == new_data)) {
                goto read_finished;
            }
        }
        __pyx_atomic_decr_acq_rel(&__Pyx_ModuleStateLookup_read_counter);
        __Pyx_ModuleStateLookup_Lock();
        __pyx_atomic_incr_relaxed(&__Pyx_ModuleStateLookup_read_counter);
        data = (__Pyx_ModuleStateLookupData*)__pyx_atomic_pointer_load_relaxed(&__Pyx_ModuleStateLookup_data);
        __Pyx_ModuleStateLookup_Unlock();
    }
  read_finished:;
#else
    __Pyx_ModuleStateLookupData* data = __Pyx_ModuleStateLookup_data;
#endif
    __Pyx_InterpreterIdAndModule* found = NULL;
    if (unlikely(!data)) goto end;
    if (data->interpreter_id_as_index) {
        if (interpreter_id < data->count) {
            found = data->table+interpreter_id;
        }
    } else {
        found = __Pyx_State_FindModuleStateLookupTableLowerBound(
            data->table, data->count, interpreter_id);
    }
  end:
    {
        PyObject *result=NULL;
        if (found && found->id == interpreter_id) {
            result = found->module;
        }
#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
        __pyx_atomic_decr_acq_rel(&__Pyx_ModuleStateLookup_read_counter);
#endif
        return result;
    }
}
#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
static void __Pyx_ModuleStateLookup_wait_until_no_readers(void) {
    while (__pyx_atomic_load(&__Pyx_ModuleStateLookup_read_counter) != 0);
}
#else
#define __Pyx_ModuleStateLookup_wait_until_no_readers()
#endif
static int __Pyx_State_AddModuleInterpIdAsIndex(__Pyx_ModuleStateLookupData **old_data, PyObject* module, int64_t interpreter_id) {
    Py_ssize_t to_allocate = (*old_data)->allocated;
    while (to_allocate <= interpreter_id) {
        if (to_allocate == 0) to_allocate = 1;
        else to_allocate *= 2;
    }
    __Pyx_ModuleStateLookupData *new_data = *old_data;
    if (to_allocate != (*old_data)->allocated) {
         new_data = (__Pyx_ModuleStateLookupData *)realloc(
            *old_data,
            sizeof(__Pyx_ModuleStateLookupData)+(to_allocate-1)*sizeof(__Pyx_InterpreterIdAndModule));
        if (!new_data) {
            PyErr_NoMemory();
            return -1;
        }
        for (Py_ssize_t i = new_data->allocated; i < to_allocate; ++i) {
            new_data->table[i].id = i;
            new_data->table[i].module = NULL;
        }
        new_data->allocated = to_allocate;
    }
    new_data->table[interpreter_id].module = module;
    if (new_data->count < interpreter_id+1) {
        new_data->count = interpreter_id+1;
    }
    *old_data = new_data;
    return 0;
}
static void __Pyx_State_ConvertFromInterpIdAsIndex(__Pyx_ModuleStateLookupData *data) {
    __Pyx_InterpreterIdAndModule *read = data->table;
    __Pyx_InterpreterIdAndModule *write = data->table;
    __Pyx_InterpreterIdAndModule *end = read + data->count;
    for (; read<end; ++read) {
        if (read->module) {
            write->id = read->id;
            write->module = read->module;
            ++write;
        }
    }
    data->count = write - data->table;
    for (; write<end; ++write) {
        write->id = 0;
        write->module = NULL;
    }
    data->interpreter_id_as_index = 0;
}
static int __Pyx_State_AddModule(PyObject* module, CYTHON_UNUSED void* dummy) {
    int64_t interpreter_id = PyInterpreterState_GetID(__Pyx_PyInterpreterState_Get());
    if (interpreter_id == -1) return -1;
    int result = 0;
    __Pyx_ModuleStateLookup_Lock();
#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
    __Pyx_ModuleStateLookupData *old_data = (__Pyx_ModuleStateLookupData *)
            __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, 0);
#else
    __Pyx_ModuleStateLookupData *old_data = __Pyx_ModuleStateLookup_data;
#endif
    __Pyx_ModuleStateLookupData *new_data = old_data;
    if (!new_data) {
        new_data = (__Pyx_ModuleStateLookupData *)calloc(1, sizeof(__Pyx_ModuleStateLookupData));
        if (!new_data) {
            result = -1;
            PyErr_NoMemory();
            goto end;
        }
        new_data->allocated = 1;
        new_data->interpreter_id_as_index = 1;
    }
    __Pyx_ModuleStateLookup_wait_until_no_readers();
    if (new_data->interpreter_id_as_index) {
        if (interpreter_id < __PYX_MODULE_STATE_LOOKUP_SMALL_SIZE) {
            result = __Pyx_State_AddModuleInterpIdAsIndex(&new_data, module, interpreter_id);
            goto end;
        }
        __Pyx_State_ConvertFromInterpIdAsIndex(new_data);
    }
    {
        Py_ssize_t insert_at = 0;
        {
            __Pyx_InterpreterIdAndModule* lower_bound = __Pyx_State_FindModuleStateLookupTableLowerBound(
                new_data->table, new_data->count, interpreter_id);
            assert(lower_bound);
            insert_at = lower_bound - new_data->table;
            if (unlikely(insert_at < new_data->count && lower_bound->id == interpreter_id)) {
                lower_bound->module = module;
                goto end;  // already in table, nothing more to do
            }
        }
        if (new_data->count+1 >= new_data->allocated) {
            Py_ssize_t to_allocate = (new_data->count+1)*2;
            new_data =
                (__Pyx_ModuleStateLookupData*)realloc(
                    new_data,
                    sizeof(__Pyx_ModuleStateLookupData) +
                    (to_allocate-1)*sizeof(__Pyx_InterpreterIdAndModule));
            if (!new_data) {
                result = -1;
                new_data = old_data;
                PyErr_NoMemory();
                goto end;
            }
            new_data->allocated = to_allocate;
        }
        ++new_data->count;
        int64_t last_id = interpreter_id;
        PyObject *last_module = module;
        for (Py_ssize_t i=insert_at; i<new_data->count; ++i) {
            int64_t current_id = new_data->table[i].id;
            new_data->table[i].id = last_id;
            last_id = current_id;
            PyObject *current_module = new_data->table[i].module;
            new_data->table[i].module = last_module;
            last_module = current_module;
        }
    }
  end:
#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
    __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, new_data);
#else
    __Pyx_ModuleStateLookup_data = new_data;
#endif
    __Pyx_ModuleStateLookup_Unlock();
    return result;
}
static int __Pyx_State_RemoveModule(CYTHON_UNUSED void* dummy) {
    int64_t interpreter_id = PyInterpreterState_GetID(__Pyx_PyInterpreterState_Get());
    if (interpreter_id == -1) return -1;
    __Pyx_ModuleStateLookup_Lock();
#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
    __Pyx_ModuleStateLookupData *data = (__Pyx_ModuleStateLookupData *)
            __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, 0);
#else
    __Pyx_ModuleStateLookupData *data = __Pyx_ModuleStateLookup_data;
#endif
    if (data->interpreter_id_as_index) {
        if (interpreter_id < data->count) {
            data->table[interpreter_id].module = NULL;
        }
        goto done;
    }
    {
        __Pyx_ModuleStateLookup_wait_until_no_readers();
        __Pyx_InterpreterIdAndModule* lower_bound = __Pyx_State_FindModuleStateLookupTableLowerBound(
            data->table, data->count, interpreter_id);
        if (!lower_bound) goto done;
        if (lower_bound->id != interpreter_id) goto done;
        __Pyx_InterpreterIdAndModule *end = data->table+data->count;
        for (;lower_bound<end-1; ++lower_bound) {
            lower_bound->id = (lower_bound+1)->id;
            lower_bound->module = (lower_bound+1)->module;
        }
    }
    --data->count;
    if (data->count == 0) {
        free(data);
        data = NULL;
    }
  done:
#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
    __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, data);
#else
    __Pyx_ModuleStateLookup_data = data;
#endif
    __Pyx_ModuleStateLookup_Unlock();
    return 0;
}
#endif

/* #### Code section: utility_code_pragmas_end ### */
#ifdef _MSC_VER
#pragma warning( pop )
#endif



/* #### Code section: end ### */
#endif /* Py_PYTHON_H */
