ieee80211_i.h (6ea24cf79e055f0a62a64baa8587e2254a493c7b) ieee80211_i.h (7947d3e075cde1a18e538f2dafbc850aa356ff79)
1/*
2 * Copyright 2002-2005, Instant802 Networks, Inc.
3 * Copyright 2005, Devicescape Software, Inc.
4 * Copyright 2006-2007 Jiri Benc <jbenc@suse.cz>
5 * Copyright 2007-2010 Johannes Berg <johannes@sipsolutions.net>
6 * Copyright 2013-2014 Intel Mobile Communications GmbH
7 *
8 * This program is free software; you can redistribute it and/or modify

--- 16 unchanged lines hidden (view full) ---

25#include <linux/spinlock.h>
26#include <linux/etherdevice.h>
27#include <linux/leds.h>
28#include <linux/idr.h>
29#include <linux/rhashtable.h>
30#include <net/ieee80211_radiotap.h>
31#include <net/cfg80211.h>
32#include <net/mac80211.h>
1/*
2 * Copyright 2002-2005, Instant802 Networks, Inc.
3 * Copyright 2005, Devicescape Software, Inc.
4 * Copyright 2006-2007 Jiri Benc <jbenc@suse.cz>
5 * Copyright 2007-2010 Johannes Berg <johannes@sipsolutions.net>
6 * Copyright 2013-2014 Intel Mobile Communications GmbH
7 *
8 * This program is free software; you can redistribute it and/or modify

--- 16 unchanged lines hidden (view full) ---

25#include <linux/spinlock.h>
26#include <linux/etherdevice.h>
27#include <linux/leds.h>
28#include <linux/idr.h>
29#include <linux/rhashtable.h>
30#include <net/ieee80211_radiotap.h>
31#include <net/cfg80211.h>
32#include <net/mac80211.h>
33#include <net/fq.h>
33#include "key.h"
34#include "sta_info.h"
35#include "debug.h"
36
37extern const struct cfg80211_ops mac80211_config_ops;
38
39struct ieee80211_local;
40

--- 650 unchanged lines hidden (view full) ---

691 IEEE80211_MESH_CSA_ROLE_INIT,
692 IEEE80211_MESH_CSA_ROLE_REPEATER,
693 } csa_role;
694 u8 chsw_ttl;
695 u16 pre_value;
696
697 /* offset from skb->data while building IE */
698 int meshconf_offset;
34#include "key.h"
35#include "sta_info.h"
36#include "debug.h"
37
38extern const struct cfg80211_ops mac80211_config_ops;
39
40struct ieee80211_local;
41

--- 650 unchanged lines hidden (view full) ---

692 IEEE80211_MESH_CSA_ROLE_INIT,
693 IEEE80211_MESH_CSA_ROLE_REPEATER,
694 } csa_role;
695 u8 chsw_ttl;
696 u16 pre_value;
697
698 /* offset from skb->data while building IE */
699 int meshconf_offset;
700
701 struct mesh_table *mesh_paths;
702 struct mesh_table *mpp_paths; /* Store paths for MPP&MAP */
703 int mesh_paths_generation;
704 int mpp_paths_generation;
699};
700
701#ifdef CONFIG_MAC80211_MESH
702#define IEEE80211_IFSTA_MESH_CTR_INC(msh, name) \
703 do { (msh)->mshstats.name++; } while (0)
704#else
705#define IEEE80211_IFSTA_MESH_CTR_INC(msh, name) \
706 do { } while (0)

--- 85 unchanged lines hidden (view full) ---

792struct mac80211_qos_map {
793 struct cfg80211_qos_map qos_map;
794 struct rcu_head rcu_head;
795};
796
797enum txq_info_flags {
798 IEEE80211_TXQ_STOP,
799 IEEE80211_TXQ_AMPDU,
705};
706
707#ifdef CONFIG_MAC80211_MESH
708#define IEEE80211_IFSTA_MESH_CTR_INC(msh, name) \
709 do { (msh)->mshstats.name++; } while (0)
710#else
711#define IEEE80211_IFSTA_MESH_CTR_INC(msh, name) \
712 do { } while (0)

