aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-core.c
diff options
context:
space:
mode:
authorGregory Greenman <gregory.greenman@intel.com>2008-05-29 04:34:48 -0400
committerJohn W. Linville <linville@tuxdriver.com>2008-06-03 15:00:17 -0400
commite1dfc0851ae0fb280a5eb827dd08853ed46cb241 (patch)
tree14282c052454c1c5c7b1daa318bc243b0dd42728 /drivers/net/wireless/iwlwifi/iwl-core.c
parent87283cc1290f23458232cdf3b1893acb750a4ad3 (diff)
iwlwifi: use uCode error and event tables pointer w.r.t loaded image
This patch updates the usage of the pointers to error and log tables received in alive response w.r.t. the current uCode image. Signed-off-by: Gregory Greenman <gregory.greenman@intel.com> Signed-off-by: Tomas Winkler <tomas.winkler@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-core.c')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-core.c29
1 files changed, 19 insertions, 10 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.c b/drivers/net/wireless/iwlwifi/iwl-core.c
index 785396fd39a0..373e9847c378 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.c
+++ b/drivers/net/wireless/iwlwifi/iwl-core.c
@@ -1084,17 +1084,20 @@ void iwl_dump_nic_error_log(struct iwl_priv *priv)
1084 u32 data2, line; 1084 u32 data2, line;
1085 u32 desc, time, count, base, data1; 1085 u32 desc, time, count, base, data1;
1086 u32 blink1, blink2, ilink1, ilink2; 1086 u32 blink1, blink2, ilink1, ilink2;
1087 int rc; 1087 int ret;
1088 1088
1089 base = le32_to_cpu(priv->card_alive.error_event_table_ptr); 1089 if (priv->ucode_type == UCODE_INIT)
1090 base = le32_to_cpu(priv->card_alive_init.error_event_table_ptr);
1091 else
1092 base = le32_to_cpu(priv->card_alive.error_event_table_ptr);
1090 1093
1091 if (!priv->cfg->ops->lib->is_valid_rtc_data_addr(base)) { 1094 if (!priv->cfg->ops->lib->is_valid_rtc_data_addr(base)) {
1092 IWL_ERROR("Not valid error log pointer 0x%08X\n", base); 1095 IWL_ERROR("Not valid error log pointer 0x%08X\n", base);
1093 return; 1096 return;
1094 } 1097 }
1095 1098
1096 rc = iwl_grab_nic_access(priv); 1099 ret = iwl_grab_nic_access(priv);
1097 if (rc) { 1100 if (ret) {
1098 IWL_WARNING("Can not read from adapter at this time.\n"); 1101 IWL_WARNING("Can not read from adapter at this time.\n");
1099 return; 1102 return;
1100 } 1103 }
@@ -1146,8 +1149,10 @@ void iwl_print_event_log(struct iwl_priv *priv, u32 start_idx,
1146 1149
1147 if (num_events == 0) 1150 if (num_events == 0)
1148 return; 1151 return;
1149 1152 if (priv->ucode_type == UCODE_INIT)
1150 base = le32_to_cpu(priv->card_alive.log_event_table_ptr); 1153 base = le32_to_cpu(priv->card_alive_init.log_event_table_ptr);
1154 else
1155 base = le32_to_cpu(priv->card_alive.log_event_table_ptr);
1151 1156
1152 if (mode == 0) 1157 if (mode == 0)
1153 event_size = 2 * sizeof(u32); 1158 event_size = 2 * sizeof(u32);
@@ -1177,7 +1182,7 @@ EXPORT_SYMBOL(iwl_print_event_log);
1177 1182
1178void iwl_dump_nic_event_log(struct iwl_priv *priv) 1183void iwl_dump_nic_event_log(struct iwl_priv *priv)
1179{ 1184{
1180 int rc; 1185 int ret;
1181 u32 base; /* SRAM byte address of event log header */ 1186 u32 base; /* SRAM byte address of event log header */
1182 u32 capacity; /* event log capacity in # entries */ 1187 u32 capacity; /* event log capacity in # entries */
1183 u32 mode; /* 0 - no timestamp, 1 - timestamp recorded */ 1188 u32 mode; /* 0 - no timestamp, 1 - timestamp recorded */
@@ -1185,14 +1190,18 @@ void iwl_dump_nic_event_log(struct iwl_priv *priv)
1185 u32 next_entry; /* index of next entry to be written by uCode */ 1190 u32 next_entry; /* index of next entry to be written by uCode */
1186 u32 size; /* # entries that we'll print */ 1191 u32 size; /* # entries that we'll print */
1187 1192
1188 base = le32_to_cpu(priv->card_alive.log_event_table_ptr); 1193 if (priv->ucode_type == UCODE_INIT)
1194 base = le32_to_cpu(priv->card_alive_init.log_event_table_ptr);
1195 else
1196 base = le32_to_cpu(priv->card_alive.log_event_table_ptr);
1197
1189 if (!priv->cfg->ops->lib->is_valid_rtc_data_addr(base)) { 1198 if (!priv->cfg->ops->lib->is_valid_rtc_data_addr(base)) {
1190 IWL_ERROR("Invalid event log pointer 0x%08X\n", base); 1199 IWL_ERROR("Invalid event log pointer 0x%08X\n", base);
1191 return; 1200 return;
1192 } 1201 }
1193 1202
1194 rc = iwl_grab_nic_access(priv); 1203 ret = iwl_grab_nic_access(priv);
1195 if (rc) { 1204 if (ret) {
1196 IWL_WARNING("Can not read from adapter at this time.\n"); 1205 IWL_WARNING("Can not read from adapter at this time.\n");
1197 return; 1206 return;
1198 } 1207 }