r85 - tarballs unstable/rt2x00/debian unstable/rt2x00/debian/patches

benh at alioth.debian.org benh at alioth.debian.org
Mon Nov 12 00:28:05 UTC 2007


Author: benh
Date: 2007-11-12 00:28:05 +0000 (Mon, 12 Nov 2007)
New Revision: 85

Added:
   tarballs/rt2x00_2.0.12+git20071103.orig.tar.gz
Removed:
   unstable/rt2x00/debian/patches/005_fix_probe_148f_2573.diff
Modified:
   unstable/rt2x00/debian/changelog
   unstable/rt2x00/debian/patches/002_out_of_tree.diff
   unstable/rt2x00/debian/patches/003_workaround_mac80211_changes.diff
   unstable/rt2x00/debian/patches/004_fix_filter_flags.diff
   unstable/rt2x00/debian/patches/series
Log:
Made a new snapshot from git, roughly matching the version merged into Linux 2.6.24.
Updated patches.
Added suggestion of pending firmware packages for drivers that need firmware.


Added: tarballs/rt2x00_2.0.12+git20071103.orig.tar.gz
===================================================================
(Binary files differ)


Property changes on: tarballs/rt2x00_2.0.12+git20071103.orig.tar.gz
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: unstable/rt2x00/debian/changelog
===================================================================
--- unstable/rt2x00/debian/changelog	2007-11-12 00:03:11 UTC (rev 84)
+++ unstable/rt2x00/debian/changelog	2007-11-12 00:28:05 UTC (rev 85)
@@ -1,3 +1,10 @@
+rt2x00 (2.0.12+git20071103-1) unstable; urgency=low
+
+  * New version from git
+  * Added suggestion of firmware packages needed for some drivers
+
+ -- Ben Hutchings <ben at decadent.org.uk>  Sun, 04 Nov 2007 23:16:53 +0000
+
 rt2x00 (2.0.9-2) unstable; urgency=low
 
   * Fixed probing for USB devices with ambiguous id

Modified: unstable/rt2x00/debian/patches/002_out_of_tree.diff
===================================================================
--- unstable/rt2x00/debian/patches/002_out_of_tree.diff	2007-11-12 00:03:11 UTC (rev 84)
+++ unstable/rt2x00/debian/patches/002_out_of_tree.diff	2007-11-12 00:28:05 UTC (rev 85)
@@ -64,7 +64,7 @@
 +CONFIG_RT2X00_DEBUG=y
 --- rt2x00.orig/drivers/net/wireless/rt2x00/rt2x00.h
 +++ rt2x00/drivers/net/wireless/rt2x00/rt2x00.h
-@@ -38,6 +38,8 @@
+@@ -39,6 +39,8 @@
  #include "rt2x00reg.h"
  #include "rt2x00ring.h"
  

Modified: unstable/rt2x00/debian/patches/003_workaround_mac80211_changes.diff
===================================================================
--- unstable/rt2x00/debian/patches/003_workaround_mac80211_changes.diff	2007-11-12 00:03:11 UTC (rev 84)
+++ unstable/rt2x00/debian/patches/003_workaround_mac80211_changes.diff	2007-11-12 00:28:05 UTC (rev 85)
@@ -1,21 +1,23 @@
 --- rt2x00.orig/drivers/net/wireless/rt2x00/rt2x00.h
 +++ rt2x00/drivers/net/wireless/rt2x00/rt2x00.h
-@@ -31,6 +31,7 @@
- #include <linux/skbuff.h>
+@@ -32,6 +32,7 @@
  #include <linux/workqueue.h>
  #include <linux/firmware.h>
+ #include <linux/mutex.h>
 +#include <linux/version.h>
  
  #include <net/mac80211.h>
  
-@@ -40,6 +41,76 @@
+@@ -41,6 +42,86 @@
  
  #include "config.h"
  
 +/* Version compatibility workarounds */
 +
 +#ifndef IEEE80211_TXCTL_LONG_RETRY_LIMIT
++
 +#define IEEE80211_TXCTL_LONG_RETRY_LIMIT 0
++
 +/* These were changed around the same time as
 + * IEEE80211_TXCTL_LONG_RETRY_LIMIT was added in wireless-dev, but we
 + * can't detect this change directly using the preprocessor
@@ -24,8 +26,16 @@
 +	ieee80211_rts_get(hw, frame, frame_len, frame_txctl, rts)
 +#define ieee80211_ctstoself_get(hw, if_id, frame, frame_len, frame_txctl, cts) \
 +	ieee80211_ctstoself_get(hw, frame, frame_len, frame_txctl, cts)
-+#endif
 +
++/* erp_ie_changed was added around the same time. */
++#define RT2X00_SYNTHESISE_ERP_IE_CHANGED
++enum ieee80211_erp_change_flags {
++	IEEE80211_ERP_CHANGE_PROTECTION = 1<<0,
++	IEEE80211_ERP_CHANGE_PREAMBLE   = 1<<1,
++};
++
++#endif /* !IEEE80211_TXCTL_LONG_RETRY_LIMIT */
++
 +/* These negative capability flags have been removed in wireless-dev */
 +#ifndef IEEE80211_HW_HOST_GEN_BEACON
 +#define IEEE80211_HW_HOST_GEN_BEACON 0
@@ -85,7 +95,16 @@
  /*
   * Module information.
   * DRV_NAME should be set within the individual module source files.
-@@ -315,6 +386,19 @@
+@@ -375,7 +456,7 @@
+ 	 * When set to INVALID_INTERFACE, no interface is configured.
+ 	 */
+ 	int type;
+-#define INVALID_INTERFACE	IEEE80211_IF_TYPE_INVALID
++#define INVALID_INTERFACE	(IEEE80211_IF_TYPE_AP - 1)
+ 
+ 	/*
+ 	 * MAC of the device.
+@@ -391,6 +472,19 @@
  	 * Store the packet filter mode for the current interface.
  	 */
  	unsigned int filter;
