Skip to content

Commit

Permalink
wl12xx: mcp2.5 - add config_ps acx
Browse files Browse the repository at this point in the history
mcp2.5 uses this acx to configure the fw only once, rather than
passing the params in every enter psm command.

Signed-off-by: Eliad Peller <eliad@wizery.com>
Reviewed-by: Luciano Coelho <coelho@ti.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
  • Loading branch information
Eliad Peller authored and Luciano Coelho committed Feb 9, 2011
1 parent 3ad97fb commit ee60833
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 0 deletions.
30 changes: 30 additions & 0 deletions drivers/net/wireless/wl12xx/acx.c
Original file line number Diff line number Diff line change
Expand Up @@ -1476,3 +1476,33 @@ int wl1271_acx_max_tx_retry(struct wl1271 *wl)
kfree(acx);
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;
}
11 changes: 11 additions & 0 deletions drivers/net/wireless/wl12xx/acx.h
Original file line number Diff line number Diff line change
Expand Up @@ -1136,6 +1136,15 @@ struct wl1271_acx_max_tx_retry {
u8 padding_1[2];
} __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 {
ACX_WAKE_UP_CONDITIONS = 0x0002,
ACX_MEM_CFG = 0x0003,
Expand Down Expand Up @@ -1200,6 +1209,7 @@ enum {
DOT11_RTS_THRESHOLD = 0x1013,
DOT11_GROUP_ADDRESS_TBL = 0x1014,
ACX_PM_CONFIG = 0x1016,
ACX_CONFIG_PS = 0x1017,

MAX_DOT11_IE = DOT11_GROUP_ADDRESS_TBL,

Expand Down Expand Up @@ -1269,5 +1279,6 @@ int wl1271_acx_set_ba_receiver_session(struct wl1271 *wl, u8 tid_index, u16 ssn,
bool enable);
int wl1271_acx_tsf_info(struct wl1271 *wl, u64 *mactime);
int wl1271_acx_max_tx_retry(struct wl1271 *wl);
int wl1271_acx_config_ps(struct wl1271 *wl);

#endif /* __WL1271_ACX_H__ */
8 changes: 8 additions & 0 deletions drivers/net/wireless/wl12xx/conf.h
Original file line number Diff line number Diff line change
Expand Up @@ -959,6 +959,14 @@ struct conf_conn_settings {
*/
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
* null-func frame for each PSM entry attempt
Expand Down
1 change: 1 addition & 0 deletions drivers/net/wireless/wl12xx/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -256,6 +256,7 @@ static struct conf_drv_settings default_conf = {
.bet_enable = CONF_BET_MODE_ENABLE,
.bet_max_consecutive = 10,
.psm_entry_retries = 5,
.psm_exit_retries = 255,
.psm_entry_nullfunc_retries = 3,
.psm_entry_hangover_period = 1,
.keep_alive_interval = 55000,
Expand Down

0 comments on commit ee60833

Please sign in to comment.