--- 85 unchanged lines hidden (view full) ---

798struct mac80211_qos_map {
799 struct cfg80211_qos_map qos_map;
800 struct rcu_head rcu_head;
801};
802
803enum txq_info_flags {
804 IEEE80211_TXQ_STOP,
805 IEEE80211_TXQ_AMPDU,
806 IEEE80211_TXQ_NO_AMSDU,
800};
801
807};
808
809/**
810 * struct txq_info - per tid queue
811 *
812 * @tin: contains packets split into multiple flows
813 * @def_flow: used as a fallback flow when a packet destined to @tin hashes to
814 * a fq_flow which is already owned by a different tin
815 * @def_cvars: codel vars for @def_flow
816 */
802struct txq_info {
817struct txq_info {
803 struct sk_buff_head queue;
818 struct fq_tin tin;
819 struct fq_flow def_flow;
820 struct codel_vars def_cvars;
804 unsigned long flags;
821 unsigned long flags;
805 unsigned long byte_cnt;
806
807 /* keep last! */
808 struct ieee80211_txq txq;
809};
810
811struct ieee80211_sub_if_data {
812 struct list_head list;
813

--- 31 unchanged lines hidden (view full) ---

845 struct ieee80211_key __rcu *default_multicast_key;
846 struct ieee80211_key __rcu *default_mgmt_key;
847
848 u16 sequence_number;
849 __be16 control_port_protocol;
850 bool control_port_no_encrypt;
851 int encrypt_headroom;
852
822
823 /* keep last! */
824 struct ieee80211_txq txq;
825};
826
827struct ieee80211_sub_if_data {
828 struct list_head list;
829

--- 31 unchanged lines hidden (view full) ---

861 struct ieee80211_key __rcu *default_multicast_key;
862 struct ieee80211_key __rcu *default_mgmt_key;
863
864 u16 sequence_number;
865 __be16 control_port_protocol;
866 bool control_port_no_encrypt;
867 int encrypt_headroom;
868
853 atomic_t txqs_len[IEEE80211_NUM_ACS];
869 atomic_t num_tx_queued;
854 struct ieee80211_tx_queue_params tx_conf[IEEE80211_NUM_ACS];
855 struct mac80211_qos_map __rcu *qos_map;
856
857 struct work_struct csa_finalize_work;
858 bool csa_block_tx; /* write-protected by sdata_lock and local->mtx */
859 struct cfg80211_chan_def csa_chandef;
860
861 struct list_head assigned_chanctx_list; /* protected by chanctx_mtx */

--- 23 unchanged lines hidden (view full) ---

885 /*
886 * AP this belongs to: self in AP mode and
887 * corresponding AP in VLAN mode, NULL for
888 * all others (might be needed later in IBSS)
889 */
890 struct ieee80211_if_ap *bss;
891
892 /* bitmap of allowed (non-MCS) rate indexes for rate control */
870 struct ieee80211_tx_queue_params tx_conf[IEEE80211_NUM_ACS];
871 struct mac80211_qos_map __rcu *qos_map;
872
873 struct work_struct csa_finalize_work;
874 bool csa_block_tx; /* write-protected by sdata_lock and local->mtx */
875 struct cfg80211_chan_def csa_chandef;
876
877 struct list_head assigned_chanctx_list; /* protected by chanctx_mtx */

--- 23 unchanged lines hidden (view full) ---

901 /*
902 * AP this belongs to: self in AP mode and
903 * corresponding AP in VLAN mode, NULL for
904 * all others (might be needed later in IBSS)
905 */
906 struct ieee80211_if_ap *bss;
907
908 /* bitmap of allowed (non-MCS) rate indexes for rate control */
893 u32 rc_rateidx_mask[IEEE80211_NUM_BANDS];
909 u32 rc_rateidx_mask[NUM_NL80211_BANDS];
894
910
895 bool rc_has_mcs_mask[IEEE80211_NUM_BANDS];
896 u8 rc_rateidx_mcs_mask[IEEE80211_NUM_BANDS][IEEE80211_HT_MCS_MASK_LEN];
911 bool rc_has_mcs_mask[NUM_NL80211_BANDS];
912 u8 rc_rateidx_mcs_mask[NUM_NL80211_BANDS][IEEE80211_HT_MCS_MASK_LEN];
897
913
898 bool rc_has_vht_mcs_mask[IEEE80211_NUM_BANDS];
899 u16 rc_rateidx_vht_mcs_mask[IEEE80211_NUM_BANDS][NL80211_VHT_NSS_MAX];
914 bool rc_has_vht_mcs_mask[NUM_NL80211_BANDS];
915 u16 rc_rateidx_vht_mcs_mask[NUM_NL80211_BANDS][NL80211_VHT_NSS_MAX];
900
901 union {
902 struct ieee80211_if_ap ap;
903 struct ieee80211_if_wds wds;
904 struct ieee80211_if_vlan vlan;
905 struct ieee80211_if_managed mgd;
906 struct ieee80211_if_ibss ibss;
907 struct ieee80211_if_mesh mesh;

--- 38 unchanged lines hidden (view full) ---

946 rcu_dereference_protected(p, lockdep_is_held(&sdata->wdev.mtx))
947
948static inline void
949sdata_assert_lock(struct ieee80211_sub_if_data *sdata)
950{
951 lockdep_assert_held(&sdata->wdev.mtx);
952}
953
916
917 union {
918 struct ieee80211_if_ap ap;
919 struct ieee80211_if_wds wds;
920 struct ieee80211_if_vlan vlan;
921 struct ieee80211_if_managed mgd;
922 struct ieee80211_if_ibss ibss;
923 struct ieee80211_if_mesh mesh;

--- 38 unchanged lines hidden (view full) ---

962 rcu_dereference_protected(p, lockdep_is_held(&sdata->wdev.mtx))
963
964static inline void
965sdata_assert_lock(struct ieee80211_sub_if_data *sdata)
966{
967 lockdep_assert_held(&sdata->wdev.mtx);
968}
969
954static inline enum ieee80211_band
970static inline enum nl80211_band
955ieee80211_get_sdata_band(struct ieee80211_sub_if_data *sdata)
956{
971ieee80211_get_sdata_band(struct ieee80211_sub_if_data *sdata)
972{
957 enum ieee80211_band band = IEEE80211_BAND_2GHZ;
973 enum nl80211_band band = NL80211_BAND_2GHZ;
958 struct ieee80211_chanctx_conf *chanctx_conf;
959
960 rcu_read_lock();
961 chanctx_conf = rcu_dereference(sdata->vif.chanctx_conf);
962 if (!WARN_ON(!chanctx_conf))
963 band = chanctx_conf->def.chan->band;
964 rcu_read_unlock();
965

--- 122 unchanged lines hidden (view full) ---

1088};
1089
1090struct ieee80211_local {
1091 /* embed the driver visible part.
1092 * don't cast (use the static inlines below), but we keep
1093 * it first anyway so they become a no-op */
1094 struct ieee80211_hw hw;
1095
974 struct ieee80211_chanctx_conf *chanctx_conf;
975
976 rcu_read_lock();
977 chanctx_conf = rcu_dereference(sdata->vif.chanctx_conf);
978 if (!WARN_ON(!chanctx_conf))
979 band = chanctx_conf->def.chan->band;
980 rcu_read_unlock();
981

--- 122 unchanged lines hidden (view full) ---

1104};
1105
1106struct ieee80211_local {
1107 /* embed the driver visible part.
1108 * don't cast (use the static inlines below), but we keep
1109 * it first anyway so they become a no-op */
1110 struct ieee80211_hw hw;
1111
1112 struct fq fq;
1113 struct codel_vars *cvars;
1114 struct codel_params cparams;
1115 struct codel_stats cstats;
1116
1096 const struct ieee80211_ops *ops;
1097
1098 /*
1099 * private workqueue to mac80211. mac80211 makes this accessible
1100 * via ieee80211_queue_work()
1101 */
1102 struct workqueue_struct *workqueue;
1103

--- 116 unchanged lines hidden (view full) ---

1220
1221 /* Scanning and BSS list */
1222 unsigned long scanning;
1223 struct cfg80211_ssid scan_ssid;
1224 struct cfg80211_scan_request *int_scan_req;
1225 struct cfg80211_scan_request __rcu *scan_req;
1226 struct ieee80211_scan_request *hw_scan_req;
1227 struct cfg80211_chan_def scan_chandef;
1117 const struct ieee80211_ops *ops;
1118
1119 /*
1120 * private workqueue to mac80211. mac80211 makes this accessible
1121 * via ieee80211_queue_work()
1122 */
1123 struct workqueue_struct *workqueue;
1124

--- 116 unchanged lines hidden (view full) ---

1241
1242 /* Scanning and BSS list */
1243 unsigned long scanning;
1244 struct cfg80211_ssid scan_ssid;
1245 struct cfg80211_scan_request *int_scan_req;
1246 struct cfg80211_scan_request __rcu *scan_req;
1247 struct ieee80211_scan_request *hw_scan_req;
1248 struct cfg80211_chan_def scan_chandef;
1228 enum ieee80211_band hw_scan_band;
1249 enum nl80211_band hw_scan_band;
1229 int scan_channel_idx;
1230 int scan_ies_len;
1231 int hw_scan_ies_bufsize;
1250 int scan_channel_idx;
1251 int scan_ies_len;
1252 int hw_scan_ies_bufsize;
1253 struct cfg80211_scan_info scan_info;
1232
1233 struct work_struct sched_scan_stopped_work;
1234 struct ieee80211_sub_if_data __rcu *sched_scan_sdata;
1235 struct cfg80211_sched_scan_request __rcu *sched_scan_req;
1236 u8 scan_addr[ETH_ALEN];
1237
1238 unsigned long leave_oper_channel_time;
1239 enum mac80211_scan_state next_scan_state;

--- 244 unchanged lines hidden (view full) ---

1484 u32 changed);
1485void ieee80211_configure_filter(struct ieee80211_local *local);
1486u32 ieee80211_reset_erp_info(struct ieee80211_sub_if_data *sdata);
1487
1488u64 ieee80211_mgmt_tx_cookie(struct ieee80211_local *local);
1489int ieee80211_attach_ack_skb(struct ieee80211_local *local, struct sk_buff *skb,
1490 u64 *cookie, gfp_t gfp);
1491
1254
1255 struct work_struct sched_scan_stopped_work;
1256 struct ieee80211_sub_if_data __rcu *sched_scan_sdata;
1257 struct cfg80211_sched_scan_request __rcu *sched_scan_req;
1258 u8 scan_addr[ETH_ALEN];
1259
1260 unsigned long leave_oper_channel_time;
1261 enum mac80211_scan_state next_scan_state;

--- 244 unchanged lines hidden (view full) ---

1506 u32 changed);
1507void ieee80211_configure_filter(struct ieee80211_local *local);
1508u32 ieee80211_reset_erp_info(struct ieee80211_sub_if_data *sdata);
1509
1510u64 ieee80211_mgmt_tx_cookie(struct ieee80211_local *local);
1511int ieee80211_attach_ack_skb(struct ieee80211_local *local, struct sk_buff *skb,
1512 u64 *cookie, gfp_t gfp);
1513
1514void ieee80211_check_fast_rx(struct sta_info *sta);
1515void __ieee80211_check_fast_rx_iface(struct ieee80211_sub_if_data *sdata);
1516void ieee80211_check_fast_rx_iface(struct ieee80211_sub_if_data *sdata);
1517void ieee80211_clear_fast_rx(struct sta_info *sta);
1518
1492/* STA code */
1493void ieee80211_sta_setup_sdata(struct ieee80211_sub_if_data *sdata);
1494int ieee80211_mgd_auth(struct ieee80211_sub_if_data *sdata,
1495 struct cfg80211_auth_request *req);
1496int ieee80211_mgd_assoc(struct ieee80211_sub_if_data *sdata,
1497 struct cfg80211_assoc_request *req);
1498int ieee80211_mgd_deauth(struct ieee80211_sub_if_data *sdata,
1499 struct cfg80211_deauth_request *req);

--- 222 unchanged lines hidden (view full) ---

1722enum ieee80211_sta_rx_bandwidth
1723ieee80211_chan_width_to_rx_bw(enum nl80211_chan_width width);
1724enum nl80211_chan_width ieee80211_sta_cap_chan_bw(struct sta_info *sta);
1725void ieee80211_sta_set_rx_nss(struct sta_info *sta);
1726void ieee80211_process_mu_groups(struct ieee80211_sub_if_data *sdata,
1727 struct ieee80211_mgmt *mgmt);
1728u32 __ieee80211_vht_handle_opmode(struct ieee80211_sub_if_data *sdata,
1729 struct sta_info *sta, u8 opmode,
1519/* STA code */
1520void ieee80211_sta_setup_sdata(struct ieee80211_sub_if_data *sdata);
1521int ieee80211_mgd_auth(struct ieee80211_sub_if_data *sdata,
1522 struct cfg80211_auth_request *req);
1523int ieee80211_mgd_assoc(struct ieee80211_sub_if_data *sdata,
1524 struct cfg80211_assoc_request *req);
1525int ieee80211_mgd_deauth(struct ieee80211_sub_if_data *sdata,
1526 struct cfg80211_deauth_request *req);

--- 222 unchanged lines hidden (view full) ---

1749enum ieee80211_sta_rx_bandwidth
1750ieee80211_chan_width_to_rx_bw(enum nl80211_chan_width width);
1751enum nl80211_chan_width ieee80211_sta_cap_chan_bw(struct sta_info *sta);
1752void ieee80211_sta_set_rx_nss(struct sta_info *sta);
1753void ieee80211_process_mu_groups(struct ieee80211_sub_if_data *sdata,
1754 struct ieee80211_mgmt *mgmt);
1755u32 __ieee80211_vht_handle_opmode(struct ieee80211_sub_if_data *sdata,
1756 struct sta_info *sta, u8 opmode,
1730 enum ieee80211_band band);
1757 enum nl80211_band band);
1731void ieee80211_vht_handle_opmode(struct ieee80211_sub_if_data *sdata,
1732 struct sta_info *sta, u8 opmode,
1758void ieee80211_vht_handle_opmode(struct ieee80211_sub_if_data *sdata,
1759 struct sta_info *sta, u8 opmode,
1733 enum ieee80211_band band);
1760 enum nl80211_band band);
1734void ieee80211_apply_vhtcap_overrides(struct ieee80211_sub_if_data *sdata,
1735 struct ieee80211_sta_vht_cap *vht_cap);
1736void ieee80211_get_vht_mask_from_cap(__le16 vht_cap,
1737 u16 vht_mask[NL80211_VHT_NSS_MAX]);
1738
1739/* Spectrum management */
1740void ieee80211_process_measurement_req(struct ieee80211_sub_if_data *sdata,
1741 struct ieee80211_mgmt *mgmt,

--- 11 unchanged lines hidden (view full) ---

1753 * %IEEE80211_STA_DISABLE_160MHZ.
1754 * @bssid: the currently connected bssid (for reporting)
1755 * @csa_ie: parsed 802.11 csa elements on count, mode, chandef and mesh ttl.
1756 All of them will be filled with if success only.
1757 * Return: 0 on success, <0 on error and >0 if there is nothing to parse.
1758 */
1759int ieee80211_parse_ch_switch_ie(struct ieee80211_sub_if_data *sdata,
1760 struct ieee802_11_elems *elems,
1761void ieee80211_apply_vhtcap_overrides(struct ieee80211_sub_if_data *sdata,
1762 struct ieee80211_sta_vht_cap *vht_cap);
1763void ieee80211_get_vht_mask_from_cap(__le16 vht_cap,
1764 u16 vht_mask[NL80211_VHT_NSS_MAX]);
1765
1766/* Spectrum management */
1767void ieee80211_process_measurement_req(struct ieee80211_sub_if_data *sdata,
1768 struct ieee80211_mgmt *mgmt,

--- 11 unchanged lines hidden (view full) ---

1780 * %IEEE80211_STA_DISABLE_160MHZ.
1781 * @bssid: the currently connected bssid (for reporting)
1782 * @csa_ie: parsed 802.11 csa elements on count, mode, chandef and mesh ttl.
1783 All of them will be filled with if success only.
1784 * Return: 0 on success, <0 on error and >0 if there is nothing to parse.
1785 */
1786int ieee80211_parse_ch_switch_ie(struct ieee80211_sub_if_data *sdata,
1787 struct ieee802_11_elems *elems,
1761 enum ieee80211_band current_band,
1788 enum nl80211_band current_band,
1762 u32 sta_flags, u8 *bssid,
1763 struct ieee80211_csa_ie *csa_ie);
1764
1765/* Suspend/resume and hw reconfiguration */
1766int ieee80211_reconfig(struct ieee80211_local *local);
1767void ieee80211_stop_device(struct ieee80211_local *local);
1768
1769int __ieee80211_suspend(struct ieee80211_hw *hw,

--- 8 unchanged lines hidden (view full) ---

1778 "%s: resume with hardware scan still in progress\n",
1779 wiphy_name(hw->wiphy));
1780
1781 return ieee80211_reconfig(hw_to_local(hw));
1782}
1783
1784/* utility functions/constants */
1785extern const void *const mac80211_wiphy_privid; /* for wiphy privid */
1789 u32 sta_flags, u8 *bssid,
1790 struct ieee80211_csa_ie *csa_ie);
1791
1792/* Suspend/resume and hw reconfiguration */
1793int ieee80211_reconfig(struct ieee80211_local *local);
1794void ieee80211_stop_device(struct ieee80211_local *local);
1795
1796int __ieee80211_suspend(struct ieee80211_hw *hw,

--- 8 unchanged lines hidden (view full) ---

1805 "%s: resume with hardware scan still in progress\n",
1806 wiphy_name(hw->wiphy));
1807
1808 return ieee80211_reconfig(hw_to_local(hw));
1809}
1810
1811/* utility functions/constants */
1812extern const void *const mac80211_wiphy_privid; /* for wiphy privid */
1786int ieee80211_frame_duration(enum ieee80211_band band, size_t len,
1813int ieee80211_frame_duration(enum nl80211_band band, size_t len,
1787 int rate, int erp, int short_preamble,
1788 int shift);
1789void ieee80211_set_wmm_default(struct ieee80211_sub_if_data *sdata,
1790 bool bss_notify, bool enable_qos);
1791void ieee80211_xmit(struct ieee80211_sub_if_data *sdata,
1792 struct sta_info *sta, struct sk_buff *skb);
1793
1794void __ieee80211_tx_skb_tid_band(struct ieee80211_sub_if_data *sdata,
1795 struct sk_buff *skb, int tid,
1814 int rate, int erp, int short_preamble,
1815 int shift);
1816void ieee80211_set_wmm_default(struct ieee80211_sub_if_data *sdata,
1817 bool bss_notify, bool enable_qos);
1818void ieee80211_xmit(struct ieee80211_sub_if_data *sdata,
1819 struct sta_info *sta, struct sk_buff *skb);
1820
1821void __ieee80211_tx_skb_tid_band(struct ieee80211_sub_if_data *sdata,
1822 struct sk_buff *skb, int tid,
1796 enum ieee80211_band band);
1823 enum nl80211_band band);
1797
1798static inline void
1799ieee80211_tx_skb_tid_band(struct ieee80211_sub_if_data *sdata,
1800 struct sk_buff *skb, int tid,
1824
1825static inline void
1826ieee80211_tx_skb_tid_band(struct ieee80211_sub_if_data *sdata,
1827 struct sk_buff *skb, int tid,
1801 enum ieee80211_band band)
1828 enum nl80211_band band)
1802{
1803 rcu_read_lock();
1804 __ieee80211_tx_skb_tid_band(sdata, skb, tid, band);
1805 rcu_read_unlock();
1806}
1807
1808static inline void ieee80211_tx_skb_tid(struct ieee80211_sub_if_data *sdata,
1809 struct sk_buff *skb, int tid)

--- 105 unchanged lines hidden (view full) ---

1915 * worker starts running...
1916 */
1917 if (local->suspended)
1918 return false;
1919
1920 return true;
1921}
1922
1829{
1830 rcu_read_lock();
1831 __ieee80211_tx_skb_tid_band(sdata, skb, tid, band);
1832 rcu_read_unlock();
1833}
1834
1835static inline void ieee80211_tx_skb_tid(struct ieee80211_sub_if_data *sdata,
1836 struct sk_buff *skb, int tid)

--- 105 unchanged lines hidden (view full) ---

1942 * worker starts running...
1943 */
1944 if (local->suspended)
1945 return false;
1946
1947 return true;
1948}
1949
1923void ieee80211_init_tx_queue(struct ieee80211_sub_if_data *sdata,
1924 struct sta_info *sta,
1925 struct txq_info *txq, int tid);
1950int ieee80211_txq_setup_flows(struct ieee80211_local *local);
1951void ieee80211_txq_teardown_flows(struct ieee80211_local *local);
1952void ieee80211_txq_init(struct ieee80211_sub_if_data *sdata,
1953 struct sta_info *sta,
1954 struct txq_info *txq, int tid);
1955void ieee80211_txq_purge(struct ieee80211_local *local,
1956 struct txq_info *txqi);
1926void ieee80211_send_auth(struct ieee80211_sub_if_data *sdata,
1927 u16 transaction, u16 auth_alg, u16 status,
1928 const u8 *extra, size_t extra_len, const u8 *bssid,
1929 const u8 *da, const u8 *key, u8 key_len, u8 key_idx,
1930 u32 tx_flags);
1931void ieee80211_send_deauth_disassoc(struct ieee80211_sub_if_data *sdata,
1932 const u8 *bssid, u16 stype, u16 reason,
1933 bool send_frame, u8 *frame_buf);

--- 14 unchanged lines hidden (view full) ---

1948 const u8 *src, const u8 *dst,
1949 const u8 *ssid, size_t ssid_len,
1950 const u8 *ie, size_t ie_len,
1951 u32 ratemask, bool directed, u32 tx_flags,
1952 struct ieee80211_channel *channel, bool scan);
1953
1954u32 ieee80211_sta_get_rates(struct ieee80211_sub_if_data *sdata,
1955 struct ieee802_11_elems *elems,
1957void ieee80211_send_auth(struct ieee80211_sub_if_data *sdata,
1958 u16 transaction, u16 auth_alg, u16 status,
1959 const u8 *extra, size_t extra_len, const u8 *bssid,
1960 const u8 *da, const u8 *key, u8 key_len, u8 key_idx,
1961 u32 tx_flags);
1962void ieee80211_send_deauth_disassoc(struct ieee80211_sub_if_data *sdata,
1963 const u8 *bssid, u16 stype, u16 reason,
1964 bool send_frame, u8 *frame_buf);

--- 14 unchanged lines hidden (view full) ---

1979 const u8 *src, const u8 *dst,
1980 const u8 *ssid, size_t ssid_len,
1981 const u8 *ie, size_t ie_len,
1982 u32 ratemask, bool directed, u32 tx_flags,
1983 struct ieee80211_channel *channel, bool scan);
1984
1985u32 ieee80211_sta_get_rates(struct ieee80211_sub_if_data *sdata,
1986 struct ieee802_11_elems *elems,
1956 enum ieee80211_band band, u32 *basic_rates);
1987 enum nl80211_band band, u32 *basic_rates);
1957int __ieee80211_request_smps_mgd(struct ieee80211_sub_if_data *sdata,
1958 enum ieee80211_smps_mode smps_mode);
1959int __ieee80211_request_smps_ap(struct ieee80211_sub_if_data *sdata,
1960 enum ieee80211_smps_mode smps_mode);
1961void ieee80211_recalc_smps(struct ieee80211_sub_if_data *sdata);
1962void ieee80211_recalc_min_chandef(struct ieee80211_sub_if_data *sdata);
1963
1964size_t ieee80211_ie_split_vendor(const u8 *ies, size_t ielen, size_t offset);

