aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-testmode.c
diff options
context:
space:
mode:
authorKenny Hsu <kenny.hsu@intel.com>2011-12-23 23:12:12 -0500
committerWey-Yi Guy <wey-yi.w.guy@intel.com>2012-01-06 16:03:16 -0500
commitaca9b5f34352248a23c4d776afebf171e711090b (patch)
tree4bd32a0a961b85cdbd9f4c58f6bf59521df4404e /drivers/net/wireless/iwlwifi/iwl-testmode.c
parent22b48087ea4df1841c2507173c98e6b4f26fe64d (diff)
iwlwifi: add testmode cmd IWL_TM_CMD_APP2DEV_GET_FW_INFO
Add new testmode command IWL_TM_CMD_APP2DEV_GET_FW_INFO for reporting the following information of existing loaded uCode image. + uCode type + Instruction section size + Data section size Signed-off-by: Kenny Hsu <kenny.hsu@intel.com> Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-testmode.c')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-testmode.c41
1 files changed, 40 insertions, 1 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-testmode.c b/drivers/net/wireless/iwlwifi/iwl-testmode.c
index b56cd900805c..7684c0e2f21a 100644
--- a/drivers/net/wireless/iwlwifi/iwl-testmode.c
+++ b/drivers/net/wireless/iwlwifi/iwl-testmode.c
@@ -115,6 +115,9 @@ struct nla_policy iwl_testmode_gnl_msg_policy[IWL_TM_ATTR_MAX] = {
115 115
116 [IWL_TM_ATTR_FW_VERSION] = { .type = NLA_U32, }, 116 [IWL_TM_ATTR_FW_VERSION] = { .type = NLA_U32, },
117 [IWL_TM_ATTR_DEVICE_ID] = { .type = NLA_U32, }, 117 [IWL_TM_ATTR_DEVICE_ID] = { .type = NLA_U32, },
118 [IWL_TM_ATTR_FW_TYPE] = { .type = NLA_U32, },
119 [IWL_TM_ATTR_FW_INST_SIZE] = { .type = NLA_U32, },
120 [IWL_TM_ATTR_FW_DATA_SIZE] = { .type = NLA_U32, },
118}; 121};
119 122
120/* 123/*
@@ -422,7 +425,7 @@ static int iwl_testmode_driver(struct ieee80211_hw *hw, struct nlattr **tb)
422 struct sk_buff *skb; 425 struct sk_buff *skb;
423 unsigned char *rsp_data_ptr = NULL; 426 unsigned char *rsp_data_ptr = NULL;
424 int status = 0, rsp_data_len = 0; 427 int status = 0, rsp_data_len = 0;
425 u32 devid; 428 u32 devid, inst_size = 0, data_size = 0;
426 429
427 switch (nla_get_u32(tb[IWL_TM_ATTR_COMMAND])) { 430 switch (nla_get_u32(tb[IWL_TM_ATTR_COMMAND])) {
428 case IWL_TM_CMD_APP2DEV_GET_DEVICENAME: 431 case IWL_TM_CMD_APP2DEV_GET_DEVICENAME:
@@ -548,6 +551,41 @@ static int iwl_testmode_driver(struct ieee80211_hw *hw, struct nlattr **tb)
548 "Error sending msg : %d\n", status); 551 "Error sending msg : %d\n", status);
549 break; 552 break;
550 553
554 case IWL_TM_CMD_APP2DEV_GET_FW_INFO:
555 skb = cfg80211_testmode_alloc_reply_skb(hw->wiphy, 20 + 8);
556 if (!skb) {
557 IWL_DEBUG_INFO(priv, "Error allocating memory\n");
558 return -ENOMEM;
559 }
560 switch (priv->shrd->ucode_type) {
561 case IWL_UCODE_REGULAR:
562 inst_size = trans(priv)->ucode_rt.code.len;
563 data_size = trans(priv)->ucode_rt.data.len;
564 break;
565 case IWL_UCODE_INIT:
566 inst_size = trans(priv)->ucode_init.code.len;
567 data_size = trans(priv)->ucode_init.data.len;
568 break;
569 case IWL_UCODE_WOWLAN:
570 inst_size = trans(priv)->ucode_wowlan.code.len;
571 data_size = trans(priv)->ucode_wowlan.data.len;
572 break;
573 case IWL_UCODE_NONE:
574 IWL_DEBUG_INFO(priv, "The uCode has not been loaded\n");
575 break;
576 default:
577 IWL_DEBUG_INFO(priv, "Unsupported uCode type\n");
578 break;
579 }
580 NLA_PUT_U32(skb, IWL_TM_ATTR_FW_TYPE, priv->shrd->ucode_type);
581 NLA_PUT_U32(skb, IWL_TM_ATTR_FW_INST_SIZE, inst_size);
582 NLA_PUT_U32(skb, IWL_TM_ATTR_FW_DATA_SIZE, data_size);
583 status = cfg80211_testmode_reply(skb);
584 if (status < 0)
585 IWL_DEBUG_INFO(priv,
586 "Error sending msg : %d\n", status);
587 break;
588
551 default: 589 default:
552 IWL_DEBUG_INFO(priv, "Unknown testmode driver command ID\n"); 590 IWL_DEBUG_INFO(priv, "Unknown testmode driver command ID\n");
553 return -ENOSYS; 591 return -ENOSYS;
@@ -881,6 +919,7 @@ int iwlagn_mac_testmode_cmd(struct ieee80211_hw *hw, void *data, int len)
881 case IWL_TM_CMD_APP2DEV_LOAD_WOWLAN_FW: 919 case IWL_TM_CMD_APP2DEV_LOAD_WOWLAN_FW:
882 case IWL_TM_CMD_APP2DEV_GET_FW_VERSION: 920 case IWL_TM_CMD_APP2DEV_GET_FW_VERSION:
883 case IWL_TM_CMD_APP2DEV_GET_DEVICE_ID: 921 case IWL_TM_CMD_APP2DEV_GET_DEVICE_ID:
922 case IWL_TM_CMD_APP2DEV_GET_FW_INFO:
884 IWL_DEBUG_INFO(priv, "testmode cmd to driver\n"); 923 IWL_DEBUG_INFO(priv, "testmode cmd to driver\n");
885 result = iwl_testmode_driver(hw, tb); 924 result = iwl_testmode_driver(hw, tb);
886 break; 925 break;