diff options
author | Hsu, Kenny <kenny.hsu@intel.com> | 2011-11-28 03:55:38 -0500 |
---|---|---|
committer | Wey-Yi Guy <wey-yi.w.guy@intel.com> | 2011-12-08 18:53:30 -0500 |
commit | e1a38fe10f998e27ce8600379d1109be33d4f9c2 (patch) | |
tree | 7fdcef9e9156c32b3812a72ec995c0353b245d40 | |
parent | e5cd9ec191e8190c3b8c55f0e0c27b7e1da040e6 (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.c | 18 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-testmode.h | 11 |
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 | */ |
123 | enum iwl_tm_cmd_t { | 124 | enum 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 | */ |
229 | enum iwl_tm_attr_t { | 235 | enum 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 */ |