--- /dev/null
+/*\r
+ * Copyright (c) 2005 Mellanox Technologies. All rights reserved.\r
+ * Copyright (c) 2005 SilverStorm Technologies. All rights reserved.\r
+ *\r
+ * This software is available to you under the OpenIB.org BSD license\r
+ * below:\r
+ *\r
+ * Redistribution and use in source and binary forms, with or\r
+ * without modification, are permitted provided that the following\r
+ * conditions are met:\r
+ *\r
+ * - Redistributions of source code must retain the above\r
+ * copyright notice, this list of conditions and the following\r
+ * disclaimer.\r
+ *\r
+ * - Redistributions in binary form must reproduce the above\r
+ * copyright notice, this list of conditions and the following\r
+ * disclaimer in the documentation and/or other materials\r
+ * provided with the distribution.\r
+ *\r
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\r
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\r
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r
+ * SOFTWARE.\r
+ *\r
+ * $Id: ipoib_ibat.c 202 2005-12-09 19:59:19Z ftillier $\r
+ */\r
+\r
+\r
+#include "ipoib_driver.h"\r
+#include "ipoib_adapter.h"\r
+#include "ipoib_port.h"\r
+#include "ipoib_debug.h"\r
+#include <iba/ib_at_ioctl.h>\r
+\r
+\r
+static NTSTATUS\r
+__ipoib_create(\r
+ IN DEVICE_OBJECT* const pDevObj,\r
+ IN IRP* const pIrp );\r
+\r
+static NTSTATUS\r
+__ipoib_cleanup(\r
+ IN DEVICE_OBJECT* const pDevObj,\r
+ IN IRP* const pIrp );\r
+\r
+static NTSTATUS\r
+__ipoib_close(\r
+ IN DEVICE_OBJECT* const pDevObj,\r
+ IN IRP* const pIrp );\r
+\r
+static NTSTATUS\r
+__ipoib_dispatch(\r
+ IN DEVICE_OBJECT* const pDevObj,\r
+ IN IRP* const pIrp );\r
+\r
+\r
+static NTSTATUS\r
+__ibat_get_ports(\r
+ IN IRP *pIrp,\r
+ IN IO_STACK_LOCATION *pIoStack )\r
+{\r
+ IOCTL_IBAT_PORTS_IN *pIn;\r
+ IOCTL_IBAT_PORTS_OUT *pOut;\r
+ KLOCK_QUEUE_HANDLE hdl;\r
+ cl_list_item_t *pItem;\r
+ ipoib_adapter_t *pAdapter;\r
+ LONG nPorts;\r
+\r
+ IPOIB_ENTER(IPOIB_DBG_IOCTL);\r
+\r
+ if( pIoStack->Parameters.DeviceIoControl.InputBufferLength !=\r
+ sizeof(IOCTL_IBAT_PORTS_IN) )\r
+ {\r
+ IPOIB_TRACE_EXIT( IPOIB_DBG_ERROR, ("Invalid input buffer size.\n") );\r
+ return STATUS_INVALID_PARAMETER;\r
+ }\r
+ \r
+ if( pIoStack->Parameters.DeviceIoControl.OutputBufferLength <\r
+ sizeof(IOCTL_IBAT_PORTS_OUT) )\r
+ {\r
+ IPOIB_TRACE_EXIT( IPOIB_DBG_ERROR, ("Invalid output buffer size.\n") );\r
+ return STATUS_INVALID_PARAMETER;\r
+ }\r
+\r
+ pIn = pIrp->AssociatedIrp.SystemBuffer;\r
+ pOut = pIrp->AssociatedIrp.SystemBuffer;\r
+\r
+ if( pIn->Version != IBAT_IOCTL_VERSION )\r
+ {\r
+ IPOIB_TRACE_EXIT( IPOIB_DBG_ERROR, ("Invalid version.\n") );\r
+ return STATUS_INVALID_PARAMETER;\r
+ }\r
+\r
+ KeAcquireInStackQueuedSpinLock( &g_ipoib.lock, &hdl );\r
+ nPorts = (LONG)cl_qlist_count( &g_ipoib.adapter_list );\r
+ switch( nPorts )\r
+ {\r
+ case 0:\r
+ cl_memclr( pOut->Ports, sizeof(pOut->Ports) );\r
+ /* Fall through */\r
+ case 1:\r
+ pOut->Size = sizeof(IOCTL_IBAT_PORTS_OUT);\r
+ break;\r
+\r
+ default:\r
+ pOut->Size = sizeof(IOCTL_IBAT_PORTS_OUT) + \r
+ (sizeof(IBAT_PORT_RECORD) * (nPorts - 1));\r
+ break;\r
+ }\r
+\r
+ pIrp->IoStatus.Information = pOut->Size;\r
+\r
+ if( pOut->Size > pIoStack->Parameters.DeviceIoControl.OutputBufferLength )\r
+ {\r
+ nPorts = 1 +\r
+ (pIoStack->Parameters.DeviceIoControl.OutputBufferLength -\r
+ sizeof(IOCTL_IBAT_PORTS_OUT)) / sizeof(IBAT_PORT_RECORD);\r
+\r
+ pIrp->IoStatus.Information = sizeof(IOCTL_IBAT_PORTS_OUT) +\r
+ ((nPorts - 1) * sizeof(IBAT_PORT_RECORD));\r
+ }\r
+\r
+ pOut->NumPorts = 0;\r
+ pItem = cl_qlist_head( &g_ipoib.adapter_list );\r
+ while( pOut->NumPorts != nPorts )\r
+ {\r
+ pAdapter = CONTAINING_RECORD( pItem, ipoib_adapter_t, entry );\r
+ pOut->Ports[pOut->NumPorts].CaGuid = pAdapter->guids.ca_guid;\r
+ pOut->Ports[pOut->NumPorts].PortGuid = pAdapter->guids.port_guid;\r
+ pOut->NumPorts++;\r
+\r
+ pItem = cl_qlist_next( pItem );\r
+ }\r
+\r
+ KeReleaseInStackQueuedSpinLock( &hdl );\r
+ return STATUS_SUCCESS;\r
+}\r
+\r
+\r
+static NTSTATUS\r
+__ibat_get_ips(\r
+ IN IRP *pIrp,\r
+ IN IO_STACK_LOCATION *pIoStack )\r
+{\r
+ IOCTL_IBAT_IP_ADDRESSES_IN *pIn;\r
+ IOCTL_IBAT_IP_ADDRESSES_OUT *pOut;\r
+ KLOCK_QUEUE_HANDLE hdl;\r
+ cl_list_item_t *pItem;\r
+ ipoib_adapter_t *pAdapter;\r
+ LONG nIps, maxIps;\r
+ size_t idx;\r
+ net_address_item_t *pAddr;\r
+ UINT64 PortGuid;\r
+\r
+ IPOIB_ENTER(IPOIB_DBG_IOCTL);\r
+\r
+ if( pIoStack->Parameters.DeviceIoControl.InputBufferLength !=\r
+ sizeof(IOCTL_IBAT_IP_ADDRESSES_IN) )\r
+ {\r
+ IPOIB_TRACE_EXIT( IPOIB_DBG_ERROR, ("Invalid input buffer size.\n") );\r
+ return STATUS_INVALID_PARAMETER;\r
+ }\r
+ \r
+ if( pIoStack->Parameters.DeviceIoControl.OutputBufferLength <\r
+ sizeof(IOCTL_IBAT_IP_ADDRESSES_OUT) )\r
+ {\r
+ IPOIB_TRACE_EXIT( IPOIB_DBG_ERROR, ("Invalid output buffer size.\n") );\r
+ return STATUS_INVALID_PARAMETER;\r
+ }\r
+\r
+ pIn = pIrp->AssociatedIrp.SystemBuffer;\r
+ pOut = pIrp->AssociatedIrp.SystemBuffer;\r
+\r
+ if( pIn->Version != IBAT_IOCTL_VERSION )\r
+ {\r
+ IPOIB_TRACE_EXIT( IPOIB_DBG_ERROR, ("Invalid version.\n") );\r
+ return STATUS_INVALID_PARAMETER;\r
+ }\r
+\r
+ PortGuid = pIn->PortGuid;\r
+\r
+ nIps = 0;\r
+ pOut->AddressCount = 0;\r
+ maxIps = 1 +\r
+ ((pIoStack->Parameters.DeviceIoControl.OutputBufferLength -\r
+ sizeof(IOCTL_IBAT_IP_ADDRESSES_OUT)) / sizeof(IP_ADDRESS));\r
+\r
+ KeAcquireInStackQueuedSpinLock( &g_ipoib.lock, &hdl );\r
+ for( pItem = cl_qlist_head( &g_ipoib.adapter_list );\r
+ pItem != cl_qlist_end( &g_ipoib.adapter_list );\r
+ pItem = cl_qlist_next( pItem ) )\r
+ {\r
+ pAdapter = CONTAINING_RECORD( pItem, ipoib_adapter_t, entry );\r
+ if( PortGuid && pAdapter->guids.port_guid != PortGuid )\r
+ continue;\r
+\r
+ cl_obj_lock( &pAdapter->obj );\r
+ nIps += (LONG)cl_vector_get_size( &pAdapter->ip_vector );\r
+\r
+ for( idx = 0;\r
+ idx < cl_vector_get_size( &pAdapter->ip_vector );\r
+ idx++ )\r
+ {\r
+ if( pOut->AddressCount == maxIps )\r
+ break;\r
+\r
+ pAddr = (net_address_item_t*)\r
+ cl_vector_get_ptr( &pAdapter->ip_vector, idx );\r
+\r
+ pOut->Address[pOut->AddressCount].IpVersion = 4;\r
+ cl_memclr( &pOut->Address[pOut->AddressCount].Address,\r
+ sizeof(IP_ADDRESS) );\r
+ cl_memcpy( &pOut->Address[pOut->AddressCount].Address[12],\r
+ pAddr->address.as_bytes, IPV4_ADDR_SIZE );\r
+\r
+ pOut->AddressCount++;\r
+ }\r
+ cl_obj_unlock( &pAdapter->obj );\r
+ }\r
+\r
+ pOut->Size = sizeof(IOCTL_IBAT_IP_ADDRESSES_OUT);\r
+ if( --nIps )\r
+ pOut->Size += sizeof(IP_ADDRESS) * nIps;\r
+\r
+ pIrp->IoStatus.Information = sizeof(IOCTL_IBAT_IP_ADDRESSES_OUT);\r
+ if( --maxIps < nIps )\r
+ pIrp->IoStatus.Information += (sizeof(IP_ADDRESS) * maxIps);\r
+ else\r
+ pIrp->IoStatus.Information += (sizeof(IP_ADDRESS) * nIps);\r
+\r
+ KeReleaseInStackQueuedSpinLock( &hdl );\r
+ return STATUS_SUCCESS;\r
+}\r
+\r
+\r
+static NTSTATUS\r
+__ibat_mac_to_gid(\r
+ IN IRP *pIrp,\r
+ IN IO_STACK_LOCATION *pIoStack )\r
+{\r
+ NTSTATUS status = STATUS_INVALID_PARAMETER;\r
+ IOCTL_IBAT_MAC_TO_GID_IN *pIn;\r
+ IOCTL_IBAT_MAC_TO_GID_OUT *pOut;\r
+ KLOCK_QUEUE_HANDLE hdl;\r
+ cl_list_item_t *pItem;\r
+ ipoib_adapter_t *pAdapter;\r
+\r
+ IPOIB_ENTER(IPOIB_DBG_IOCTL);\r
+\r
+ if( pIoStack->Parameters.DeviceIoControl.InputBufferLength !=\r
+ sizeof(IOCTL_IBAT_MAC_TO_GID_IN) )\r
+ {\r
+ IPOIB_TRACE_EXIT( IPOIB_DBG_ERROR, ("Invalid input buffer size.\n") );\r
+ return STATUS_INVALID_PARAMETER;\r
+ }\r
+ \r
+ if( pIoStack->Parameters.DeviceIoControl.OutputBufferLength !=\r
+ sizeof(IOCTL_IBAT_MAC_TO_GID_OUT) )\r
+ {\r
+ IPOIB_TRACE_EXIT( IPOIB_DBG_ERROR, ("Invalid output buffer size.\n") );\r
+ return STATUS_INVALID_PARAMETER;\r
+ }\r
+\r
+ pIn = pIrp->AssociatedIrp.SystemBuffer;\r
+ pOut = pIrp->AssociatedIrp.SystemBuffer;\r
+\r
+ if( pIn->Version != IBAT_IOCTL_VERSION )\r
+ {\r
+ IPOIB_TRACE_EXIT( IPOIB_DBG_ERROR, ("Invalid version.\n") );\r
+ return STATUS_INVALID_PARAMETER;\r
+ }\r
+\r
+ KeAcquireInStackQueuedSpinLock( &g_ipoib.lock, &hdl );\r
+\r
+ for( pItem = cl_qlist_head( &g_ipoib.adapter_list );\r
+ pItem != cl_qlist_end( &g_ipoib.adapter_list );\r
+ pItem = cl_qlist_next( pItem ) )\r
+ {\r
+ pAdapter = CONTAINING_RECORD( pItem, ipoib_adapter_t, entry );\r
+ if( pIn->PortGuid != pAdapter->guids.port_guid )\r
+ continue;\r
+\r
+ /* Found the port - lookup the MAC. */\r
+ cl_obj_lock( &pAdapter->obj );\r
+ if( pAdapter->p_port )\r
+ {\r
+ status = ipoib_mac_to_gid(\r
+ pAdapter->p_port, *(mac_addr_t*)pIn->DestMac, &pOut->DestGid );\r
+ if( NT_SUCCESS( status ) )\r
+ {\r
+ pIrp->IoStatus.Information =\r
+ sizeof(IOCTL_IBAT_MAC_TO_GID_OUT);\r
+ }\r
+ }\r
+ cl_obj_unlock( &pAdapter->obj );\r
+ break;\r
+ }\r
+\r
+ KeReleaseInStackQueuedSpinLock( &hdl );\r
+\r
+ return status;\r
+}\r
+\r
+\r
+void\r
+ipoib_ref_ibat()\r
+{\r
+ NDIS_STATUS status;\r
+ NDIS_STRING DeviceName;\r
+ NDIS_STRING DeviceLinkUnicodeString;\r
+ PDRIVER_DISPATCH DispatchTable[IRP_MJ_MAXIMUM_FUNCTION+1];\r
+ DEVICE_OBJECT *p_dev_obj;\r
+\r
+ IPOIB_ENTER( IPOIB_DBG_IOCTL );\r
+\r
+ if( InterlockedIncrement( &g_ipoib.ibat_ref ) == 1 )\r
+ {\r
+ NdisInitUnicodeString( &DeviceName, IBAT_DEV_NAME );\r
+ NdisInitUnicodeString( &DeviceLinkUnicodeString, IBAT_DOS_DEV_NAME );\r
+\r
+ NdisZeroMemory( DispatchTable, sizeof(DispatchTable) );\r
+\r
+ DispatchTable[IRP_MJ_CREATE] = __ipoib_create;\r
+ DispatchTable[IRP_MJ_CLEANUP] = __ipoib_cleanup;\r
+ DispatchTable[IRP_MJ_CLOSE] = __ipoib_close;\r
+ DispatchTable[IRP_MJ_DEVICE_CONTROL] = __ipoib_dispatch;\r
+ DispatchTable[IRP_MJ_INTERNAL_DEVICE_CONTROL] = __ipoib_dispatch;\r
+\r
+ status = NdisMRegisterDevice( g_ipoib.h_ndis_wrapper,\r
+ &DeviceName, &DeviceLinkUnicodeString, &DispatchTable[0],\r
+ &p_dev_obj, &g_ipoib.h_ibat_dev );\r
+ if( status != NDIS_STATUS_SUCCESS )\r
+ {\r
+ IPOIB_TRACE( IPOIB_DBG_ERROR, \r
+ ("NdisMRegisterDevice failed with status of %d\n", status) );\r
+ }\r
+ }\r
+\r
+ IPOIB_EXIT( IPOIB_DBG_IOCTL );\r
+}\r
+\r
+\r
+void\r
+ipoib_deref_ibat()\r
+{\r
+ IPOIB_ENTER( IPOIB_DBG_IOCTL );\r
+\r
+ if( InterlockedDecrement( &g_ipoib.ibat_ref ) )\r
+ {\r
+ IPOIB_EXIT( IPOIB_DBG_IOCTL );\r
+ return;\r
+ }\r
+\r
+ if( g_ipoib.h_ibat_dev )\r
+ {\r
+ NdisMDeregisterDevice( g_ipoib.h_ibat_dev );\r
+ g_ipoib.h_ibat_dev = NULL;\r
+ }\r
+\r
+ IPOIB_EXIT( IPOIB_DBG_IOCTL );\r
+}\r
+\r
+\r
+static NTSTATUS\r
+__ipoib_create(\r
+ IN DEVICE_OBJECT* const pDevObj,\r
+ IN IRP* const pIrp )\r
+{\r
+ IPOIB_ENTER( IPOIB_DBG_IOCTL );\r
+\r
+ UNREFERENCED_PARAMETER( pDevObj );\r
+\r
+ ipoib_ref_ibat();\r
+\r
+ pIrp->IoStatus.Status = STATUS_SUCCESS;\r
+ pIrp->IoStatus.Information = 0;\r
+ IoCompleteRequest( pIrp, IO_NO_INCREMENT );\r
+\r
+ IPOIB_EXIT( IPOIB_DBG_IOCTL );\r
+ return STATUS_SUCCESS;\r
+}\r
+\r
+\r
+static NTSTATUS\r
+__ipoib_cleanup(\r
+ IN DEVICE_OBJECT* const pDevObj,\r
+ IN IRP* const pIrp )\r
+{\r
+ IPOIB_ENTER( IPOIB_DBG_IOCTL );\r
+\r
+ UNREFERENCED_PARAMETER( pDevObj );\r
+\r
+ ipoib_deref_ibat();\r
+\r
+ pIrp->IoStatus.Status = STATUS_SUCCESS;\r
+ pIrp->IoStatus.Information = 0;\r
+ IoCompleteRequest( pIrp, IO_NO_INCREMENT );\r
+\r
+ IPOIB_EXIT( IPOIB_DBG_IOCTL );\r
+ return STATUS_SUCCESS;\r
+}\r
+\r
+\r
+static NTSTATUS\r
+__ipoib_close(\r
+ IN DEVICE_OBJECT* const pDevObj,\r
+ IN IRP* const pIrp )\r
+{\r
+ IPOIB_ENTER( IPOIB_DBG_IOCTL );\r
+\r
+ UNREFERENCED_PARAMETER( pDevObj );\r
+\r
+ pIrp->IoStatus.Status = STATUS_SUCCESS;\r
+ pIrp->IoStatus.Information = 0;\r
+ IoCompleteRequest( pIrp, IO_NO_INCREMENT );\r
+\r
+ IPOIB_EXIT( IPOIB_DBG_IOCTL );\r
+ return STATUS_SUCCESS;\r
+}\r
+\r
+\r
+static NTSTATUS\r
+__ipoib_dispatch(\r
+ IN DEVICE_OBJECT* const pDevObj,\r
+ IN IRP* const pIrp )\r
+{\r
+ IO_STACK_LOCATION *pIoStack;\r
+ NTSTATUS status = STATUS_SUCCESS;\r
+\r
+ IPOIB_ENTER( IPOIB_DBG_IOCTL );\r
+\r
+ UNREFERENCED_PARAMETER( pDevObj );\r
+\r
+ pIoStack = IoGetCurrentIrpStackLocation( pIrp );\r
+\r
+ pIrp->IoStatus.Information = 0;\r
+\r
+ switch( pIoStack->Parameters.DeviceIoControl.IoControlCode )\r
+ {\r
+ case IOCTL_IBAT_PORTS:\r
+ IPOIB_TRACE( IPOIB_DBG_IOCTL, ("IOCTL_IBAT_PORTS recieved\n") );\r
+ status = __ibat_get_ports( pIrp, pIoStack );\r
+ break;\r
+\r
+ case IOCTL_IBAT_IP_ADDRESSES:\r
+ IPOIB_TRACE( IPOIB_DBG_IOCTL, ("IOCTL_IBAT_IP_ADDRESSES recieved\n" ));\r
+ status = __ibat_get_ips( pIrp, pIoStack );\r
+ break;\r
+\r
+ case IOCTL_IBAT_MAC_TO_GID:\r
+ IPOIB_TRACE( IPOIB_DBG_IOCTL, ("IOCTL_IBAT_MAC_TO_GID recieved\n" ));\r
+ status = __ibat_mac_to_gid( pIrp, pIoStack );\r
+ break;\r
+\r
+ default:\r
+ IPOIB_TRACE( IPOIB_DBG_WARN, ("unknow IOCTL code = 0x%x\n",\r
+ pIoStack->Parameters.DeviceIoControl.IoControlCode) );\r
+ status = STATUS_INVALID_PARAMETER;\r
+ }\r
+\r
+ pIrp->IoStatus.Status = status;\r
+ IoCompleteRequest( pIrp, IO_NO_INCREMENT );\r
+\r
+ IPOIB_EXIT( IPOIB_DBG_IOCTL );\r
+ return status;\r
+}\r
+\r
--- /dev/null
+;/*++\r
+;=============================================================================\r
+;Copyright (c) 2001 Mellanox Technologies\r
+;\r
+;Module Name:\r
+;\r
+; ipoiblog.mc\r
+;\r
+;Abstract:\r
+;\r
+; IPoIB Driver event log messages\r
+;\r
+;Authors:\r
+;\r
+; Yossi Leybovich\r
+;\r
+;Environment:\r
+;\r
+; Kernel Mode .\r
+;\r
+;=============================================================================\r
+;--*/\r
+;\r
+MessageIdTypedef = NDIS_ERROR_CODE\r
+\r
+SeverityNames = (\r
+ Success = 0x0:STATUS_SEVERITY_SUCCESS\r
+ Informational = 0x1:STATUS_SEVERITY_INFORMATIONAL\r
+ Warning = 0x2:STATUS_SEVERITY_WARNING\r
+ Error = 0x3:STATUS_SEVERITY_ERROR\r
+ )\r
+\r
+FacilityNames = (\r
+ System = 0x0\r
+ RpcRuntime = 0x2:FACILITY_RPC_RUNTIME\r
+ RpcStubs = 0x3:FACILITY_RPC_STUBS\r
+ Io = 0x4:FACILITY_IO_ERROR_CODE\r
+ IPoIB = 0x7:FACILITY_IPOIB_ERROR_CODE\r
+ )\r
+\r
+\r
+MessageId=0x0001\r
+Facility=IPoIB\r
+Severity=Warning\r
+SymbolicName=EVENT_IPOIB_PORT_DOWN\r
+Language=English\r
+%2: Network controller link is down.\r
+.\r
+\r
+MessageId=0x0002\r
+Facility=IPoIB\r
+Severity=Informational\r
+SymbolicName=EVENT_IPOIB_PORT_UP\r
+Language=English\r
+%2: Network controller link is up.\r
+.\r
+\r
+\r
+MessageId=0x0003\r
+Facility=IPoIB\r
+Severity=Informational\r
+SymbolicName=EVENT_IPOIB_PORT_UP1\r
+Language=English\r
+%2: Network controller link is up at 2.5Gbps.\r
+.\r
+\r
+MessageId=0x0004\r
+Facility=IPoIB\r
+Severity=Informational\r
+SymbolicName=EVENT_IPOIB_PORT_UP2\r
+Language=English\r
+%2: Network controller link is up at 5Gbps.\r
+.\r
+\r
+MessageId=0x0006\r
+Facility=IPoIB\r
+Severity=Informational\r
+SymbolicName=EVENT_IPOIB_PORT_UP3\r
+Language=English\r
+%2: Network controller link is up at 10Gbps.\r
+.\r
+\r
+MessageId=0x000a\r
+Facility=IPoIB\r
+Severity=Informational\r
+SymbolicName=EVENT_IPOIB_PORT_UP4\r
+Language=English\r
+%2: Network controller link is up at 20Gps.\r
+.\r
+\r
+MessageId=0x000e\r
+Facility=IPoIB\r
+Severity=Informational\r
+SymbolicName=EVENT_IPOIB_PORT_UP5\r
+Language=English\r
+%2: Network controller link is up at 30Gps.\r
+.\r
+\r
+MessageId=0x0012\r
+Facility=IPoIB\r
+Severity=Informational\r
+SymbolicName=EVENT_IPOIB_PORT_UP6\r
+Language=English\r
+%2: Network controller link is up at 40Gps.\r
+.\r
+\r
+MessageId=0x001a\r
+Facility=IPoIB\r
+Severity=Informational\r
+SymbolicName=EVENT_IPOIB_PORT_UP7\r
+Language=English\r
+%2: Network controller link is up at 60Gps.\r
+.\r
+\r
+MessageId=0x0032\r
+Facility=IPoIB\r
+Severity=Informational\r
+SymbolicName=EVENT_IPOIB_PORT_UP8\r
+Language=English\r
+%2: Network controller link is up at 120Gps.\r
+.\r
+\r
+MessageId=0x0040\r
+Facility=IPoIB\r
+Severity=Informational\r
+SymbolicName=EVENT_IPOIB_INIT_SUCCESS\r
+Language=English\r
+%2: Driver Initialized succesfully.\r
+.\r
+\r
+MessageId=0x0041\r
+Facility=IPoIB\r
+Severity=Error\r
+SymbolicName=EVENT_IPOIB_OPEN_CA\r
+Language=English\r
+%2: Failed to open Channel Adapter.\r
+.\r
+\r
+MessageId=0x0042\r
+Facility=IPoIB\r
+Severity=Error\r
+SymbolicName=EVENT_IPOIB_ALLOC_PD\r
+Language=English\r
+%2: Failed to allocate Protection Domain.\r
+.\r
+\r
+MessageId=0x0043\r
+Facility=IPoIB\r
+Severity=Error\r
+SymbolicName=EVENT_IPOIB_CREATE_RECV_CQ\r
+Language=English\r
+%2: Failed to create receive Completion Queue.\r
+.\r
+\r
+MessageId=0x0044\r
+Facility=IPoIB\r
+Severity=Error\r
+SymbolicName=EVENT_IPOIB_CREATE_SEND_CQ\r
+Language=English\r
+%2: Failed to create send Completion Queue.\r
+.\r
+\r
+MessageId=0x0045\r
+Facility=IPoIB\r
+Severity=Error\r
+SymbolicName=EVENT_IPOIB_CREATE_QP\r
+Language=English\r
+%2: Failed to create Queue Pair.\r
+.\r
+\r
+MessageId=0x0046\r
+Facility=IPoIB\r
+Severity=Error\r
+SymbolicName=EVENT_IPOIB_QUERY_QP\r
+Language=English\r
+%2: Failed to get Queue Pair number.\r
+.\r
+\r
+MessageId=0x0047\r
+Facility=IPoIB\r
+Severity=Error\r
+SymbolicName=EVENT_IPOIB_REG_PHYS\r
+Language=English\r
+%2: Failed to create DMA Memory Region.\r
+.\r
+\r
+MessageId=0x0048\r
+Facility=IPoIB\r
+Severity=Error\r
+SymbolicName=EVENT_IPOIB_RECV_POOL\r
+Language=English\r
+%2: Failed to create receive descriptor pool.\r
+.\r
+\r
+MessageId=0x0049\r
+Facility=IPoIB\r
+Severity=Error\r
+SymbolicName=EVENT_IPOIB_RECV_PKT_POOL\r
+Language=English\r
+%2: Failed to create NDIS_PACKET pool for receive indications.\r
+.\r
+\r
+MessageId=0x004A\r
+Facility=IPoIB\r
+Severity=Error\r
+SymbolicName=EVENT_IPOIB_RECV_BUF_POOL\r
+Language=English\r
+%2: Failed to create NDIS_BUFFER pool for receive indications.\r
+.\r
+\r
+MessageId=0x004B\r
+Facility=IPoIB\r
+Severity=Error\r
+SymbolicName=EVENT_IPOIB_SEND_PKT_POOL\r
+Language=English\r
+%2: Failed to create NDIS_PACKET pool for send processing.\r
+.\r
+\r
+MessageId=0x004C\r
+Facility=IPoIB\r
+Severity=Error\r
+SymbolicName=EVENT_IPOIB_SEND_BUF_POOL\r
+Language=English\r
+%2: Failed to create NDIS_BUFFER pool for send processing.\r
+.\r
+\r
+MessageId=0x004D\r
+Facility=IPoIB\r
+Severity=Error\r
+SymbolicName=EVENT_IPOIB_RECV_PKT_ARRAY\r
+Language=English\r
+%2: Failed to allocate receive indication array.\r
+.\r
+\r
+MessageId=0x004E\r
+Facility=IPoIB\r
+Severity=Error\r
+SymbolicName=EVENT_IPOIB_PORT_INFO_TIMEOUT\r
+Language=English\r
+%2: Subnet Administrator query for port information timed out. \r
+Make sure the SA is functioning properly. Increasing the number\r
+of retries and retry timeout adapter parameters may solve the\r
+issue.\r
+.\r
+\r
+MessageId=0x004F\r
+Facility=IPoIB\r
+Severity=Error\r
+SymbolicName=EVENT_IPOIB_PORT_INFO_REJECT\r
+Language=English\r
+%2: Subnet Administrator failed the query for port information.\r
+Make sure the SA is functioning properly and compatible.\r
+.\r
+\r
+MessageId=0x0050\r
+Facility=IPoIB\r
+Severity=Error\r
+SymbolicName=EVENT_IPOIB_QUERY_PORT_INFO\r
+Language=English\r
+%2: Subnet Administrator query for port information failed.\r
+.\r
+\r
+MessageId=0x0055\r
+Facility=IPoIB\r
+Severity=Error\r
+SymbolicName=EVENT_IPOIB_BCAST_GET\r
+Language=English\r
+%2: Subnet Administrator failed query for broadcast group information.\r
+.\r
+\r
+MessageId=0x0056\r
+Facility=IPoIB\r
+Severity=Error\r
+SymbolicName=EVENT_IPOIB_BCAST_JOIN\r
+Language=English\r
+%2: Subnet Administrator failed request to joing broadcast group.\r
+.\r
+\r
+MessageId=0x0057\r
+Facility=IPoIB\r
+Severity=Error\r
+SymbolicName=EVENT_IPOIB_BCAST_RATE\r
+Language=English\r
+%2: The local port rate is too slow for the existing broadcast MC group.\r
+.\r