[ofw] patch; [mlx4] modify PortType according to setup_port_type
Tzachi Dar
tzachid at mellanox.co.il
Sun Nov 15 10:01:52 PST 2009
signed off by: Firas.
Index: Q:/projinf3/trunk/hw/mlx4/kernel/bus/drv/drv.c
===================================================================
--- Q:/projinf3/trunk/hw/mlx4/kernel/bus/drv/drv.c (revision 4774)
+++ Q:/projinf3/trunk/hw/mlx4/kernel/bus/drv/drv.c (revision 4775)
@@ -257,18 +257,48 @@
return status;
}
-
+BOOLEAN __read_setup_params(PUNICODE_STRING puvalue)
+{
+ NTSTATUS status;
+ WDFKEY hParamsKey = NULL;
+ DECLARE_CONST_UNICODE_STRING(KeyName,
L"\\REGISTRY\\MACHINE\\SOFTWARE\\Mellanox");
+ DECLARE_CONST_UNICODE_STRING(PortType, L"PortType");
+
+ status = WdfRegistryOpenKey(NULL, &KeyName, STANDARD_RIGHTS_ALL,
WDF_NO_OBJECT_ATTRIBUTES, &hParamsKey);
+ if( !NT_SUCCESS( status ) )
+ {
+ MLX4_PRINT( TRACE_LEVEL_ERROR ,MLX4_DBG_DEV ,("WdfRegistryOpenKey
Failed status = 0x%x\n", status));
+ return FALSE;
+ }
+
+ status = WdfRegistryQueryUnicodeString(hParamsKey, &PortType, NULL,
puvalue);
+ if( !NT_SUCCESS( status ) )
+ {
+ WdfRegistryClose(hParamsKey);
+ return FALSE;
+ }
+
+ WdfRegistryClose(hParamsKey);
+ return TRUE;
+}
+
NTSTATUS
__read_dev_params(IN WDFDEVICE Device, struct mlx4_dev_params
*dev_params)
{
NTSTATUS status = STATUS_SUCCESS;
WDFKEY hKey = NULL;
WDFKEY hParamsKey = NULL;
+ BOOLEAN bRet = FALSE;
DECLARE_CONST_UNICODE_STRING(Parameters, L"Parameters");
DECLARE_CONST_UNICODE_STRING(PortType, L"PortType");
+
#define MAX_UVALUE 100
WCHAR uvalue_data[MAX_UVALUE];
- UNICODE_STRING uvalue;
+ UNICODE_STRING uvalue;
+ uvalue.Buffer = uvalue_data;
+ uvalue.MaximumLength = MAX_UVALUE;
+ uvalue.Length = 0;
+
status = WdfDeviceOpenRegistryKey(Device, PLUGPLAY_REGKEY_DRIVER,
STANDARD_RIGHTS_ALL, WDF_NO_OBJECT_ATTRIBUTES, &hKey);
if( !NT_SUCCESS( status ) ) {
@@ -282,10 +312,17 @@
goto err;
}
- uvalue.Buffer = uvalue_data;
- uvalue.MaximumLength = MAX_UVALUE;
- uvalue.Length = 0;
-
+ bRet = __read_setup_params(&uvalue);
+ if (bRet == TRUE)
+ {
+ status = WdfRegistryAssignValue(hParamsKey, &PortType,
REG_SZ,uvalue.Length,uvalue.Buffer);
+ if( !NT_SUCCESS( status ) ) {
+ MLX4_PRINT( TRACE_LEVEL_ERROR ,MLX4_DBG_DEV
,("WdfRegistryAssignValue Failed status = 0x%x\n", status));
+ goto err;
+ }
+ uvalue.Length = 0;
+ }
+
status = WdfRegistryQueryUnicodeString(hParamsKey, &PortType, NULL,
&uvalue);
if (NT_SUCCESS (status)) {
if (!wcscmp(uvalue_data, L"ib,ib")) {
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openfabrics.org/pipermail/ofw/attachments/20091115/c3a57e58/attachment.html>
More information about the ofw
mailing list