@@ -105,7 +124,7 @@
  };
  
  /* Magic filter for configure_filter to apply existing filter */
-@@ -332,6 +416,13 @@
+@@ -408,6 +502,13 @@
  	return intf->type == type;
  }
  
@@ -119,22 +138,40 @@
  /*
   * Details about the supported modes, rates and channels
   * of a particular chipset. This is used by rt2x00lib
-@@ -417,8 +508,12 @@
+@@ -450,6 +551,9 @@
+ 	int phymode;
+ 
+ 	int basic_rates;
++#ifdef RT2X00_SYNTHESISE_ERP_IE_CHANGED
++	int preamble;
++#endif
+ 	int slot_time;
+ 
+ 	short sifs;
+@@ -520,6 +624,12 @@
  	 */
- 	void (*config_mac_addr) (struct rt2x00_dev *rt2x00dev, u8 *mac);
- 	void (*config_bssid) (struct rt2x00_dev *rt2x00dev, u8 *bssid);
--	void (*config_packet_filter) (struct rt2x00_dev *rt2x00dev,
--				      const unsigned int filter);
+ 	void (*config_mac_addr) (struct rt2x00_dev *rt2x00dev, __le32 *mac);
+ 	void (*config_bssid) (struct rt2x00_dev *rt2x00dev, __le32 *bssid);
 +#ifdef RT2X00_ADAPT_OLD_FILTER_API
 +	void (*configure_filter) (struct ieee80211_hw *hw,
 +				  unsigned int changed_flags,
 +				  unsigned int *total_flags,
 +				  int mc_count, struct dev_addr_list *mc_list);
 +#endif
- 	void (*config_type) (struct rt2x00_dev *rt2x00dev, const int type);
- 	void (*config) (struct rt2x00_dev *rt2x00dev, const unsigned int flags,
- 			struct ieee80211_conf *conf);
-@@ -768,7 +863,11 @@
+ 	void (*config_type) (struct rt2x00_dev *rt2x00dev, const int type,
+ 							   const int tsf_sync);
+ 	void (*config_preamble) (struct rt2x00_dev *rt2x00dev,
+@@ -744,7 +854,9 @@
+ 	 */
+ 	struct work_struct beacon_work;
+ 	struct work_struct filter_work;
++#ifndef RT2X00_SYNTHESISE_ERP_IE_CHANGED
+ 	struct work_struct config_work;
++#endif
+ 
+ 	/*
+ 	 * Data ring arrays for RX, TX and Beacon.
+@@ -915,7 +1027,11 @@
  int rt2x00mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb,
  		 struct ieee80211_tx_control *control);
  int rt2x00mac_start(struct ieee80211_hw *hw);
@@ -146,7 +183,7 @@
  int rt2x00mac_add_interface(struct ieee80211_hw *hw,
  			    struct ieee80211_if_init_conf *conf);
  void rt2x00mac_remove_interface(struct ieee80211_hw *hw,
-@@ -776,6 +875,10 @@
+@@ -923,6 +1039,10 @@
  int rt2x00mac_config(struct ieee80211_hw *hw, struct ieee80211_conf *conf);
  int rt2x00mac_config_interface(struct ieee80211_hw *hw, int if_id,
  			       struct ieee80211_if_conf *conf);
@@ -159,7 +196,7 @@
  int rt2x00mac_get_tx_stats(struct ieee80211_hw *hw,
 --- rt2x00.orig/drivers/net/wireless/rt2x00/rt2400pci.c
 +++ rt2x00/drivers/net/wireless/rt2x00/rt2400pci.c
-@@ -296,8 +296,13 @@
+@@ -284,8 +284,13 @@
  	 * Enable synchronisation.
  	 */
  	rt2x00pci_register_read(rt2x00dev, CSR14, &reg);
@@ -173,9 +210,25 @@
 +		rt2x00_set_field32(&reg, CSR14_TBCN, 1);
 +	}
  	rt2x00_set_field32(&reg, CSR14_BEACON_GEN, 0);
