24 lines
621 B
Diff
24 lines
621 B
Diff
|
--- a/drivers/net/wireless/brcm80211/brcmsmac/main.c
|
||
|
+++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c
|
||
|
@@ -5553,10 +5553,20 @@ static void brcms_c_time_unlock(struct b
|
||
|
|
||
|
int brcms_c_set_beacon_period(struct brcms_c_info *wlc, u16 period)
|
||
|
{
|
||
|
+ u32 bcnint_us;
|
||
|
+
|
||
|
if (period == 0)
|
||
|
return -EINVAL;
|
||
|
|
||
|
wlc->default_bss->beacon_period = period;
|
||
|
+
|
||
|
+ bcnint_us = period << 10;
|
||
|
+ brcms_c_time_lock(wlc);
|
||
|
+ bcma_write32(wlc->hw->d11core, D11REGOFFS(tsf_cfprep),
|
||
|
+ (bcnint_us << CFPREP_CBI_SHIFT));
|
||
|
+ bcma_write32(wlc->hw->d11core, D11REGOFFS(tsf_cfpstart), bcnint_us);
|
||
|
+ brcms_c_time_unlock(wlc);
|
||
|
+
|
||
|
return 0;
|
||
|
}
|
||
|
|