diff options
author | Amit Kumar Salecha <amit.salecha@qlogic.com> | 2010-04-01 15:01:33 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-04-03 17:19:15 -0400 |
commit | 65b5b420b5974d86ee030b0a15cd9e6f228071f4 (patch) | |
tree | 5ddf10e7f5a3ed54dd6fc75f90c41c4694ff6061 /drivers/net/qlcnic/qlcnic_main.c | |
parent | aa5e18c04af8706251768e6aba83465e31de7810 (diff) |
qlcnic: add driver debug support
Add debug print in driver, can be tuned by ethtool msg level
callback.
Signed-off-by: Amit Kumar Salecha <amit.salecha@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/qlcnic/qlcnic_main.c')
-rw-r--r-- | drivers/net/qlcnic/qlcnic_main.c | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/drivers/net/qlcnic/qlcnic_main.c b/drivers/net/qlcnic/qlcnic_main.c index 38e082969253..039f69382dc9 100644 --- a/drivers/net/qlcnic/qlcnic_main.c +++ b/drivers/net/qlcnic/qlcnic_main.c | |||
@@ -1742,6 +1742,7 @@ static void qlcnic_tx_timeout_task(struct work_struct *work) | |||
1742 | request_reset: | 1742 | request_reset: |
1743 | adapter->need_fw_reset = 1; | 1743 | adapter->need_fw_reset = 1; |
1744 | clear_bit(__QLCNIC_RESETTING, &adapter->state); | 1744 | clear_bit(__QLCNIC_RESETTING, &adapter->state); |
1745 | QLCDB(adapter, DRV, "Resetting adapter\n"); | ||
1745 | } | 1746 | } |
1746 | 1747 | ||
1747 | static struct net_device_stats *qlcnic_get_stats(struct net_device *netdev) | 1748 | static struct net_device_stats *qlcnic_get_stats(struct net_device *netdev) |
@@ -2046,6 +2047,7 @@ qlcnic_can_start_firmware(struct qlcnic_adapter *adapter) | |||
2046 | } | 2047 | } |
2047 | 2048 | ||
2048 | prev_state = QLCRD32(adapter, QLCNIC_CRB_DEV_STATE); | 2049 | prev_state = QLCRD32(adapter, QLCNIC_CRB_DEV_STATE); |
2050 | QLCDB(adapter, HW, "Device state = %u\n", prev_state); | ||
2049 | 2051 | ||
2050 | switch (prev_state) { | 2052 | switch (prev_state) { |
2051 | case QLCNIC_DEV_COLD: | 2053 | case QLCNIC_DEV_COLD: |
@@ -2082,8 +2084,11 @@ start_fw: | |||
2082 | } while ((QLCRD32(adapter, QLCNIC_CRB_DEV_STATE) != QLCNIC_DEV_READY) | 2084 | } while ((QLCRD32(adapter, QLCNIC_CRB_DEV_STATE) != QLCNIC_DEV_READY) |
2083 | && --dev_init_timeo); | 2085 | && --dev_init_timeo); |
2084 | 2086 | ||
2085 | if (!dev_init_timeo) | 2087 | if (!dev_init_timeo) { |
2088 | dev_err(&adapter->pdev->dev, | ||
2089 | "Waiting for device to initialize timeout\n"); | ||
2086 | return -1; | 2090 | return -1; |
2091 | } | ||
2087 | 2092 | ||
2088 | if (qlcnic_api_lock(adapter)) | 2093 | if (qlcnic_api_lock(adapter)) |
2089 | return -1; | 2094 | return -1; |
@@ -2113,6 +2118,7 @@ qlcnic_fwinit_work(struct work_struct *work) | |||
2113 | return; | 2118 | return; |
2114 | } | 2119 | } |
2115 | 2120 | ||
2121 | QLCDB(adapter, DRV, "Resetting FW\n"); | ||
2116 | if (!qlcnic_start_firmware(adapter)) { | 2122 | if (!qlcnic_start_firmware(adapter)) { |
2117 | qlcnic_schedule_work(adapter, qlcnic_attach_work, 0); | 2123 | qlcnic_schedule_work(adapter, qlcnic_attach_work, 0); |
2118 | return; | 2124 | return; |
@@ -2121,10 +2127,15 @@ qlcnic_fwinit_work(struct work_struct *work) | |||
2121 | goto err_ret; | 2127 | goto err_ret; |
2122 | } | 2128 | } |
2123 | 2129 | ||
2124 | if (adapter->fw_wait_cnt++ > (adapter->dev_init_timeo / 2)) | 2130 | if (adapter->fw_wait_cnt++ > (adapter->dev_init_timeo / 2)) { |
2131 | dev_err(&adapter->pdev->dev, | ||
2132 | "Waiting for device to reset timeout\n"); | ||
2125 | goto err_ret; | 2133 | goto err_ret; |
2134 | } | ||
2126 | 2135 | ||
2127 | dev_state = QLCRD32(adapter, QLCNIC_CRB_DEV_STATE); | 2136 | dev_state = QLCRD32(adapter, QLCNIC_CRB_DEV_STATE); |
2137 | QLCDB(adapter, HW, "Func waiting: Device state=%d\n", dev_state); | ||
2138 | |||
2128 | switch (dev_state) { | 2139 | switch (dev_state) { |
2129 | case QLCNIC_DEV_READY: | 2140 | case QLCNIC_DEV_READY: |
2130 | if (!qlcnic_start_firmware(adapter)) { | 2141 | if (!qlcnic_start_firmware(adapter)) { |
@@ -2177,6 +2188,8 @@ qlcnic_detach_work(struct work_struct *work) | |||
2177 | return; | 2188 | return; |
2178 | 2189 | ||
2179 | err_ret: | 2190 | err_ret: |
2191 | dev_err(&adapter->pdev->dev, "detach failed; status=%d temp=%d\n", | ||
2192 | status, adapter->temp); | ||
2180 | qlcnic_clr_all_drv_state(adapter); | 2193 | qlcnic_clr_all_drv_state(adapter); |
2181 | 2194 | ||
2182 | } | 2195 | } |
@@ -2194,6 +2207,7 @@ qlcnic_dev_request_reset(struct qlcnic_adapter *adapter) | |||
2194 | if (state != QLCNIC_DEV_INITALIZING && state != QLCNIC_DEV_NEED_RESET) { | 2207 | if (state != QLCNIC_DEV_INITALIZING && state != QLCNIC_DEV_NEED_RESET) { |
2195 | QLCWR32(adapter, QLCNIC_CRB_DEV_STATE, QLCNIC_DEV_NEED_RESET); | 2208 | QLCWR32(adapter, QLCNIC_CRB_DEV_STATE, QLCNIC_DEV_NEED_RESET); |
2196 | set_bit(__QLCNIC_START_FW, &adapter->state); | 2209 | set_bit(__QLCNIC_START_FW, &adapter->state); |
2210 | QLCDB(adapter, DRV, "NEED_RESET state set\n"); | ||
2197 | } | 2211 | } |
2198 | 2212 | ||
2199 | qlcnic_api_unlock(adapter); | 2213 | qlcnic_api_unlock(adapter); |
@@ -2290,8 +2304,11 @@ detach: | |||
2290 | QLCNIC_DEV_NEED_RESET; | 2304 | QLCNIC_DEV_NEED_RESET; |
2291 | 2305 | ||
2292 | if ((auto_fw_reset == AUTO_FW_RESET_ENABLED) && | 2306 | if ((auto_fw_reset == AUTO_FW_RESET_ENABLED) && |
2293 | !test_and_set_bit(__QLCNIC_RESETTING, &adapter->state)) | 2307 | !test_and_set_bit(__QLCNIC_RESETTING, &adapter->state)) { |
2308 | |||
2294 | qlcnic_schedule_work(adapter, qlcnic_detach_work, 0); | 2309 | qlcnic_schedule_work(adapter, qlcnic_detach_work, 0); |
2310 | QLCDB(adapter, DRV, "fw recovery scheduled.\n"); | ||
2311 | } | ||
2295 | 2312 | ||
2296 | return 1; | 2313 | return 1; |
2297 | } | 2314 | } |