- 	if (is_interface_type(intf, IEEE80211_IF_TYPE_IBSS) ||
- 	    is_interface_type(intf, IEEE80211_IF_TYPE_AP))
-@@ -1415,7 +1420,14 @@
+ 	rt2x00_set_field32(&reg, CSR14_TSF_SYNC, tsf_sync);
+ 	rt2x00pci_register_write(rt2x00dev, CSR14, reg);
+@@ -489,8 +494,14 @@
+ 			     const unsigned int flags,
+ 			     struct rt2x00lib_conf *libconf)
+ {
+-	if (flags & CONFIG_UPDATE_PHYMODE)
++	if (flags & CONFIG_UPDATE_PHYMODE) {
+ 		rt2400pci_config_phymode(rt2x00dev, libconf->basic_rates);
++#ifdef RT2X00_SYNTHESISE_ERP_IE_CHANGED
++		rt2x00mac_erp_ie_changed(rt2x00dev->hw,
++					 IEEE80211_ERP_CHANGE_PREAMBLE,
++					 0, libconf->preamble);
++#endif
++	}
+ 	if (flags & CONFIG_UPDATE_CHANNEL)
+ 		rt2400pci_config_channel(rt2x00dev, &libconf->rf);
+ 	if (flags & CONFIG_UPDATE_TXPOWER)
+@@ -1369,7 +1380,14 @@
  	/*
  	 * Initialize all hw fields.
  	 */
@@ -191,7 +244,7 @@
  	rt2x00dev->hw->extra_tx_headroom = 0;
  	rt2x00dev->hw->max_signal = MAX_SIGNAL;
  	rt2x00dev->hw->max_rssi = MAX_RX_SSI;
-@@ -1616,13 +1628,19 @@
+@@ -1570,16 +1588,24 @@
  
  static const struct ieee80211_ops rt2400pci_mac80211_ops = {
  	.tx			= rt2x00mac_tx,
@@ -210,8 +263,13 @@
 +#endif
  	.get_stats		= rt2x00mac_get_stats,
  	.set_retry_limit	= rt2400pci_set_retry_limit,
++#ifndef RT2X00_SYNTHESISE_ERP_IE_CHANGED
+ 	.erp_ie_changed		= rt2x00mac_erp_ie_changed,
++#endif
  	.conf_tx		= rt2400pci_conf_tx,
-@@ -1651,6 +1669,9 @@
+ 	.get_tx_stats		= rt2x00mac_get_tx_stats,
+ 	.get_tsf		= rt2400pci_get_tsf,
+@@ -1604,6 +1630,9 @@
  	.fill_rxdone		= rt2400pci_fill_rxdone,
  	.config_mac_addr	= rt2400pci_config_mac_addr,
  	.config_bssid		= rt2400pci_config_bssid,
@@ -219,11 +277,11 @@
 +	.configure_filter	= rt2400pci_configure_filter,
 +#endif
  	.config_type		= rt2400pci_config_type,
+ 	.config_preamble	= rt2400pci_config_preamble,
  	.config			= rt2400pci_config,
- };
 --- rt2x00.orig/drivers/net/wireless/rt2x00/rt2500pci.c
 +++ rt2x00/drivers/net/wireless/rt2x00/rt2500pci.c
-@@ -300,8 +300,13 @@
+@@ -288,8 +288,13 @@
  	 * Enable synchronisation.
  	 */
  	rt2x00pci_register_read(rt2x00dev, CSR14, &reg);
@@ -237,9 +295,25 @@
 +		rt2x00_set_field32(&reg, CSR14_TBCN, 1);
 +	}
  	rt2x00_set_field32(&reg, CSR14_BEACON_GEN, 0);
- 	if (is_interface_type(intf, IEEE80211_IF_TYPE_IBSS) ||
- 	    is_interface_type(intf, IEEE80211_IF_TYPE_AP))
-@@ -1729,7 +1734,14 @@
+ 	rt2x00_set_field32(&reg, CSR14_TSF_SYNC, tsf_sync);
+ 	rt2x00pci_register_write(rt2x00dev, CSR14, reg);
+@@ -538,8 +543,14 @@
+ 			     const unsigned int flags,
+ 			     struct rt2x00lib_conf *libconf)
+ {
+-	if (flags & CONFIG_UPDATE_PHYMODE)
++	if (flags & CONFIG_UPDATE_PHYMODE) {
+ 		rt2500pci_config_phymode(rt2x00dev, libconf->basic_rates);
++#ifdef RT2X00_SYNTHESISE_ERP_IE_CHANGED
++		rt2x00mac_erp_ie_changed(rt2x00dev->hw,
++					 IEEE80211_ERP_CHANGE_PREAMBLE,
++					 0, libconf->preamble);
++#endif
++	}
+ 	if (flags & CONFIG_UPDATE_CHANNEL)
+ 		rt2500pci_config_channel(rt2x00dev, &libconf->rf,
+ 					 libconf->conf->power_level);
+@@ -1664,7 +1675,14 @@
  	/*
  	 * Initialize all hw fields.
  	 */
@@ -255,7 +329,7 @@
  	rt2x00dev->hw->extra_tx_headroom = 0;
  	rt2x00dev->hw->max_signal = MAX_SIGNAL;
  	rt2x00dev->hw->max_rssi = MAX_RX_SSI;
-@@ -1928,13 +1940,19 @@
+@@ -1863,16 +1881,24 @@
  
  static const struct ieee80211_ops rt2500pci_mac80211_ops = {
  	.tx			= rt2x00mac_tx,
@@ -274,8 +348,13 @@
 +#endif
  	.get_stats		= rt2x00mac_get_stats,
  	.set_retry_limit	= rt2500pci_set_retry_limit,
++#ifndef RT2X00_SYNTHESISE_ERP_IE_CHANGED
+ 	.erp_ie_changed		= rt2x00mac_erp_ie_changed,
++#endif
  	.conf_tx		= rt2x00mac_conf_tx,
-@@ -1963,6 +1981,9 @@
+ 	.get_tx_stats		= rt2x00mac_get_tx_stats,
+ 	.get_tsf		= rt2500pci_get_tsf,
+@@ -1897,6 +1923,9 @@
  	.fill_rxdone		= rt2500pci_fill_rxdone,
  	.config_mac_addr	= rt2500pci_config_mac_addr,
  	.config_bssid		= rt2500pci_config_bssid,
@@ -283,11 +362,11 @@
 +	.configure_filter	= rt2500pci_configure_filter,
 +#endif
  	.config_type		= rt2500pci_config_type,
+ 	.config_preamble	= rt2500pci_config_preamble,
  	.config			= rt2500pci_config,
- };
 --- rt2x00.orig/drivers/net/wireless/rt2x00/rt2500usb.c
 +++ rt2x00/drivers/net/wireless/rt2x00/rt2500usb.c
-@@ -309,8 +309,13 @@
+@@ -331,8 +331,13 @@
  	rt2500usb_register_write(rt2x00dev, TXRX_CSR18, reg);
  
  	rt2500usb_register_read(rt2x00dev, TXRX_CSR19, &reg);
@@ -301,9 +380,42 @@
 +	       rt2x00_set_field16(&reg, TXRX_CSR19_TBCN, 1);
 +	}
  	rt2x00_set_field16(&reg, TXRX_CSR19_BEACON_GEN, 0);
