Browse Source

rt2x00: merge beacon setup fixes, disable unused hw beacon slots

Signed-off-by: Felix Fietkau <[email protected]>

SVN-Revision: 41016
Felix Fietkau 11 years ago
parent
commit
236e7ee239
37 changed files with 405 additions and 105 deletions
  1. 300 0
      package/kernel/mac80211/patches/300-pending_work.patch
  2. 2 2
      package/kernel/mac80211/patches/600-0002-rt2x00-rt2800lib-introduce-RT2800_HAS_HIGH_SHARED_ME.patch
  3. 17 17
      package/kernel/mac80211/patches/600-0003-rt2x00-rt2800-serialize-shared-memory-access.patch
  4. 4 4
      package/kernel/mac80211/patches/600-0004-rt2x00-rt2800lib-fix-beacon-generation-on-RT3593.patch
  5. 3 3
      package/kernel/mac80211/patches/600-0005-rt2x00-rt2800lib-add-hw_beacon_count-field-to-struct.patch
  6. 3 3
      package/kernel/mac80211/patches/600-0006-rt2x00-rt2800lib-init-additional-beacon-offset-regis.patch
  7. 1 1
      package/kernel/mac80211/patches/600-0007-rt2x00-rt2800lib-fix-max-supported-beacon-count-for-.patch
  8. 1 1
      package/kernel/mac80211/patches/600-0009-rt2x00-rt2800lib-enable-support-for-RT3883.patch
  9. 2 2
      package/kernel/mac80211/patches/600-0010-rt2x00-rt2800lib-add-rf_vals-for-RF3853.patch
  10. 2 2
      package/kernel/mac80211/patches/600-0011-rt2x00-rt2800lib-enable-VCO-calibration-for-RF3853.patch
  11. 2 2
      package/kernel/mac80211/patches/600-0012-rt2x00-rt2800lib-add-channel-configuration-function-.patch
  12. 1 1
      package/kernel/mac80211/patches/600-0013-rt2x00-rt2800lib-enable-RF3853-support.patch
  13. 3 3
      package/kernel/mac80211/patches/600-0014-rt2x00-rt2800lib-add-MAC-register-initialization-for.patch
  14. 2 2
      package/kernel/mac80211/patches/600-0016-rt2x00-rt2800lib-add-BBP-register-initialization-for.patch
  15. 2 2
      package/kernel/mac80211/patches/600-0017-rt2x00-rt2800lib-add-RFCSR-initialization-for-RT3883.patch
  16. 1 1
      package/kernel/mac80211/patches/600-0019-rt2x00-rt2800lib-force-rf-type-to-RF3853-on-RT3883.patch
  17. 6 6
      package/kernel/mac80211/patches/600-0020-rt2x00-rt2800lib-add-channel-configuration-code-for-.patch
  18. 1 1
      package/kernel/mac80211/patches/600-0021-rt2x00-rt2800lib-fix-txpower_to_dev-function-for-RT3.patch
  19. 1 1
      package/kernel/mac80211/patches/600-0022-rt2x00-rt2800lib-use-correct-txpower-calculation-fun.patch
  20. 2 2
      package/kernel/mac80211/patches/600-0023-rt2x00-rt2800lib-hardcode-txmixer-gain-values-to-zer.patch
  21. 1 1
      package/kernel/mac80211/patches/600-0026-rt2x00-rt2800lib-use-correct-beacon-count-for-RT3883.patch
  22. 1 1
      package/kernel/mac80211/patches/600-0027-rt2x00-rt2800lib-fix-antenna-configuration-for-RT388.patch
  23. 2 2
      package/kernel/mac80211/patches/600-0028-rt2x00-rt2800lib-fix-LNA-gain-configuration-for-RT38.patch
  24. 3 3
      package/kernel/mac80211/patches/600-0029-rt2x00-rt2800lib-fix-VGC-setup-for-RT3883.patch
  25. 3 3
      package/kernel/mac80211/patches/600-0030-rt2x00-rt2800lib-fix-EEPROM-LNA-validation-for-RT388.patch
  26. 1 1
      package/kernel/mac80211/patches/600-0031-rt2x00-rt2800lib-fix-txpower-compensation-for-RT3883.patch
  27. 1 1
      package/kernel/mac80211/patches/600-0032-rt2x00-rt2800lib-enable-RT2800_HAS_HIGH_SHARED_MEM-f.patch
  28. 2 2
      package/kernel/mac80211/patches/603-rt2x00-introduce-rt2x00eeprom.patch
  29. 1 1
      package/kernel/mac80211/patches/607-rt2x00-allow_disabling_bands_through_platform_data.patch
  30. 1 1
      package/kernel/mac80211/patches/608-add_platform_data_mac_addr.patch
  31. 7 7
      package/kernel/mac80211/patches/610-rt2x00-fix-rt3352-ext-pa.patch
  32. 4 4
      package/kernel/mac80211/patches/611-rt2x00-rf_vals-rt3352-xtal20.patch
  33. 1 1
      package/kernel/mac80211/patches/615-rt2x00-fix_20mhz_clk.patch
  34. 18 18
      package/kernel/mac80211/patches/616-rt2x00-support-rt5350.patch
  35. 1 1
      package/kernel/mac80211/patches/619-rt2x00-change-led-polarity-from-OF.patch
  36. 1 1
      package/kernel/mac80211/patches/620-rt2x00-add-AP+STA-support.patch
  37. 1 1
      package/kernel/mac80211/patches/620-rt2x00-rt3352-rf-id.patch

+ 300 - 0
package/kernel/mac80211/patches/300-pending_work.patch

@@ -1,3 +1,66 @@
+commit f3831a4e3903dbc1a57d5df56deb6a143fd001bc
+Author: Stanislaw Gruszka <[email protected]>
+Date:   Thu Jun 5 13:52:27 2014 +0200
+
+    rt2x00: do not initialize BCN_OFFSET registers
+    
+    We setup BCN_OFFSET{0,1} registers dynamically, don't have to
+    initialize them.
+    
+    Signed-off-by: Stanislaw Gruszka <[email protected]>
+
+commit e5c58ca7a48d4c82f282749a978052c47fd95998
+Author: Stanislaw Gruszka <[email protected]>
+Date:   Thu Jun 5 13:52:26 2014 +0200
+
+    rt2x00: change order when stop beaconing
+    
+    When no beaconing is needed, first stop beacon queue (disable beaconing
+    globally) to avoid possible sending of not prepared beacon on short
+    period after clearing beacon and before stop of BCN queue.
+    
+    Signed-off-by: Stanislaw Gruszka <[email protected]>
+
+commit 382c1b9e03f52d0cd741ef1d942cad0f649f0744
+Author: Stanislaw Gruszka <[email protected]>
+Date:   Thu Jun 5 13:52:25 2014 +0200
+
+    rt2x00: change default MAC_BSSID_DW1_BSS_BCN_NUM
+    
+    We setup MAC_BSSID_DW1_BSS_BCN_NUM dynamically when numbers of active
+    beacons increase. Change default to 0 to tell hardware that we want to
+    send only one beacon as default.
+    
+    Signed-off-by: Stanislaw Gruszka <[email protected]>
+
+commit 3b400571dd033e46fa7e76c5bb92a3ce8198afa9
+Author: Stanislaw Gruszka <[email protected]>
+Date:   Thu Jun 5 13:52:24 2014 +0200
+
+    rt2x00: change beaconing setup on RT2800
+    
+    As reported by Matthias, on 5572 chip, even if we clear up TXWI
+    of corresponding beacon, hardware still try to send it or do other
+    action that increase power consumption peak up to 1A.
+    
+    To avoid the issue, setup beaconing dynamically by configuring offsets
+    of currently active beacons and MAC_BSSID_DW1_BSS_BCN_NUM variable,
+    which limit number of beacons that hardware will try to send.
+    
+    Reported-by: Matthias Fend <[email protected]>
+    Signed-off-by: Stanislaw Gruszka <[email protected]>
+
+commit 916e591b2cc41f7e572992175ca56d866d7bc958
+Author: Stanislaw Gruszka <[email protected]>
+Date:   Thu Jun 5 13:52:23 2014 +0200
+
+    rt2x00: change beaconing locking
+    
+    This patch is needed for further changes to keep global variables
+    consistent when changing beaconing on diffrent vif's.
+    
+    Signed-off-by: Stanislaw Gruszka <[email protected]>
+
 commit 930b0dffd1731f3f418f9132faea720a23b7af61
 Author: Johannes Berg <[email protected]>
 Date:   Tue Jun 3 11:18:47 2014 +0200
@@ -384,3 +447,240 @@ Date:   Mon May 19 21:20:49 2014 +0200
  			spin_unlock(&sta->ps_lock);
  			return TX_CONTINUE;
  		}
