diff options
author | Wey-Yi Guy <wey-yi.w.guy@intel.com> | 2011-05-03 21:05:12 -0400 |
---|---|---|
committer | Wey-Yi Guy <wey-yi.w.guy@intel.com> | 2011-05-13 15:02:11 -0400 |
commit | 4babc358c0a1bced6bed2c9d6c77fc8803b8a22f (patch) | |
tree | 044be9a3131587b6301d1de19c54b0707fbe97e0 /drivers/net/wireless/iwlwifi/iwl-sv-open.c | |
parent | 7a4e5281d1b3335a3dc90841415390473cccebf3 (diff) |
iwlagn: add eeprom command to testmode
Add the capability to dump eeprom through testmode request
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-sv-open.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-sv-open.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-sv-open.c b/drivers/net/wireless/iwlwifi/iwl-sv-open.c index b778c3f4b84..e77ccaaf54b 100644 --- a/drivers/net/wireless/iwlwifi/iwl-sv-open.c +++ b/drivers/net/wireless/iwlwifi/iwl-sv-open.c | |||
@@ -98,6 +98,8 @@ struct nla_policy iwl_testmode_gnl_msg_policy[IWL_TM_ATTR_MAX] = { | |||
98 | [IWL_TM_ATTR_SYNC_RSP] = { .type = NLA_UNSPEC, }, | 98 | [IWL_TM_ATTR_SYNC_RSP] = { .type = NLA_UNSPEC, }, |
99 | [IWL_TM_ATTR_UCODE_RX_PKT] = { .type = NLA_UNSPEC, }, | 99 | [IWL_TM_ATTR_UCODE_RX_PKT] = { .type = NLA_UNSPEC, }, |
100 | 100 | ||
101 | [IWL_TM_ATTR_EEPROM] = { .type = NLA_UNSPEC, }, | ||
102 | |||
101 | [IWL_TM_ATTR_TRACE_ADDR] = { .type = NLA_UNSPEC, }, | 103 | [IWL_TM_ATTR_TRACE_ADDR] = { .type = NLA_UNSPEC, }, |
102 | [IWL_TM_ATTR_TRACE_DATA] = { .type = NLA_UNSPEC, }, | 104 | [IWL_TM_ATTR_TRACE_DATA] = { .type = NLA_UNSPEC, }, |
103 | 105 | ||
@@ -418,6 +420,29 @@ static int iwl_testmode_driver(struct ieee80211_hw *hw, struct nlattr **tb) | |||
418 | "Error starting the device: %d\n", status); | 420 | "Error starting the device: %d\n", status); |
419 | break; | 421 | break; |
420 | 422 | ||
423 | case IWL_TM_CMD_APP2DEV_GET_EEPROM: | ||
424 | if (priv->eeprom) { | ||
425 | skb = cfg80211_testmode_alloc_reply_skb(hw->wiphy, | ||
426 | priv->cfg->base_params->eeprom_size + 20); | ||
427 | if (!skb) { | ||
428 | IWL_DEBUG_INFO(priv, | ||
429 | "Error allocating memory\n"); | ||
430 | return -ENOMEM; | ||
431 | } | ||
432 | NLA_PUT_U32(skb, IWL_TM_ATTR_COMMAND, | ||
433 | IWL_TM_CMD_DEV2APP_EEPROM_RSP); | ||
434 | NLA_PUT(skb, IWL_TM_ATTR_EEPROM, | ||
435 | priv->cfg->base_params->eeprom_size, | ||
436 | priv->eeprom); | ||
437 | status = cfg80211_testmode_reply(skb); | ||
438 | if (status < 0) | ||
439 | IWL_DEBUG_INFO(priv, | ||
440 | "Error sending msg : %d\n", | ||
441 | status); | ||
442 | } else | ||
443 | return -EFAULT; | ||
444 | break; | ||
445 | |||
421 | default: | 446 | default: |
422 | IWL_DEBUG_INFO(priv, "Unknown testmode driver command ID\n"); | 447 | IWL_DEBUG_INFO(priv, "Unknown testmode driver command ID\n"); |
423 | return -ENOSYS; | 448 | return -ENOSYS; |
@@ -581,6 +606,7 @@ int iwl_testmode_cmd(struct ieee80211_hw *hw, void *data, int len) | |||
581 | case IWL_TM_CMD_APP2DEV_LOAD_INIT_FW: | 606 | case IWL_TM_CMD_APP2DEV_LOAD_INIT_FW: |
582 | case IWL_TM_CMD_APP2DEV_CFG_INIT_CALIB: | 607 | case IWL_TM_CMD_APP2DEV_CFG_INIT_CALIB: |
583 | case IWL_TM_CMD_APP2DEV_LOAD_RUNTIME_FW: | 608 | case IWL_TM_CMD_APP2DEV_LOAD_RUNTIME_FW: |
609 | case IWL_TM_CMD_APP2DEV_GET_EEPROM: | ||
584 | IWL_DEBUG_INFO(priv, "testmode cmd to driver\n"); | 610 | IWL_DEBUG_INFO(priv, "testmode cmd to driver\n"); |
585 | result = iwl_testmode_driver(hw, tb); | 611 | result = iwl_testmode_driver(hw, tb); |
586 | break; | 612 | break; |