--- a/drivers/net/wireless/rt2x00/rt2800.h
+++ b/drivers/net/wireless/rt2x00/rt2800.h
-@@ -572,6 +572,7 @@
+@@ -574,6 +574,7 @@
#define PBF_SYS_CTRL 0x0400
#define PBF_SYS_CTRL_READY FIELD32(0x00000080)
#define PBF_SYS_CTRL_HOST_RAM_WRITE FIELD32(0x00010000)
/*
* HOST-MCU shared memory
-@@ -2024,6 +2025,8 @@ struct mac_iveiv_entry {
+@@ -2026,6 +2027,8 @@ struct mac_iveiv_entry {
(((__index) < 6) ? (HW_BEACON_BASE4 + ((__index - 4) * 0x0200)) : \
(HW_BEACON_BASE6 - ((__index - 6) * 0x0200))))
return HW_BEACON_BASE(index);
}
-@@ -1012,8 +1048,12 @@ void rt2800_write_beacon(struct queue_en
+@@ -1046,8 +1082,12 @@ void rt2800_write_beacon(struct queue_en
beacon_base = rt2800_hw_beacon_base(rt2x00dev, entry->entry_idx);
rt2800_shared_mem_lock(rt2x00dev);
+ rt2800_deselect_beacon_mem(rt2x00dev);
+
rt2800_shared_mem_unlock(rt2x00dev);
+ __set_bit(ENTRY_BCN_ENABLED, &entry->flags);
- /*
-@@ -1040,6 +1080,8 @@ static inline void rt2800_clear_beacon_r
+@@ -1080,6 +1120,8 @@ static inline void rt2800_clear_beacon_r
rt2800_shared_mem_lock(rt2x00dev);
/*
* For the Beacon base registers we only need to clear
* the whole TXWI which (when set to 0) will invalidate
-@@ -1048,6 +1090,8 @@ static inline void rt2800_clear_beacon_r
+@@ -1088,6 +1130,8 @@ static inline void rt2800_clear_beacon_r
for (i = 0; i < txwi_desc_size; i += sizeof(__le32))
rt2800_register_write(rt2x00dev, beacon_base + i, 0);