Commit ee60833a authored by Eliad Peller's avatar Eliad Peller Committed by Luciano Coelho

wl12xx: mcp2.5 - add config_ps acx

mcp2.5 uses this acx to configure the fw only once, rather than
passing the params in every enter psm command.
Signed-off-by: default avatarEliad Peller <eliad@wizery.com>
Reviewed-by: default avatarLuciano Coelho <coelho@ti.com>
Signed-off-by: default avatarLuciano Coelho <coelho@ti.com>
parent 3ad97fbc
...@@ -1476,3 +1476,33 @@ int wl1271_acx_max_tx_retry(struct wl1271 *wl) ...@@ -1476,3 +1476,33 @@ int wl1271_acx_max_tx_retry(struct wl1271 *wl)
kfree(acx); kfree(acx);
return ret; return ret;
} }
int wl1271_acx_config_ps(struct wl1271 *wl)
{
struct wl1271_acx_config_ps *config_ps;
int ret;
wl1271_debug(DEBUG_ACX, "acx config ps");
config_ps = kzalloc(sizeof(*config_ps), GFP_KERNEL);
if (!config_ps) {
ret = -ENOMEM;
goto out;
}
config_ps->exit_retries = wl->conf.conn.psm_exit_retries;
config_ps->enter_retries = wl->conf.conn.psm_entry_retries;
config_ps->null_data_rate = cpu_to_le32(wl->basic_rate);
ret = wl1271_cmd_configure(wl, ACX_CONFIG_PS, config_ps,
sizeof(*config_ps));
if (ret < 0) {
wl1271_warning("acx config ps failed: %d", ret);
goto out;
}
out:
kfree(config_ps);
return ret;
}
...@@ -1136,6 +1136,15 @@ struct wl1271_acx_max_tx_retry { ...@@ -1136,6 +1136,15 @@ struct wl1271_acx_max_tx_retry {
u8 padding_1[2]; u8 padding_1[2];
} __packed; } __packed;
struct wl1271_acx_config_ps {
struct acx_header header;
u8 exit_retries;
u8 enter_retries;
u8 padding[2];
__le32 null_data_rate;
} __packed;
enum { enum {
ACX_WAKE_UP_CONDITIONS = 0x0002, ACX_WAKE_UP_CONDITIONS = 0x0002,
ACX_MEM_CFG = 0x0003, ACX_MEM_CFG = 0x0003,
...@@ -1200,6 +1209,7 @@ enum { ...@@ -1200,6 +1209,7 @@ enum {
DOT11_RTS_THRESHOLD = 0x1013, DOT11_RTS_THRESHOLD = 0x1013,
DOT11_GROUP_ADDRESS_TBL = 0x1014, DOT11_GROUP_ADDRESS_TBL = 0x1014,
ACX_PM_CONFIG = 0x1016, ACX_PM_CONFIG = 0x1016,
ACX_CONFIG_PS = 0x1017,
MAX_DOT11_IE = DOT11_GROUP_ADDRESS_TBL, MAX_DOT11_IE = DOT11_GROUP_ADDRESS_TBL,
...@@ -1269,5 +1279,6 @@ int wl1271_acx_set_ba_receiver_session(struct wl1271 *wl, u8 tid_index, u16 ssn, ...@@ -1269,5 +1279,6 @@ int wl1271_acx_set_ba_receiver_session(struct wl1271 *wl, u8 tid_index, u16 ssn,
bool enable); bool enable);
int wl1271_acx_tsf_info(struct wl1271 *wl, u64 *mactime); int wl1271_acx_tsf_info(struct wl1271 *wl, u64 *mactime);
int wl1271_acx_max_tx_retry(struct wl1271 *wl); int wl1271_acx_max_tx_retry(struct wl1271 *wl);
int wl1271_acx_config_ps(struct wl1271 *wl);
#endif /* __WL1271_ACX_H__ */ #endif /* __WL1271_ACX_H__ */
...@@ -959,6 +959,14 @@ struct conf_conn_settings { ...@@ -959,6 +959,14 @@ struct conf_conn_settings {
*/ */
u8 psm_entry_retries; u8 psm_entry_retries;
/*
* Specifies the maximum number of times to try PSM exit if it fails
* (if sending the appropriate null-func message fails.)
*
* Range 0 - 255
*/
u8 psm_exit_retries;
/* /*
* Specifies the maximum number of times to try transmit the PSM entry * Specifies the maximum number of times to try transmit the PSM entry
* null-func frame for each PSM entry attempt * null-func frame for each PSM entry attempt
......
...@@ -256,6 +256,7 @@ static struct conf_drv_settings default_conf = { ...@@ -256,6 +256,7 @@ static struct conf_drv_settings default_conf = {
.bet_enable = CONF_BET_MODE_ENABLE, .bet_enable = CONF_BET_MODE_ENABLE,
.bet_max_consecutive = 10, .bet_max_consecutive = 10,
.psm_entry_retries = 5, .psm_entry_retries = 5,
.psm_exit_retries = 255,
.psm_entry_nullfunc_retries = 3, .psm_entry_nullfunc_retries = 3,
.psm_entry_hangover_period = 1, .psm_entry_hangover_period = 1,
.keep_alive_interval = 55000, .keep_alive_interval = 55000,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment