aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHsu, Kenny <kenny.hsu@intel.com>2011-11-28 03:55:38 -0500
committerWey-Yi Guy <wey-yi.w.guy@intel.com>2011-12-08 18:53:30 -0500
commite1a38fe10f998e27ce8600379d1109be33d4f9c2 (patch)
tree7fdcef9e9156c32b3812a72ec995c0353b245d40
parente5cd9ec191e8190c3b8c55f0e0c27b7e1da040e6 (diff)
iwlwifi: add uCode version information support by testmode
Create new tm command to report uCode version to userspace - IWL_TM_CMD_APP2DEV_GET_FW_VERSION Signed-off-by: Kenny Hsu <kenny.hsu@intel.com> Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-testmode.c18
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-testmode.h11
2 files changed, 27 insertions, 2 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-testmode.c b/drivers/net/wireless/iwlwifi/iwl-testmode.c
index ff72dbcfd52d..131a73d16f98 100644
--- a/drivers/net/wireless/iwlwifi/iwl-testmode.c
+++ b/drivers/net/wireless/iwlwifi/iwl-testmode.c
@@ -110,6 +110,8 @@ struct nla_policy iwl_testmode_gnl_msg_policy[IWL_TM_ATTR_MAX] = {
110 [IWL_TM_ATTR_SRAM_ADDR] = { .type = NLA_U32, }, 110 [IWL_TM_ATTR_SRAM_ADDR] = { .type = NLA_U32, },
111 [IWL_TM_ATTR_SRAM_SIZE] = { .type = NLA_U32, }, 111 [IWL_TM_ATTR_SRAM_SIZE] = { .type = NLA_U32, },
112 [IWL_TM_ATTR_SRAM_DUMP] = { .type = NLA_UNSPEC, }, 112 [IWL_TM_ATTR_SRAM_DUMP] = { .type = NLA_UNSPEC, },
113
114 [IWL_TM_ATTR_FW_VERSION] = { .type = NLA_U32, },
113}; 115};
114 116
115/* 117/*
@@ -510,6 +512,21 @@ static int iwl_testmode_driver(struct ieee80211_hw *hw, struct nlattr **tb)
510 priv->tm_fixed_rate = nla_get_u32(tb[IWL_TM_ATTR_FIXRATE]); 512 priv->tm_fixed_rate = nla_get_u32(tb[IWL_TM_ATTR_FIXRATE]);
511 break; 513 break;
512 514
515 case IWL_TM_CMD_APP2DEV_GET_FW_VERSION:
516 IWL_INFO(priv, "uCode version raw: 0x%x\n", priv->ucode_ver);
517
518 skb = cfg80211_testmode_alloc_reply_skb(hw->wiphy, 20);
519 if (!skb) {
520 IWL_DEBUG_INFO(priv, "Error allocating memory\n");
521 return -ENOMEM;
522 }
523 NLA_PUT_U32(skb, IWL_TM_ATTR_FW_VERSION, priv->ucode_ver);
524 status = cfg80211_testmode_reply(skb);
525 if (status < 0)
526 IWL_DEBUG_INFO(priv,
527 "Error sending msg : %d\n", status);
528 break;
529
513 default: 530 default:
514 IWL_DEBUG_INFO(priv, "Unknown testmode driver command ID\n"); 531 IWL_DEBUG_INFO(priv, "Unknown testmode driver command ID\n");
515 return -ENOSYS; 532 return -ENOSYS;
@@ -842,6 +859,7 @@ int iwlagn_mac_testmode_cmd(struct ieee80211_hw *hw, void *data, int len)
842 case IWL_TM_CMD_APP2DEV_GET_EEPROM: 859 case IWL_TM_CMD_APP2DEV_GET_EEPROM:
843 case IWL_TM_CMD_APP2DEV_FIXRATE_REQ: 860 case IWL_TM_CMD_APP2DEV_FIXRATE_REQ:
844 case IWL_TM_CMD_APP2DEV_LOAD_WOWLAN_FW: 861 case IWL_TM_CMD_APP2DEV_LOAD_WOWLAN_FW:
862 case IWL_TM_CMD_APP2DEV_GET_FW_VERSION:
845 IWL_DEBUG_INFO(priv, "testmode cmd to driver\n"); 863 IWL_DEBUG_INFO(priv, "testmode cmd to driver\n");
846 result = iwl_testmode_driver(hw, tb); 864 result = iwl_testmode_driver(hw, tb);
847 break; 865 break;
diff --git a/drivers/net/wireless/iwlwifi/iwl-testmode.h b/drivers/net/wireless/iwlwifi/iwl-testmode.h
index deedd27c5f3d..60c6db157f2b 100644
--- a/drivers/net/wireless/iwlwifi/iwl-testmode.h
+++ b/drivers/net/wireless/iwlwifi/iwl-testmode.h
@@ -118,6 +118,7 @@
118 * commands from user applicaiton to read data in sram 118 * commands from user applicaiton to read data in sram
119 * 119 *
120 * @IWL_TM_CMD_APP2DEV_LOAD_WOWLAN_FW: load Weak On Wireless LAN uCode image 120 * @IWL_TM_CMD_APP2DEV_LOAD_WOWLAN_FW: load Weak On Wireless LAN uCode image
121 * @IWL_TM_CMD_APP2DEV_GET_FW_VERSION: retrieve uCode version
121 * 122 *
122 */ 123 */
123enum iwl_tm_cmd_t { 124enum iwl_tm_cmd_t {
@@ -143,7 +144,8 @@ enum iwl_tm_cmd_t {
143 IWL_TM_CMD_APP2DEV_READ_SRAM = 20, 144 IWL_TM_CMD_APP2DEV_READ_SRAM = 20,
144 IWL_TM_CMD_APP2DEV_DUMP_SRAM = 21, 145 IWL_TM_CMD_APP2DEV_DUMP_SRAM = 21,
145 IWL_TM_CMD_APP2DEV_LOAD_WOWLAN_FW = 22, 146 IWL_TM_CMD_APP2DEV_LOAD_WOWLAN_FW = 22,
146 IWL_TM_CMD_MAX = 23, 147 IWL_TM_CMD_APP2DEV_GET_FW_VERSION = 23,
148 IWL_TM_CMD_MAX = 24,
147}; 149};
148 150
149/* 151/*
@@ -225,6 +227,10 @@ enum iwl_tm_cmd_t {
225 * When IWL_TM_ATTR_COMMAND is IWL_TM_CMD_APP2DEV_DUMP_SRAM, 227 * When IWL_TM_ATTR_COMMAND is IWL_TM_CMD_APP2DEV_DUMP_SRAM,
226 * IWL_TM_ATTR_SRAM_DUMP for the data in sram 228 * IWL_TM_ATTR_SRAM_DUMP for the data in sram
227 * 229 *
230 * @IWL_TM_ATTR_FW_VERSION:
231 * When IWL_TM_ATTR_COMMAND is IWL_TM_CMD_APP2DEV_GET_FW_VERSION,
232 * IWL_TM_ATTR_FW_VERSION for the uCode version
233 *
228 */ 234 */
229enum iwl_tm_attr_t { 235enum iwl_tm_attr_t {
230 IWL_TM_ATTR_NOT_APPLICABLE = 0, 236 IWL_TM_ATTR_NOT_APPLICABLE = 0,
@@ -245,7 +251,8 @@ enum iwl_tm_attr_t {
245 IWL_TM_ATTR_SRAM_ADDR = 15, 251 IWL_TM_ATTR_SRAM_ADDR = 15,
246 IWL_TM_ATTR_SRAM_SIZE = 16, 252 IWL_TM_ATTR_SRAM_SIZE = 16,
247 IWL_TM_ATTR_SRAM_DUMP = 17, 253 IWL_TM_ATTR_SRAM_DUMP = 17,
248 IWL_TM_ATTR_MAX = 18, 254 IWL_TM_ATTR_FW_VERSION = 18,
255 IWL_TM_ATTR_MAX = 19,
249}; 256};
250 257
251/* uCode trace buffer */ 258/* uCode trace buffer */