[mlx4] modify PortType according to setup_port_type.
authortzachid <tzachid@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Tue, 17 Nov 2009 12:56:53 +0000 (12:56 +0000)
committertzachid <tzachid@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Tue, 17 Nov 2009 12:56:53 +0000 (12:56 +0000)
Signed off by:firas@mellanox.co.il

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@2574 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

hw/mlx4/kernel/bus/drv/drv.c

index 4e9e6c9..b30cc1c 100644 (file)
@@ -257,18 +257,48 @@ end:
        return status;\r
 }\r
 \r
\r
+BOOLEAN __read_setup_params(PUNICODE_STRING puvalue)\r
+{    \r
+    NTSTATUS    status;    \r
+    WDFKEY hParamsKey = NULL;\r
+       DECLARE_CONST_UNICODE_STRING(KeyName, L"\\REGISTRY\\MACHINE\\SOFTWARE\\Mellanox");\r
+       DECLARE_CONST_UNICODE_STRING(PortType, L"PortType");\r
+    \r
+       status = WdfRegistryOpenKey(NULL, &KeyName, STANDARD_RIGHTS_ALL, WDF_NO_OBJECT_ATTRIBUTES, &hParamsKey);\r
+       if( !NT_SUCCESS( status ) ) \r
+    {\r
+               MLX4_PRINT( TRACE_LEVEL_ERROR  ,MLX4_DBG_DEV  ,("WdfRegistryOpenKey Failed status = 0x%x\n", status));\r
+        return FALSE;\r
+       }\r
+    \r
+    status = WdfRegistryQueryUnicodeString(hParamsKey, &PortType, NULL, puvalue);    \r
+       if( !NT_SUCCESS( status ) ) \r
+    {\r
+        WdfRegistryClose(hParamsKey);\r
+        return FALSE;\r
+       }\r
+\r
+    WdfRegistryClose(hParamsKey);    \r
+    return TRUE;    \r
+}\r
+\r
 NTSTATUS\r
 __read_dev_params(IN WDFDEVICE  Device, struct mlx4_dev_params *dev_params)\r
 {\r
        NTSTATUS status = STATUS_SUCCESS;\r
        WDFKEY hKey = NULL;\r
        WDFKEY hParamsKey = NULL;\r
+    BOOLEAN bRet = FALSE;\r
        DECLARE_CONST_UNICODE_STRING(Parameters, L"Parameters");\r
        DECLARE_CONST_UNICODE_STRING(PortType, L"PortType");\r
+\r
 #define  MAX_UVALUE 100\r
        WCHAR uvalue_data[MAX_UVALUE];\r
-       UNICODE_STRING uvalue;\r
+       UNICODE_STRING uvalue;    \r
+       uvalue.Buffer = uvalue_data;\r
+       uvalue.MaximumLength = MAX_UVALUE;\r
+       uvalue.Length = 0;\r
+    \r
        status = WdfDeviceOpenRegistryKey(Device, PLUGPLAY_REGKEY_DRIVER, \r
                STANDARD_RIGHTS_ALL, WDF_NO_OBJECT_ATTRIBUTES, &hKey);\r
        if( !NT_SUCCESS( status ) ) {\r
@@ -282,10 +312,17 @@ __read_dev_params(IN WDFDEVICE  Device, struct mlx4_dev_params *dev_params)
                goto err;\r
        }\r
 \r
-       uvalue.Buffer = uvalue_data;\r
-       uvalue.MaximumLength = MAX_UVALUE;\r
-       uvalue.Length = 0;\r
-\r
+    bRet = __read_setup_params(&uvalue);\r
+    if (bRet == TRUE)\r
+    {\r
+        status = WdfRegistryAssignValue(hParamsKey, &PortType, REG_SZ,uvalue.Length,uvalue.Buffer);        \r
+        if( !NT_SUCCESS( status ) ) {\r
+            MLX4_PRINT( TRACE_LEVEL_ERROR  ,MLX4_DBG_DEV  ,("WdfRegistryAssignValue Failed status = 0x%x\n", status));\r
+            goto err;\r
+        }        \r
+        uvalue.Length = 0;\r
+    }\r
+    \r
        status = WdfRegistryQueryUnicodeString(hParamsKey, &PortType, NULL, &uvalue);\r
        if (NT_SUCCESS (status)) {\r
                if (!wcscmp(uvalue_data, L"ib,ib")) {\r