diff options
Diffstat (limited to 'package/mac80211/patches/414-mac80211-slot-time.patch')
-rw-r--r-- | package/mac80211/patches/414-mac80211-slot-time.patch | 201 |
1 files changed, 0 insertions, 201 deletions
diff --git a/package/mac80211/patches/414-mac80211-slot-time.patch b/package/mac80211/patches/414-mac80211-slot-time.patch deleted file mode 100644 index 145e273e5b..0000000000 --- a/package/mac80211/patches/414-mac80211-slot-time.patch +++ /dev/null @@ -1,201 +0,0 @@ -Subject: mac80211: fix short slot handling - -This patch makes mac80211 handle short slot requests from the AP -properly. Also warn about uses of IEEE80211_CONF_SHORT_SLOT_TIME -and optimise out the code since it cannot ever be hit anyway. - -Signed-off-by: Johannes Berg <johannes@sipsolutions.net> ---- - include/net/mac80211.h | 28 ++++++++++-------- - net/mac80211/main.c | 9 +++-- - net/mac80211/mlme.c | 74 ++++++++++++++++++++++++++----------------------- - 3 files changed, 62 insertions(+), 49 deletions(-) - ---- everything.orig/net/mac80211/main.c 2008-10-07 20:06:43.000000000 +0200 -+++ everything/net/mac80211/main.c 2008-10-08 10:56:29.000000000 +0200 -@@ -346,9 +346,12 @@ void ieee80211_bss_info_change_notify(st - - u32 ieee80211_reset_erp_info(struct ieee80211_sub_if_data *sdata) - { -- sdata->bss_conf.use_cts_prot = 0; -- sdata->bss_conf.use_short_preamble = 0; -- return BSS_CHANGED_ERP_CTS_PROT | BSS_CHANGED_ERP_PREAMBLE; -+ sdata->bss_conf.use_cts_prot = false; -+ sdata->bss_conf.use_short_preamble = false; -+ sdata->bss_conf.use_short_slot = false; -+ return BSS_CHANGED_ERP_CTS_PROT | -+ BSS_CHANGED_ERP_PREAMBLE | -+ BSS_CHANGED_ERP_SLOT; - } - - void ieee80211_tx_status_irqsafe(struct ieee80211_hw *hw, ---- everything.orig/net/mac80211/mlme.c 2008-10-07 20:05:49.000000000 +0200 -+++ everything/net/mac80211/mlme.c 2008-10-08 10:56:38.000000000 +0200 -@@ -568,9 +568,8 @@ static void ieee80211_sta_wmm_params(str - } - } - --static u32 ieee80211_handle_protect_preamb(struct ieee80211_sub_if_data *sdata, -- bool use_protection, -- bool use_short_preamble) -+static u32 ieee80211_handle_bss_capability(struct ieee80211_sub_if_data *sdata, -+ u16 capab, bool erp_valid, u8 erp) - { - struct ieee80211_bss_conf *bss_conf = &sdata->bss_conf; - #ifdef CONFIG_MAC80211_VERBOSE_DEBUG -@@ -578,6 +577,19 @@ static u32 ieee80211_handle_protect_prea - DECLARE_MAC_BUF(mac); - #endif - u32 changed = 0; -+ bool use_protection; -+ bool use_short_preamble; -+ bool use_short_slot; -+ -+ if (erp_valid) { -+ use_protection = (erp & WLAN_ERP_USE_PROTECTION) != 0; -+ use_short_preamble = (erp & WLAN_ERP_BARKER_PREAMBLE) == 0; -+ } else { -+ use_protection = false; -+ use_short_preamble = !!(capab & WLAN_CAPABILITY_SHORT_PREAMBLE); -+ } -+ -+ use_short_slot = !!(capab & WLAN_CAPABILITY_SHORT_SLOT_TIME); - - if (use_protection != bss_conf->use_cts_prot) { - #ifdef CONFIG_MAC80211_VERBOSE_DEBUG -@@ -607,30 +619,18 @@ static u32 ieee80211_handle_protect_prea - changed |= BSS_CHANGED_ERP_PREAMBLE; - } - -- return changed; --} -- --static u32 ieee80211_handle_erp_ie(struct ieee80211_sub_if_data *sdata, -- u8 erp_value) --{ -- bool use_protection = (erp_value & WLAN_ERP_USE_PROTECTION) != 0; -- bool use_short_preamble = (erp_value & WLAN_ERP_BARKER_PREAMBLE) == 0; -- -- return ieee80211_handle_protect_preamb(sdata, -- use_protection, use_short_preamble); --} -- --static u32 ieee80211_handle_bss_capability(struct ieee80211_sub_if_data *sdata, -- struct ieee80211_bss *bss) --{ -- u32 changed = 0; -- -- if (bss->has_erp_value) -- changed |= ieee80211_handle_erp_ie(sdata, bss->erp_value); -- else { -- u16 capab = bss->capability; -- changed |= ieee80211_handle_protect_preamb(sdata, false, -- (capab & WLAN_CAPABILITY_SHORT_PREAMBLE) != 0); -+ if (use_short_slot != bss_conf->use_short_slot) { -+#ifdef CONFIG_MAC80211_VERBOSE_DEBUG -+ if (net_ratelimit()) { -+ printk(KERN_DEBUG "%s: switched to %s slot" -+ " (BSSID=%s)\n", -+ sdata->dev->name, -+ use_short_slot ? "short" : "long", -+ print_mac(mac, ifsta->bssid)); -+ } -+#endif -+ bss_conf->use_short_slot = use_short_slot; -+ changed |= BSS_CHANGED_ERP_SLOT; - } - - return changed; -@@ -723,7 +723,8 @@ static void ieee80211_set_associated(str - sdata->bss_conf.timestamp = bss->timestamp; - sdata->bss_conf.dtim_period = bss->dtim_period; - -- changed |= ieee80211_handle_bss_capability(sdata, bss); -+ changed |= ieee80211_handle_bss_capability(sdata, -+ bss->capability, bss->has_erp_value, bss->erp_value); - - ieee80211_rx_bss_put(local, bss); - } -@@ -1675,6 +1676,8 @@ static void ieee80211_rx_mgmt_beacon(str - struct ieee80211_local *local = sdata->local; - struct ieee80211_conf *conf = &local->hw.conf; - u32 changed = 0; -+ bool erp_valid; -+ u8 erp_value = 0; - - /* Process beacon from the current BSS */ - baselen = (u8 *) mgmt->u.beacon.variable - (u8 *) mgmt; -@@ -1696,13 +1699,16 @@ static void ieee80211_rx_mgmt_beacon(str - ieee80211_sta_wmm_params(local, ifsta, elems.wmm_param, - elems.wmm_param_len); - -- if (elems.erp_info && elems.erp_info_len >= 1) -- changed |= ieee80211_handle_erp_ie(sdata, elems.erp_info[0]); -- else { -- u16 capab = le16_to_cpu(mgmt->u.beacon.capab_info); -- changed |= ieee80211_handle_protect_preamb(sdata, false, -- (capab & WLAN_CAPABILITY_SHORT_PREAMBLE) != 0); -+ -+ if (elems.erp_info && elems.erp_info_len >= 1) { -+ erp_valid = true; -+ erp_value = elems.erp_info[0]; -+ } else { -+ erp_valid = false; - } -+ changed |= ieee80211_handle_bss_capability(sdata, -+ le16_to_cpu(mgmt->u.beacon.capab_info), -+ erp_valid, erp_value); - - if (elems.ht_cap_elem && elems.ht_info_elem && - elems.wmm_param && conf->flags & IEEE80211_CONF_SUPPORT_HT_MODE) { ---- everything.orig/include/net/mac80211.h 2008-10-07 20:06:43.000000000 +0200 -+++ everything/include/net/mac80211.h 2008-10-08 10:57:06.000000000 +0200 -@@ -180,8 +180,12 @@ enum ieee80211_bss_change { - * @assoc: association status - * @aid: association ID number, valid only when @assoc is true - * @use_cts_prot: use CTS protection -- * @use_short_preamble: use 802.11b short preamble -- * @use_short_slot: use short slot time (only relevant for ERP) -+ * @use_short_preamble: use 802.11b short preamble; -+ * if the hardware cannot handle this it must set the -+ * IEEE80211_HW_2GHZ_SHORT_PREAMBLE_INCAPABLE hardware flag -+ * @use_short_slot: use short slot time (only relevant for ERP); -+ * if the hardware cannot handle this it must set the -+ * IEEE80211_HW_2GHZ_SHORT_SLOT_INCAPABLE hardware flag - * @dtim_period: num of beacons before the next DTIM, for PSM - * @timestamp: beacon timestamp - * @beacon_int: beacon interval -@@ -442,23 +446,23 @@ struct ieee80211_rx_status { - * - * Flags to define PHY configuration options - * -- * @IEEE80211_CONF_SHORT_SLOT_TIME: use 802.11g short slot time - * @IEEE80211_CONF_RADIOTAP: add radiotap header at receive time (if supported) - * @IEEE80211_CONF_SUPPORT_HT_MODE: use 802.11n HT capabilities (if supported) - * @IEEE80211_CONF_PS: Enable 802.11 power save mode - */ - enum ieee80211_conf_flags { -- /* -- * TODO: IEEE80211_CONF_SHORT_SLOT_TIME will be removed once drivers -- * have been converted to use bss_info_changed() for slot time -- * configuration -- */ -- IEEE80211_CONF_SHORT_SLOT_TIME = (1<<0), -- IEEE80211_CONF_RADIOTAP = (1<<1), -- IEEE80211_CONF_SUPPORT_HT_MODE = (1<<2), -- IEEE80211_CONF_PS = (1<<3), -+ IEEE80211_CONF_RADIOTAP = (1<<0), -+ IEEE80211_CONF_SUPPORT_HT_MODE = (1<<1), -+ IEEE80211_CONF_PS = (1<<2), - }; - -+/* XXX: remove all this once drivers stop trying to use it */ -+static inline int __deprecated __IEEE80211_CONF_SHORT_SLOT_TIME(void) -+{ -+ return 0; -+} -+#define IEEE80211_CONF_SHORT_SLOT_TIME (__IEEE80211_CONF_SHORT_SLOT_TIME()) -+ - /** - * struct ieee80211_conf - configuration of the device - * |