#include "ipoib_port.h"\r
#include "ipoib_driver.h"\r
#include "ipoib_debug.h"\r
-#include <complib/cl_init.h>\r
\r
\r
#define ITEM_POOL_START 16\r
\r
IPOIB_ENTER( IPOIB_DBG_INIT );\r
\r
- if( !NT_SUCCESS( CL_INIT ) )\r
- {\r
- IPOIB_TRACE_EXIT( IPOIB_DBG_ERROR,\r
- ("cl_init failed.\n") );\r
- return IB_ERROR;\r
- }\r
-\r
p_adapter = cl_zalloc( sizeof(ipoib_adapter_t) );\r
if( !p_adapter )\r
{\r
- CL_DEINIT;\r
IPOIB_TRACE_EXIT( IPOIB_DBG_ERROR, \r
("Failed to allocate ipoib_adapter_t (%d bytes)",\r
sizeof(ipoib_adapter_t)) );\r
\r
cl_free( p_adapter );\r
\r
- CL_DEINIT;\r
-\r
IPOIB_EXIT( IPOIB_DBG_INIT );\r
}\r
\r
#include "ipoib_debug.h"\r
#include "ipoib_port.h"\r
#include <complib/cl_bus_ifc.h>\r
+#include <complib/cl_init.h>\r
#include <initguid.h>\r
#include <iba/ipoib_ifc.h>\r
\r
IN PDRIVER_OBJECT p_drv_obj,\r
IN PUNICODE_STRING p_reg_path );\r
\r
+VOID\r
+ipoib_unload(\r
+ IN PDRIVER_OBJECT p_drv_obj );\r
+\r
NDIS_STATUS\r
ipoib_initialize(\r
OUT PNDIS_STATUS p_open_err_status,\r
PAGED_CODE();\r
#endif\r
\r
+ status = CL_INIT;\r
+ if( !NT_SUCCESS( status ) )\r
+ {\r
+ IPOIB_TRACE_EXIT( IPOIB_DBG_ERROR,\r
+ ("cl_init failed.\n") );\r
+ return status;\r
+ }\r
+\r
status = NDIS_STATUS_SUCCESS;\r
ndis_handle = NULL;\r
\r
if( status != NDIS_STATUS_SUCCESS )\r
{\r
IPOIB_TRACE( IPOIB_DBG_ERROR, \r
- ("NdisMRegisterMiniport failed with status of %s", status) );\r
+ ("NdisMRegisterMiniport failed with status of %d\n", status) );\r
NdisTerminateWrapper( ndis_handle, NULL );\r
+ CL_DEINIT;\r
+ }\r
+ else\r
+ {\r
+ NdisMRegisterUnloadHandler( ndis_handle, ipoib_unload );\r
}\r
\r
IPOIB_EXIT( IPOIB_DBG_INIT );\r
}\r
\r
\r
+VOID\r
+ipoib_unload(\r
+ IN PDRIVER_OBJECT p_drv_obj )\r
+{\r
+ IPOIB_ENTER( IPOIB_DBG_INIT );\r
+ UNREFERENCED_PARAMETER( p_drv_obj );\r
+ CL_DEINIT;\r
+ IPOIB_EXIT( IPOIB_DBG_INIT );\r
+}\r
+\r
+\r
NDIS_STATUS\r
ipoib_get_adapter_params(\r
IN NDIS_HANDLE* const wrapper_config_context,\r