diff options
-rw-r--r-- | drivers/net/wireless/b43/b43.h | 1 | ||||
-rw-r--r-- | drivers/net/wireless/b43/main.c | 9 |
2 files changed, 10 insertions, 0 deletions
diff --git a/drivers/net/wireless/b43/b43.h b/drivers/net/wireless/b43/b43.h index 8ebce26ef4d0..bb12586cd7cd 100644 --- a/drivers/net/wireless/b43/b43.h +++ b/drivers/net/wireless/b43/b43.h | |||
@@ -300,6 +300,7 @@ enum { | |||
300 | #define B43_SHM_SH_LFFBLIM 0x0046 /* Long frame fallback retry limit */ | 300 | #define B43_SHM_SH_LFFBLIM 0x0046 /* Long frame fallback retry limit */ |
301 | #define B43_SHM_SH_BEACPHYCTL 0x0054 /* Beacon PHY TX control word (see PHY TX control) */ | 301 | #define B43_SHM_SH_BEACPHYCTL 0x0054 /* Beacon PHY TX control word (see PHY TX control) */ |
302 | #define B43_SHM_SH_EXTNPHYCTL 0x00B0 /* Extended bytes for beacon PHY control (N) */ | 302 | #define B43_SHM_SH_EXTNPHYCTL 0x00B0 /* Extended bytes for beacon PHY control (N) */ |
303 | #define B43_SHM_SH_BCN_LI 0x00B6 /* beacon listen interval */ | ||
303 | /* SHM_SHARED ACK/CTS control */ | 304 | /* SHM_SHARED ACK/CTS control */ |
304 | #define B43_SHM_SH_ACKCTSPHYCTL 0x0022 /* ACK/CTS PHY control word (see PHY TX control) */ | 305 | #define B43_SHM_SH_ACKCTSPHYCTL 0x0022 /* ACK/CTS PHY control word (see PHY TX control) */ |
305 | /* SHM_SHARED probe response variables */ | 306 | /* SHM_SHARED probe response variables */ |
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c index 76cae3154ab3..5d4173ee55bc 100644 --- a/drivers/net/wireless/b43/main.c +++ b/drivers/net/wireless/b43/main.c | |||
@@ -3930,6 +3930,12 @@ static int b43_switch_band(struct b43_wldev *dev, | |||
3930 | return 0; | 3930 | return 0; |
3931 | } | 3931 | } |
3932 | 3932 | ||
3933 | static void b43_set_beacon_listen_interval(struct b43_wldev *dev, u16 interval) | ||
3934 | { | ||
3935 | interval = min_t(u16, interval, (u16)0xFF); | ||
3936 | b43_shm_write16(dev, B43_SHM_SHARED, B43_SHM_SH_BCN_LI, interval); | ||
3937 | } | ||
3938 | |||
3933 | /* Write the short and long frame retry limit values. */ | 3939 | /* Write the short and long frame retry limit values. */ |
3934 | static void b43_set_retry_limits(struct b43_wldev *dev, | 3940 | static void b43_set_retry_limits(struct b43_wldev *dev, |
3935 | unsigned int short_retry, | 3941 | unsigned int short_retry, |
@@ -3958,6 +3964,9 @@ static int b43_op_config(struct ieee80211_hw *hw, u32 changed) | |||
3958 | mutex_lock(&wl->mutex); | 3964 | mutex_lock(&wl->mutex); |
3959 | b43_mac_suspend(dev); | 3965 | b43_mac_suspend(dev); |
3960 | 3966 | ||
3967 | if (changed & IEEE80211_CONF_CHANGE_LISTEN_INTERVAL) | ||
3968 | b43_set_beacon_listen_interval(dev, conf->listen_interval); | ||
3969 | |||
3961 | if (changed & IEEE80211_CONF_CHANGE_CHANNEL) { | 3970 | if (changed & IEEE80211_CONF_CHANGE_CHANNEL) { |
3962 | phy->chandef = &conf->chandef; | 3971 | phy->chandef = &conf->chandef; |
3963 | phy->channel = conf->chandef.chan->hw_value; | 3972 | phy->channel = conf->chandef.chan->hw_value; |