--- 6 unchanged lines hidden (view full) ---

1971 u32 cap);
1972u8 *ieee80211_ie_build_vht_oper(u8 *pos, struct ieee80211_sta_vht_cap *vht_cap,
1973 const struct cfg80211_chan_def *chandef);
1974int ieee80211_parse_bitrates(struct cfg80211_chan_def *chandef,
1975 const struct ieee80211_supported_band *sband,
1976 const u8 *srates, int srates_len, u32 *rates);
1977int ieee80211_add_srates_ie(struct ieee80211_sub_if_data *sdata,
1978 struct sk_buff *skb, bool need_basic,
1988int __ieee80211_request_smps_mgd(struct ieee80211_sub_if_data *sdata,
1989 enum ieee80211_smps_mode smps_mode);
1990int __ieee80211_request_smps_ap(struct ieee80211_sub_if_data *sdata,
1991 enum ieee80211_smps_mode smps_mode);
1992void ieee80211_recalc_smps(struct ieee80211_sub_if_data *sdata);
1993void ieee80211_recalc_min_chandef(struct ieee80211_sub_if_data *sdata);
1994
1995size_t ieee80211_ie_split_vendor(const u8 *ies, size_t ielen, size_t offset);

--- 6 unchanged lines hidden (view full) ---

2002 u32 cap);
2003u8 *ieee80211_ie_build_vht_oper(u8 *pos, struct ieee80211_sta_vht_cap *vht_cap,
2004 const struct cfg80211_chan_def *chandef);
2005int ieee80211_parse_bitrates(struct cfg80211_chan_def *chandef,
2006 const struct ieee80211_supported_band *sband,
2007 const u8 *srates, int srates_len, u32 *rates);
2008int ieee80211_add_srates_ie(struct ieee80211_sub_if_data *sdata,
2009 struct sk_buff *skb, bool need_basic,
1979 enum ieee80211_band band);
2010 enum nl80211_band band);
1980int ieee80211_add_ext_srates_ie(struct ieee80211_sub_if_data *sdata,
1981 struct sk_buff *skb, bool need_basic,
2011int ieee80211_add_ext_srates_ie(struct ieee80211_sub_if_data *sdata,
2012 struct sk_buff *skb, bool need_basic,
1982 enum ieee80211_band band);
2013 enum nl80211_band band);
1983u8 *ieee80211_add_wmm_info_ie(u8 *buf, u8 qosinfo);
1984
1985/* channel management */
1986bool ieee80211_chandef_ht_oper(const struct ieee80211_ht_operation *ht_oper,
1987 struct cfg80211_chan_def *chandef);
1988bool ieee80211_chandef_vht_oper(const struct ieee80211_vht_operation *oper,
1989 struct cfg80211_chan_def *chandef);
1990u32 ieee80211_chandef_downgrade(struct cfg80211_chan_def *c);

--- 84 unchanged lines hidden ---
2014u8 *ieee80211_add_wmm_info_ie(u8 *buf, u8 qosinfo);
2015
2016/* channel management */
2017bool ieee80211_chandef_ht_oper(const struct ieee80211_ht_operation *ht_oper,
2018 struct cfg80211_chan_def *chandef);
2019bool ieee80211_chandef_vht_oper(const struct ieee80211_vht_operation *oper,
2020 struct cfg80211_chan_def *chandef);
2021u32 ieee80211_chandef_downgrade(struct cfg80211_chan_def *c);

--- 84 unchanged lines hidden ---