- 	if (is_interface_type(intf, IEEE80211_IF_TYPE_IBSS) ||
- 	    is_interface_type(intf, IEEE80211_IF_TYPE_AP))
-@@ -1501,7 +1506,12 @@
+ 	rt2x00_set_field16(&reg, TXRX_CSR19_TSF_SYNC, tsf_sync);
+ 	rt2500usb_register_write(rt2x00dev, TXRX_CSR19, reg);
+@@ -345,6 +350,7 @@
+ {
+ 	u16 reg;
+ 
++#ifndef RT2X00_SYNTHESISE_ERP_IE_CHANGED
+ 	/*
+ 	 * When in atomic context, reschedule and let rt2x00lib
+ 	 * call this function again.
+@@ -353,6 +359,7 @@
+ 		queue_work(rt2x00dev->hw->workqueue, &rt2x00dev->config_work);
+ 		return;
+ 	}
++#endif
+ 
+ 	rt2500usb_register_read(rt2x00dev, TXRX_CSR1, &reg);
+ 	rt2x00_set_field16(&reg, TXRX_CSR1_ACK_TIMEOUT, ack_timeout);
+@@ -525,9 +532,15 @@
+ 			     const unsigned int flags,
+ 			     struct rt2x00lib_conf *libconf)
+ {
+-	if (flags & CONFIG_UPDATE_PHYMODE)
++	if (flags & CONFIG_UPDATE_PHYMODE) {
+ 		rt2500usb_config_phymode(rt2x00dev, libconf->phymode,
+ 					 libconf->basic_rates);
++#ifdef RT2X00_SYNTHESISE_ERP_IE_CHANGED
++		rt2x00mac_erp_ie_changed(rt2x00dev->hw,
++					 IEEE80211_ERP_CHANGE_PREAMBLE,
++					 0, libconf->preamble);
++#endif
++	}
+ 	if (flags & CONFIG_UPDATE_CHANNEL)
+ 		rt2500usb_config_channel(rt2x00dev, &libconf->rf,
+ 					 libconf->conf->power_level);
+@@ -1523,7 +1536,12 @@
  	rt2x00dev->hw->flags =
  	    IEEE80211_HW_HOST_GEN_BEACON_TEMPLATE |
  	    IEEE80211_HW_RX_INCLUDES_FCS |
@@ -317,7 +429,7 @@
  	rt2x00dev->hw->extra_tx_headroom = TXD_DESC_SIZE;
  	rt2x00dev->hw->max_signal = MAX_SIGNAL;
  	rt2x00dev->hw->max_rssi = MAX_RX_SSI;
-@@ -1746,13 +1756,19 @@
+@@ -1764,15 +1782,23 @@
  
  static const struct ieee80211_ops rt2500usb_mac80211_ops = {
  	.tx			= rt2x00mac_tx,
@@ -335,9 +447,13 @@
  	.configure_filter	= rt2500usb_configure_filter,
 +#endif
  	.get_stats		= rt2x00mac_get_stats,
++#ifndef RT2X00_SYNTHESISE_ERP_IE_CHANGED
+ 	.erp_ie_changed		= rt2x00mac_erp_ie_changed,
++#endif
  	.conf_tx		= rt2x00mac_conf_tx,
  	.get_tx_stats		= rt2x00mac_get_tx_stats,
-@@ -1773,6 +1789,9 @@
+ 	.beacon_update		= rt2500usb_beacon_update,
+@@ -1793,6 +1819,9 @@
  	.fill_rxdone		= rt2500usb_fill_rxdone,
  	.config_mac_addr	= rt2500usb_config_mac_addr,
  	.config_bssid		= rt2500usb_config_bssid,
@@ -345,11 +461,27 @@
 +	.configure_filter	= rt2500usb_configure_filter,
 +#endif
  	.config_type		= rt2500usb_config_type,
+ 	.config_preamble	= rt2500usb_config_preamble,
  	.config			= rt2500usb_config,
- };
 --- rt2x00.orig/drivers/net/wireless/rt2x00/rt61pci.c
 +++ rt2x00/drivers/net/wireless/rt2x00/rt61pci.c
-@@ -2289,7 +2289,12 @@
+@@ -674,8 +674,14 @@
+ 			   const unsigned int flags,
+ 			   struct rt2x00lib_conf *libconf)
+ {
+-	if (flags & CONFIG_UPDATE_PHYMODE)
++	if (flags & CONFIG_UPDATE_PHYMODE) {
+ 		rt61pci_config_phymode(rt2x00dev, libconf->basic_rates);
++#ifdef RT2X00_SYNTHESISE_ERP_IE_CHANGED
++		rt2x00mac_erp_ie_changed(rt2x00dev->hw,
++					 IEEE80211_ERP_CHANGE_PREAMBLE,
++					 0, libconf->preamble);
++#endif
++	}
+ 	if (flags & CONFIG_UPDATE_CHANNEL)
+ 		rt61pci_config_channel(rt2x00dev, &libconf->rf,
+ 				       libconf->conf->power_level);
+@@ -2209,7 +2215,12 @@
  	 */
  	rt2x00dev->hw->flags =
  	    IEEE80211_HW_HOST_GEN_BEACON_TEMPLATE |
@@ -363,7 +495,7 @@
  	rt2x00dev->hw->extra_tx_headroom = 0;
  	rt2x00dev->hw->max_signal = MAX_SIGNAL;
  	rt2x00dev->hw->max_rssi = MAX_RX_SSI;
-@@ -2521,13 +2526,19 @@
+@@ -2444,16 +2455,24 @@
  
  static const struct ieee80211_ops rt61pci_mac80211_ops = {
  	.tx			= rt2x00mac_tx,
@@ -382,8 +514,13 @@
 +#endif
  	.get_stats		= rt2x00mac_get_stats,
  	.set_retry_limit	= rt61pci_set_retry_limit,
++#ifndef RT2X00_SYNTHESISE_ERP_IE_CHANGED
+ 	.erp_ie_changed		= rt2x00mac_erp_ie_changed,
++#endif
  	.conf_tx		= rt2x00mac_conf_tx,
-@@ -2557,6 +2568,9 @@
+ 	.get_tx_stats		= rt2x00mac_get_tx_stats,
+ 	.get_tsf		= rt61pci_get_tsf,
+@@ -2479,6 +2498,9 @@
  	.fill_rxdone		= rt61pci_fill_rxdone,
  	.config_mac_addr	= rt61pci_config_mac_addr,
  	.config_bssid		= rt61pci_config_bssid,
@@ -391,11 +528,11 @@
 +	.configure_filter	= rt61pci_configure_filter,
 +#endif
  	.config_type		= rt61pci_config_type,
+ 	.config_preamble	= rt61pci_config_preamble,
  	.config			= rt61pci_config,
- };
 --- rt2x00.orig/drivers/net/wireless/rt2x00/rt73usb.c
 +++ rt2x00/drivers/net/wireless/rt2x00/rt73usb.c
-@@ -314,8 +314,13 @@
+@@ -331,8 +331,13 @@
  	 * Enable synchronisation.
  	 */
  	rt73usb_register_read(rt2x00dev, TXRX_CSR9, &reg);
@@ -409,9 +546,41 @@
 +	    rt2x00_set_field32(&reg, TXRX_CSR9_TBTT_ENABLE, 1);
 +	}
  	rt2x00_set_field32(&reg, TXRX_CSR9_BEACON_GEN, 0);
