aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-sv-open.c
diff options
context:
space:
mode:
authorWey-Yi Guy <wey-yi.w.guy@intel.com>2011-05-03 21:05:12 -0400
committerWey-Yi Guy <wey-yi.w.guy@intel.com>2011-05-13 15:02:11 -0400
commit4babc358c0a1bced6bed2c9d6c77fc8803b8a22f (patch)
tree044be9a3131587b6301d1de19c54b0707fbe97e0 /drivers/net/wireless/iwlwifi/iwl-sv-open.c
parent7a4e5281d1b3335a3dc90841415390473cccebf3 (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.c26
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;