Commit d531cf30 authored by Vidhya Govindan's avatar Vidhya Govindan Committed by John W. Linville

wl1251: Add acx command to set tbtt and dtim period

The dtim period obtained from the mac80211 is not set to the firmware.
This patch implements the acx command to set correct tbtt and dtim value
to the firmware.
Signed-off-by: default avatarVidhya Govindan <vidhya.govindan@nokia.com>
Signed-off-by: default avatarKalle Valo <kalle.valo@nokia.com>
Reviewed-by: default avatarJanne Ylalehto <janne.ylalehto@nokia.com>
Signed-off-by: default avatarLuciano Coelho <luciano.coelho@nokia.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 2410378a
...@@ -948,3 +948,31 @@ int wl1251_acx_mem_cfg(struct wl1251 *wl) ...@@ -948,3 +948,31 @@ int wl1251_acx_mem_cfg(struct wl1251 *wl)
kfree(mem_conf); kfree(mem_conf);
return ret; return ret;
} }
int wl1251_acx_wr_tbtt_and_dtim(struct wl1251 *wl, u16 tbtt, u8 dtim)
{
struct wl1251_acx_wr_tbtt_and_dtim *acx;
int ret;
wl1251_debug(DEBUG_ACX, "acx tbtt and dtim");
acx = kzalloc(sizeof(*acx), GFP_KERNEL);
if (!acx) {
ret = -ENOMEM;
goto out;
}
acx->tbtt = tbtt;
acx->dtim = dtim;
ret = wl1251_cmd_configure(wl, ACX_WR_TBTT_AND_DTIM,
acx, sizeof(*acx));
if (ret < 0) {
wl1251_warning("failed to set tbtt and dtim: %d", ret);
goto out;
}
out:
kfree(acx);
return ret;
}
...@@ -1149,6 +1149,23 @@ struct wl1251_acx_mem_map { ...@@ -1149,6 +1149,23 @@ struct wl1251_acx_mem_map {
u32 num_rx_mem_blocks; u32 num_rx_mem_blocks;
} __attribute__ ((packed)); } __attribute__ ((packed));
struct wl1251_acx_wr_tbtt_and_dtim {
struct acx_header header;
/* Time in TUs between two consecutive beacons */
u16 tbtt;
/*
* DTIM period
* For BSS: Number of TBTTs in a DTIM period (range: 1-10)
* For IBSS: value shall be set to 1
*/
u8 dtim;
u8 padding;
} __attribute__ ((packed));
/************************************************************************* /*************************************************************************
Host Interrupt Register (WiLink -> Host) Host Interrupt Register (WiLink -> Host)
...@@ -1304,5 +1321,6 @@ int wl1251_acx_statistics(struct wl1251 *wl, struct acx_statistics *stats); ...@@ -1304,5 +1321,6 @@ int wl1251_acx_statistics(struct wl1251 *wl, struct acx_statistics *stats);
int wl1251_acx_tsf_info(struct wl1251 *wl, u64 *mactime); int wl1251_acx_tsf_info(struct wl1251 *wl, u64 *mactime);
int wl1251_acx_rate_policies(struct wl1251 *wl); int wl1251_acx_rate_policies(struct wl1251 *wl);
int wl1251_acx_mem_cfg(struct wl1251 *wl); int wl1251_acx_mem_cfg(struct wl1251 *wl);
int wl1251_acx_wr_tbtt_and_dtim(struct wl1251 *wl, u16 tbtt, u8 dtim);
#endif /* __WL1251_ACX_H__ */ #endif /* __WL1251_ACX_H__ */
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