Skip to content

Commit

Permalink
ath6kl: add state variable depicting hw/fw state
Browse files Browse the repository at this point in the history
This way it's easier to track state changes and in the future add
more warnings about using hardware in wrong states. Currently there
are few random flags for trying to do the same, those will be cleaned
and removed in the future.

Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
  • Loading branch information
Kalle Valo committed Nov 11, 2011
1 parent 52d81a6 commit 76a9fbe
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 5 deletions.
28 changes: 23 additions & 5 deletions drivers/net/wireless/ath/ath6kl/cfg80211.c
Original file line number Diff line number Diff line change
Expand Up @@ -1671,6 +1671,8 @@ int ath6kl_cfg80211_suspend(struct ath6kl *ar,
ret);
}

ar->state = ATH6KL_STATE_DEEPSLEEP;

break;
}

Expand All @@ -1679,11 +1681,25 @@ int ath6kl_cfg80211_suspend(struct ath6kl *ar,

int ath6kl_cfg80211_resume(struct ath6kl *ar)
{
if (ar->wmi->pwr_mode != ar->wmi->saved_pwr_mode) {
if (ath6kl_wmi_powermode_cmd(ar->wmi, 0,
ar->wmi->saved_pwr_mode) != 0)
ath6kl_warn("ath6kl_sdio_resume: "
"wmi_powermode_cmd failed\n");
int ret;

switch (ar->state) {
case ATH6KL_STATE_DEEPSLEEP:
if (ar->wmi->pwr_mode != ar->wmi->saved_pwr_mode) {
ret = ath6kl_wmi_powermode_cmd(ar->wmi, 0,
ar->wmi->saved_pwr_mode);
if (ret) {
ath6kl_warn("wmi powermode command failed during resume: %d\n",
ret);
}
}

ar->state = ATH6KL_STATE_ON;

break;

default:
break;
}

return 0;
Expand Down Expand Up @@ -2254,6 +2270,8 @@ struct ath6kl *ath6kl_core_alloc(struct device *dev)
ar->sc_params.scan_ctrl_flags = DEFAULT_SCAN_CTRL_FLAGS;
ar->lrssi_roam_threshold = DEF_LRSSI_ROAM_THRESHOLD;

ar->state = ATH6KL_STATE_OFF;

memset((u8 *)ar->sta_list, 0,
AP_MAX_NUM_STA * sizeof(struct ath6kl_sta));

Expand Down
9 changes: 9 additions & 0 deletions drivers/net/wireless/ath/ath6kl/core.h
Original file line number Diff line number Diff line change
Expand Up @@ -450,9 +450,18 @@ enum ath6kl_dev_state {
FIRST_BOOT,
};

enum ath6kl_state {
ATH6KL_STATE_OFF,
ATH6KL_STATE_ON,
ATH6KL_STATE_DEEPSLEEP,
};

struct ath6kl {
struct device *dev;
struct wiphy *wiphy;

enum ath6kl_state state;

struct ath6kl_bmi bmi;
const struct ath6kl_hif_ops *hif_ops;
struct wmi *wmi;
Expand Down
4 changes: 4 additions & 0 deletions drivers/net/wireless/ath/ath6kl/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -1452,6 +1452,8 @@ int ath6kl_init_hw_start(struct ath6kl *ar)
goto err_htc_stop;
}

ar->state = ATH6KL_STATE_ON;

return 0;

err_htc_stop:
Expand Down Expand Up @@ -1480,6 +1482,8 @@ int ath6kl_init_hw_stop(struct ath6kl *ar)
if (ret)
ath6kl_warn("failed to power off hif: %d\n", ret);

ar->state = ATH6KL_STATE_OFF;

return 0;
}

Expand Down

0 comments on commit 76a9fbe

Please sign in to comment.