|
@@ -494,6 +494,7 @@ static int iwl_testmode_driver(struct ieee80211_hw *hw, struct nlattr **tb)
|
|
|
|
|
|
case IWL_TM_CMD_APP2DEV_CFG_INIT_CALIB:
|
|
|
iwl_testmode_cfg_init_calib(priv);
|
|
|
+ priv->ucode_loaded = false;
|
|
|
iwl_trans_stop_device(trans);
|
|
|
break;
|
|
|
|
|
@@ -512,6 +513,7 @@ static int iwl_testmode_driver(struct ieee80211_hw *hw, struct nlattr **tb)
|
|
|
|
|
|
case IWL_TM_CMD_APP2DEV_LOAD_WOWLAN_FW:
|
|
|
iwl_scan_cancel_timeout(priv, 200);
|
|
|
+ priv->ucode_loaded = false;
|
|
|
iwl_trans_stop_device(trans);
|
|
|
status = iwl_load_ucode_wait_alive(priv, IWL_UCODE_WOWLAN);
|
|
|
if (status) {
|
|
@@ -591,25 +593,27 @@ static int iwl_testmode_driver(struct ieee80211_hw *hw, struct nlattr **tb)
|
|
|
IWL_ERR(priv, "Memory allocation fail\n");
|
|
|
return -ENOMEM;
|
|
|
}
|
|
|
- switch (priv->shrd->ucode_type) {
|
|
|
- case IWL_UCODE_REGULAR:
|
|
|
- inst_size = priv->fw->ucode_rt.code.len;
|
|
|
- data_size = priv->fw->ucode_rt.data.len;
|
|
|
- break;
|
|
|
- case IWL_UCODE_INIT:
|
|
|
- inst_size = priv->fw->ucode_init.code.len;
|
|
|
- data_size = priv->fw->ucode_init.data.len;
|
|
|
- break;
|
|
|
- case IWL_UCODE_WOWLAN:
|
|
|
- inst_size = priv->fw->ucode_wowlan.code.len;
|
|
|
- data_size = priv->fw->ucode_wowlan.data.len;
|
|
|
- break;
|
|
|
- case IWL_UCODE_NONE:
|
|
|
+ if (!priv->ucode_loaded) {
|
|
|
IWL_ERR(priv, "No uCode has not been loaded\n");
|
|
|
- break;
|
|
|
- default:
|
|
|
- IWL_ERR(priv, "Unsupported uCode type\n");
|
|
|
- break;
|
|
|
+ return -EINVAL;
|
|
|
+ } else {
|
|
|
+ switch (priv->shrd->ucode_type) {
|
|
|
+ case IWL_UCODE_REGULAR:
|
|
|
+ inst_size = priv->fw->ucode_rt.code.len;
|
|
|
+ data_size = priv->fw->ucode_rt.data.len;
|
|
|
+ break;
|
|
|
+ case IWL_UCODE_INIT:
|
|
|
+ inst_size = priv->fw->ucode_init.code.len;
|
|
|
+ data_size = priv->fw->ucode_init.data.len;
|
|
|
+ break;
|
|
|
+ case IWL_UCODE_WOWLAN:
|
|
|
+ inst_size = priv->fw->ucode_wowlan.code.len;
|
|
|
+ data_size = priv->fw->ucode_wowlan.data.len;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ IWL_ERR(priv, "Unsupported uCode type\n");
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
NLA_PUT_U32(skb, IWL_TM_ATTR_FW_TYPE, priv->shrd->ucode_type);
|
|
|
NLA_PUT_U32(skb, IWL_TM_ATTR_FW_INST_SIZE, inst_size);
|