}\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
+{\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
+\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
+ MLX4_PRINT( TRACE_LEVEL_WARNING ,MLX4_DBG_DEV ,\r
+ ("WdfRegistryOpenKey(\\Registry\\Machine\\SOFTWARE\\Mellanox) Failed status = 0x%x\n", status));\r
+ return FALSE;\r
}\r
- \r
- status = WdfRegistryQueryUnicodeString(hParamsKey, &PortType, NULL, puvalue); \r
+\r
+ status = WdfRegistryQueryUnicodeString(hParamsKey, &PortType, NULL, puvalue); \r
if( !NT_SUCCESS( status ) ) \r
- {\r
- WdfRegistryClose(hParamsKey);\r
- return FALSE;\r
+ {\r
+ MLX4_PRINT( TRACE_LEVEL_ERROR ,MLX4_DBG_DEV ,\r
+ ("WdfRegistryQueryUnicodeString(PortType) Failed status = 0x%x\n", status));\r
+ WdfRegistryClose(hParamsKey);\r
+ return FALSE;\r
}\r
\r
- WdfRegistryClose(hParamsKey); \r
- return TRUE; \r
+ WdfRegistryClose(hParamsKey); \r
+ return TRUE; \r
}\r
\r
NTSTATUS\r
NTSTATUS status = STATUS_SUCCESS;\r
WDFKEY hKey = NULL;\r
WDFKEY hParamsKey = NULL;\r
- BOOLEAN bRet = FALSE;\r
+ BOOLEAN bRet = FALSE;\r
DECLARE_CONST_UNICODE_STRING(Parameters, L"Parameters");\r
DECLARE_CONST_UNICODE_STRING(PortType, L"PortType");\r
\r
uvalue.Buffer = uvalue_data;\r
uvalue.MaximumLength = MAX_UVALUE;\r
uvalue.Length = 0;\r
- \r
+\r
+ // default values\r
+ dev_params->mod_port_type[0] = MLX4_PORT_TYPE_IB;\r
+ dev_params->mod_port_type[1] = MLX4_PORT_TYPE_IB;\r
+\r
status = WdfDeviceOpenRegistryKey(Device, PLUGPLAY_REGKEY_DRIVER, \r
STANDARD_RIGHTS_ALL, WDF_NO_OBJECT_ATTRIBUTES, &hKey);\r
if( !NT_SUCCESS( status ) ) {\r
- MLX4_PRINT( TRACE_LEVEL_ERROR ,MLX4_DBG_DEV ,("WdfDeviceOpenRegistryKey Failed status = 0x%x\n", status));\r
+ MLX4_PRINT( TRACE_LEVEL_ERROR ,MLX4_DBG_DEV ,\r
+ ("WdfDeviceOpenRegistryKey(\\Registry\\Machine\\Control\\Class\\...) Failed status = 0x%x\n", status));\r
goto err;\r
}\r
\r
status = WdfRegistryOpenKey(hKey, &Parameters, STANDARD_RIGHTS_ALL, WDF_NO_OBJECT_ATTRIBUTES, &hParamsKey);\r
if( !NT_SUCCESS( status ) ) {\r
- MLX4_PRINT( TRACE_LEVEL_ERROR ,MLX4_DBG_DEV ,("WdfRegistryOpenKey Failed status = 0x%x\n", status));\r
+ MLX4_PRINT( TRACE_LEVEL_ERROR ,MLX4_DBG_DEV ,("WdfRegistryOpenKey(Prameters) Failed status = 0x%x\n", status));\r
goto err;\r
}\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
+ 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(PortType) Failed status = 0x%x\n", status));\r
+ goto err;\r
+ }\r
+ uvalue.Length = 0;\r
+ }\r
+\r
memset(&uvalue_data,0,sizeof(uvalue_data));\r
\r
status = WdfRegistryQueryUnicodeString(hParamsKey, &PortType, NULL, &uvalue);\r
L"%s",uvalue_data); \r
}\r
}\r
- else {\r
- dev_params->mod_port_type[0] = MLX4_PORT_TYPE_IB;\r
- dev_params->mod_port_type[1] = MLX4_PORT_TYPE_IB;\r
- }\r
\r
err:\r
if (hKey != NULL) \r
if (port_type[i-1] & dev_cap->supported_port_types[i])
dev->caps.port_type[i] = port_type[i-1];
else {
+ if (dev_cap->supported_port_types[i] & MLX4_PORT_TYPE_IB)
+ dev->caps.port_type[i] = MLX4_PORT_TYPE_IB;
+ else
+ dev->caps.port_type[i] = MLX4_PORT_TYPE_ETH;
+
MLX4_PRINT_EV(TRACE_LEVEL_WARNING,MLX4_DBG_DRV ,
- ("Requested port type %#x for port %d is "
- "not supported by HW. Supported %#x. We'll working to the supported one! \n",
- port_type[i-1], i, (int)dev_cap->supported_port_types[i]));
+ ("Port %d: Unsupported requested port type %#x. We'll use #%x from supported %#x! \n",
+ i, port_type[i-1], dev->caps.port_type[i],
+ (int)dev_cap->supported_port_types[i]));
+
MLX4_PRINT_EV(TRACE_LEVEL_WARNING ,MLX4_DBG_DRV ,
("Ven %x Dev %d Fw %d.%d.%d, IsBurnDevice %s\n",
(unsigned)dev->pdev->ven_id, (unsigned)dev->pdev->dev_id,
(int) (dev->caps.fw_ver & 0xffff),
mlx4_is_livefish(dev) ? "Y" : "N"
));
-
- dev->caps.port_type[i] = dev_cap->supported_port_types[i];
}
if (dev->caps.log_num_macs > dev_cap->log_max_macs[i]) {
dev->caps.log_num_macs = dev_cap->log_max_macs[i];