vxge: Handle errors in vxge_hw_vpath_fw_api
authorJon Mason <jon.mason@exar.com>
Thu, 11 Nov 2010 04:25:59 +0000 (04:25 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 11 Nov 2010 17:30:22 +0000 (09:30 -0800)
Propagate the return code of the call to vxge_hw_vpath_fw_api and
__vxge_hw_vpath_pci_func_mode_get.  This enables the proper handling of
error conditions when querying the function mode of the device during
probe.

Signed-off-by: Jon Mason <jon.mason@exar.com>
Signed-off-by: Ram Vepa <ram.vepa@exar.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/vxge/vxge-config.c

index 7761b9e0ad84d2002344172e3745880bcb920120..388e6c48696b810ce32487b6e5ff5273f9a1d289 100644 (file)
@@ -1107,8 +1107,9 @@ __vxge_hw_vpath_card_info_get(struct __vxge_hw_virtualpath *vpath,
  * __vxge_hw_vpath_pci_func_mode_get - Get the pci mode
  * Returns pci function mode
  */
-static u64
-__vxge_hw_vpath_pci_func_mode_get(struct __vxge_hw_virtualpath *vpath)
+static enum vxge_hw_status
+__vxge_hw_vpath_pci_func_mode_get(struct __vxge_hw_virtualpath *vpath,
+                                 struct vxge_hw_device_hw_info *hw_info)
 {
        u64 data0, data1 = 0, steer_ctrl = 0;
        enum vxge_hw_status status;
@@ -1119,8 +1120,11 @@ __vxge_hw_vpath_pci_func_mode_get(struct __vxge_hw_virtualpath *vpath)
                        VXGE_HW_RTS_ACCESS_STEER_CTRL_ACTION_READ_MEMO_ENTRY,
                        VXGE_HW_RTS_ACCESS_STEER_CTRL_DATA_STRUCT_SEL_FW_MEMO,
                        0, &data0, &data1, &steer_ctrl);
+       if (status != VXGE_HW_OK)
+               return status;
 
-       return data0;
+       hw_info->function_mode = data0;
+       return status;
 }
 
 /*
@@ -1235,8 +1239,9 @@ vxge_hw_device_hw_info_get(void __iomem *bar0,
                               (bar0 + val64);
                vpath.vp_open = 0;
 
-               hw_info->function_mode =
-                       __vxge_hw_vpath_pci_func_mode_get(&vpath);
+               status = __vxge_hw_vpath_pci_func_mode_get(&vpath, hw_info);
+               if (status != VXGE_HW_OK)
+                       goto exit;
 
                status = __vxge_hw_vpath_fw_ver_get(&vpath, hw_info);
                if (status != VXGE_HW_OK)