PKG_NAME:=mac80211
-PKG_VERSION:=2014-01-23
+PKG_VERSION:=2014-01-23.1
PKG_RELEASE:=1
PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources
PKG_BACKPORT_VERSION:=
-PKG_MD5SUM:=5921cc325d9fdf81532e14e47dff0094
+PKG_MD5SUM:=8db16edbdaf4abc2e9c2f3b6c86736a6
PKG_SOURCE:=compat-wireless-$(PKG_VERSION)$(PKG_BACKPORT_VERSION).tar.bz2
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/compat-wireless-$(PKG_VERSION)
--- a/.local-symbols
+++ b/.local-symbols
-@@ -381,42 +381,6 @@ USB_CDC_PHONET=
+@@ -379,42 +379,6 @@ USB_CDC_PHONET=
USB_IPHETH=
USB_SIERRA_NET=
USB_VL600=
return (bus->chipco.dev ? bus->chipco.dev : bus->pcicore.dev);
#else
return bus->chipco.dev;
-@@ -4738,7 +4738,7 @@ static int b43_wireless_core_init(struct
+@@ -4751,7 +4751,7 @@ static int b43_wireless_core_init(struct
}
if (sprom->boardflags_lo & B43_BFL_XTAL_NOSLOW)
hf |= B43_HF_DSCRQ; /* Disable slowclock requests from ucode. */
+++ /dev/null
---- a/backport-include/linux/mod_devicetable.h
-+++ b/backport-include/linux/mod_devicetable.h
-@@ -2,10 +2,6 @@
- #define __BACKPORT_MOD_DEVICETABLE_H
- #include_next <linux/mod_devicetable.h>
-
--#if LINUX_VERSION_CODE < KERNEL_VERSION(3,11,0)
--#define DMI_EXACT_MATCH(a, b) DMI_MATCH(DMI_PRODUCT_NAME, "BACKPORT_IGNORE")
--#endif
--
- #ifndef HID_BUS_ANY
- #define HID_BUS_ANY 0xffff
- #endif
--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
-@@ -283,7 +283,7 @@ void ieee80211_restart_hw(struct ieee802
+@@ -287,7 +287,7 @@ void ieee80211_restart_hw(struct ieee802
}
EXPORT_SYMBOL(ieee80211_restart_hw);
static int ieee80211_ifa_changed(struct notifier_block *nb,
unsigned long data, void *arg)
{
-@@ -342,7 +342,7 @@ static int ieee80211_ifa_changed(struct
+@@ -346,7 +346,7 @@ static int ieee80211_ifa_changed(struct
}
#endif
static int ieee80211_ifa6_changed(struct notifier_block *nb,
unsigned long data, void *arg)
{
-@@ -1025,14 +1025,14 @@ int ieee80211_register_hw(struct ieee802
+@@ -1031,14 +1031,14 @@ int ieee80211_register_hw(struct ieee802
goto fail_pm_qos;
}
local->ifa6_notifier.notifier_call = ieee80211_ifa6_changed;
result = register_inet6addr_notifier(&local->ifa6_notifier);
if (result)
-@@ -1041,13 +1041,13 @@ int ieee80211_register_hw(struct ieee802
+@@ -1047,13 +1047,13 @@ int ieee80211_register_hw(struct ieee802
return 0;
fail_ifa:
pm_qos_remove_notifier(PM_QOS_NETWORK_LATENCY,
&local->network_latency_notifier);
-@@ -1080,10 +1080,10 @@ void ieee80211_unregister_hw(struct ieee
+@@ -1086,10 +1086,10 @@ void ieee80211_unregister_hw(struct ieee
pm_qos_remove_notifier(PM_QOS_NETWORK_LATENCY,
&local->network_latency_notifier);
+++ /dev/null
---- a/net/mac80211/iface.c
-+++ b/net/mac80211/iface.c
-@@ -1044,9 +1044,14 @@ static void ieee80211_uninit(struct net_
- ieee80211_teardown_sdata(IEEE80211_DEV_TO_SUB_IF(dev));
- }
-
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,13,0)
- static u16 ieee80211_netdev_select_queue(struct net_device *dev,
- struct sk_buff *skb,
- void *accel_priv)
-+#else
-+static u16 ieee80211_netdev_select_queue(struct net_device *dev,
-+ struct sk_buff *skb)
-+#endif
- {
- return ieee80211_select_queue(IEEE80211_DEV_TO_SUB_IF(dev), skb);
- }
-@@ -1062,9 +1067,14 @@ static const struct net_device_ops ieee8
- .ndo_select_queue = ieee80211_netdev_select_queue,
- };
-
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,13,0)
- static u16 ieee80211_monitor_select_queue(struct net_device *dev,
- struct sk_buff *skb,
- void *accel_priv)
-+#else
-+static u16 ieee80211_monitor_select_queue(struct net_device *dev,
-+ struct sk_buff *skb)
-+#endif
- {
- struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
- struct ieee80211_local *local = sdata->local;
---- a/drivers/net/wireless/mwifiex/main.c
-+++ b/drivers/net/wireless/mwifiex/main.c
-@@ -746,9 +746,14 @@ static struct net_device_stats *mwifiex_
- return &priv->stats;
- }
-
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,13,0)
- static u16
- mwifiex_netdev_select_wmm_queue(struct net_device *dev, struct sk_buff *skb,
- void *accel_priv)
-+#else
-+static u16
-+mwifiex_netdev_select_wmm_queue(struct net_device *dev, struct sk_buff *skb)
-+#endif
- {
- skb->priority = cfg80211_classify8021d(skb, NULL);
- return mwifiex_1d_to_wmm_queue[skb->priority];
---help---
--- a/.local-symbols
+++ b/.local-symbols
-@@ -121,6 +121,7 @@ RTL8187_LEDS=
+@@ -119,6 +119,7 @@ RTL8187_LEDS=
ATH_COMMON=
ATH_CARDS=
ATH_DEBUG=
*dbm = sdata->vif.bss_conf.txpower;
--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
-@@ -154,6 +154,7 @@ static u32 ieee80211_hw_conf_chan(struct
+@@ -158,6 +158,7 @@ static u32 ieee80211_hw_conf_chan(struct
if (local->hw.conf.power_level != power) {
changed |= IEEE80211_CONF_CHANGE_POWER;
CFG80211_TESTMODE_CMD(ieee80211_testmode_cmd)
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
-@@ -1216,6 +1216,7 @@ struct ieee80211_local {
+@@ -1221,6 +1221,7 @@ struct ieee80211_local {
int dynamic_ps_forced_timeout;
int user_power_level; /* in dBm, for all interfaces */
--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
-@@ -97,7 +97,7 @@ static u32 ieee80211_hw_conf_chan(struct
+@@ -101,7 +101,7 @@ static u32 ieee80211_hw_conf_chan(struct
struct ieee80211_sub_if_data *sdata;
struct cfg80211_chan_def chandef = {};
u32 changed = 0;
u32 offchannel_flag;
offchannel_flag = local->hw.conf.flags & IEEE80211_CONF_OFFCHANNEL;
-@@ -152,8 +152,21 @@ static u32 ieee80211_hw_conf_chan(struct
+@@ -156,8 +156,21 @@ static u32 ieee80211_hw_conf_chan(struct
}
rcu_read_unlock();
local->hw.cur_power_level = power;
local->hw.conf.power_level = power;
}
-@@ -580,6 +593,7 @@ struct ieee80211_hw *ieee80211_alloc_hw(
+@@ -584,6 +597,7 @@ struct ieee80211_hw *ieee80211_alloc_hw(
IEEE80211_RADIOTAP_MCS_HAVE_BW;
local->hw.radiotap_vht_details = IEEE80211_RADIOTAP_VHT_KNOWN_GI |
IEEE80211_RADIOTAP_VHT_KNOWN_BANDWIDTH;
--- a/.local-symbols
+++ b/.local-symbols
-@@ -281,6 +281,7 @@ RT2X00_LIB_FIRMWARE=
+@@ -279,6 +279,7 @@ RT2X00_LIB_FIRMWARE=
RT2X00_LIB_CRYPTO=
RT2X00_LIB_LEDS=
RT2X00_LIB_DEBUGFS=
--- a/drivers/net/wireless/mwl8k.c
+++ b/drivers/net/wireless/mwl8k.c
-@@ -5497,6 +5497,7 @@ MODULE_FIRMWARE("mwl8k/fmimage_8366.fw")
+@@ -5529,6 +5529,7 @@ MODULE_FIRMWARE("mwl8k/fmimage_8366.fw")
MODULE_FIRMWARE(MWL8K_8366_AP_FW(MWL8K_8366_AP_FW_API));
static DEFINE_PCI_DEVICE_TABLE(mwl8k_pci_id_table) = {
if (wl->radio_enabled != phy->radio_on) {
if (wl->radio_enabled) {
-@@ -5028,6 +5025,47 @@ static int b43_op_get_survey(struct ieee
+@@ -5041,6 +5038,47 @@ static int b43_op_get_survey(struct ieee
return 0;
}
static const struct ieee80211_ops b43_hw_ops = {
.tx = b43_op_tx,
.conf_tx = b43_op_conf_tx,
-@@ -5049,6 +5087,8 @@ static const struct ieee80211_ops b43_hw
+@@ -5062,6 +5100,8 @@ static const struct ieee80211_ops b43_hw
.sw_scan_complete = b43_op_sw_scan_complete_notifier,
.get_survey = b43_op_get_survey,
.rfkill_poll = b43_rfkill_poll,
};
/* Hard-reset the chip. Do not call this directly.
-@@ -5291,6 +5331,8 @@ static int b43_one_core_attach(struct b4
+@@ -5308,6 +5348,8 @@ static int b43_one_core_attach(struct b4
if (!wldev)
goto out;
wldev->use_pio = b43_modparam_pio;
wldev->dev = dev;
wldev->wl = wl;
-@@ -5381,6 +5423,9 @@ static struct b43_wl *b43_wireless_init(
+@@ -5398,6 +5440,9 @@ static struct b43_wl *b43_wireless_init(
hw->wiphy->flags |= WIPHY_FLAG_IBSS_RSN;
--- a/drivers/net/wireless/b43/b43.h
+++ b/drivers/net/wireless/b43/b43.h
-@@ -1058,6 +1058,31 @@ static inline bool b43_using_pio_transfe
+@@ -1061,6 +1061,31 @@ static inline bool b43_using_pio_transfe
return dev->__using_pio_transfers;
}
struct b43_bus_dev *b43_bus_dev_ssb_init(struct ssb_device *sdev);
--- a/drivers/net/wireless/b43/main.c
+++ b/drivers/net/wireless/b43/main.c
-@@ -4424,7 +4424,7 @@ static int b43_phy_versioning(struct b43
+@@ -4437,7 +4437,7 @@ static int b43_phy_versioning(struct b43
u16 radio24[3];
for (tmp = 0; tmp < 3; tmp++) {
radio24[tmp] = b43_read16(dev, B43_MMIO_RADIO24_DATA);
}
-@@ -4443,10 +4443,10 @@ static int b43_phy_versioning(struct b43
+@@ -4456,10 +4456,10 @@ static int b43_phy_versioning(struct b43
else
tmp = 0x5205017F;
} else {
loopcount = 1;
wl1271_debug(DEBUG_IRQ, "IRQ work");
-@@ -5901,7 +5902,6 @@ struct ieee80211_hw *wlcore_alloc_hw(siz
+@@ -5934,7 +5935,6 @@ struct ieee80211_hw *wlcore_alloc_hw(siz
wl->ap_ps_map = 0;
wl->ap_fw_ps_map = 0;
wl->quirks = 0;
wl->system_hlid = WL12XX_SYSTEM_HLID;
wl->active_sta_count = 0;
wl->active_link_count = 0;
-@@ -6042,7 +6042,7 @@ static void wlcore_nvs_cb(const struct f
+@@ -6075,7 +6075,7 @@ static void wlcore_nvs_cb(const struct f
struct platform_device *pdev = wl->pdev;
struct wlcore_platdev_data *pdev_data = dev_get_platdata(&pdev->dev);
struct wl12xx_platform_data *pdata = pdev_data->pdata;
int ret;
irq_handler_t hardirq_fn = NULL;
-@@ -6070,18 +6070,17 @@ static void wlcore_nvs_cb(const struct f
+@@ -6103,29 +6103,19 @@ static void wlcore_nvs_cb(const struct f
wlcore_adjust_conf(wl);
wl->irq = platform_get_irq(pdev, 0);
- wl->platform_quirks = pdata->platform_quirks;
wl->if_ops = pdev_data->if_ops;
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,32)
+- irqflags = IRQF_TRIGGER_RISING;
++ wl->irq_flags = irq_get_trigger_type(wl->irq) | IRQF_ONESHOT;
+ hardirq_fn = wlcore_hardirq;
+-#else
- if (wl->platform_quirks & WL12XX_PLATFORM_QUIRK_EDGE_IRQ) {
- irqflags = IRQF_TRIGGER_RISING;
- hardirq_fn = wlcore_hardirq;
- } else {
- irqflags = IRQF_TRIGGER_HIGH | IRQF_ONESHOT;
- }
-+ wl->irq_flags = irq_get_trigger_type(wl->irq);
-+
-+ hardirq_fn = wlcore_hardirq;
-+
-+ /* Since we don't use the primary handler, we must set ONESHOT */
-+ wl->irq_flags |= IRQF_ONESHOT;
+-#endif
+ #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)
+ ret = compat_request_threaded_irq(&wl->irq_compat, wl->irq,
+ hardirq_fn, wlcore_irq,
+- irqflags,
++ wl->irqflags,
+ pdev->name, wl);
+ #else
ret = request_threaded_irq(wl->irq, hardirq_fn, wlcore_irq,
- irqflags, pdev->name, wl);
-+ wl->irq_flags, pdev->name, wl);
++ wl->irqflags, pdev->name, wl);
+ #endif
if (ret < 0) {
wl1271_error("request_irq() failed: %d", ret);
- goto out_free_nvs;
--- a/drivers/net/wireless/ti/wlcore/wlcore.h
+++ b/drivers/net/wireless/ti/wlcore/wlcore.h
-@@ -186,6 +186,8 @@ struct wl1271 {
+@@ -188,6 +188,8 @@ struct wl1271 {
int irq;
spinlock_t wl_lock;
enum wlcore_state state;
-@@ -393,9 +395,6 @@ struct wl1271 {
+@@ -395,9 +397,6 @@ struct wl1271 {
/* Quirks of specific hardware revisions */
unsigned int quirks;
--- a/drivers/net/wireless/ti/wlcore/main.c
+++ b/drivers/net/wireless/ti/wlcore/main.c
-@@ -6041,7 +6041,6 @@ static void wlcore_nvs_cb(const struct f
+@@ -6074,7 +6074,6 @@ static void wlcore_nvs_cb(const struct f
struct wl1271 *wl = context;
struct platform_device *pdev = wl->pdev;
struct wlcore_platdev_data *pdev_data = dev_get_platdata(&pdev->dev);
int ret;
irq_handler_t hardirq_fn = NULL;
-@@ -6091,7 +6090,7 @@ static void wlcore_nvs_cb(const struct f
+@@ -6127,7 +6126,7 @@ static void wlcore_nvs_cb(const struct f
if (!ret) {
wl->irq_wake_enabled = true;
device_init_wakeup(wl->dev, 1);