aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/wireless/b43/b43.h1
-rw-r--r--drivers/net/wireless/b43/main.c9
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
3933static 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. */
3934static void b43_set_retry_limits(struct b43_wldev *dev, 3940static 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;