aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/ieee80211_i.h
diff options
context:
space:
mode:
authorJohannes Berg <johannes@sipsolutions.net>2008-10-14 10:58:37 -0400
committerJohn W. Linville <linville@tuxdriver.com>2008-10-31 19:00:16 -0400
commitae5eb02641233a4e9d1b92d22090f1b1afa14466 (patch)
tree117b7cb5efa3ff1cf714218098fc6db3820ed4e0 /net/mac80211/ieee80211_i.h
parentbda3933a8aceedd03e0dd410844bd310033ca756 (diff)
mac80211: rewrite HT handling
The HT handling has the following deficiencies, which I've (partially) fixed: * it always uses the AP info even if there is no AP, hence has no chance of working as an AP * it pretends to be HW config, but really is per-BSS * channel sanity checking is left to the drivers * it generally lets the driver control too much HT enabling is still wrong with this patch if you have more than one virtual STA mode interface, but that never happens currently. Once WDS, IBSS or AP/VLAN gets HT capabilities, it will also be wrong, see the comment in ieee80211_enable_ht(). Additionally, this fixes a number of bugs: * mac80211: ieee80211_set_disassoc doesn't notify the driver any more since the refactoring * iwl-agn-rs: always uses the HT capabilities from the wrong stuff mac80211 gives it rather than the actual peer STA * ath9k: a number of bugs resulting from the broken HT API I'm not entirely happy with putting the HT capabilities into struct ieee80211_sta as restricted to our own HT TX capabilities, but I see no cleaner solution for now. Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/ieee80211_i.h')
-rw-r--r--net/mac80211/ieee80211_i.h12
1 files changed, 5 insertions, 7 deletions
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
index 859b5b001f2..6f8756d26a9 100644
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -955,14 +955,12 @@ int ieee80211_monitor_start_xmit(struct sk_buff *skb, struct net_device *dev);
955int ieee80211_subif_start_xmit(struct sk_buff *skb, struct net_device *dev); 955int ieee80211_subif_start_xmit(struct sk_buff *skb, struct net_device *dev);
956 956
957/* HT */ 957/* HT */
958void ieee80211_ht_cap_ie_to_sta_ht_cap(struct ieee80211_ht_cap *ht_cap_ie, 958void ieee80211_ht_cap_ie_to_sta_ht_cap(struct ieee80211_supported_band *sband,
959 struct ieee80211_ht_cap *ht_cap_ie,
959 struct ieee80211_sta_ht_cap *ht_cap); 960 struct ieee80211_sta_ht_cap *ht_cap);
960void ieee80211_ht_info_ie_to_ht_bss_info( 961u32 ieee80211_enable_ht(struct ieee80211_sub_if_data *sdata,
961 struct ieee80211_ht_info *ht_add_info_ie, 962 struct ieee80211_ht_info *hti,
962 struct ieee80211_ht_bss_info *bss_info); 963 u16 ap_ht_cap_flags);
963u32 ieee80211_handle_ht(struct ieee80211_local *local,
964 struct ieee80211_sta_ht_cap *req_ht_cap,
965 struct ieee80211_ht_bss_info *req_bss_cap);
966void ieee80211_send_bar(struct ieee80211_sub_if_data *sdata, u8 *ra, u16 tid, u16 ssn); 964void ieee80211_send_bar(struct ieee80211_sub_if_data *sdata, u8 *ra, u16 tid, u16 ssn);
967 965
968void ieee80211_sta_stop_rx_ba_session(struct ieee80211_sub_if_data *sdata, u8 *da, 966void ieee80211_sta_stop_rx_ba_session(struct ieee80211_sub_if_data *sdata, u8 *da,