diff options
author | John W. Linville <linville@tuxdriver.com> | 2014-11-20 16:09:30 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2014-11-20 16:09:30 -0500 |
commit | 9a638ddfb09e5aa17158842c95526e1aa79f92e6 (patch) | |
tree | 7edf2e128b23f711cf28273dca3ff69f3706925a /net/mac80211/ieee80211_i.h | |
parent | b4c1b70823721e9edb19a839188e4dae50ce878d (diff) | |
parent | 75769c80e381653994293b5aa5a8cfec50088f9f (diff) |
Merge tag 'mac80211-next-for-john-2014-11-20' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next
Johannes Berg <johannes@sipsolutions.net> says:
"It has been a while since my last pull request, so we accumulated
another relatively large set of changes:
* TDLS off-channel support set from Arik/Liad, with some support
patches I did
* custom regulatory fixes from Arik
* minstrel VHT fix (and a small optimisation) from Felix
* add back radiotap vendor namespace support (myself)
* random MAC address scanning for cfg80211/mac80211/hwsim (myself)
* CSA improvements (Luca)
* WoWLAN Net Detect (wake on network found) support (Luca)
* and lots of other smaller changes from many people"
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/ieee80211_i.h')
-rw-r--r-- | net/mac80211/ieee80211_i.h | 42 |
1 files changed, 36 insertions, 6 deletions
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h index 842e0661fb57..cc6e964d9837 100644 --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h | |||
@@ -525,8 +525,13 @@ struct ieee80211_if_managed { | |||
525 | struct ieee80211_vht_cap vht_capa; /* configured VHT overrides */ | 525 | struct ieee80211_vht_cap vht_capa; /* configured VHT overrides */ |
526 | struct ieee80211_vht_cap vht_capa_mask; /* Valid parts of vht_capa */ | 526 | struct ieee80211_vht_cap vht_capa_mask; /* Valid parts of vht_capa */ |
527 | 527 | ||
528 | /* TDLS support */ | ||
528 | u8 tdls_peer[ETH_ALEN] __aligned(2); | 529 | u8 tdls_peer[ETH_ALEN] __aligned(2); |
529 | struct delayed_work tdls_peer_del_work; | 530 | struct delayed_work tdls_peer_del_work; |
531 | struct sk_buff *orig_teardown_skb; /* The original teardown skb */ | ||
532 | struct sk_buff *teardown_skb; /* A copy to send through the AP */ | ||
533 | spinlock_t teardown_lock; /* To lock changing teardown_skb */ | ||
534 | bool tdls_chan_switch_prohibited; | ||
530 | 535 | ||
531 | /* WMM-AC TSPEC support */ | 536 | /* WMM-AC TSPEC support */ |
532 | struct ieee80211_sta_tx_tspec tx_tspec[IEEE80211_NUM_ACS]; | 537 | struct ieee80211_sta_tx_tspec tx_tspec[IEEE80211_NUM_ACS]; |
@@ -988,6 +993,7 @@ enum sdata_queue_type { | |||
988 | IEEE80211_SDATA_QUEUE_AGG_STOP = 2, | 993 | IEEE80211_SDATA_QUEUE_AGG_STOP = 2, |
989 | IEEE80211_SDATA_QUEUE_RX_AGG_START = 3, | 994 | IEEE80211_SDATA_QUEUE_RX_AGG_START = 3, |
990 | IEEE80211_SDATA_QUEUE_RX_AGG_STOP = 4, | 995 | IEEE80211_SDATA_QUEUE_RX_AGG_STOP = 4, |
996 | IEEE80211_SDATA_QUEUE_TDLS_CHSW = 5, | ||
991 | }; | 997 | }; |
992 | 998 | ||
993 | enum { | 999 | enum { |
@@ -1005,6 +1011,7 @@ enum queue_stop_reason { | |||
1005 | IEEE80211_QUEUE_STOP_REASON_OFFCHANNEL, | 1011 | IEEE80211_QUEUE_STOP_REASON_OFFCHANNEL, |
1006 | IEEE80211_QUEUE_STOP_REASON_FLUSH, | 1012 | IEEE80211_QUEUE_STOP_REASON_FLUSH, |
1007 | IEEE80211_QUEUE_STOP_REASON_TDLS_TEARDOWN, | 1013 | IEEE80211_QUEUE_STOP_REASON_TDLS_TEARDOWN, |
1014 | IEEE80211_QUEUE_STOP_REASON_RESERVE_TID, | ||
1008 | 1015 | ||
1009 | IEEE80211_QUEUE_STOP_REASONS, | 1016 | IEEE80211_QUEUE_STOP_REASONS, |
1010 | }; | 1017 | }; |
@@ -1231,7 +1238,7 @@ struct ieee80211_local { | |||
1231 | unsigned long scanning; | 1238 | unsigned long scanning; |
1232 | struct cfg80211_ssid scan_ssid; | 1239 | struct cfg80211_ssid scan_ssid; |
1233 | struct cfg80211_scan_request *int_scan_req; | 1240 | struct cfg80211_scan_request *int_scan_req; |
1234 | struct cfg80211_scan_request *scan_req; | 1241 | struct cfg80211_scan_request __rcu *scan_req; |
1235 | struct ieee80211_scan_request *hw_scan_req; | 1242 | struct ieee80211_scan_request *hw_scan_req; |
1236 | struct cfg80211_chan_def scan_chandef; | 1243 | struct cfg80211_chan_def scan_chandef; |
1237 | enum ieee80211_band hw_scan_band; | 1244 | enum ieee80211_band hw_scan_band; |
@@ -1241,7 +1248,8 @@ struct ieee80211_local { | |||
1241 | 1248 | ||
1242 | struct work_struct sched_scan_stopped_work; | 1249 | struct work_struct sched_scan_stopped_work; |
1243 | struct ieee80211_sub_if_data __rcu *sched_scan_sdata; | 1250 | struct ieee80211_sub_if_data __rcu *sched_scan_sdata; |
1244 | struct cfg80211_sched_scan_request *sched_scan_req; | 1251 | struct cfg80211_sched_scan_request __rcu *sched_scan_req; |
1252 | u8 scan_addr[ETH_ALEN]; | ||
1245 | 1253 | ||
1246 | unsigned long leave_oper_channel_time; | 1254 | unsigned long leave_oper_channel_time; |
1247 | enum mac80211_scan_state next_scan_state; | 1255 | enum mac80211_scan_state next_scan_state; |
@@ -1395,6 +1403,9 @@ struct ieee802_11_elems { | |||
1395 | size_t total_len; | 1403 | size_t total_len; |
1396 | 1404 | ||
1397 | /* pointers to IEs */ | 1405 | /* pointers to IEs */ |
1406 | const struct ieee80211_tdls_lnkie *lnk_id; | ||
1407 | const struct ieee80211_ch_switch_timing *ch_sw_timing; | ||
1408 | const u8 *ext_capab; | ||
1398 | const u8 *ssid; | 1409 | const u8 *ssid; |
1399 | const u8 *supp_rates; | 1410 | const u8 *supp_rates; |
1400 | const u8 *ds_params; | 1411 | const u8 *ds_params; |
@@ -1429,6 +1440,7 @@ struct ieee802_11_elems { | |||
1429 | const struct ieee80211_mesh_chansw_params_ie *mesh_chansw_params_ie; | 1440 | const struct ieee80211_mesh_chansw_params_ie *mesh_chansw_params_ie; |
1430 | 1441 | ||
1431 | /* length of them, respectively */ | 1442 | /* length of them, respectively */ |
1443 | u8 ext_capab_len; | ||
1432 | u8 ssid_len; | 1444 | u8 ssid_len; |
1433 | u8 supp_rates_len; | 1445 | u8 supp_rates_len; |
1434 | u8 tim_len; | 1446 | u8 tim_len; |
@@ -1625,8 +1637,14 @@ netdev_tx_t ieee80211_monitor_start_xmit(struct sk_buff *skb, | |||
1625 | struct net_device *dev); | 1637 | struct net_device *dev); |
1626 | netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb, | 1638 | netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb, |
1627 | struct net_device *dev); | 1639 | struct net_device *dev); |
1640 | void __ieee80211_subif_start_xmit(struct sk_buff *skb, | ||
1641 | struct net_device *dev, | ||
1642 | u32 info_flags); | ||
1628 | void ieee80211_purge_tx_queue(struct ieee80211_hw *hw, | 1643 | void ieee80211_purge_tx_queue(struct ieee80211_hw *hw, |
1629 | struct sk_buff_head *skbs); | 1644 | struct sk_buff_head *skbs); |
1645 | struct sk_buff * | ||
1646 | ieee80211_build_data_template(struct ieee80211_sub_if_data *sdata, | ||
1647 | struct sk_buff *skb, u32 info_flags); | ||
1630 | 1648 | ||
1631 | /* HT */ | 1649 | /* HT */ |
1632 | void ieee80211_apply_htcap_overrides(struct ieee80211_sub_if_data *sdata, | 1650 | void ieee80211_apply_htcap_overrides(struct ieee80211_sub_if_data *sdata, |
@@ -1753,8 +1771,7 @@ void mac80211_ev_michael_mic_failure(struct ieee80211_sub_if_data *sdata, int ke | |||
1753 | gfp_t gfp); | 1771 | gfp_t gfp); |
1754 | void ieee80211_set_wmm_default(struct ieee80211_sub_if_data *sdata, | 1772 | void ieee80211_set_wmm_default(struct ieee80211_sub_if_data *sdata, |
1755 | bool bss_notify); | 1773 | bool bss_notify); |
1756 | void ieee80211_xmit(struct ieee80211_sub_if_data *sdata, struct sk_buff *skb, | 1774 | void ieee80211_xmit(struct ieee80211_sub_if_data *sdata, struct sk_buff *skb); |
1757 | enum ieee80211_band band); | ||
1758 | 1775 | ||
1759 | void __ieee80211_tx_skb_tid_band(struct ieee80211_sub_if_data *sdata, | 1776 | void __ieee80211_tx_skb_tid_band(struct ieee80211_sub_if_data *sdata, |
1760 | struct sk_buff *skb, int tid, | 1777 | struct sk_buff *skb, int tid, |
@@ -1865,6 +1882,9 @@ void ieee80211_add_pending_skbs(struct ieee80211_local *local, | |||
1865 | struct sk_buff_head *skbs); | 1882 | struct sk_buff_head *skbs); |
1866 | void ieee80211_flush_queues(struct ieee80211_local *local, | 1883 | void ieee80211_flush_queues(struct ieee80211_local *local, |
1867 | struct ieee80211_sub_if_data *sdata); | 1884 | struct ieee80211_sub_if_data *sdata); |
1885 | void __ieee80211_flush_queues(struct ieee80211_local *local, | ||
1886 | struct ieee80211_sub_if_data *sdata, | ||
1887 | unsigned int queues); | ||
1868 | 1888 | ||
1869 | void ieee80211_send_auth(struct ieee80211_sub_if_data *sdata, | 1889 | void ieee80211_send_auth(struct ieee80211_sub_if_data *sdata, |
1870 | u16 transaction, u16 auth_alg, u16 status, | 1890 | u16 transaction, u16 auth_alg, u16 status, |
@@ -1881,12 +1901,14 @@ int ieee80211_build_preq_ies(struct ieee80211_local *local, u8 *buffer, | |||
1881 | u8 bands_used, u32 *rate_masks, | 1901 | u8 bands_used, u32 *rate_masks, |
1882 | struct cfg80211_chan_def *chandef); | 1902 | struct cfg80211_chan_def *chandef); |
1883 | struct sk_buff *ieee80211_build_probe_req(struct ieee80211_sub_if_data *sdata, | 1903 | struct sk_buff *ieee80211_build_probe_req(struct ieee80211_sub_if_data *sdata, |
1884 | u8 *dst, u32 ratemask, | 1904 | const u8 *src, const u8 *dst, |
1905 | u32 ratemask, | ||
1885 | struct ieee80211_channel *chan, | 1906 | struct ieee80211_channel *chan, |
1886 | const u8 *ssid, size_t ssid_len, | 1907 | const u8 *ssid, size_t ssid_len, |
1887 | const u8 *ie, size_t ie_len, | 1908 | const u8 *ie, size_t ie_len, |
1888 | bool directed); | 1909 | bool directed); |
1889 | void ieee80211_send_probe_req(struct ieee80211_sub_if_data *sdata, u8 *dst, | 1910 | void ieee80211_send_probe_req(struct ieee80211_sub_if_data *sdata, |
1911 | const u8 *src, const u8 *dst, | ||
1890 | const u8 *ssid, size_t ssid_len, | 1912 | const u8 *ssid, size_t ssid_len, |
1891 | const u8 *ie, size_t ie_len, | 1913 | const u8 *ie, size_t ie_len, |
1892 | u32 ratemask, bool directed, u32 tx_flags, | 1914 | u32 ratemask, bool directed, u32 tx_flags, |
@@ -1992,6 +2014,14 @@ int ieee80211_tdls_mgmt(struct wiphy *wiphy, struct net_device *dev, | |||
1992 | int ieee80211_tdls_oper(struct wiphy *wiphy, struct net_device *dev, | 2014 | int ieee80211_tdls_oper(struct wiphy *wiphy, struct net_device *dev, |
1993 | const u8 *peer, enum nl80211_tdls_operation oper); | 2015 | const u8 *peer, enum nl80211_tdls_operation oper); |
1994 | void ieee80211_tdls_peer_del_work(struct work_struct *wk); | 2016 | void ieee80211_tdls_peer_del_work(struct work_struct *wk); |
2017 | int ieee80211_tdls_channel_switch(struct wiphy *wiphy, struct net_device *dev, | ||
2018 | const u8 *addr, u8 oper_class, | ||
2019 | struct cfg80211_chan_def *chandef); | ||
2020 | void ieee80211_tdls_cancel_channel_switch(struct wiphy *wiphy, | ||
2021 | struct net_device *dev, | ||
2022 | const u8 *addr); | ||
2023 | void ieee80211_process_tdls_channel_switch(struct ieee80211_sub_if_data *sdata, | ||
2024 | struct sk_buff *skb); | ||
1995 | 2025 | ||
1996 | extern const struct ethtool_ops ieee80211_ethtool_ops; | 2026 | extern const struct ethtool_ops ieee80211_ethtool_ops; |
1997 | 2027 | ||