- 	if (is_interface_type(intf, IEEE80211_IF_TYPE_IBSS) ||
- 	    is_interface_type(intf, IEEE80211_IF_TYPE_AP))
-@@ -1751,7 +1756,12 @@
+ 	rt2x00_set_field32(&reg, TXRX_CSR9_TSF_SYNC, tsf_sync);
+ 	rt73usb_register_write(rt2x00dev, TXRX_CSR9, reg);
+@@ -345,6 +350,7 @@
+ {
+ 	u32 reg;
+ 
++#ifndef RT2X00_SYNTHESISE_ERP_IE_CHANGED
+ 	/*
+ 	 * When in atomic context, reschedule and let rt2x00lib
+ 	 * call this function again.
+@@ -353,6 +359,7 @@
+ 		queue_work(rt2x00dev->hw->workqueue, &rt2x00dev->config_work);
+ 		return;
+ 	}
++#endif
+ 
+ 	rt73usb_register_read(rt2x00dev, TXRX_CSR0, &reg);
+ 	rt2x00_set_field32(&reg, TXRX_CSR0_RX_ACK_TIMEOUT, ack_timeout);
+@@ -624,8 +631,14 @@
+ 			   const unsigned int flags,
+ 			   struct rt2x00lib_conf *libconf)
+ {
+-	if (flags & CONFIG_UPDATE_PHYMODE)
++	if (flags & CONFIG_UPDATE_PHYMODE) {
+ 		rt73usb_config_phymode(rt2x00dev, libconf->basic_rates);
++#ifdef RT2X00_SYNTHESISE_ERP_IE_CHANGED
++		rt2x00mac_erp_ie_changed(rt2x00dev->hw,
++					 IEEE80211_ERP_CHANGE_PREAMBLE,
++					 0, libconf->preamble);
++#endif
++	}
+ 	if (flags & CONFIG_UPDATE_CHANNEL)
+ 		rt73usb_config_channel(rt2x00dev, &libconf->rf,
+ 				       libconf->conf->power_level);
+@@ -1754,7 +1767,12 @@
  	 */
  	rt2x00dev->hw->flags =
  	    IEEE80211_HW_HOST_GEN_BEACON_TEMPLATE |
@@ -425,7 +594,7 @@
  	rt2x00dev->hw->extra_tx_headroom = TXD_DESC_SIZE;
  	rt2x00dev->hw->max_signal = MAX_SIGNAL;
  	rt2x00dev->hw->max_rssi = MAX_RX_SSI;
-@@ -2007,13 +2017,19 @@
+@@ -2014,16 +2032,24 @@
  
  static const struct ieee80211_ops rt73usb_mac80211_ops = {
  	.tx			= rt2x00mac_tx,
@@ -444,8 +613,13 @@
 +#endif
  	.get_stats		= rt2x00mac_get_stats,
  	.set_retry_limit	= rt73usb_set_retry_limit,
++#ifndef RT2X00_SYNTHESISE_ERP_IE_CHANGED
+ 	.erp_ie_changed		= rt2x00mac_erp_ie_changed,
++#endif
  	.conf_tx		= rt2x00mac_conf_tx,
-@@ -2044,6 +2060,9 @@
+ 	.get_tx_stats		= rt2x00mac_get_tx_stats,
+ 	.get_tsf		= rt73usb_get_tsf,
+@@ -2048,6 +2074,9 @@
  	.fill_rxdone		= rt73usb_fill_rxdone,
  	.config_mac_addr	= rt73usb_config_mac_addr,
  	.config_bssid		= rt73usb_config_bssid,
@@ -453,22 +627,8 @@
 +	.configure_filter	= rt73usb_configure_filter,
 +#endif
  	.config_type		= rt73usb_config_type,
+ 	.config_preamble	= rt73usb_config_preamble,
  	.config			= rt73usb_config,
- };
---- rt2x00.orig/drivers/net/wireless/rt2x00/rt2x00config.c
-+++ rt2x00/drivers/net/wireless/rt2x00/rt2x00config.c
-@@ -50,6 +50,11 @@
- {
- 	if (type != INVALID_INTERFACE)
- 		rt2x00dev->ops->lib->config_type(rt2x00dev, type);
-+#ifdef RT2X00_ADAPT_OLD_FILTER_API
-+	else if (is_monitor_present(&rt2x00dev->interface))
-+		rt2x00dev->ops->lib->config_type(rt2x00dev,
-+						 IEEE80211_IF_TYPE_MNTR);
-+#endif
- }
- 
- void rt2x00lib_config(struct rt2x00_dev *rt2x00dev,
 --- rt2x00.orig/drivers/net/wireless/rt2x00/rt2x00mac.c
 +++ rt2x00/drivers/net/wireless/rt2x00/rt2x00mac.c
 @@ -34,6 +34,28 @@
@@ -668,7 +828,18 @@
  {
 --- rt2x00.orig/drivers/net/wireless/rt2x00/rt2x00dev.c
 +++ rt2x00/drivers/net/wireless/rt2x00/rt2x00dev.c
-@@ -280,9 +280,14 @@
+@@ -156,8 +156,10 @@
+ 		cancel_work_sync(&rt2x00dev->beacon_work);
+ 	if (work_pending(&rt2x00dev->filter_work))
+ 		cancel_work_sync(&rt2x00dev->filter_work);
++#ifndef RT2X00_SYNTHESISE_ERP_IE_CHANGED
+ 	if (work_pending(&rt2x00dev->config_work))
+ 		cancel_work_sync(&rt2x00dev->config_work);
++#endif
+ 
+ 	/*
+ 	 * Stop the TX queues.
+@@ -422,11 +424,17 @@
  	struct rt2x00_dev *rt2x00dev =
  	    container_of(work, struct rt2x00_dev, filter_work);
  
@@ -685,4 +856,37 @@
 +			       0, NULL);
  }
  
++#ifndef RT2X00_SYNTHESISE_ERP_IE_CHANGED
+ static void rt2x00lib_configuration_scheduled(struct work_struct *work)
+ {
+ 	struct rt2x00_dev *rt2x00dev =
+@@ -436,6 +444,7 @@
+ 	rt2x00mac_erp_ie_changed(rt2x00dev->hw,
+ 				 IEEE80211_ERP_CHANGE_PREAMBLE, 0, preamble);
+ }
++#endif
+ 
  /*
+  * Interrupt context handlers.
+@@ -1150,7 +1159,9 @@
+ 	 */
+ 	INIT_WORK(&rt2x00dev->beacon_work, rt2x00lib_beacondone_scheduled);
+ 	INIT_WORK(&rt2x00dev->filter_work, rt2x00lib_packetfilter_scheduled);
++#ifndef RT2X00_SYNTHESISE_ERP_IE_CHANGED
+ 	INIT_WORK(&rt2x00dev->config_work, rt2x00lib_configuration_scheduled);
++#endif
+ 	INIT_DELAYED_WORK(&rt2x00dev->link.work, rt2x00lib_link_tuner);
+ 
+ 	/*
+--- rt2x00.orig/drivers/net/wireless/rt2x00/rt2x00config.c
++++ rt2x00/drivers/net/wireless/rt2x00/rt2x00config.c
+@@ -227,6 +227,9 @@
+ 
+ 		libconf.basic_rates =
+ 		    DEVICE_GET_RATE_FIELD(rate->val, RATEMASK) & DEV_BASIC_RATEMASK;
++#ifdef RT2X00_SYNTHESISE_ERP_IE_CHANGED
++		libconf.preamble = !!DEVICE_GET_RATE_FIELD(rate->val2, PREAMBLE);
++#endif
+ 	}
+ 
+ 	if (flags & CONFIG_UPDATE_CHANNEL) {

Modified: unstable/rt2x00/debian/patches/004_fix_filter_flags.diff
===================================================================
--- unstable/rt2x00/debian/patches/004_fix_filter_flags.diff	2007-11-12 00:03:11 UTC (rev 84)
+++ unstable/rt2x00/debian/patches/004_fix_filter_flags.diff	2007-11-12 00:28:05 UTC (rev 85)
@@ -1,32 +1,6 @@
---- rt2x00.orig/drivers/net/wireless/rt2x00/rt2400pci.c
-+++ rt2x00/drivers/net/wireless/rt2x00/rt2400pci.c
-@@ -1511,8 +1511,8 @@
- 	 * - Some filters are set based on interface type.
- 	 */
- 	*total_flags |= FIF_ALLMULTI;
--	if (changed_flags & FIF_OTHER_BSS ||
--	    changed_flags & FIF_PROMISC_IN_BSS)
-+	if (*total_flags & FIF_OTHER_BSS ||
-+	    *total_flags & FIF_PROMISC_IN_BSS)
- 		*total_flags |= FIF_PROMISC_IN_BSS | FIF_OTHER_BSS;
- 	if (is_interface_type(intf, IEEE80211_IF_TYPE_AP))
- 		*total_flags |= FIF_PROMISC_IN_BSS;
---- rt2x00.orig/drivers/net/wireless/rt2x00/rt2500pci.c
-+++ rt2x00/drivers/net/wireless/rt2x00/rt2500pci.c
-@@ -1844,8 +1844,8 @@
- 	 */
- 	if (mc_count)
- 		*total_flags |= FIF_ALLMULTI;
--	if (changed_flags & FIF_OTHER_BSS ||
--	    changed_flags & FIF_PROMISC_IN_BSS)
-+	if (*total_flags & FIF_OTHER_BSS ||
-+	    *total_flags & FIF_PROMISC_IN_BSS)
- 		*total_flags |= FIF_PROMISC_IN_BSS | FIF_OTHER_BSS;
- 	if (is_interface_type(intf, IEEE80211_IF_TYPE_AP))
- 		*total_flags |= FIF_PROMISC_IN_BSS;
 --- rt2x00.orig/drivers/net/wireless/rt2x00/rt2500usb.c
 +++ rt2x00/drivers/net/wireless/rt2x00/rt2500usb.c
-@@ -1594,8 +1594,14 @@
+@@ -1616,8 +1616,14 @@
  {
  	struct rt2x00_dev *rt2x00dev = hw->priv;
  	struct interface *intf = &rt2x00dev->interface;
@@ -41,19 +15,8 @@
  	/*
  	 * Mask off any flags we are going to ignore from
  	 * the total_flags field.
-@@ -1616,8 +1622,8 @@
+@@ -1649,7 +1655,8 @@
  	 */
- 	if (mc_count)
- 		*total_flags |= FIF_ALLMULTI;
--	if (changed_flags & FIF_OTHER_BSS ||
--	    changed_flags & FIF_PROMISC_IN_BSS)
-+	if (*total_flags & FIF_OTHER_BSS ||
-+	    *total_flags & FIF_PROMISC_IN_BSS)
- 		*total_flags |= FIF_PROMISC_IN_BSS | FIF_OTHER_BSS;
- 	if (is_interface_type(intf, IEEE80211_IF_TYPE_AP))
- 		*total_flags |= FIF_PROMISC_IN_BSS;
-@@ -1627,7 +1633,8 @@
- 	 */
  	if (intf->filter == *total_flags)
  		return;
 -	intf->filter = *total_flags;
@@ -62,7 +25,7 @@
  
  	/*
  	 * When in atomic context, reschedule and let rt2x00lib
-@@ -1638,6 +1645,7 @@
+@@ -1660,6 +1667,7 @@
  		return;
  	}
  
@@ -70,7 +33,7 @@
  	/*
  	 * Start configuration steps.
  	 * Note that the version error will always be dropped
-@@ -1646,18 +1654,18 @@
+@@ -1668,18 +1676,18 @@
  	 */
  	rt2500usb_register_read(rt2x00dev, TXRX_CSR2, &reg);
  	rt2x00_set_field16(&reg, TXRX_CSR2_DROP_CRC,
@@ -95,22 +58,9 @@
  	rt2x00_set_field16(&reg, TXRX_CSR2_DROP_BROADCAST, 0);
  	rt2500usb_register_write(rt2x00dev, TXRX_CSR2, reg);
  }
---- rt2x00.orig/drivers/net/wireless/rt2x00/rt61pci.c
-+++ rt2x00/drivers/net/wireless/rt2x00/rt61pci.c
-@@ -2403,8 +2403,8 @@
- 	 */
- 	if (mc_count)
- 		*total_flags |= FIF_ALLMULTI;
--	if (changed_flags & FIF_OTHER_BSS ||
--	    changed_flags & FIF_PROMISC_IN_BSS)
-+	if (*total_flags & FIF_OTHER_BSS ||
-+	    *total_flags & FIF_PROMISC_IN_BSS)
- 		*total_flags |= FIF_PROMISC_IN_BSS | FIF_OTHER_BSS;
- 	if (is_interface_type(intf, IEEE80211_IF_TYPE_AP))
- 		*total_flags |= FIF_PROMISC_IN_BSS;
 --- rt2x00.orig/drivers/net/wireless/rt2x00/rt73usb.c
 +++ rt2x00/drivers/net/wireless/rt2x00/rt73usb.c
-@@ -1848,8 +1848,14 @@
+@@ -1851,8 +1851,14 @@
  {
  	struct rt2x00_dev *rt2x00dev = hw->priv;
  	struct interface *intf = &rt2x00dev->interface;
@@ -125,19 +75,8 @@
  	/*
  	 * Mask off any flags we are going to ignore from
  	 * the total_flags field.
-@@ -1870,8 +1876,8 @@
+@@ -1884,7 +1890,8 @@
  	 */
- 	if (mc_count)
- 		*total_flags |= FIF_ALLMULTI;
--	if (changed_flags & FIF_OTHER_BSS ||
--	    changed_flags & FIF_PROMISC_IN_BSS)
-+	if (*total_flags & FIF_OTHER_BSS ||
-+	    *total_flags & FIF_PROMISC_IN_BSS)
- 		*total_flags |= FIF_PROMISC_IN_BSS | FIF_OTHER_BSS;
- 	if (is_interface_type(intf, IEEE80211_IF_TYPE_AP))
- 		*total_flags |= FIF_PROMISC_IN_BSS;
-@@ -1881,7 +1887,8 @@
- 	 */
  	if (intf->filter == *total_flags)
  		return;
 -	intf->filter = *total_flags;
@@ -146,7 +85,7 @@
  
  	/*
  	 * When in atomic context, reschedule and let rt2x00lib
-@@ -1892,6 +1899,7 @@
+@@ -1895,6 +1902,7 @@
  		return;
  	}
  
@@ -154,7 +93,7 @@
  	/*
  	 * Start configuration steps.
  	 * Note that the version error will always be dropped
-@@ -1900,18 +1908,18 @@
+@@ -1903,18 +1911,18 @@
  	 */
  	rt73usb_register_read(rt2x00dev, TXRX_CSR0, &reg);
  	rt2x00_set_field32(&reg, TXRX_CSR0_DROP_CRC,
@@ -179,21 +118,9 @@
  	rt2x00_set_field32(&reg, TXRX_CSR0_DROP_BROADCAST, 0);
  	rt2x00_set_field32(&reg, TXRX_CSR0_DROP_ACK_CTS, 1);
  	rt73usb_register_write(rt2x00dev, TXRX_CSR0, reg);
---- rt2x00.orig/drivers/net/wireless/rt2x00/rt2x00dev.c
-+++ rt2x00/drivers/net/wireless/rt2x00/rt2x00dev.c
-@@ -281,8 +281,7 @@
- 	    container_of(work, struct rt2x00_dev, filter_work);
- 
- 	rt2x00dev->ops->hw->configure_filter(rt2x00dev->hw,
--					     rt2x00dev->interface.filter,
--					     &rt2x00dev->interface.filter,
-+					     FIF_RT2X00_USE_CURRENT, NULL,
- 					     0, NULL);
- }
- 
 --- rt2x00.orig/drivers/net/wireless/rt2x00/rt2x00.h
 +++ rt2x00/drivers/net/wireless/rt2x00/rt2x00.h
-@@ -315,6 +315,11 @@
+@@ -393,6 +393,11 @@
  	unsigned int filter;
  };
  
@@ -205,3 +132,26 @@
  static inline int is_interface_present(struct interface *intf)
  {
  	return !!intf->id;
+--- rt2x00.orig/drivers/net/wireless/rt2x00/rt2x00dev.c
++++ rt2x00/drivers/net/wireless/rt2x00/rt2x00dev.c
+@@ -421,18 +421,10 @@
+ {
+ 	struct rt2x00_dev *rt2x00dev =
+ 	    container_of(work, struct rt2x00_dev, filter_work);
+-	unsigned int filter = rt2x00dev->interface.filter;
+-
+-	/*
+-	 * Since we had stored the filter inside interface.filter,
+-	 * we should now clear that field. Otherwise the driver will
+-	 * assume nothing has changed (*total_flags will be compared
+-	 * to interface.filter to determine if any action is required).
+-	 */
+-	rt2x00dev->interface.filter = 0;
+ 
+ 	rt2x00dev->ops->hw->configure_filter(rt2x00dev->hw,
+-					     filter, &filter, 0, NULL);
++					     FIF_RT2X00_USE_CURRENT, NULL,
++					     0, NULL);
+ }
+ 
+ static void rt2x00lib_configuration_scheduled(struct work_struct *work)

Deleted: unstable/rt2x00/debian/patches/005_fix_probe_148f_2573.diff
===================================================================
--- unstable/rt2x00/debian/patches/005_fix_probe_148f_2573.diff	2007-11-12 00:03:11 UTC (rev 84)
+++ unstable/rt2x00/debian/patches/005_fix_probe_148f_2573.diff	2007-11-12 00:28:05 UTC (rev 85)
@@ -1,72 +0,0 @@
---- rt2x00.orig/drivers/net/wireless/rt2x00/rt2500usb.c
-+++ rt2x00/drivers/net/wireless/rt2x00/rt2500usb.c
-@@ -1278,6 +1278,7 @@
- static int rt2500usb_init_eeprom(struct rt2x00_dev *rt2x00dev)
- {
- 	u16 reg;
-+	__le32 reg32;
- 	u16 value;
- 	u16 eeprom;
- 
-@@ -1291,12 +1292,13 @@
- 	 */
- 	value = rt2x00_get_field16(eeprom, EEPROM_ANTENNA_RF_TYPE);
- 	rt2500usb_register_read(rt2x00dev, MAC_CSR0, &reg);
--	rt2x00_set_chip(rt2x00dev, RT2570, value, reg);
--
--	if (rt2x00_rev(&rt2x00dev->chip, 0xffff0)) {
-+	rt2500usb_register_multiread(rt2x00dev, MAC_RT73_CSR0,
-+				     &reg32, sizeof(reg32));
-+	if ((reg & 0xfff0) || (le32_to_cpu(reg32) & 0xffff0) == 0x25730) {
- 		ERROR(rt2x00dev, "Invalid RT chipset detected.\n");
- 		return -ENODEV;
- 	}
-+	rt2x00_set_chip(rt2x00dev, RT2570, value, reg);
- 
- 	if (!rt2x00_rf(&rt2x00dev->chip, RF2522) &&
- 	    !rt2x00_rf(&rt2x00dev->chip, RF2523) &&
---- rt2x00.orig/drivers/net/wireless/rt2x00/rt2500usb.h
-+++ rt2x00/drivers/net/wireless/rt2x00/rt2500usb.h
-@@ -73,6 +73,11 @@
- #define MAC_CSR0			0x0400
- 
- /*
-+ * MAC_RT73_CSR0: ASIC revision number in RT73, for use when probing.
-+ */
-+#define MAC_RT73_CSR0			0x3000
-+
-+/*
-  * MAC_CSR1: System control.
-  * SOFT_RESET: Software reset, 1: reset, 0: normal.
-  * BBP_RESET: Hardware reset, 1: reset, 0, release.
---- rt2x00.orig/drivers/net/wireless/rt2x00/rt2x00.h
-+++ rt2x00/drivers/net/wireless/rt2x00/rt2x00.h
-@@ -811,11 +811,6 @@
- 	return chipset->rev;
- }
- 
--static inline u16 rt2x00_rev(const struct rt2x00_chip *chipset, const u32 mask)
--{
--	return chipset->rev & mask;
--}
--
- /*
-  * Duration calculations
-  * The rate variable passed is: 100kbs.
---- rt2x00.orig/drivers/net/wireless/rt2x00/rt73usb.c
-+++ rt2x00/drivers/net/wireless/rt2x00/rt73usb.c
-@@ -1530,12 +1530,11 @@
- 	 */
- 	value = rt2x00_get_field16(eeprom, EEPROM_ANTENNA_RF_TYPE);
- 	rt73usb_register_read(rt2x00dev, MAC_CSR0, &reg);
--	rt2x00_set_chip(rt2x00dev, RT2571, value, reg);
--
--	if (!rt2x00_rev(&rt2x00dev->chip, 0x25730)) {
-+	if ((reg & 0xffff0) != 0x25730) {
- 		ERROR(rt2x00dev, "Invalid RT chipset detected.\n");
- 		return -ENODEV;
- 	}
-+	rt2x00_set_chip(rt2x00dev, RT2571, value, reg);
- 
- 	if (!rt2x00_rf(&rt2x00dev->chip, RF5226) &&
- 	    !rt2x00_rf(&rt2x00dev->chip, RF2528) &&

Modified: unstable/rt2x00/debian/patches/series
===================================================================
--- unstable/rt2x00/debian/patches/series	2007-11-12 00:03:11 UTC (rev 84)
+++ unstable/rt2x00/debian/patches/series	2007-11-12 00:28:05 UTC (rev 85)
@@ -1,4 +1,3 @@
 002_out_of_tree.diff
 004_fix_filter_flags.diff
 003_workaround_mac80211_changes.diff
-005_fix_probe_148f_2573.diff




More information about the Pkg-ralink-commits mailing list