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: Vidhya Govindan <vidhya.govindan@nokia.com>
Signed-off-by: Kalle Valo <kalle.valo@nokia.com>
Reviewed-by: Janne Ylalehto <janne.ylalehto@nokia.com>
Signed-off-by: Luciano Coelho <luciano.coelho@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
Vidhya Govindan 2009-11-17 18:49:08 +02:00 committed by John W. Linville
parent 2410378a4c
commit d531cf303f
2 changed files with 46 additions and 0 deletions

View File

@ -948,3 +948,31 @@ int wl1251_acx_mem_cfg(struct wl1251 *wl)
kfree(mem_conf);
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;
}

View File

@ -1149,6 +1149,23 @@ struct wl1251_acx_mem_map {
u32 num_rx_mem_blocks;
} __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)
@ -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_rate_policies(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__ */