PKG_NAME:=mac80211
-PKG_VERSION:=2010-02-02
-PKG_RELEASE:=2
+PKG_VERSION:=2010-02-16
+PKG_RELEASE:=1
PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources
# http://www.orbit-lab.org/kernel/compat-wireless-2.6/2010/11 \
# http://wireless.kernel.org/download/compat-wireless-2.6
-PKG_MD5SUM:=32602171b840132cbaa62d4b67f32d2c
+PKG_MD5SUM:=190060a705c2b78e9b0bc873a8803b37
PKG_SOURCE:=compat-wireless-$(PKG_VERSION).tar.bz2
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/compat-wireless-$(PKG_VERSION)
--- a/config.mk
+++ b/config.mk
-@@ -283,10 +283,10 @@ endif
+@@ -271,8 +271,8 @@ endif
CONFIG_P54_PCI=m
-CONFIG_B44=m
--CONFIG_B44_PCI_AUTOSELECT=y
--CONFIG_B44_PCICORE_AUTOSELECT=y
-CONFIG_B44_PCI=y
+# CONFIG_B44=m
-+# CONFIG_B44_PCI_AUTOSELECT=y
-+# CONFIG_B44_PCICORE_AUTOSELECT=y
+# CONFIG_B44_PCI=y
CONFIG_RTL8180=m
--- a/config.mk
+++ b/config.mk
-@@ -73,7 +73,7 @@ endif # build check
+@@ -72,7 +72,7 @@ endif # build check
endif # kernel Makefile check
# These both are needed by compat-wireless || compat-bluetooth so enable them
ifeq ($(CONFIG_MAC80211),y)
$(error "ERROR: you have MAC80211 compiled into the kernel, CONFIG_MAC80211=y, as such you cannot replace its mac80211 driver. You need this set to CONFIG_MAC80211=m. If you are using Fedora upgrade your kernel as later version should this set as modular. For further information on Fedora see https://bugzilla.redhat.com/show_bug.cgi?id=470143. If you are using your own kernel recompile it and make mac80211 modular")
-@@ -476,8 +476,8 @@ endif
+@@ -461,8 +461,8 @@ endif
# We need the backported rfkill module on kernel < 2.6.31.
# In more recent kernel versions use the in kernel rfkill module.
ifdef CONFIG_COMPAT_KERNEL_31
--- a/config.mk
+++ b/config.mk
-@@ -95,8 +95,8 @@ ifndef CONFIG_COMPAT_KERNEL_27
+@@ -94,8 +94,8 @@ ifndef CONFIG_COMPAT_KERNEL_27
ifeq ($(CONFIG_BT),y)
# we'll ignore compiling bluetooth
else
--- a/config.mk
+++ b/config.mk
-@@ -316,10 +316,10 @@ CONFIG_PCI_ATMEL=m
+@@ -296,10 +296,10 @@ endif
CONFIG_MWL8K=m
# Ethernet drivers go here
endif
## end of PCI
-@@ -358,10 +358,10 @@ CONFIG_USB_NET_COMPAT_RNDIS_HOST=n
+@@ -338,10 +338,10 @@ CONFIG_USB_NET_COMPAT_RNDIS_HOST=n
CONFIG_USB_NET_COMPAT_RNDIS_WLAN=n
CONFIG_USB_NET_COMPAT_CDCETHER=n
else
--- a/config.mk
+++ b/config.mk
-@@ -44,21 +44,6 @@ $(error "ERROR: Your 2.6.27 kernel has C
+@@ -43,21 +43,6 @@ $(error "ERROR: Your 2.6.27 kernel has C
endif
endif
+++ /dev/null
---- a/config.mk
-+++ b/config.mk
-@@ -201,9 +201,9 @@ CONFIG_B43_HWRNG=y
- CONFIG_B43_PCI_AUTOSELECT=y
- CONFIG_B43_PCICORE_AUTOSELECT=y
- ifneq ($(CONFIG_PCMCIA),)
--CONFIG_B43_PCMCIA=y
-+# CONFIG_B43_PCMCIA=y
- endif
--CONFIG_B43_PIO=y
-+# CONFIG_B43_PIO=y
- CONFIG_B43_LEDS=y
- CONFIG_B43_PHY_LP=y
- # CONFIG_B43_DEBUG=y
-@@ -258,8 +258,8 @@ CONFIG_SSB_PCIHOST_POSSIBLE=y
- CONFIG_SSB_PCIHOST=y
- CONFIG_SSB_B43_PCI_BRIDGE=y
- ifneq ($(CONFIG_PCMCIA),)
--CONFIG_SSB_PCMCIAHOST_POSSIBLE=y
--CONFIG_SSB_PCMCIAHOST=y
-+# CONFIG_SSB_PCMCIAHOST_POSSIBLE=y
-+# CONFIG_SSB_PCMCIAHOST=y
- endif
- # CONFIG_SSB_DEBUG=y
- CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
--- /dev/null
+--- a/config.mk
++++ b/config.mk
+@@ -8,7 +8,7 @@ ifeq ($(wildcard $(KLIB_BUILD)/.config),
+ # These will be ignored by compat autoconf
+ CONFIG_PCI=y
+ CONFIG_USB=y
+- CONFIG_PCMCIA=y
++ # CONFIG_PCMCIA=y
+ CONFIG_SSB=m
+ else
+ include $(KLIB_BUILD)/.config
#include "regd_common.h"
/*
-@@ -587,3 +590,5 @@ u32 ath_regd_get_band_ctl(struct ath_reg
+@@ -588,3 +591,5 @@ u32 ath_regd_get_band_ctl(struct ath_reg
}
}
EXPORT_SYMBOL(ath_regd_get_band_ctl);
--- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c
-@@ -2092,7 +2092,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st
+@@ -2103,7 +2103,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st
if (ah->config.rx_intr_mitigation) {
REG_RMW_FIELD(ah, AR_RIMT, AR_RIMT_LAST, 500);
common = ath9k_hw_common(ah);
common->ops = &ath9k_common_ops;
-@@ -670,6 +673,24 @@ void ath9k_set_hw_capab(struct ath_softc
+@@ -671,6 +674,24 @@ void ath9k_set_hw_capab(struct ath_softc
SET_IEEE80211_PERM_ADDR(hw, common->macaddr);
}
int ath9k_init_device(u16 devid, struct ath_softc *sc, u16 subsysid,
const struct ath_bus_ops *bus_ops)
{
-@@ -688,6 +709,9 @@ int ath9k_init_device(u16 devid, struct
+@@ -689,6 +710,9 @@ int ath9k_init_device(u16 devid, struct
common = ath9k_hw_common(ah);
ath9k_set_hw_capab(sc, hw);
ath9k_reg_notifier);
--- a/drivers/net/wireless/ath/ath9k/ath9k.h
+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
-@@ -510,6 +510,8 @@ struct ath_softc {
+@@ -511,6 +511,8 @@ struct ath_softc {
struct ath_beacon_config cur_beacon_conf;
struct delayed_work tx_complete_work;
struct ath_btcoex btcoex;
+++ /dev/null
---- a/drivers/net/wireless/ath/ath9k/hw.c
-+++ b/drivers/net/wireless/ath/ath9k/hw.c
-@@ -1233,6 +1233,17 @@ void ath9k_hw_init_global_settings(struc
- /* As defined by IEEE 802.11-2007 17.3.8.6 */
- slottime = ah->slottime + 3 * ah->coverage_class;
- acktimeout = slottime + sifstime;
-+
-+ /*
-+ * Workaround for early ACK timeouts, add an offset to match the
-+ * initval's 64us ack timeout value.
-+ * This was initially only meant to work around an issue with delayed
-+ * BA frames in some implementations, but it has been found to fix ACK
-+ * timeout issues in other cases as well.
-+ */
-+ if (conf->channel && conf->channel->band == IEEE80211_BAND_2GHZ)
-+ acktimeout += 64 - sifstime - ah->slottime;
-+
- ath9k_hw_setslottime(ah, slottime);
- ath9k_hw_set_ack_timeout(ah, acktimeout);
- ath9k_hw_set_cts_timeout(ah, acktimeout);
--- /dev/null
+--- a/net/wireless/core.h
++++ b/net/wireless/core.h
+@@ -76,6 +76,7 @@ struct cfg80211_registered_device {
+
+ /* current channel */
+ struct ieee80211_channel *channel;
++ enum nl80211_channel_type channel_type;
+
+ /* must be last because of the way we do wiphy_priv(),
+ * and it should at least be aligned to NETDEV_ALIGN */
+--- a/net/wireless/chan.c
++++ b/net/wireless/chan.c
+@@ -97,6 +97,7 @@ int rdev_set_freq(struct cfg80211_regist
+ return result;
+
+ rdev->channel = chan;
++ rdev->channel_type = channel_type;
+
+ return 0;
+ }
+--- a/net/wireless/nl80211.c
++++ b/net/wireless/nl80211.c
+@@ -885,6 +885,11 @@ static int nl80211_send_iface(struct sk_
+ NLA_PUT_U32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx);
+ NLA_PUT_STRING(msg, NL80211_ATTR_IFNAME, dev->name);
+ NLA_PUT_U32(msg, NL80211_ATTR_IFTYPE, dev->ieee80211_ptr->iftype);
++ if (rdev->channel) {
++ NLA_PUT_U32(msg, NL80211_ATTR_WIPHY_FREQ, rdev->channel->center_freq);
++ NLA_PUT_U32(msg, NL80211_ATTR_WIPHY_CHANNEL_TYPE, rdev->channel_type);
++ }
++
+
+ NLA_PUT_U32(msg, NL80211_ATTR_GENERATION,
+ rdev->devlist_generation ^
+++ /dev/null
---- a/net/wireless/core.h
-+++ b/net/wireless/core.h
-@@ -76,6 +76,7 @@ struct cfg80211_registered_device {
-
- /* current channel */
- struct ieee80211_channel *channel;
-+ enum nl80211_channel_type channel_type;
-
- /* must be last because of the way we do wiphy_priv(),
- * and it should at least be aligned to NETDEV_ALIGN */
---- a/net/wireless/chan.c
-+++ b/net/wireless/chan.c
-@@ -97,6 +97,7 @@ int rdev_set_freq(struct cfg80211_regist
- return result;
-
- rdev->channel = chan;
-+ rdev->channel_type = channel_type;
-
- return 0;
- }
---- a/net/wireless/nl80211.c
-+++ b/net/wireless/nl80211.c
-@@ -881,6 +881,11 @@ static int nl80211_send_iface(struct sk_
- NLA_PUT_U32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx);
- NLA_PUT_STRING(msg, NL80211_ATTR_IFNAME, dev->name);
- NLA_PUT_U32(msg, NL80211_ATTR_IFTYPE, dev->ieee80211_ptr->iftype);
-+ if (rdev->channel) {
-+ NLA_PUT_U32(msg, NL80211_ATTR_WIPHY_FREQ, rdev->channel->center_freq);
-+ NLA_PUT_U32(msg, NL80211_ATTR_WIPHY_CHANNEL_TYPE, rdev->channel_type);
-+ }
-+
-
- NLA_PUT_U32(msg, NL80211_ATTR_GENERATION,
- rdev->devlist_generation ^
+++ /dev/null
---- a/drivers/net/wireless/ath/ath9k/xmit.c
-+++ b/drivers/net/wireless/ath/ath9k/xmit.c
-@@ -1610,7 +1610,7 @@ static int ath_tx_setup_buffer(struct ie
- bf->bf_frmlen -= padsize;
- }
-
-- if (conf_is_ht(&hw->conf) && !is_pae(skb))
-+ if (conf_is_ht(&hw->conf))
- bf->bf_state.bf_type |= BUF_HT;
-
- bf->bf_flags = setup_tx_flags(sc, skb, txctl->txq);
-@@ -1696,7 +1696,7 @@ static void ath_tx_start_dma(struct ath_
- goto tx_done;
- }
-
-- if (tx_info->flags & IEEE80211_TX_CTL_AMPDU) {
-+ if ((tx_info->flags & IEEE80211_TX_CTL_AMPDU) && !is_pae(skb)) {
- /*
- * Try aggregation if it's a unicast data frame
- * and the destination is HT capable.