+--- a/drivers/net/wireless/rt2x00/rt2800lib.c
++++ b/drivers/net/wireless/rt2x00/rt2800lib.c
+@@ -947,6 +947,40 @@ static inline u8 rt2800_get_beacon_offse
+ 	return BEACON_BASE_TO_OFFSET(rt2800_hw_beacon_base(rt2x00dev, index));
+ }
+ 
++static void rt2800_update_beacons_setup(struct rt2x00_dev *rt2x00dev)
++{
++	struct data_queue *queue = rt2x00dev->bcn;
++	struct queue_entry *entry;
++	int i, bcn_num = 0;
++	u64 off, reg = 0;
++	u32 bssid_dw1;
++
++	/*
++	 * Setup offsets of all active beacons in BCN_OFFSET{0,1} registers.
++	 */
++	for (i = 0; i < queue->limit; i++) {
++		entry = &queue->entries[i];
++		if (!test_bit(ENTRY_BCN_ENABLED, &entry->flags))
++			continue;
++		off = rt2800_get_beacon_offset(rt2x00dev, entry->entry_idx);
++		reg |= off << (8 * bcn_num);
++		bcn_num++;
++	}
++
++	WARN_ON_ONCE(bcn_num != rt2x00dev->intf_beaconing);
++
++	rt2800_register_write(rt2x00dev, BCN_OFFSET0, (u32) reg);
++	rt2800_register_write(rt2x00dev, BCN_OFFSET1, (u32) (reg >> 32));
++
++	/*
++	 * H/W sends up to MAC_BSSID_DW1_BSS_BCN_NUM + 1 consecutive beacons.
++	 */
++	rt2800_register_read(rt2x00dev, MAC_BSSID_DW1, &bssid_dw1);
++	rt2x00_set_field32(&bssid_dw1, MAC_BSSID_DW1_BSS_BCN_NUM,
++			   bcn_num > 0 ? bcn_num - 1 : 0);
++	rt2800_register_write(rt2x00dev, MAC_BSSID_DW1, bssid_dw1);
++}
++
+ void rt2800_write_beacon(struct queue_entry *entry, struct txentry_desc *txdesc)
+ {
+ 	struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev;
+@@ -1003,6 +1037,12 @@ void rt2800_write_beacon(struct queue_en
+ 
+ 	rt2800_register_multiwrite(rt2x00dev, beacon_base, entry->skb->data,
+ 				   entry->skb->len + padding_len);
++	__set_bit(ENTRY_BCN_ENABLED, &entry->flags);
++
++	/*
++	 * Change global beacons settings.
++	 */
++	rt2800_update_beacons_setup(rt2x00dev);
+ 
+ 	/*
+ 	 * Restore beaconing state.
+@@ -1053,8 +1093,13 @@ void rt2800_clear_beacon(struct queue_en
+ 	 * Clear beacon.
+ 	 */
+ 	rt2800_clear_beacon_register(rt2x00dev, entry->entry_idx);
++	__clear_bit(ENTRY_BCN_ENABLED, &entry->flags);
+ 
+ 	/*
++	 * Change global beacons settings.
++	 */
++	rt2800_update_beacons_setup(rt2x00dev);
++	/*
+ 	 * Restore beaconing state.
+ 	 */
+ 	rt2800_register_write(rt2x00dev, BCN_TIME_CFG, orig_reg);
+@@ -1556,7 +1601,7 @@ void rt2800_config_intf(struct rt2x00_de
+ 		if (!is_zero_ether_addr((const u8 *)conf->bssid)) {
+ 			reg = le32_to_cpu(conf->bssid[1]);
+ 			rt2x00_set_field32(&reg, MAC_BSSID_DW1_BSS_ID_MASK, 3);
+-			rt2x00_set_field32(&reg, MAC_BSSID_DW1_BSS_BCN_NUM, 7);
++			rt2x00_set_field32(&reg, MAC_BSSID_DW1_BSS_BCN_NUM, 0);
+ 			conf->bssid[1] = cpu_to_le32(reg);
+ 		}
+ 
+@@ -4517,28 +4562,6 @@ static int rt2800_init_registers(struct 
+ 	if (ret)
+ 		return ret;
+ 
+-	rt2800_register_read(rt2x00dev, BCN_OFFSET0, &reg);
+-	rt2x00_set_field32(&reg, BCN_OFFSET0_BCN0,
+-			   rt2800_get_beacon_offset(rt2x00dev, 0));
+-	rt2x00_set_field32(&reg, BCN_OFFSET0_BCN1,
+-			   rt2800_get_beacon_offset(rt2x00dev, 1));
+-	rt2x00_set_field32(&reg, BCN_OFFSET0_BCN2,
+-			   rt2800_get_beacon_offset(rt2x00dev, 2));
+-	rt2x00_set_field32(&reg, BCN_OFFSET0_BCN3,
+-			   rt2800_get_beacon_offset(rt2x00dev, 3));
+-	rt2800_register_write(rt2x00dev, BCN_OFFSET0, reg);
+-
+-	rt2800_register_read(rt2x00dev, BCN_OFFSET1, &reg);
+-	rt2x00_set_field32(&reg, BCN_OFFSET1_BCN4,
+-			   rt2800_get_beacon_offset(rt2x00dev, 4));
+-	rt2x00_set_field32(&reg, BCN_OFFSET1_BCN5,
+-			   rt2800_get_beacon_offset(rt2x00dev, 5));
+-	rt2x00_set_field32(&reg, BCN_OFFSET1_BCN6,
+-			   rt2800_get_beacon_offset(rt2x00dev, 6));
+-	rt2x00_set_field32(&reg, BCN_OFFSET1_BCN7,
+-			   rt2800_get_beacon_offset(rt2x00dev, 7));
+-	rt2800_register_write(rt2x00dev, BCN_OFFSET1, reg);
+-
+ 	rt2800_register_write(rt2x00dev, LEGACY_BASIC_RATE, 0x0000013f);
+ 	rt2800_register_write(rt2x00dev, HT_BASIC_RATE, 0x00008003);
+ 
+--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
++++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
+@@ -141,8 +141,11 @@ static void rt2x00lib_intf_scheduled_ite
+ 	if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags))
+ 		return;
+ 
+-	if (test_and_clear_bit(DELAYED_UPDATE_BEACON, &intf->delayed_flags))
++	if (test_and_clear_bit(DELAYED_UPDATE_BEACON, &intf->delayed_flags)) {
++		mutex_lock(&intf->beacon_skb_mutex);
+ 		rt2x00queue_update_beacon(rt2x00dev, vif);
++		mutex_unlock(&intf->beacon_skb_mutex);
++	}
+ }
+ 
+ static void rt2x00lib_intf_scheduled(struct work_struct *work)
+@@ -216,7 +219,7 @@ static void rt2x00lib_beaconupdate_iter(
+ 	 * never be called for USB devices.
+ 	 */
+ 	WARN_ON(rt2x00_is_usb(rt2x00dev));
+-	rt2x00queue_update_beacon_locked(rt2x00dev, vif);
++	rt2x00queue_update_beacon(rt2x00dev, vif);
+ }
+ 
+ void rt2x00lib_beacondone(struct rt2x00_dev *rt2x00dev)
+--- a/drivers/net/wireless/rt2x00/rt2x00mac.c
++++ b/drivers/net/wireless/rt2x00/rt2x00mac.c
+@@ -624,25 +624,24 @@ void rt2x00mac_bss_info_changed(struct i
+ 	 * Start/stop beaconing.
+ 	 */
+ 	if (changes & BSS_CHANGED_BEACON_ENABLED) {
++		mutex_lock(&intf->beacon_skb_mutex);
+ 		if (!bss_conf->enable_beacon && intf->enable_beacon) {
+ 			rt2x00dev->intf_beaconing--;
+ 			intf->enable_beacon = false;
+-			/*
+-			 * Clear beacon in the H/W for this vif. This is needed
+-			 * to disable beaconing on this particular interface
+-			 * and keep it running on other interfaces.
+-			 */
+-			rt2x00queue_clear_beacon(rt2x00dev, vif);
+ 
+ 			if (rt2x00dev->intf_beaconing == 0) {
+ 				/*
+ 				 * Last beaconing interface disabled
+ 				 * -> stop beacon queue.
+ 				 */
+-				mutex_lock(&intf->beacon_skb_mutex);
+ 				rt2x00queue_stop_queue(rt2x00dev->bcn);
+-				mutex_unlock(&intf->beacon_skb_mutex);
+ 			}
++			/*
++			 * Clear beacon in the H/W for this vif. This is needed
++			 * to disable beaconing on this particular interface
++			 * and keep it running on other interfaces.
++			 */
++			rt2x00queue_clear_beacon(rt2x00dev, vif);
+ 		} else if (bss_conf->enable_beacon && !intf->enable_beacon) {
+ 			rt2x00dev->intf_beaconing++;
+ 			intf->enable_beacon = true;
+@@ -658,11 +657,10 @@ void rt2x00mac_bss_info_changed(struct i
+ 				 * First beaconing interface enabled
+ 				 * -> start beacon queue.
+ 				 */
+-				mutex_lock(&intf->beacon_skb_mutex);
+ 				rt2x00queue_start_queue(rt2x00dev->bcn);
+-				mutex_unlock(&intf->beacon_skb_mutex);
+ 			}
+ 		}
++		mutex_unlock(&intf->beacon_skb_mutex);
+ 	}
+ 
+ 	/*
+--- a/drivers/net/wireless/rt2x00/rt2x00queue.c
++++ b/drivers/net/wireless/rt2x00/rt2x00queue.c
+@@ -754,8 +754,6 @@ int rt2x00queue_clear_beacon(struct rt2x
+ 	if (unlikely(!intf->beacon))
+ 		return -ENOBUFS;
+ 
+-	mutex_lock(&intf->beacon_skb_mutex);
+-
+ 	/*
+ 	 * Clean up the beacon skb.
+ 	 */
+@@ -768,13 +766,11 @@ int rt2x00queue_clear_beacon(struct rt2x
+ 	if (rt2x00dev->ops->lib->clear_beacon)
+ 		rt2x00dev->ops->lib->clear_beacon(intf->beacon);
+ 
+-	mutex_unlock(&intf->beacon_skb_mutex);
+-
+ 	return 0;
+ }
+ 
+-int rt2x00queue_update_beacon_locked(struct rt2x00_dev *rt2x00dev,
+-				     struct ieee80211_vif *vif)
++int rt2x00queue_update_beacon(struct rt2x00_dev *rt2x00dev,
++			      struct ieee80211_vif *vif)
+ {
+ 	struct rt2x00_intf *intf = vif_to_intf(vif);
+ 	struct skb_frame_desc *skbdesc;
+@@ -815,19 +811,6 @@ int rt2x00queue_update_beacon_locked(str
+ 
+ }
+ 
+-int rt2x00queue_update_beacon(struct rt2x00_dev *rt2x00dev,
+-			      struct ieee80211_vif *vif)
+-{
+-	struct rt2x00_intf *intf = vif_to_intf(vif);
+-	int ret;
+-
+-	mutex_lock(&intf->beacon_skb_mutex);
+-	ret = rt2x00queue_update_beacon_locked(rt2x00dev, vif);
+-	mutex_unlock(&intf->beacon_skb_mutex);
+-
+-	return ret;
+-}
+-
+ bool rt2x00queue_for_each_entry(struct data_queue *queue,
+ 				enum queue_index start,
+ 				enum queue_index end,
+--- a/drivers/net/wireless/rt2x00/rt2x00queue.h
++++ b/drivers/net/wireless/rt2x00/rt2x00queue.h
+@@ -353,6 +353,7 @@ struct txentry_desc {
+  */
+ enum queue_entry_flags {
+ 	ENTRY_BCN_ASSIGNED,
++	ENTRY_BCN_ENABLED,
+ 	ENTRY_OWNER_DEVICE_DATA,
+ 	ENTRY_DATA_PENDING,
+ 	ENTRY_DATA_IO_FAILED,

+ 2 - 2
package/kernel/mac80211/patches/600-0002-rt2x00-rt2800lib-introduce-RT2800_HAS_HIGH_SHARED_ME.patch

@@ -24,7 +24,7 @@ Changes since v1:
 
 --- a/drivers/net/wireless/rt2x00/rt2800lib.c
 +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
-@@ -7711,6 +7711,7 @@ static int rt2800_probe_rt(struct rt2x00
+@@ -7734,6 +7734,7 @@ static int rt2800_probe_rt(struct rt2x00
  
  int rt2800_probe_hw(struct rt2x00_dev *rt2x00dev)
  {
@@ -32,7 +32,7 @@ Changes since v1:
  	int retval;
  	u32 reg;
  
-@@ -7718,6 +7719,9 @@ int rt2800_probe_hw(struct rt2x00_dev *r
+@@ -7741,6 +7742,9 @@ int rt2800_probe_hw(struct rt2x00_dev *r
  	if (retval)
  		return retval;
  

+ 17 - 17
package/kernel/mac80211/patches/600-0003-rt2x00-rt2800-serialize-shared-memory-access.patch

@@ -69,7 +69,7 @@ Changes since v1: ---
  		rt2800_mcu_request(rt2x00dev, MCU_BOOT_SIGNAL, 0, 0, 0);
  	}
  	msleep(1);
-@@ -1001,8 +1011,10 @@ void rt2800_write_beacon(struct queue_en
+@@ -1035,8 +1045,10 @@ void rt2800_write_beacon(struct queue_en
  
  	beacon_base = rt2800_hw_beacon_base(rt2x00dev, entry->entry_idx);
  
@@ -77,10 +77,10 @@ Changes since v1: ---
  	rt2800_register_multiwrite(rt2x00dev, beacon_base, entry->skb->data,
  				   entry->skb->len + padding_len);
 +	rt2800_shared_mem_unlock(rt2x00dev);
+ 	__set_bit(ENTRY_BCN_ENABLED, &entry->flags);
  
  	/*
- 	 * Restore beaconing state.
-@@ -1026,6 +1038,8 @@ static inline void rt2800_clear_beacon_r
+@@ -1066,6 +1078,8 @@ static inline void rt2800_clear_beacon_r
  
  	beacon_base = rt2800_hw_beacon_base(rt2x00dev, index);
  
@@ -89,7 +89,7 @@ Changes since v1: ---
  	/*
  	 * For the Beacon base registers we only need to clear
  	 * the whole TXWI which (when set to 0) will invalidate
-@@ -1033,6 +1047,8 @@ static inline void rt2800_clear_beacon_r
+@@ -1073,6 +1087,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);
@@ -98,7 +98,7 @@ Changes since v1: ---
  }
  
  void rt2800_clear_beacon(struct queue_entry *entry)
-@@ -1216,7 +1232,9 @@ static void rt2800_delete_wcid_attr(stru
+@@ -1261,7 +1277,9 @@ static void rt2800_delete_wcid_attr(stru
  {
  	u32 offset;
  	offset = MAC_WCID_ATTR_ENTRY(wcid);
@@ -108,7 +108,7 @@ Changes since v1: ---
  }
  
  static void rt2800_config_wcid_attr_bssidx(struct rt2x00_dev *rt2x00dev,
-@@ -1229,11 +1247,13 @@ static void rt2800_config_wcid_attr_bssi
+@@ -1274,11 +1292,13 @@ static void rt2800_config_wcid_attr_bssi
  	 * The BSS Idx numbers is split in a main value of 3 bits,
  	 * and a extended field for adding one additional bit to the value.
  	 */
@@ -122,7 +122,7 @@ Changes since v1: ---
  }
  
  static void rt2800_config_wcid_attr_cipher(struct rt2x00_dev *rt2x00dev,
-@@ -1246,6 +1266,7 @@ static void rt2800_config_wcid_attr_ciph
+@@ -1291,6 +1311,7 @@ static void rt2800_config_wcid_attr_ciph
  
  	offset = MAC_WCID_ATTR_ENTRY(key->hw_key_idx);
  
@@ -130,7 +130,7 @@ Changes since v1: ---
  	if (crypto->cmd == SET_KEY) {
  		rt2800_register_read(rt2x00dev, offset, &reg);
  		rt2x00_set_field32(&reg, MAC_WCID_ATTRIBUTE_KEYTAB,
-@@ -1270,6 +1291,7 @@ static void rt2800_config_wcid_attr_ciph
+@@ -1315,6 +1336,7 @@ static void rt2800_config_wcid_attr_ciph
  		rt2x00_set_field32(&reg, MAC_WCID_ATTRIBUTE_RX_WIUDF, 0);
  		rt2800_register_write(rt2x00dev, offset, reg);
  	}
@@ -138,7 +138,7 @@ Changes since v1: ---
  
  	offset = MAC_IVEIV_ENTRY(key->hw_key_idx);
  
-@@ -1279,8 +1301,11 @@ static void rt2800_config_wcid_attr_ciph
+@@ -1324,8 +1346,11 @@ static void rt2800_config_wcid_attr_ciph
  	    (crypto->cipher == CIPHER_AES))
  		iveiv_entry.iv[3] |= 0x20;
  	iveiv_entry.iv[3] |= key->keyidx << 6;
@@ -150,7 +150,7 @@ Changes since v1: ---
  }
  
  int rt2800_config_shared_key(struct rt2x00_dev *rt2x00dev,
-@@ -1303,8 +1328,11 @@ int rt2800_config_shared_key(struct rt2x
+@@ -1348,8 +1373,11 @@ int rt2800_config_shared_key(struct rt2x
  		       sizeof(key_entry.rx_mic));
  
  		offset = SHARED_KEY_ENTRY(key->hw_key_idx);
@@ -162,7 +162,7 @@ Changes since v1: ---
  	}
  
  	/*
-@@ -1319,10 +1347,12 @@ int rt2800_config_shared_key(struct rt2x
+@@ -1364,10 +1392,12 @@ int rt2800_config_shared_key(struct rt2x
  
  	offset = SHARED_KEY_MODE_ENTRY(key->hw_key_idx / 8);
  
@@ -175,7 +175,7 @@ Changes since v1: ---
  
  	/*
  	 * Update WCID information
-@@ -1392,8 +1422,11 @@ int rt2800_config_pairwise_key(struct rt
+@@ -1437,8 +1467,11 @@ int rt2800_config_pairwise_key(struct rt
  		       sizeof(key_entry.rx_mic));
  
  		offset = PAIRWISE_KEY_ENTRY(key->hw_key_idx);
@@ -187,7 +187,7 @@ Changes since v1: ---
  	}
  
  	/*
-@@ -4875,14 +4908,19 @@ static int rt2800_init_registers(struct 
+@@ -4898,14 +4931,19 @@ static int rt2800_init_registers(struct 
  	/*
  	 * ASIC will keep garbage value after boot, clear encryption keys.
  	 */
@@ -207,7 +207,7 @@ Changes since v1: ---
  	}
  
  	/*
-@@ -5008,8 +5046,10 @@ static int rt2800_wait_bbp_ready(struct 
+@@ -5031,8 +5069,10 @@ static int rt2800_wait_bbp_ready(struct 
  	 * BBP was enabled after firmware was loaded,
  	 * but we need to reactivate it now.
  	 */
@@ -218,7 +218,7 @@ Changes since v1: ---
  	msleep(1);
  
  	for (i = 0; i < REGISTER_BUSY_COUNT; i++) {
-@@ -6705,11 +6745,19 @@ int rt2800_enable_radio(struct rt2x00_de
+@@ -6728,11 +6768,19 @@ int rt2800_enable_radio(struct rt2x00_de
  	/*
  	 * Send signal during boot time to initialize firmware.
  	 */
@@ -239,7 +239,7 @@ Changes since v1: ---
  	msleep(1);
  
  	/*
-@@ -7715,6 +7763,8 @@ int rt2800_probe_hw(struct rt2x00_dev *r
+@@ -7738,6 +7786,8 @@ int rt2800_probe_hw(struct rt2x00_dev *r
  	int retval;
  	u32 reg;
  
@@ -248,7 +248,7 @@ Changes since v1: ---
  	retval = rt2800_probe_rt(rt2x00dev);
  	if (retval)
  		return retval;
-@@ -7794,8 +7844,11 @@ void rt2800_get_tkip_seq(struct ieee8021
+@@ -7817,8 +7867,11 @@ void rt2800_get_tkip_seq(struct ieee8021
  	u32 offset;
  
  	offset = MAC_IVEIV_ENTRY(hw_key_idx);

+ 4 - 4
package/kernel/mac80211/patches/600-0004-rt2x00-rt2800lib-fix-beacon-generation-on-RT3593.patch

@@ -98,7 +98,7 @@ Changes since v1: ---
  	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);
@@ -109,9 +109,9 @@ Changes since v1: ---
 +	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);
  
@@ -120,7 +120,7 @@ Changes since v1: ---
  	/*
  	 * 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);
  

+ 3 - 3
package/kernel/mac80211/patches/600-0005-rt2x00-rt2800lib-add-hw_beacon_count-field-to-struct.patch

@@ -24,7 +24,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
 
 --- a/drivers/net/wireless/rt2x00/rt2800lib.c
 +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
-@@ -4583,6 +4583,7 @@ EXPORT_SYMBOL_GPL(rt2800_link_tuner);
+@@ -4628,6 +4628,7 @@ EXPORT_SYMBOL_GPL(rt2800_link_tuner);
   */
  static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
  {
@@ -32,7 +32,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
  	u32 reg;
  	u16 eeprom;
  	unsigned int i;
-@@ -4970,7 +4971,7 @@ static int rt2800_init_registers(struct 
+@@ -4993,7 +4994,7 @@ static int rt2800_init_registers(struct 
  	/*
  	 * Clear all beacons
  	 */
@@ -41,7 +41,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
  		rt2800_clear_beacon_register(rt2x00dev, i);
  
  	if (rt2x00_is_usb(rt2x00dev)) {
-@@ -7816,6 +7817,8 @@ int rt2800_probe_hw(struct rt2x00_dev *r
+@@ -7839,6 +7840,8 @@ int rt2800_probe_hw(struct rt2x00_dev *r
  	if (rt2x00_rt(rt2x00dev, RT3593))
  		__set_bit(RT2800_HAS_HIGH_SHARED_MEM, &drv_data->rt2800_flags);
  

+ 3 - 3
package/kernel/mac80211/patches/600-0006-rt2x00-rt2800lib-init-additional-beacon-offset-regis.patch

@@ -34,9 +34,9 @@ Signed-off-by: Gabor Juhos <[email protected]>
   */
 --- a/drivers/net/wireless/rt2x00/rt2800lib.c
 +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
-@@ -4617,6 +4617,30 @@ static int rt2800_init_registers(struct 
- 			   rt2800_get_beacon_offset(rt2x00dev, 7));
- 	rt2800_register_write(rt2x00dev, BCN_OFFSET1, reg);
+@@ -4640,6 +4640,30 @@ static int rt2800_init_registers(struct 
+ 	if (ret)
+ 		return ret;
  
 +	if (drv_data->hw_beacon_count == 16) {
 +		rt2800_register_read(rt2x00dev, BCN_OFFSET2, &reg);

+ 1 - 1
package/kernel/mac80211/patches/600-0007-rt2x00-rt2800lib-fix-max-supported-beacon-count-for-.patch

@@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
 
 --- a/drivers/net/wireless/rt2x00/rt2800lib.c
 +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
-@@ -7841,7 +7841,10 @@ int rt2800_probe_hw(struct rt2x00_dev *r
+@@ -7864,7 +7864,10 @@ int rt2800_probe_hw(struct rt2x00_dev *r
  	if (rt2x00_rt(rt2x00dev, RT3593))
  		__set_bit(RT2800_HAS_HIGH_SHARED_MEM, &drv_data->rt2800_flags);
  

+ 1 - 1
package/kernel/mac80211/patches/600-0009-rt2x00-rt2800lib-enable-support-for-RT3883.patch

@@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
 
 --- a/drivers/net/wireless/rt2x00/rt2800lib.c
 +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
-@@ -7811,6 +7811,7 @@ static int rt2800_probe_rt(struct rt2x00
+@@ -7834,6 +7834,7 @@ static int rt2800_probe_rt(struct rt2x00
  	case RT3390:
  	case RT3572:
  	case RT3593:

+ 2 - 2
package/kernel/mac80211/patches/600-0010-rt2x00-rt2800lib-add-rf_vals-for-RF3853.patch

@@ -31,7 +31,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
  #define RF5372				0x5372
 --- a/drivers/net/wireless/rt2x00/rt2800lib.c
 +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
-@@ -7431,6 +7431,66 @@ static const struct rf_channel rf_vals_3
+@@ -7454,6 +7454,66 @@ static const struct rf_channel rf_vals_3
  	{173, 0x61, 0, 9},
  };
  
@@ -98,7 +98,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
  static const struct rf_channel rf_vals_5592_xtal20[] = {
  	/* Channel, N, K, mod, R */
  	{1, 482, 4, 10, 3},
-@@ -7659,6 +7719,11 @@ static int rt2800_probe_hw_mode(struct r
+@@ -7682,6 +7742,11 @@ static int rt2800_probe_hw_mode(struct r
  		spec->channels = rf_vals_3x;
  		break;
  

+ 2 - 2
package/kernel/mac80211/patches/600-0011-rt2x00-rt2800lib-enable-VCO-calibration-for-RF3853.patch

@@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
 
 --- a/drivers/net/wireless/rt2x00/rt2800lib.c
 +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
-@@ -4348,6 +4348,7 @@ void rt2800_vco_calibration(struct rt2x0
+@@ -4393,6 +4393,7 @@ void rt2800_vco_calibration(struct rt2x0
  	case RF3053:
  	case RF3070:
  	case RF3290:
@@ -18,7 +18,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
  	case RF5360:
  	case RF5370:
  	case RF5372:
-@@ -7838,6 +7839,7 @@ static int rt2800_probe_hw_mode(struct r
+@@ -7861,6 +7862,7 @@ static int rt2800_probe_hw_mode(struct r
  	case RF3053:
  	case RF3070:
  	case RF3290:

+ 2 - 2
package/kernel/mac80211/patches/600-0012-rt2x00-rt2800lib-add-channel-configuration-function-.patch

@@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
 
 --- a/drivers/net/wireless/rt2x00/rt2800lib.c
 +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
-@@ -2604,6 +2604,211 @@ static void rt2800_config_channel_rf3053
+@@ -2649,6 +2649,211 @@ static void rt2800_config_channel_rf3053
  	}
  }
  
@@ -223,7 +223,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
  #define POWER_BOUND		0x27
  #define POWER_BOUND_5G		0x2b
  
-@@ -3216,6 +3421,9 @@ static void rt2800_config_channel(struct
+@@ -3261,6 +3466,9 @@ static void rt2800_config_channel(struct
  	case RF3322:
  		rt2800_config_channel_rf3322(rt2x00dev, conf, rf, info);
  		break;

+ 1 - 1
package/kernel/mac80211/patches/600-0013-rt2x00-rt2800lib-enable-RF3853-support.patch

@@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
 
 --- a/drivers/net/wireless/rt2x00/rt2800lib.c
 +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
-@@ -7397,6 +7397,7 @@ static int rt2800_init_eeprom(struct rt2
+@@ -7420,6 +7420,7 @@ static int rt2800_init_eeprom(struct rt2
  	case RF3290:
  	case RF3320:
  	case RF3322:

+ 3 - 3
package/kernel/mac80211/patches/600-0014-rt2x00-rt2800lib-add-MAC-register-initialization-for.patch

@@ -35,7 +35,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
  #define RX_FILTER_CFG			0x1400
 --- a/drivers/net/wireless/rt2x00/rt2800lib.c
 +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
-@@ -4972,6 +4972,12 @@ static int rt2800_init_registers(struct 
+@@ -4995,6 +4995,12 @@ static int rt2800_init_registers(struct 
  			rt2800_register_write(rt2x00dev, TX_SW_CFG2,
  					      0x00000000);
  		}
@@ -48,7 +48,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
  	} else if (rt2x00_rt(rt2x00dev, RT5390) ||
  		   rt2x00_rt(rt2x00dev, RT5392) ||
  		   rt2x00_rt(rt2x00dev, RT5592)) {
-@@ -5002,9 +5008,11 @@ static int rt2800_init_registers(struct 
+@@ -5025,9 +5031,11 @@ static int rt2800_init_registers(struct 
  
  	rt2800_register_read(rt2x00dev, MAX_LEN_CFG, &reg);
  	rt2x00_set_field32(&reg, MAX_LEN_CFG_MAX_MPDU, AGGREGATION_SIZE);
@@ -63,7 +63,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
  		rt2x00_set_field32(&reg, MAX_LEN_CFG_MAX_PSDU, 2);
  	else
  		rt2x00_set_field32(&reg, MAX_LEN_CFG_MAX_PSDU, 1);
-@@ -5157,6 +5165,11 @@ static int rt2800_init_registers(struct 
+@@ -5180,6 +5188,11 @@ static int rt2800_init_registers(struct 
  	reg = rt2x00_rt(rt2x00dev, RT5592) ? 0x00000082 : 0x00000002;
  	rt2800_register_write(rt2x00dev, TXOP_HLDR_ET, reg);
  

+ 2 - 2
package/kernel/mac80211/patches/600-0016-rt2x00-rt2800lib-add-BBP-register-initialization-for.patch

@@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
 
 --- a/drivers/net/wireless/rt2x00/rt2800lib.c
 +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
-@@ -5775,6 +5775,47 @@ static void rt2800_init_bbp_3593(struct 
+@@ -5798,6 +5798,47 @@ static void rt2800_init_bbp_3593(struct 
  		rt2800_bbp_write(rt2x00dev, 103, 0xc0);
  }
  
@@ -59,7 +59,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
  static void rt2800_init_bbp_53xx(struct rt2x00_dev *rt2x00dev)
  {
  	int ant, div_mode;
-@@ -5993,6 +6034,9 @@ static void rt2800_init_bbp(struct rt2x0
+@@ -6016,6 +6057,9 @@ static void rt2800_init_bbp(struct rt2x0
  	case RT3593:
  		rt2800_init_bbp_3593(rt2x00dev);
  		return;

+ 2 - 2
package/kernel/mac80211/patches/600-0017-rt2x00-rt2800lib-add-RFCSR-initialization-for-RT3883.patch

@@ -21,7 +21,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
  /*
 --- a/drivers/net/wireless/rt2x00/rt2800lib.c
 +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
-@@ -6810,6 +6810,144 @@ static void rt2800_init_rfcsr_3593(struc
+@@ -6833,6 +6833,144 @@ static void rt2800_init_rfcsr_3593(struc
  	/* TODO: enable stream mode support */
  }
  
@@ -166,7 +166,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
  static void rt2800_init_rfcsr_5390(struct rt2x00_dev *rt2x00dev)
  {
  	rt2800_rf_init_calibration(rt2x00dev, 2);
-@@ -7041,6 +7179,9 @@ static void rt2800_init_rfcsr(struct rt2
+@@ -7064,6 +7202,9 @@ static void rt2800_init_rfcsr(struct rt2
  	case RT3390:
  		rt2800_init_rfcsr_3390(rt2x00dev);
  		break;

+ 1 - 1
package/kernel/mac80211/patches/600-0019-rt2x00-rt2800lib-force-rf-type-to-RF3853-on-RT3883.patch

@@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
 
 --- a/drivers/net/wireless/rt2x00/rt2800lib.c
 +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
-@@ -7578,6 +7578,8 @@ static int rt2800_init_eeprom(struct rt2
+@@ -7601,6 +7601,8 @@ static int rt2800_init_eeprom(struct rt2
  	    rt2x00_rt(rt2x00dev, RT5390) ||
  	    rt2x00_rt(rt2x00dev, RT5392))
  		rt2800_eeprom_read(rt2x00dev, EEPROM_CHIP_ID, &rf);

+ 6 - 6
package/kernel/mac80211/patches/600-0020-rt2x00-rt2800lib-add-channel-configuration-code-for-.patch

@@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
 
 --- a/drivers/net/wireless/rt2x00/rt2800lib.c
 +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
-@@ -3384,6 +3384,36 @@ static char rt2800_txpower_to_dev(struct
+@@ -3429,6 +3429,36 @@ static char rt2800_txpower_to_dev(struct
  		return clamp_t(char, txpower, MIN_A_TXPOWER, MAX_A_TXPOWER);
  }
  
@@ -47,7 +47,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
  static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
  				  struct ieee80211_conf *conf,
  				  struct rf_channel *rf,
-@@ -3402,6 +3432,12 @@ static void rt2800_config_channel(struct
+@@ -3447,6 +3477,12 @@ static void rt2800_config_channel(struct
  			rt2800_txpower_to_dev(rt2x00dev, rf->channel,
  					      info->default_power3);
  
@@ -60,7 +60,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
  	switch (rt2x00dev->chip.rf) {
  	case RF2020:
  	case RF3020:
-@@ -3483,6 +3519,15 @@ static void rt2800_config_channel(struct
+@@ -3528,6 +3564,15 @@ static void rt2800_config_channel(struct
  		rt2800_bbp_write(rt2x00dev, 63, 0x37 - rt2x00dev->lna_gain);
  		rt2800_bbp_write(rt2x00dev, 64, 0x37 - rt2x00dev->lna_gain);
  		rt2800_bbp_write(rt2x00dev, 77, 0x98);
@@ -76,7 +76,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
  	} else {
  		rt2800_bbp_write(rt2x00dev, 62, 0x37 - rt2x00dev->lna_gain);
  		rt2800_bbp_write(rt2x00dev, 63, 0x37 - rt2x00dev->lna_gain);
-@@ -3495,6 +3540,7 @@ static void rt2800_config_channel(struct
+@@ -3540,6 +3585,7 @@ static void rt2800_config_channel(struct
  		    !rt2x00_rt(rt2x00dev, RT5392)) {
  			if (rt2x00_has_cap_external_lna_bg(rt2x00dev)) {
  				rt2800_bbp_write(rt2x00dev, 82, 0x62);
@@ -84,7 +84,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
  				rt2800_bbp_write(rt2x00dev, 75, 0x46);
  			} else {
  				if (rt2x00_rt(rt2x00dev, RT3593))
-@@ -3503,19 +3549,22 @@ static void rt2800_config_channel(struct
+@@ -3548,19 +3594,22 @@ static void rt2800_config_channel(struct
  					rt2800_bbp_write(rt2x00dev, 82, 0x84);
  				rt2800_bbp_write(rt2x00dev, 75, 0x50);
  			}
@@ -110,7 +110,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
  			rt2800_bbp_write(rt2x00dev, 83, 0x9a);
  
  		if (rt2x00_has_cap_external_lna_a(rt2x00dev))
-@@ -3640,6 +3689,23 @@ static void rt2800_config_channel(struct
+@@ -3685,6 +3734,23 @@ static void rt2800_config_channel(struct
  		usleep_range(1000, 1500);
  	}
  

+ 1 - 1
package/kernel/mac80211/patches/600-0021-rt2x00-rt2800lib-fix-txpower_to_dev-function-for-RT3.patch

@@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
 
 --- a/drivers/net/wireless/rt2x00/rt2800lib.c
 +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
-@@ -3371,13 +3371,15 @@ static char rt2800_txpower_to_dev(struct
+@@ -3416,13 +3416,15 @@ static char rt2800_txpower_to_dev(struct
  				  unsigned int channel,
  				  char txpower)
  {

+ 1 - 1
package/kernel/mac80211/patches/600-0022-rt2x00-rt2800lib-use-correct-txpower-calculation-fun.patch

@@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
 
 --- a/drivers/net/wireless/rt2x00/rt2800lib.c
 +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
-@@ -4581,7 +4581,8 @@ static void rt2800_config_txpower(struct
+@@ -4626,7 +4626,8 @@ static void rt2800_config_txpower(struct
  				  struct ieee80211_channel *chan,
  				  int power_level)
  {

+ 2 - 2
package/kernel/mac80211/patches/600-0023-rt2x00-rt2800lib-hardcode-txmixer-gain-values-to-zer.patch

@@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
 
 --- a/drivers/net/wireless/rt2x00/rt2800lib.c
 +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
-@@ -7460,7 +7460,8 @@ static u8 rt2800_get_txmixer_gain_24g(st
+@@ -7483,7 +7483,8 @@ static u8 rt2800_get_txmixer_gain_24g(st
  {
  	u16 word;
  
@@ -21,7 +21,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
  		return 0;
  
  	rt2800_eeprom_read(rt2x00dev, EEPROM_TXMIXER_GAIN_BG, &word);
-@@ -7474,7 +7475,8 @@ static u8 rt2800_get_txmixer_gain_5g(str
+@@ -7497,7 +7498,8 @@ static u8 rt2800_get_txmixer_gain_5g(str
  {
  	u16 word;
  

+ 1 - 1
package/kernel/mac80211/patches/600-0026-rt2x00-rt2800lib-use-correct-beacon-count-for-RT3883.patch

@@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
 
 --- a/drivers/net/wireless/rt2x00/rt2800lib.c
 +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
-@@ -8392,7 +8392,8 @@ int rt2800_probe_hw(struct rt2x00_dev *r
+@@ -8415,7 +8415,8 @@ int rt2800_probe_hw(struct rt2x00_dev *r
  	if (rt2x00_rt(rt2x00dev, RT3593))
  		__set_bit(RT2800_HAS_HIGH_SHARED_MEM, &drv_data->rt2800_flags);
  

+ 1 - 1
package/kernel/mac80211/patches/600-0027-rt2x00-rt2800lib-fix-antenna-configuration-for-RT388.patch

@@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
 
 --- a/drivers/net/wireless/rt2x00/rt2800lib.c
 +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
-@@ -1916,7 +1916,8 @@ void rt2800_config_ant(struct rt2x00_dev
+@@ -1961,7 +1961,8 @@ void rt2800_config_ant(struct rt2x00_dev
  	rt2800_bbp_write(rt2x00dev, 3, r3);
  	rt2800_bbp_write(rt2x00dev, 1, r1);
  

+ 2 - 2
package/kernel/mac80211/patches/600-0028-rt2x00-rt2800lib-fix-LNA-gain-configuration-for-RT38.patch

@@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
 
 --- a/drivers/net/wireless/rt2x00/rt2800lib.c
 +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
-@@ -1939,7 +1939,8 @@ static void rt2800_config_lna_gain(struc
+@@ -1984,7 +1984,8 @@ static void rt2800_config_lna_gain(struc
  		rt2800_eeprom_read(rt2x00dev, EEPROM_LNA, &eeprom);
  		lna_gain = rt2x00_get_field16(eeprom, EEPROM_LNA_A0);
  	} else if (libconf->rf.channel <= 128) {
@@ -20,7 +20,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
  			rt2800_eeprom_read(rt2x00dev, EEPROM_EXT_LNA2, &eeprom);
  			lna_gain = rt2x00_get_field16(eeprom,
  						      EEPROM_EXT_LNA2_A1);
-@@ -1949,7 +1950,8 @@ static void rt2800_config_lna_gain(struc
+@@ -1994,7 +1995,8 @@ static void rt2800_config_lna_gain(struc
  						      EEPROM_RSSI_BG2_LNA_A1);
  		}
  	} else {

+ 3 - 3
package/kernel/mac80211/patches/600-0029-rt2x00-rt2800lib-fix-VGC-setup-for-RT3883.patch

@@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
 
 --- a/drivers/net/wireless/rt2x00/rt2800lib.c
 +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
-@@ -4780,7 +4780,8 @@ static u8 rt2800_get_default_vgc(struct 
+@@ -4825,7 +4825,8 @@ static u8 rt2800_get_default_vgc(struct 
  		else
  			vgc = 0x2e + rt2x00dev->lna_gain;
  	} else { /* 5GHZ band */
@@ -20,7 +20,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
  			vgc = 0x20 + (rt2x00dev->lna_gain * 5) / 3;
  		else if (rt2x00_rt(rt2x00dev, RT5592))
  			vgc = 0x24 + (2 * rt2x00dev->lna_gain);
-@@ -4800,7 +4801,8 @@ static inline void rt2800_set_vgc(struct
+@@ -4845,7 +4846,8 @@ static inline void rt2800_set_vgc(struct
  {
  	if (qual->vgc_level != vgc_level) {
  		if (rt2x00_rt(rt2x00dev, RT3572) ||
@@ -30,7 +30,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
  			rt2800_bbp_write_with_rx_chain(rt2x00dev, 66,
  						       vgc_level);
  		} else if (rt2x00_rt(rt2x00dev, RT5592)) {
-@@ -4847,6 +4849,11 @@ void rt2800_link_tuner(struct rt2x00_dev
+@@ -4892,6 +4894,11 @@ void rt2800_link_tuner(struct rt2x00_dev
  		}
  		break;
  

+ 3 - 3
package/kernel/mac80211/patches/600-0030-rt2x00-rt2800lib-fix-EEPROM-LNA-validation-for-RT388.patch

@@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
 
 --- a/drivers/net/wireless/rt2x00/rt2800lib.c
 +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
-@@ -7597,7 +7597,8 @@ static int rt2800_validate_eeprom(struct
+@@ -7620,7 +7620,8 @@ static int rt2800_validate_eeprom(struct
  	rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_BG2, &word);
  	if (abs(rt2x00_get_field16(word, EEPROM_RSSI_BG2_OFFSET2)) > 10)
  		rt2x00_set_field16(&word, EEPROM_RSSI_BG2_OFFSET2, 0);
@@ -20,7 +20,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
  		if (rt2x00_get_field16(word, EEPROM_RSSI_BG2_LNA_A1) == 0x00 ||
  		    rt2x00_get_field16(word, EEPROM_RSSI_BG2_LNA_A1) == 0xff)
  			rt2x00_set_field16(&word, EEPROM_RSSI_BG2_LNA_A1,
-@@ -7617,7 +7618,8 @@ static int rt2800_validate_eeprom(struct
+@@ -7640,7 +7641,8 @@ static int rt2800_validate_eeprom(struct
  	rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_A2, &word);
  	if (abs(rt2x00_get_field16(word, EEPROM_RSSI_A2_OFFSET2)) > 10)
  		rt2x00_set_field16(&word, EEPROM_RSSI_A2_OFFSET2, 0);
@@ -30,7 +30,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
  		if (rt2x00_get_field16(word, EEPROM_RSSI_A2_LNA_A2) == 0x00 ||
  		    rt2x00_get_field16(word, EEPROM_RSSI_A2_LNA_A2) == 0xff)
  			rt2x00_set_field16(&word, EEPROM_RSSI_A2_LNA_A2,
-@@ -7625,7 +7627,8 @@ static int rt2800_validate_eeprom(struct
+@@ -7648,7 +7650,8 @@ static int rt2800_validate_eeprom(struct
  	}
  	rt2800_eeprom_write(rt2x00dev, EEPROM_RSSI_A2, word);
  

+ 1 - 1
package/kernel/mac80211/patches/600-0031-rt2x00-rt2800lib-fix-txpower-compensation-for-RT3883.patch

@@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
 
 --- a/drivers/net/wireless/rt2x00/rt2800lib.c
 +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
-@@ -3958,6 +3958,9 @@ static u8 rt2800_compensate_txpower(stru
+@@ -4003,6 +4003,9 @@ static u8 rt2800_compensate_txpower(stru
  	if (rt2x00_rt(rt2x00dev, RT3593))
  		return min_t(u8, txpower, 0xc);
  

+ 1 - 1
package/kernel/mac80211/patches/600-0032-rt2x00-rt2800lib-enable-RT2800_HAS_HIGH_SHARED_MEM-f.patch

@@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos <[email protected]>
 
 --- a/drivers/net/wireless/rt2x00/rt2800lib.c
 +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
-@@ -8405,7 +8405,8 @@ int rt2800_probe_hw(struct rt2x00_dev *r
+@@ -8428,7 +8428,8 @@ int rt2800_probe_hw(struct rt2x00_dev *r
  	if (retval)
  		return retval;
  

+ 2 - 2
package/kernel/mac80211/patches/603-rt2x00-introduce-rt2x00eeprom.patch

@@ -127,7 +127,7 @@
  	DECLARE_KFIFO_PTR(txstatus_fifo, u32);
 --- a/drivers/net/wireless/rt2x00/rt2x00dev.c
 +++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
-@@ -1324,6 +1324,10 @@ int rt2x00lib_probe_dev(struct rt2x00_de
+@@ -1327,6 +1327,10 @@ int rt2x00lib_probe_dev(struct rt2x00_de
  	INIT_DELAYED_WORK(&rt2x00dev->autowakeup_work, rt2x00lib_autowakeup);
  	INIT_WORK(&rt2x00dev->sleep_work, rt2x00lib_sleep);
  
@@ -138,7 +138,7 @@
  	/*
  	 * Let the driver probe the device to detect the capabilities.
  	 */
-@@ -1454,6 +1458,11 @@ void rt2x00lib_remove_dev(struct rt2x00_
+@@ -1457,6 +1461,11 @@ void rt2x00lib_remove_dev(struct rt2x00_
  	 */
  	if (rt2x00dev->drv_data)
  		kfree(rt2x00dev->drv_data);

+ 1 - 1
package/kernel/mac80211/patches/607-rt2x00-allow_disabling_bands_through_platform_data.patch

@@ -12,7 +12,7 @@
  #endif /* _RT2X00_PLATFORM_H */
 --- a/drivers/net/wireless/rt2x00/rt2x00dev.c
 +++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
-@@ -937,6 +937,22 @@ static int rt2x00lib_probe_hw_modes(stru
+@@ -940,6 +940,22 @@ static int rt2x00lib_probe_hw_modes(stru
  	unsigned int num_rates;
  	unsigned int i;
  

+ 1 - 1
package/kernel/mac80211/patches/608-add_platform_data_mac_addr.patch

@@ -10,7 +10,7 @@
  	int disable_5ghz;
 --- a/drivers/net/wireless/rt2x00/rt2x00dev.c
 +++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
-@@ -928,6 +928,18 @@ static void rt2x00lib_rate(struct ieee80
+@@ -931,6 +931,18 @@ static void rt2x00lib_rate(struct ieee80
  		entry->flags |= IEEE80211_RATE_SHORT_PREAMBLE;
  }
  

+ 7 - 7
package/kernel/mac80211/patches/610-rt2x00-fix-rt3352-ext-pa.patch

@@ -1,6 +1,6 @@
 --- a/drivers/net/wireless/rt2x00/rt2800lib.c
 +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
-@@ -3505,11 +3505,18 @@ static void rt2800_config_channel(struct
+@@ -3550,11 +3550,18 @@ static void rt2800_config_channel(struct
  	/*
  	 * Change BBP settings
  	 */
@@ -19,7 +19,7 @@
  	} else if (rt2x00_rt(rt2x00dev, RT3593)) {
  		if (rf->channel > 14) {
  			/* Disable CCK Packet detection on 5GHz */
-@@ -6585,6 +6592,12 @@ static void rt2800_init_rfcsr_3290(struc
+@@ -6608,6 +6615,12 @@ static void rt2800_init_rfcsr_3290(struc
  
  static void rt2800_init_rfcsr_3352(struct rt2x00_dev *rt2x00dev)
  {
@@ -32,7 +32,7 @@
  	rt2800_rf_init_calibration(rt2x00dev, 30);
  
  	rt2800_rfcsr_write(rt2x00dev, 0, 0xf0);
-@@ -6620,15 +6633,30 @@ static void rt2800_init_rfcsr_3352(struc
+@@ -6643,15 +6656,30 @@ static void rt2800_init_rfcsr_3352(struc
  	rt2800_rfcsr_write(rt2x00dev, 31, 0x80);
  	rt2800_rfcsr_write(rt2x00dev, 32, 0x80);
  	rt2800_rfcsr_write(rt2x00dev, 33, 0x00);
@@ -66,7 +66,7 @@
  	rt2800_rfcsr_write(rt2x00dev, 43, 0xdb);
  	rt2800_rfcsr_write(rt2x00dev, 44, 0xdb);
  	rt2800_rfcsr_write(rt2x00dev, 45, 0xdb);
-@@ -6636,15 +6664,20 @@ static void rt2800_init_rfcsr_3352(struc
+@@ -6659,15 +6687,20 @@ static void rt2800_init_rfcsr_3352(struc
  	rt2800_rfcsr_write(rt2x00dev, 47, 0x0d);
  	rt2800_rfcsr_write(rt2x00dev, 48, 0x14);
  	rt2800_rfcsr_write(rt2x00dev, 49, 0x00);
@@ -96,7 +96,7 @@
  	rt2800_rfcsr_write(rt2x00dev, 59, 0x00);
  	rt2800_rfcsr_write(rt2x00dev, 60, 0x00);
  	rt2800_rfcsr_write(rt2x00dev, 61, 0x00);
-@@ -7665,6 +7698,7 @@ static int rt2800_init_eeprom(struct rt2
+@@ -7688,6 +7721,7 @@ static int rt2800_init_eeprom(struct rt2
  	 * RT53xx: defined in "EEPROM_CHIP_ID" field
  	 */
  	if (rt2x00_rt(rt2x00dev, RT3290) ||
@@ -104,7 +104,7 @@
  	    rt2x00_rt(rt2x00dev, RT5390) ||
  	    rt2x00_rt(rt2x00dev, RT5392))
  		rt2800_eeprom_read(rt2x00dev, EEPROM_CHIP_ID, &rf);
-@@ -7759,7 +7793,8 @@ static int rt2800_init_eeprom(struct rt2
+@@ -7782,7 +7816,8 @@ static int rt2800_init_eeprom(struct rt2
  	/*
  	 * Detect if this device has Bluetooth co-existence.
  	 */
@@ -114,7 +114,7 @@
  		__set_bit(CAPABILITY_BT_COEXIST, &rt2x00dev->cap_flags);
  
  	/*
-@@ -7788,6 +7823,22 @@ static int rt2800_init_eeprom(struct rt2
+@@ -7811,6 +7846,22 @@ static int rt2800_init_eeprom(struct rt2
  					EIRP_MAX_TX_POWER_LIMIT)
  		__set_bit(CAPABILITY_POWER_LIMIT, &rt2x00dev->cap_flags);
  

+ 4 - 4
package/kernel/mac80211/patches/611-rt2x00-rf_vals-rt3352-xtal20.patch

@@ -1,6 +1,6 @@
 --- a/drivers/net/wireless/rt2x00/rt2800lib.c
 +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
-@@ -8175,6 +8175,27 @@ static const struct rf_channel rf_vals_5
+@@ -8198,6 +8198,27 @@ static const struct rf_channel rf_vals_5
  	{196, 83, 0, 12, 1},
  };
  
@@ -28,7 +28,7 @@
  static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
  {
  	struct hw_mode_spec *spec = &rt2x00dev->spec;
-@@ -8262,7 +8283,10 @@ static int rt2800_probe_hw_mode(struct r
+@@ -8285,7 +8306,10 @@ static int rt2800_probe_hw_mode(struct r
  	case RF5390:
  	case RF5392:
  		spec->num_channels = 14;
@@ -40,7 +40,7 @@
  		break;
  
  	case RF3052:
-@@ -8445,6 +8469,19 @@ static int rt2800_probe_rt(struct rt2x00
+@@ -8468,6 +8492,19 @@ static int rt2800_probe_rt(struct rt2x00
  	return 0;
  }
  
@@ -60,7 +60,7 @@
  int rt2800_probe_hw(struct rt2x00_dev *rt2x00dev)
  {
  	struct rt2800_drv_data *drv_data = rt2x00dev->drv_data;
-@@ -8487,6 +8524,15 @@ int rt2800_probe_hw(struct rt2x00_dev *r
+@@ -8510,6 +8547,15 @@ int rt2800_probe_hw(struct rt2x00_dev *r
  	rt2800_register_write(rt2x00dev, GPIO_CTRL, reg);
  
  	/*

+ 1 - 1
package/kernel/mac80211/patches/615-rt2x00-fix_20mhz_clk.patch

@@ -8,7 +8,7 @@
  
  #include "rt2x00.h"
  #include "rt2800lib.h"
-@@ -8471,13 +8472,14 @@ static int rt2800_probe_rt(struct rt2x00
+@@ -8494,13 +8495,14 @@ static int rt2800_probe_rt(struct rt2x00
  
  int rt2800_probe_clk(struct rt2x00_dev *rt2x00dev)
  {

+ 18 - 18
package/kernel/mac80211/patches/616-rt2x00-support-rt5350.patch

@@ -10,7 +10,7 @@
  #define RF5372				0x5372
 --- a/drivers/net/wireless/rt2x00/rt2800lib.c
 +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
-@@ -2993,6 +2993,13 @@ static void rt2800_config_channel_rf53xx
+@@ -3038,6 +3038,13 @@ static void rt2800_config_channel_rf53xx
  
  				rt2800_rfcsr_write(rt2x00dev, 59,
  						   r59_non_bt[idx]);
@@ -24,7 +24,7 @@
  			}
  		}
  	}
-@@ -3471,6 +3478,7 @@ static void rt2800_config_channel(struct
+@@ -3516,6 +3523,7 @@ static void rt2800_config_channel(struct
  		rt2800_config_channel_rf3853(rt2x00dev, conf, rf, info);
  		break;
  	case RF3070:
@@ -32,7 +32,7 @@
  	case RF5360:
  	case RF5370:
  	case RF5372:
-@@ -3488,6 +3496,7 @@ static void rt2800_config_channel(struct
+@@ -3533,6 +3541,7 @@ static void rt2800_config_channel(struct
  	if (rt2x00_rf(rt2x00dev, RF3070) ||
  	    rt2x00_rf(rt2x00dev, RF3290) ||
  	    rt2x00_rf(rt2x00dev, RF3322) ||
@@ -40,7 +40,7 @@
  	    rt2x00_rf(rt2x00dev, RF5360) ||
  	    rt2x00_rf(rt2x00dev, RF5370) ||
  	    rt2x00_rf(rt2x00dev, RF5372) ||
-@@ -3765,7 +3774,8 @@ static void rt2800_config_channel(struct
+@@ -3810,7 +3819,8 @@ static void rt2800_config_channel(struct
  	/*
  	 * Clear update flag
  	 */
@@ -50,7 +50,7 @@
  		rt2800_bbp_read(rt2x00dev, 49, &bbp);
  		rt2x00_set_field8(&bbp, BBP49_UPDATE_FLAG, 0);
  		rt2800_bbp_write(rt2x00dev, 49, bbp);
-@@ -4644,6 +4654,7 @@ void rt2800_vco_calibration(struct rt2x0
+@@ -4689,6 +4699,7 @@ void rt2800_vco_calibration(struct rt2x0
  	case RF3070:
  	case RF3290:
  	case RF3853:
@@ -58,7 +58,7 @@
  	case RF5360:
  	case RF5370:
  	case RF5372:
-@@ -5078,6 +5089,8 @@ static int rt2800_init_registers(struct 
+@@ -5101,6 +5112,8 @@ static int rt2800_init_registers(struct 
  		rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000404);
  		rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00080606);
  		rt2800_register_write(rt2x00dev, TX_SW_CFG2, 0x00000000);
@@ -67,7 +67,7 @@
  	} else {
  		rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000000);
  		rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00080606);
-@@ -5733,9 +5746,13 @@ static void rt2800_init_bbp_3352(struct 
+@@ -5756,9 +5769,13 @@ static void rt2800_init_bbp_3352(struct 
  
  	rt2800_bbp_write(rt2x00dev, 82, 0x62);
  
@@ -84,7 +84,7 @@
  
  	rt2800_bbp_write(rt2x00dev, 86, 0x38);
  
-@@ -5749,9 +5766,13 @@ static void rt2800_init_bbp_3352(struct 
+@@ -5772,9 +5789,13 @@ static void rt2800_init_bbp_3352(struct 
  
  	rt2800_bbp_write(rt2x00dev, 104, 0x92);
  
@@ -101,7 +101,7 @@
  
  	rt2800_bbp_write(rt2x00dev, 120, 0x50);
  
-@@ -5776,6 +5797,13 @@ static void rt2800_init_bbp_3352(struct 
+@@ -5799,6 +5820,13 @@ static void rt2800_init_bbp_3352(struct 
  	rt2800_bbp_write(rt2x00dev, 143, 0xa2);
  
  	rt2800_bbp_write(rt2x00dev, 148, 0xc8);
@@ -115,7 +115,7 @@
  }
  
  static void rt2800_init_bbp_3390(struct rt2x00_dev *rt2x00dev)
-@@ -6117,6 +6145,7 @@ static void rt2800_init_bbp(struct rt2x0
+@@ -6140,6 +6168,7 @@ static void rt2800_init_bbp(struct rt2x0
  		rt2800_init_bbp_3290(rt2x00dev);
  		break;
  	case RT3352:
@@ -123,7 +123,7 @@
  		rt2800_init_bbp_3352(rt2x00dev);
  		break;
  	case RT3390:
-@@ -7068,6 +7097,76 @@ static void rt2800_init_rfcsr_3883(struc
+@@ -7091,6 +7120,76 @@ static void rt2800_init_rfcsr_3883(struc
  	rt2800_rfcsr_write(rt2x00dev, 20, rfcsr);
  }
  
@@ -200,7 +200,7 @@
  static void rt2800_init_rfcsr_5390(struct rt2x00_dev *rt2x00dev)
  {
  	rt2800_rf_init_calibration(rt2x00dev, 2);
-@@ -7308,6 +7407,9 @@ static void rt2800_init_rfcsr(struct rt2
+@@ -7331,6 +7430,9 @@ static void rt2800_init_rfcsr(struct rt2
  	case RT3593:
  		rt2800_init_rfcsr_3593(rt2x00dev);
  		break;
@@ -210,7 +210,7 @@
  	case RT5390:
  		rt2800_init_rfcsr_5390(rt2x00dev);
  		break;
-@@ -7567,6 +7669,12 @@ static int rt2800_validate_eeprom(struct
+@@ -7590,6 +7692,12 @@ static int rt2800_validate_eeprom(struct
  		rt2x00_set_field16(&word, EEPROM_NIC_CONF0_RF_TYPE, RF2820);
  		rt2800_eeprom_write(rt2x00dev, EEPROM_NIC_CONF0, word);
  		rt2x00_eeprom_dbg(rt2x00dev, "Antenna: 0x%04x\n", word);
@@ -223,7 +223,7 @@
  	} else if (rt2x00_rt(rt2x00dev, RT2860) ||
  		   rt2x00_rt(rt2x00dev, RT2872)) {
  		/*
-@@ -7705,6 +7813,8 @@ static int rt2800_init_eeprom(struct rt2
+@@ -7728,6 +7836,8 @@ static int rt2800_init_eeprom(struct rt2
  		rt2800_eeprom_read(rt2x00dev, EEPROM_CHIP_ID, &rf);
  	else if (rt2x00_rt(rt2x00dev, RT3883))
  		rf = RF3853;
@@ -232,7 +232,7 @@
  	else
  		rf = rt2x00_get_field16(eeprom, EEPROM_NIC_CONF0_RF_TYPE);
  
-@@ -7724,6 +7834,7 @@ static int rt2800_init_eeprom(struct rt2
+@@ -7747,6 +7857,7 @@ static int rt2800_init_eeprom(struct rt2
  	case RF3320:
  	case RF3322:
  	case RF3853:
@@ -240,7 +240,7 @@
  	case RF5360:
  	case RF5370:
  	case RF5372:
-@@ -8278,6 +8389,7 @@ static int rt2800_probe_hw_mode(struct r
+@@ -8301,6 +8412,7 @@ static int rt2800_probe_hw_mode(struct r
  	case RF3290:
  	case RF3320:
  	case RF3322:
@@ -248,7 +248,7 @@
  	case RF5360:
  	case RF5370:
  	case RF5372:
-@@ -8416,6 +8528,7 @@ static int rt2800_probe_hw_mode(struct r
+@@ -8439,6 +8551,7 @@ static int rt2800_probe_hw_mode(struct r
  	case RF3070:
  	case RF3290:
  	case RF3853:
@@ -256,7 +256,7 @@
  	case RF5360:
  	case RF5370:
  	case RF5372:
-@@ -8455,6 +8568,7 @@ static int rt2800_probe_rt(struct rt2x00
+@@ -8478,6 +8591,7 @@ static int rt2800_probe_rt(struct rt2x00
  	case RT3572:
  	case RT3593:
  	case RT3883:

+ 1 - 1
package/kernel/mac80211/patches/619-rt2x00-change-led-polarity-from-OF.patch

@@ -8,7 +8,7 @@
  
  #include "rt2x00.h"
  #include "rt2800lib.h"
-@@ -7923,6 +7924,17 @@ static int rt2800_init_eeprom(struct rt2
+@@ -7946,6 +7947,17 @@ static int rt2800_init_eeprom(struct rt2
  	rt2800_init_led(rt2x00dev, &rt2x00dev->led_assoc, LED_TYPE_ASSOC);
  	rt2800_init_led(rt2x00dev, &rt2x00dev->led_qual, LED_TYPE_QUALITY);
  

+ 1 - 1
package/kernel/mac80211/patches/620-rt2x00-add-AP+STA-support.patch

@@ -1,6 +1,6 @@
 --- a/drivers/net/wireless/rt2x00/rt2x00dev.c
 +++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
-@@ -1262,7 +1262,7 @@ static inline void rt2x00lib_set_if_comb
+@@ -1265,7 +1265,7 @@ static inline void rt2x00lib_set_if_comb
  	 */
  	if_limit = &rt2x00dev->if_limits_ap;
  	if_limit->max = rt2x00dev->ops->max_ap_intf;

+ 1 - 1
package/kernel/mac80211/patches/620-rt2x00-rt3352-rf-id.patch

@@ -1,6 +1,6 @@
 --- a/drivers/net/wireless/rt2x00/rt2800lib.c
 +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
-@@ -7808,10 +7808,11 @@ static int rt2800_init_eeprom(struct rt2
+@@ -7831,10 +7831,11 @@ static int rt2800_init_eeprom(struct rt2
  	 * RT53xx: defined in "EEPROM_CHIP_ID" field
  	 */
  	if (rt2x00_rt(rt2x00dev, RT3290) ||