Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem
Conflicts: drivers/net/wireless/iwlwifi/dvm/tx.c drivers/net/wireless/ti/wlcore/sdio.c drivers/net/wireless/ti/wlcore/spi.c
This commit is contained in:
@@ -19,6 +19,7 @@
|
||||
#include <linux/nl80211.h>
|
||||
#include <linux/if_ether.h>
|
||||
#include <linux/ieee80211.h>
|
||||
#include <linux/net.h>
|
||||
#include <net/regulatory.h>
|
||||
|
||||
/**
|
||||
@@ -99,6 +100,16 @@ enum ieee80211_band {
|
||||
* @IEEE80211_CHAN_NO_HT40MINUS: extension channel below this channel
|
||||
* is not permitted.
|
||||
* @IEEE80211_CHAN_NO_OFDM: OFDM is not allowed on this channel.
|
||||
* @IEEE80211_CHAN_NO_80MHZ: If the driver supports 80 MHz on the band,
|
||||
* this flag indicates that an 80 MHz channel cannot use this
|
||||
* channel as the control or any of the secondary channels.
|
||||
* This may be due to the driver or due to regulatory bandwidth
|
||||
* restrictions.
|
||||
* @IEEE80211_CHAN_NO_160MHZ: If the driver supports 160 MHz on the band,
|
||||
* this flag indicates that an 160 MHz channel cannot use this
|
||||
* channel as the control or any of the secondary channels.
|
||||
* This may be due to the driver or due to regulatory bandwidth
|
||||
* restrictions.
|
||||
*/
|
||||
enum ieee80211_channel_flags {
|
||||
IEEE80211_CHAN_DISABLED = 1<<0,
|
||||
@@ -108,11 +119,16 @@ enum ieee80211_channel_flags {
|
||||
IEEE80211_CHAN_NO_HT40PLUS = 1<<4,
|
||||
IEEE80211_CHAN_NO_HT40MINUS = 1<<5,
|
||||
IEEE80211_CHAN_NO_OFDM = 1<<6,
|
||||
IEEE80211_CHAN_NO_80MHZ = 1<<7,
|
||||
IEEE80211_CHAN_NO_160MHZ = 1<<8,
|
||||
};
|
||||
|
||||
#define IEEE80211_CHAN_NO_HT40 \
|
||||
(IEEE80211_CHAN_NO_HT40PLUS | IEEE80211_CHAN_NO_HT40MINUS)
|
||||
|
||||
#define IEEE80211_DFS_MIN_CAC_TIME_MS 60000
|
||||
#define IEEE80211_DFS_MIN_NOP_TIME_MS (30 * 60 * 1000)
|
||||
|
||||
/**
|
||||
* struct ieee80211_channel - channel definition
|
||||
*
|
||||
@@ -133,6 +149,9 @@ enum ieee80211_channel_flags {
|
||||
* to enable this, this is useful only on 5 GHz band.
|
||||
* @orig_mag: internal use
|
||||
* @orig_mpwr: internal use
|
||||
* @dfs_state: current state of this channel. Only relevant if radar is required
|
||||
* on this channel.
|
||||
* @dfs_state_entered: timestamp (jiffies) when the dfs state was entered.
|
||||
*/
|
||||
struct ieee80211_channel {
|
||||
enum ieee80211_band band;
|
||||
@@ -145,6 +164,8 @@ struct ieee80211_channel {
|
||||
bool beacon_found;
|
||||
u32 orig_flags;
|
||||
int orig_mag, orig_mpwr;
|
||||
enum nl80211_dfs_state dfs_state;
|
||||
unsigned long dfs_state_entered;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -535,7 +556,7 @@ struct mac_address {
|
||||
* struct cfg80211_acl_data - Access control list data
|
||||
*
|
||||
* @acl_policy: ACL policy to be applied on the station's
|
||||
entry specified by mac_addr
|
||||
* entry specified by mac_addr
|
||||
* @n_acl_entries: Number of MAC address entries passed
|
||||
* @mac_addrs: List of MAC addresses of stations to be used for ACL
|
||||
*/
|
||||
@@ -568,6 +589,7 @@ struct cfg80211_acl_data {
|
||||
* @p2p_opp_ps: P2P opportunistic PS
|
||||
* @acl: ACL configuration used by the drivers which has support for
|
||||
* MAC address based access control
|
||||
* @radar_required: set if radar detection is required
|
||||
*/
|
||||
struct cfg80211_ap_settings {
|
||||
struct cfg80211_chan_def chandef;
|
||||
@@ -585,6 +607,7 @@ struct cfg80211_ap_settings {
|
||||
u8 p2p_ctwindow;
|
||||
bool p2p_opp_ps;
|
||||
const struct cfg80211_acl_data *acl;
|
||||
bool radar_required;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -603,12 +626,14 @@ enum plink_actions {
|
||||
/**
|
||||
* enum station_parameters_apply_mask - station parameter values to apply
|
||||
* @STATION_PARAM_APPLY_UAPSD: apply new uAPSD parameters (uapsd_queues, max_sp)
|
||||
* @STATION_PARAM_APPLY_CAPABILITY: apply new capability
|
||||
*
|
||||
* Not all station parameters have in-band "no change" signalling,
|
||||
* for those that don't these flags will are used.
|
||||
*/
|
||||
enum station_parameters_apply_mask {
|
||||
STATION_PARAM_APPLY_UAPSD = BIT(0),
|
||||
STATION_PARAM_APPLY_CAPABILITY = BIT(1),
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -639,6 +664,9 @@ enum station_parameters_apply_mask {
|
||||
* see &enum station_parameters_apply_mask
|
||||
* @local_pm: local link-specific mesh power save mode (no change when set
|
||||
* to unknown)
|
||||
* @capability: station capability
|
||||
* @ext_capab: extended capabilities of the station
|
||||
* @ext_capab_len: number of extended capabilities
|
||||
*/
|
||||
struct station_parameters {
|
||||
u8 *supported_rates;
|
||||
@@ -655,6 +683,9 @@ struct station_parameters {
|
||||
u8 uapsd_queues;
|
||||
u8 max_sp;
|
||||
enum nl80211_mesh_power_mode local_pm;
|
||||
u16 capability;
|
||||
u8 *ext_capab;
|
||||
u8 ext_capab_len;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -666,14 +697,16 @@ struct station_parameters {
|
||||
* @STATION_INFO_INACTIVE_TIME: @inactive_time filled
|
||||
* @STATION_INFO_RX_BYTES: @rx_bytes filled
|
||||
* @STATION_INFO_TX_BYTES: @tx_bytes filled
|
||||
* @STATION_INFO_RX_BYTES64: @rx_bytes filled with 64-bit value
|
||||
* @STATION_INFO_TX_BYTES64: @tx_bytes filled with 64-bit value
|
||||
* @STATION_INFO_LLID: @llid filled
|
||||
* @STATION_INFO_PLID: @plid filled
|
||||
* @STATION_INFO_PLINK_STATE: @plink_state filled
|
||||
* @STATION_INFO_SIGNAL: @signal filled
|
||||
* @STATION_INFO_TX_BITRATE: @txrate fields are filled
|
||||
* (tx_bitrate, tx_bitrate_flags and tx_bitrate_mcs)
|
||||
* @STATION_INFO_RX_PACKETS: @rx_packets filled
|
||||
* @STATION_INFO_TX_PACKETS: @tx_packets filled
|
||||
* @STATION_INFO_RX_PACKETS: @rx_packets filled with 32-bit value
|
||||
* @STATION_INFO_TX_PACKETS: @tx_packets filled with 32-bit value
|
||||
* @STATION_INFO_TX_RETRIES: @tx_retries filled
|
||||
* @STATION_INFO_TX_FAILED: @tx_failed filled
|
||||
* @STATION_INFO_RX_DROP_MISC: @rx_dropped_misc filled
|
||||
@@ -714,6 +747,8 @@ enum station_info_flags {
|
||||
STATION_INFO_LOCAL_PM = 1<<21,
|
||||
STATION_INFO_PEER_PM = 1<<22,
|
||||
STATION_INFO_NONPEER_PM = 1<<23,
|
||||
STATION_INFO_RX_BYTES64 = 1<<24,
|
||||
STATION_INFO_TX_BYTES64 = 1<<25,
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -835,8 +870,8 @@ struct station_info {
|
||||
u32 filled;
|
||||
u32 connected_time;
|
||||
u32 inactive_time;
|
||||
u32 rx_bytes;
|
||||
u32 tx_bytes;
|
||||
u64 rx_bytes;
|
||||
u64 tx_bytes;
|
||||
u16 llid;
|
||||
u16 plid;
|
||||
u8 plink_state;
|
||||
@@ -1222,6 +1257,7 @@ struct cfg80211_match_set {
|
||||
* @n_match_sets: number of match sets
|
||||
* @wiphy: the wiphy this was for
|
||||
* @dev: the interface
|
||||
* @scan_start: start time of the scheduled scan
|
||||
* @channels: channels to scan
|
||||
* @rssi_thold: don't report scan results below this threshold (in s32 dBm)
|
||||
*/
|
||||
@@ -1261,11 +1297,13 @@ enum cfg80211_signal_type {
|
||||
|
||||
/**
|
||||
* struct cfg80211_bss_ie_data - BSS entry IE data
|
||||
* @tsf: TSF contained in the frame that carried these IEs
|
||||
* @rcu_head: internal use, for freeing
|
||||
* @len: length of the IEs
|
||||
* @data: IE data
|
||||
*/
|
||||
struct cfg80211_bss_ies {
|
||||
u64 tsf;
|
||||
struct rcu_head rcu_head;
|
||||
int len;
|
||||
u8 data[];
|
||||
@@ -1279,29 +1317,32 @@ struct cfg80211_bss_ies {
|
||||
*
|
||||
* @channel: channel this BSS is on
|
||||
* @bssid: BSSID of the BSS
|
||||
* @tsf: timestamp of last received update
|
||||
* @beacon_interval: the beacon interval as from the frame
|
||||
* @capability: the capability field in host byte order
|
||||
* @ies: the information elements (Note that there
|
||||
* is no guarantee that these are well-formed!); this is a pointer to
|
||||
* either the beacon_ies or proberesp_ies depending on whether Probe
|
||||
* Response frame has been received
|
||||
* @ies: the information elements (Note that there is no guarantee that these
|
||||
* are well-formed!); this is a pointer to either the beacon_ies or
|
||||
* proberesp_ies depending on whether Probe Response frame has been
|
||||
* received. It is always non-%NULL.
|
||||
* @beacon_ies: the information elements from the last Beacon frame
|
||||
* (implementation note: if @hidden_beacon_bss is set this struct doesn't
|
||||
* own the beacon_ies, but they're just pointers to the ones from the
|
||||
* @hidden_beacon_bss struct)
|
||||
* @proberesp_ies: the information elements from the last Probe Response frame
|
||||
* @hidden_beacon_bss: in case this BSS struct represents a probe response from
|
||||
* a BSS that hides the SSID in its beacon, this points to the BSS struct
|
||||
* that holds the beacon data. @beacon_ies is still valid, of course, and
|
||||
* points to the same data as hidden_beacon_bss->beacon_ies in that case.
|
||||
* @signal: signal strength value (type depends on the wiphy's signal_type)
|
||||
* @free_priv: function pointer to free private data
|
||||
* @priv: private area for driver use, has at least wiphy->bss_priv_size bytes
|
||||
*/
|
||||
struct cfg80211_bss {
|
||||
u64 tsf;
|
||||
|
||||
struct ieee80211_channel *channel;
|
||||
|
||||
const struct cfg80211_bss_ies __rcu *ies;
|
||||
const struct cfg80211_bss_ies __rcu *beacon_ies;
|
||||
const struct cfg80211_bss_ies __rcu *proberesp_ies;
|
||||
|
||||
void (*free_priv)(struct cfg80211_bss *bss);
|
||||
struct cfg80211_bss *hidden_beacon_bss;
|
||||
|
||||
s32 signal;
|
||||
|
||||
@@ -1403,6 +1444,8 @@ struct cfg80211_assoc_request {
|
||||
* @ie: Extra IEs to add to Deauthentication frame or %NULL
|
||||
* @ie_len: Length of ie buffer in octets
|
||||
* @reason_code: The reason code for the deauthentication
|
||||
* @local_state_change: if set, change local state only and
|
||||
* do not set a deauth frame
|
||||
*/
|
||||
struct cfg80211_deauth_request {
|
||||
const u8 *bssid;
|
||||
@@ -1564,6 +1607,7 @@ struct cfg80211_pmksa {
|
||||
* one bit per byte, in same format as nl80211
|
||||
* @pattern: bytes to match where bitmask is 1
|
||||
* @pattern_len: length of pattern (in bytes)
|
||||
* @pkt_offset: packet offset (in bytes)
|
||||
*
|
||||
* Internal note: @mask and @pattern are allocated in one chunk of
|
||||
* memory, free @mask only!
|
||||
@@ -1571,6 +1615,42 @@ struct cfg80211_pmksa {
|
||||
struct cfg80211_wowlan_trig_pkt_pattern {
|
||||
u8 *mask, *pattern;
|
||||
int pattern_len;
|
||||
int pkt_offset;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct cfg80211_wowlan_tcp - TCP connection parameters
|
||||
*
|
||||
* @sock: (internal) socket for source port allocation
|
||||
* @src: source IP address
|
||||
* @dst: destination IP address
|
||||
* @dst_mac: destination MAC address
|
||||
* @src_port: source port
|
||||
* @dst_port: destination port
|
||||
* @payload_len: data payload length
|
||||
* @payload: data payload buffer
|
||||
* @payload_seq: payload sequence stamping configuration
|
||||
* @data_interval: interval at which to send data packets
|
||||
* @wake_len: wakeup payload match length
|
||||
* @wake_data: wakeup payload match data
|
||||
* @wake_mask: wakeup payload match mask
|
||||
* @tokens_size: length of the tokens buffer
|
||||
* @payload_tok: payload token usage configuration
|
||||
*/
|
||||
struct cfg80211_wowlan_tcp {
|
||||
struct socket *sock;
|
||||
__be32 src, dst;
|
||||
u16 src_port, dst_port;
|
||||
u8 dst_mac[ETH_ALEN];
|
||||
int payload_len;
|
||||
const u8 *payload;
|
||||
struct nl80211_wowlan_tcp_data_seq payload_seq;
|
||||
u32 data_interval;
|
||||
u32 wake_len;
|
||||
const u8 *wake_data, *wake_mask;
|
||||
u32 tokens_size;
|
||||
/* must be last, variable member */
|
||||
struct nl80211_wowlan_tcp_data_token payload_tok;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -1587,15 +1667,48 @@ struct cfg80211_wowlan_trig_pkt_pattern {
|
||||
* @eap_identity_req: wake up on EAP identity request packet
|
||||
* @four_way_handshake: wake up on 4-way handshake
|
||||
* @rfkill_release: wake up when rfkill is released
|
||||
* @tcp: TCP connection establishment/wakeup parameters, see nl80211.h.
|
||||
* NULL if not configured.
|
||||
*/
|
||||
struct cfg80211_wowlan {
|
||||
bool any, disconnect, magic_pkt, gtk_rekey_failure,
|
||||
eap_identity_req, four_way_handshake,
|
||||
rfkill_release;
|
||||
struct cfg80211_wowlan_trig_pkt_pattern *patterns;
|
||||
struct cfg80211_wowlan_tcp *tcp;
|
||||
int n_patterns;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct cfg80211_wowlan_wakeup - wakeup report
|
||||
* @disconnect: woke up by getting disconnected
|
||||
* @magic_pkt: woke up by receiving magic packet
|
||||
* @gtk_rekey_failure: woke up by GTK rekey failure
|
||||
* @eap_identity_req: woke up by EAP identity request packet
|
||||
* @four_way_handshake: woke up by 4-way handshake
|
||||
* @rfkill_release: woke up by rfkill being released
|
||||
* @pattern_idx: pattern that caused wakeup, -1 if not due to pattern
|
||||
* @packet_present_len: copied wakeup packet data
|
||||
* @packet_len: original wakeup packet length
|
||||
* @packet: The packet causing the wakeup, if any.
|
||||
* @packet_80211: For pattern match, magic packet and other data
|
||||
* frame triggers an 802.3 frame should be reported, for
|
||||
* disconnect due to deauth 802.11 frame. This indicates which
|
||||
* it is.
|
||||
* @tcp_match: TCP wakeup packet received
|
||||
* @tcp_connlost: TCP connection lost or failed to establish
|
||||
* @tcp_nomoretokens: TCP data ran out of tokens
|
||||
*/
|
||||
struct cfg80211_wowlan_wakeup {
|
||||
bool disconnect, magic_pkt, gtk_rekey_failure,
|
||||
eap_identity_req, four_way_handshake,
|
||||
rfkill_release, packet_80211,
|
||||
tcp_match, tcp_connlost, tcp_nomoretokens;
|
||||
s32 pattern_idx;
|
||||
u32 packet_present_len, packet_len;
|
||||
const void *packet;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct cfg80211_gtk_rekey_data - rekey data
|
||||
* @kek: key encryption key
|
||||
@@ -1826,6 +1939,8 @@ struct cfg80211_gtk_rekey_data {
|
||||
* this new list replaces the existing one. Driver has to clear its ACL
|
||||
* when number of MAC addresses entries is passed as 0. Drivers which
|
||||
* advertise the support for MAC based ACL have to implement this callback.
|
||||
*
|
||||
* @start_radar_detection: Start radar detection in the driver.
|
||||
*/
|
||||
struct cfg80211_ops {
|
||||
int (*suspend)(struct wiphy *wiphy, struct cfg80211_wowlan *wow);
|
||||
@@ -2049,6 +2164,10 @@ struct cfg80211_ops {
|
||||
|
||||
int (*set_mac_acl)(struct wiphy *wiphy, struct net_device *dev,
|
||||
const struct cfg80211_acl_data *params);
|
||||
|
||||
int (*start_radar_detection)(struct wiphy *wiphy,
|
||||
struct net_device *dev,
|
||||
struct cfg80211_chan_def *chandef);
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -2245,6 +2364,14 @@ enum wiphy_wowlan_support_flags {
|
||||
WIPHY_WOWLAN_RFKILL_RELEASE = BIT(7),
|
||||
};
|
||||
|
||||
struct wiphy_wowlan_tcp_support {
|
||||
const struct nl80211_wowlan_tcp_data_token_feature *tok;
|
||||
u32 data_payload_max;
|
||||
u32 data_interval_max;
|
||||
u32 wake_payload_max;
|
||||
bool seq;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct wiphy_wowlan_support - WoWLAN support data
|
||||
* @flags: see &enum wiphy_wowlan_support_flags
|
||||
@@ -2252,12 +2379,16 @@ enum wiphy_wowlan_support_flags {
|
||||
* (see nl80211.h for the pattern definition)
|
||||
* @pattern_max_len: maximum length of each pattern
|
||||
* @pattern_min_len: minimum length of each pattern
|
||||
* @max_pkt_offset: maximum Rx packet offset
|
||||
* @tcp: TCP wakeup support information
|
||||
*/
|
||||
struct wiphy_wowlan_support {
|
||||
u32 flags;
|
||||
int n_patterns;
|
||||
int pattern_max_len;
|
||||
int pattern_min_len;
|
||||
int max_pkt_offset;
|
||||
const struct wiphy_wowlan_tcp_support *tcp;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -2357,6 +2488,14 @@ struct wiphy_wowlan_support {
|
||||
*
|
||||
* @max_acl_mac_addrs: Maximum number of MAC addresses that the device
|
||||
* supports for ACL.
|
||||
*
|
||||
* @extended_capabilities: extended capabilities supported by the driver,
|
||||
* additional capabilities might be supported by userspace; these are
|
||||
* the 802.11 extended capabilities ("Extended Capabilities element")
|
||||
* and are in the same format as in the information element. See
|
||||
* 802.11-2012 8.4.2.29 for the defined fields.
|
||||
* @extended_capabilities_mask: mask of the valid values
|
||||
* @extended_capabilities_len: length of the extended capabilities
|
||||
*/
|
||||
struct wiphy {
|
||||
/* assign these fields before you register the wiphy */
|
||||
@@ -2423,6 +2562,9 @@ struct wiphy {
|
||||
*/
|
||||
u32 probe_resp_offload;
|
||||
|
||||
const u8 *extended_capabilities, *extended_capabilities_mask;
|
||||
u8 extended_capabilities_len;
|
||||
|
||||
/* If multiple wiphys are registered and you're handed e.g.
|
||||
* a regular netdev with assigned ieee80211_ptr, you won't
|
||||
* know whether it points to a wiphy your driver has registered
|
||||
@@ -2602,7 +2744,6 @@ struct cfg80211_cached_keys;
|
||||
* the user-set AP, monitor and WDS channel
|
||||
* @preset_chan: (private) Used by the internal configuration code to
|
||||
* track the channel to be used for AP later
|
||||
* @preset_chantype: (private) the corresponding channel type
|
||||
* @bssid: (private) Used by the internal configuration code
|
||||
* @ssid: (private) Used by the internal configuration code
|
||||
* @ssid_len: (private) Used by the internal configuration code
|
||||
@@ -2621,6 +2762,8 @@ struct cfg80211_cached_keys;
|
||||
* beacons, 0 when not valid
|
||||
* @address: The address for this device, valid only if @netdev is %NULL
|
||||
* @p2p_started: true if this is a P2P Device that has been started
|
||||
* @cac_started: true if DFS channel availability check has been started
|
||||
* @cac_start_time: timestamp (jiffies) when the dfs state was entered.
|
||||
*/
|
||||
struct wireless_dev {
|
||||
struct wiphy *wiphy;
|
||||
@@ -2672,6 +2815,9 @@ struct wireless_dev {
|
||||
|
||||
u32 ap_unexpected_nlportid;
|
||||
|
||||
bool cac_started;
|
||||
unsigned long cac_start_time;
|
||||
|
||||
#ifdef CONFIG_CFG80211_WEXT
|
||||
/* wext data */
|
||||
struct {
|
||||
@@ -3137,25 +3283,23 @@ cfg80211_get_ibss(struct wiphy *wiphy,
|
||||
WLAN_CAPABILITY_IBSS, WLAN_CAPABILITY_IBSS);
|
||||
}
|
||||
|
||||
struct cfg80211_bss *cfg80211_get_mesh(struct wiphy *wiphy,
|
||||
struct ieee80211_channel *channel,
|
||||
const u8 *meshid, size_t meshidlen,
|
||||
const u8 *meshcfg);
|
||||
/**
|
||||
* cfg80211_ref_bss - reference BSS struct
|
||||
* @wiphy: the wiphy this BSS struct belongs to
|
||||
* @bss: the BSS struct to reference
|
||||
*
|
||||
* Increments the refcount of the given BSS struct.
|
||||
*/
|
||||
void cfg80211_ref_bss(struct cfg80211_bss *bss);
|
||||
void cfg80211_ref_bss(struct wiphy *wiphy, struct cfg80211_bss *bss);
|
||||
|
||||
/**
|
||||
* cfg80211_put_bss - unref BSS struct
|
||||
* @wiphy: the wiphy this BSS struct belongs to
|
||||
* @bss: the BSS struct
|
||||
*
|
||||
* Decrements the refcount of the given BSS struct.
|
||||
*/
|
||||
void cfg80211_put_bss(struct cfg80211_bss *bss);
|
||||
void cfg80211_put_bss(struct wiphy *wiphy, struct cfg80211_bss *bss);
|
||||
|
||||
/**
|
||||
* cfg80211_unlink_bss - unlink BSS from internal data structures
|
||||
@@ -3662,6 +3806,31 @@ void cfg80211_cqm_rssi_notify(struct net_device *dev,
|
||||
enum nl80211_cqm_rssi_threshold_event rssi_event,
|
||||
gfp_t gfp);
|
||||
|
||||
/**
|
||||
* cfg80211_radar_event - radar detection event
|
||||
* @wiphy: the wiphy
|
||||
* @chandef: chandef for the current channel
|
||||
* @gfp: context flags
|
||||
*
|
||||
* This function is called when a radar is detected on the current chanenl.
|
||||
*/
|
||||
void cfg80211_radar_event(struct wiphy *wiphy,
|
||||
struct cfg80211_chan_def *chandef, gfp_t gfp);
|
||||
|
||||
/**
|
||||
* cfg80211_cac_event - Channel availability check (CAC) event
|
||||
* @netdev: network device
|
||||
* @event: type of event
|
||||
* @gfp: context flags
|
||||
*
|
||||
* This function is called when a Channel availability check (CAC) is finished
|
||||
* or aborted. This must be called to notify the completion of a CAC process,
|
||||
* also by full-MAC drivers.
|
||||
*/
|
||||
void cfg80211_cac_event(struct net_device *netdev,
|
||||
enum nl80211_radar_event event, gfp_t gfp);
|
||||
|
||||
|
||||
/**
|
||||
* cfg80211_cqm_pktloss_notify - notify userspace about packetloss to peer
|
||||
* @dev: network device
|
||||
@@ -3852,6 +4021,21 @@ int cfg80211_get_p2p_attr(const u8 *ies, unsigned int len,
|
||||
enum ieee80211_p2p_attr_id attr,
|
||||
u8 *buf, unsigned int bufsize);
|
||||
|
||||
/**
|
||||
* cfg80211_report_wowlan_wakeup - report wakeup from WoWLAN
|
||||
* @wdev: the wireless device reporting the wakeup
|
||||
* @wakeup: the wakeup report
|
||||
* @gfp: allocation flags
|
||||
*
|
||||
* This function reports that the given device woke up. If it
|
||||
* caused the wakeup, report the reason(s), otherwise you may
|
||||
* pass %NULL as the @wakeup parameter to advertise that something
|
||||
* else caused the wakeup.
|
||||
*/
|
||||
void cfg80211_report_wowlan_wakeup(struct wireless_dev *wdev,
|
||||
struct cfg80211_wowlan_wakeup *wakeup,
|
||||
gfp_t gfp);
|
||||
|
||||
/* Logging, debugging and troubleshooting/diagnostic helpers. */
|
||||
|
||||
/* wiphy_printk helpers, similar to dev_printk */
|
||||
|
@@ -147,10 +147,12 @@ struct ieee80211_low_level_stats {
|
||||
* enum ieee80211_chanctx_change - change flag for channel context
|
||||
* @IEEE80211_CHANCTX_CHANGE_WIDTH: The channel width changed
|
||||
* @IEEE80211_CHANCTX_CHANGE_RX_CHAINS: The number of RX chains changed
|
||||
* @IEEE80211_CHANCTX_CHANGE_RADAR: radar detection flag changed
|
||||
*/
|
||||
enum ieee80211_chanctx_change {
|
||||
IEEE80211_CHANCTX_CHANGE_WIDTH = BIT(0),
|
||||
IEEE80211_CHANCTX_CHANGE_RX_CHAINS = BIT(1),
|
||||
IEEE80211_CHANCTX_CHANGE_RADAR = BIT(2),
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -165,6 +167,7 @@ enum ieee80211_chanctx_change {
|
||||
* @rx_chains_dynamic: The number of RX chains that must be enabled
|
||||
* after RTS/CTS handshake to receive SMPS MIMO transmissions;
|
||||
* this will always be >= @rx_chains_static.
|
||||
* @radar_enabled: whether radar detection is enabled on this channel.
|
||||
* @drv_priv: data area for driver use, will always be aligned to
|
||||
* sizeof(void *), size is determined in hw information.
|
||||
*/
|
||||
@@ -173,6 +176,8 @@ struct ieee80211_chanctx_conf {
|
||||
|
||||
u8 rx_chains_static, rx_chains_dynamic;
|
||||
|
||||
bool radar_enabled;
|
||||
|
||||
u8 drv_priv[0] __aligned(sizeof(void *));
|
||||
};
|
||||
|
||||
@@ -208,6 +213,11 @@ struct ieee80211_chanctx_conf {
|
||||
* @BSS_CHANGED_TXPOWER: TX power setting changed for this interface
|
||||
* @BSS_CHANGED_P2P_PS: P2P powersave settings (CTWindow, opportunistic PS)
|
||||
* changed (currently only in P2P client mode, GO mode will be later)
|
||||
* @BSS_CHANGED_DTIM_PERIOD: the DTIM period value was changed (set when
|
||||
* it becomes valid, managed mode only)
|
||||
* @BSS_CHANGED_BANDWIDTH: The bandwidth used by this interface changed,
|
||||
* note that this is only called when it changes after the channel
|
||||
* context had been assigned.
|
||||
*/
|
||||
enum ieee80211_bss_change {
|
||||
BSS_CHANGED_ASSOC = 1<<0,
|
||||
@@ -230,6 +240,8 @@ enum ieee80211_bss_change {
|
||||
BSS_CHANGED_PS = 1<<17,
|
||||
BSS_CHANGED_TXPOWER = 1<<18,
|
||||
BSS_CHANGED_P2P_PS = 1<<19,
|
||||
BSS_CHANGED_DTIM_PERIOD = 1<<20,
|
||||
BSS_CHANGED_BANDWIDTH = 1<<21,
|
||||
|
||||
/* when adding here, make sure to change ieee80211_reconfig */
|
||||
};
|
||||
@@ -271,13 +283,19 @@ enum ieee80211_rssi_event {
|
||||
* 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 beaconing,
|
||||
* valid in station mode only while @assoc is true and if also
|
||||
* requested by %IEEE80211_HW_NEED_DTIM_PERIOD (cf. also hw conf
|
||||
* @ps_dtim_period)
|
||||
* valid in station mode only if after the driver was notified
|
||||
* with the %BSS_CHANGED_DTIM_PERIOD flag, will be non-zero then.
|
||||
* @sync_tsf: last beacon's/probe response's TSF timestamp (could be old
|
||||
* as it may have been received during scanning long ago)
|
||||
* as it may have been received during scanning long ago). If the
|
||||
* HW flag %IEEE80211_HW_TIMING_BEACON_ONLY is set, then this can
|
||||
* only come from a beacon, but might not become valid until after
|
||||
* association when a beacon is received (which is notified with the
|
||||
* %BSS_CHANGED_DTIM flag.)
|
||||
* @sync_device_ts: the device timestamp corresponding to the sync_tsf,
|
||||
* the driver/device can use this to calculate synchronisation
|
||||
* (see @sync_tsf)
|
||||
* @sync_dtim_count: Only valid when %IEEE80211_HW_TIMING_BEACON_ONLY
|
||||
* is requested, see @sync_tsf/@sync_device_ts.
|
||||
* @beacon_int: beacon interval
|
||||
* @assoc_capability: capabilities taken from assoc resp
|
||||
* @basic_rates: bitmap of basic rates, each bit stands for an
|
||||
@@ -329,6 +347,7 @@ struct ieee80211_bss_conf {
|
||||
u16 assoc_capability;
|
||||
u64 sync_tsf;
|
||||
u32 sync_device_ts;
|
||||
u8 sync_dtim_count;
|
||||
u32 basic_rates;
|
||||
int mcast_rate[IEEE80211_NUM_BANDS];
|
||||
u16 ht_operation_mode;
|
||||
@@ -389,6 +408,9 @@ struct ieee80211_bss_conf {
|
||||
* @IEEE80211_TX_CTL_RATE_CTRL_PROBE: internal to mac80211, can be
|
||||
* set by rate control algorithms to indicate probe rate, will
|
||||
* be cleared for fragmented frames (except on the last fragment)
|
||||
* @IEEE80211_TX_INTFL_OFFCHAN_TX_OK: Internal to mac80211. Used to indicate
|
||||
* that a frame can be transmitted while the queues are stopped for
|
||||
* off-channel operation.
|
||||
* @IEEE80211_TX_INTFL_NEED_TXPROCESSING: completely internal to mac80211,
|
||||
* used to indicate that a pending frame requires TX processing before
|
||||
* it can be sent out.
|
||||
@@ -406,6 +428,9 @@ struct ieee80211_bss_conf {
|
||||
* @IEEE80211_TX_INTFL_RETRANSMISSION: This frame is being retransmitted
|
||||
* after TX status because the destination was asleep, it must not
|
||||
* be modified again (no seqno assignment, crypto, etc.)
|
||||
* @IEEE80211_TX_INTFL_MLME_CONN_TX: This frame was transmitted by the MLME
|
||||
* code for connection establishment, this indicates that its status
|
||||
* should kick the MLME state machine.
|
||||
* @IEEE80211_TX_INTFL_NL80211_FRAME_TX: Frame was requested through nl80211
|
||||
* MLME command (internal to mac80211 to figure out whether to send TX
|
||||
* status to user space)
|
||||
@@ -451,13 +476,14 @@ enum mac80211_tx_control_flags {
|
||||
IEEE80211_TX_STAT_AMPDU = BIT(10),
|
||||
IEEE80211_TX_STAT_AMPDU_NO_BACK = BIT(11),
|
||||
IEEE80211_TX_CTL_RATE_CTRL_PROBE = BIT(12),
|
||||
IEEE80211_TX_INTFL_OFFCHAN_TX_OK = BIT(13),
|
||||
IEEE80211_TX_INTFL_NEED_TXPROCESSING = BIT(14),
|
||||
IEEE80211_TX_INTFL_RETRIED = BIT(15),
|
||||
IEEE80211_TX_INTFL_DONT_ENCRYPT = BIT(16),
|
||||
IEEE80211_TX_CTL_NO_PS_BUFFER = BIT(17),
|
||||
IEEE80211_TX_CTL_MORE_FRAMES = BIT(18),
|
||||
IEEE80211_TX_INTFL_RETRANSMISSION = BIT(19),
|
||||
/* hole at 20, use later */
|
||||
IEEE80211_TX_INTFL_MLME_CONN_TX = BIT(20),
|
||||
IEEE80211_TX_INTFL_NL80211_FRAME_TX = BIT(21),
|
||||
IEEE80211_TX_CTL_LDPC = BIT(22),
|
||||
IEEE80211_TX_CTL_STBC = BIT(23) | BIT(24),
|
||||
@@ -950,6 +976,7 @@ enum ieee80211_smps_mode {
|
||||
*
|
||||
* @channel: the channel to tune to
|
||||
* @channel_type: the channel (HT) type
|
||||
* @radar_enabled: whether radar detection is enabled
|
||||
*
|
||||
* @long_frame_max_tx_count: Maximum number of transmissions for a "long" frame
|
||||
* (a frame not RTS protected), called "dot11LongRetryLimit" in 802.11,
|
||||
@@ -976,6 +1003,7 @@ struct ieee80211_conf {
|
||||
|
||||
struct ieee80211_channel *channel;
|
||||
enum nl80211_channel_type channel_type;
|
||||
bool radar_enabled;
|
||||
enum ieee80211_smps_mode smps_mode;
|
||||
};
|
||||
|
||||
@@ -1172,6 +1200,24 @@ enum ieee80211_sta_state {
|
||||
IEEE80211_STA_AUTHORIZED,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum ieee80211_sta_rx_bandwidth - station RX bandwidth
|
||||
* @IEEE80211_STA_RX_BW_20: station can only receive 20 MHz
|
||||
* @IEEE80211_STA_RX_BW_40: station can receive up to 40 MHz
|
||||
* @IEEE80211_STA_RX_BW_80: station can receive up to 80 MHz
|
||||
* @IEEE80211_STA_RX_BW_160: station can receive up to 160 MHz
|
||||
* (including 80+80 MHz)
|
||||
*
|
||||
* Implementation note: 20 must be zero to be initialized
|
||||
* correctly, the values must be sorted.
|
||||
*/
|
||||
enum ieee80211_sta_rx_bandwidth {
|
||||
IEEE80211_STA_RX_BW_20 = 0,
|
||||
IEEE80211_STA_RX_BW_40,
|
||||
IEEE80211_STA_RX_BW_80,
|
||||
IEEE80211_STA_RX_BW_160,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct ieee80211_sta - station table entry
|
||||
*
|
||||
@@ -1194,6 +1240,12 @@ enum ieee80211_sta_state {
|
||||
* @uapsd_queues: bitmap of queues configured for uapsd. Only valid
|
||||
* if wme is supported.
|
||||
* @max_sp: max Service Period. Only valid if wme is supported.
|
||||
* @bandwidth: current bandwidth the station can receive with
|
||||
* @rx_nss: in HT/VHT, the maximum number of spatial streams the
|
||||
* station can receive at the moment, changed by operating mode
|
||||
* notifications and capabilities. The value is only valid after
|
||||
* the station moves to associated state.
|
||||
* @smps_mode: current SMPS mode (off, static or dynamic)
|
||||
*/
|
||||
struct ieee80211_sta {
|
||||
u32 supp_rates[IEEE80211_NUM_BANDS];
|
||||
@@ -1204,6 +1256,9 @@ struct ieee80211_sta {
|
||||
bool wme;
|
||||
u8 uapsd_queues;
|
||||
u8 max_sp;
|
||||
u8 rx_nss;
|
||||
enum ieee80211_sta_rx_bandwidth bandwidth;
|
||||
enum ieee80211_smps_mode smps_mode;
|
||||
|
||||
/* must be last */
|
||||
u8 drv_priv[0] __aligned(sizeof(void *));
|
||||
@@ -1328,9 +1383,9 @@ struct ieee80211_tx_control {
|
||||
* When this flag is set, signaling beacon-loss will cause an immediate
|
||||
* change to disassociated state.
|
||||
*
|
||||
* @IEEE80211_HW_NEED_DTIM_PERIOD:
|
||||
* This device needs to know the DTIM period for the BSS before
|
||||
* associating.
|
||||
* @IEEE80211_HW_NEED_DTIM_BEFORE_ASSOC:
|
||||
* This device needs to get data from beacon before association (i.e.
|
||||
* dtim_period).
|
||||
*
|
||||
* @IEEE80211_HW_SUPPORTS_PER_STA_GTK: The device's crypto engine supports
|
||||
* per-station GTKs as used by IBSS RSN or during fast transition. If
|
||||
@@ -1350,10 +1405,6 @@ struct ieee80211_tx_control {
|
||||
* setup strictly in HW. mac80211 should not attempt to do this in
|
||||
* software.
|
||||
*
|
||||
* @IEEE80211_HW_SCAN_WHILE_IDLE: The device can do hw scan while
|
||||
* being idle (i.e. mac80211 doesn't have to go idle-off during the
|
||||
* the scan).
|
||||
*
|
||||
* @IEEE80211_HW_WANT_MONITOR_VIF: The driver would like to be informed of
|
||||
* a virtual monitor interface when monitor interfaces are the only
|
||||
* active interfaces.
|
||||
@@ -1367,9 +1418,8 @@ struct ieee80211_tx_control {
|
||||
* P2P Interface. This will be honoured even if more than one interface
|
||||
* is supported.
|
||||
*
|
||||
* @IEEE80211_HW_TEARDOWN_AGGR_ON_BAR_FAIL: On this hardware TX BA session
|
||||
* should be tear down once BAR frame will not be acked.
|
||||
*
|
||||
* @IEEE80211_HW_TIMING_BEACON_ONLY: Use sync timing from beacon frames
|
||||
* only, to allow getting TBTT of a DTIM beacon.
|
||||
*/
|
||||
enum ieee80211_hw_flags {
|
||||
IEEE80211_HW_HAS_RATE_CONTROL = 1<<0,
|
||||
@@ -1379,7 +1429,7 @@ enum ieee80211_hw_flags {
|
||||
IEEE80211_HW_2GHZ_SHORT_PREAMBLE_INCAPABLE = 1<<4,
|
||||
IEEE80211_HW_SIGNAL_UNSPEC = 1<<5,
|
||||
IEEE80211_HW_SIGNAL_DBM = 1<<6,
|
||||
IEEE80211_HW_NEED_DTIM_PERIOD = 1<<7,
|
||||
IEEE80211_HW_NEED_DTIM_BEFORE_ASSOC = 1<<7,
|
||||
IEEE80211_HW_SPECTRUM_MGMT = 1<<8,
|
||||
IEEE80211_HW_AMPDU_AGGREGATION = 1<<9,
|
||||
IEEE80211_HW_SUPPORTS_PS = 1<<10,
|
||||
@@ -1396,9 +1446,8 @@ enum ieee80211_hw_flags {
|
||||
IEEE80211_HW_SUPPORTS_PER_STA_GTK = 1<<21,
|
||||
IEEE80211_HW_AP_LINK_PS = 1<<22,
|
||||
IEEE80211_HW_TX_AMPDU_SETUP_IN_HW = 1<<23,
|
||||
IEEE80211_HW_SCAN_WHILE_IDLE = 1<<24,
|
||||
IEEE80211_HW_P2P_DEV_ADDR_FOR_INTF = 1<<25,
|
||||
IEEE80211_HW_TEARDOWN_AGGR_ON_BAR_FAIL = 1<<26,
|
||||
IEEE80211_HW_TIMING_BEACON_ONLY = 1<<26,
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -1683,15 +1732,6 @@ void ieee80211_free_txskb(struct ieee80211_hw *hw, struct sk_buff *skb);
|
||||
* dynamic PS feature in stack and will just keep %IEEE80211_CONF_PS
|
||||
* enabled whenever user has enabled powersave.
|
||||
*
|
||||
* Some hardware need to toggle a single shared antenna between WLAN and
|
||||
* Bluetooth to facilitate co-existence. These types of hardware set
|
||||
* limitations on the use of host controlled dynamic powersave whenever there
|
||||
* is simultaneous WLAN and Bluetooth traffic. For these types of hardware, the
|
||||
* driver may request temporarily going into full power save, in order to
|
||||
* enable toggling the antenna between BT and WLAN. If the driver requests
|
||||
* disabling dynamic powersave, the @dynamic_ps_timeout value will be
|
||||
* temporarily set to zero until the driver re-enables dynamic powersave.
|
||||
*
|
||||
* Driver informs U-APSD client support by enabling
|
||||
* %IEEE80211_HW_SUPPORTS_UAPSD flag. The mode is configured through the
|
||||
* uapsd paramater in conf_tx() operation. Hardware needs to send the QoS
|
||||
@@ -2077,16 +2117,21 @@ enum ieee80211_frame_release_type {
|
||||
* enum ieee80211_rate_control_changed - flags to indicate what changed
|
||||
*
|
||||
* @IEEE80211_RC_BW_CHANGED: The bandwidth that can be used to transmit
|
||||
* to this station changed.
|
||||
* to this station changed. The actual bandwidth is in the station
|
||||
* information -- for HT20/40 the IEEE80211_HT_CAP_SUP_WIDTH_20_40
|
||||
* flag changes, for HT and VHT the bandwidth field changes.
|
||||
* @IEEE80211_RC_SMPS_CHANGED: The SMPS state of the station changed.
|
||||
* @IEEE80211_RC_SUPP_RATES_CHANGED: The supported rate set of this peer
|
||||
* changed (in IBSS mode) due to discovering more information about
|
||||
* the peer.
|
||||
* @IEEE80211_RC_NSS_CHANGED: N_SS (number of spatial streams) was changed
|
||||
* by the peer
|
||||
*/
|
||||
enum ieee80211_rate_control_changed {
|
||||
IEEE80211_RC_BW_CHANGED = BIT(0),
|
||||
IEEE80211_RC_SMPS_CHANGED = BIT(1),
|
||||
IEEE80211_RC_SUPP_RATES_CHANGED = BIT(2),
|
||||
IEEE80211_RC_NSS_CHANGED = BIT(3),
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -2167,6 +2212,18 @@ enum ieee80211_rate_control_changed {
|
||||
* MAC address of the device going away.
|
||||
* Hence, this callback must be implemented. It can sleep.
|
||||
*
|
||||
* @add_interface_debugfs: Drivers can use this callback to add debugfs files
|
||||
* when a vif is added to mac80211. This callback and
|
||||
* @remove_interface_debugfs should be within a CONFIG_MAC80211_DEBUGFS
|
||||
* conditional. @remove_interface_debugfs must be provided for cleanup.
|
||||
* This callback can sleep.
|
||||
*
|
||||
* @remove_interface_debugfs: Remove the debugfs files which were added using
|
||||
* @add_interface_debugfs. This callback must remove all debugfs entries
|
||||
* that were added because mac80211 only removes interface debugfs when the
|
||||
* interface is destroyed, not when it is removed from the driver.
|
||||
* This callback can sleep.
|
||||
*
|
||||
* @config: Handler for configuration requests. IEEE 802.11 code calls this
|
||||
* function to change hardware configuration, e.g., channel.
|
||||
* This function should never fail but returns a negative error code
|
||||
@@ -2580,6 +2637,12 @@ struct ieee80211_ops {
|
||||
struct ieee80211_vif *vif,
|
||||
struct ieee80211_sta *sta,
|
||||
struct dentry *dir);
|
||||
void (*add_interface_debugfs)(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif,
|
||||
struct dentry *dir);
|
||||
void (*remove_interface_debugfs)(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif,
|
||||
struct dentry *dir);
|
||||
#endif
|
||||
void (*sta_notify)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
|
||||
enum sta_notify_cmd, struct ieee80211_sta *sta);
|
||||
@@ -3877,6 +3940,8 @@ void ieee80211_beacon_loss(struct ieee80211_vif *vif);
|
||||
* When beacon filtering is enabled with %IEEE80211_VIF_BEACON_FILTER, and
|
||||
* %IEEE80211_CONF_PS and %IEEE80211_HW_CONNECTION_MONITOR are set, the driver
|
||||
* needs to inform if the connection to the AP has been lost.
|
||||
* The function may also be called if the connection needs to be terminated
|
||||
* for some other reason, even if %IEEE80211_HW_CONNECTION_MONITOR isn't set.
|
||||
*
|
||||
* This function will cause immediate change to disassociated state,
|
||||
* without connection recovery attempts.
|
||||
@@ -3906,36 +3971,6 @@ void ieee80211_connection_loss(struct ieee80211_vif *vif);
|
||||
*/
|
||||
void ieee80211_resume_disconnect(struct ieee80211_vif *vif);
|
||||
|
||||
/**
|
||||
* ieee80211_disable_dyn_ps - force mac80211 to temporarily disable dynamic psm
|
||||
*
|
||||
* @vif: &struct ieee80211_vif pointer from the add_interface callback.
|
||||
*
|
||||
* Some hardware require full power save to manage simultaneous BT traffic
|
||||
* on the WLAN frequency. Full PSM is required periodically, whenever there are
|
||||
* burst of BT traffic. The hardware gets information of BT traffic via
|
||||
* hardware co-existence lines, and consequentially requests mac80211 to
|
||||
* (temporarily) enter full psm.
|
||||
* This function will only temporarily disable dynamic PS, not enable PSM if
|
||||
* it was not already enabled.
|
||||
* The driver must make sure to re-enable dynamic PS using
|
||||
* ieee80211_enable_dyn_ps() if the driver has disabled it.
|
||||
*
|
||||
*/
|
||||
void ieee80211_disable_dyn_ps(struct ieee80211_vif *vif);
|
||||
|
||||
/**
|
||||
* ieee80211_enable_dyn_ps - restore dynamic psm after being disabled
|
||||
*
|
||||
* @vif: &struct ieee80211_vif pointer from the add_interface callback.
|
||||
*
|
||||
* This function restores dynamic PS after being temporarily disabled via
|
||||
* ieee80211_disable_dyn_ps(). Each ieee80211_disable_dyn_ps() call must
|
||||
* be coupled with an eventual call to this function.
|
||||
*
|
||||
*/
|
||||
void ieee80211_enable_dyn_ps(struct ieee80211_vif *vif);
|
||||
|
||||
/**
|
||||
* ieee80211_cqm_rssi_notify - inform a configured connection quality monitoring
|
||||
* rssi threshold triggered
|
||||
@@ -3952,6 +3987,13 @@ void ieee80211_cqm_rssi_notify(struct ieee80211_vif *vif,
|
||||
enum nl80211_cqm_rssi_threshold_event rssi_event,
|
||||
gfp_t gfp);
|
||||
|
||||
/**
|
||||
* ieee80211_radar_detected - inform that a radar was detected
|
||||
*
|
||||
* @hw: pointer as obtained from ieee80211_alloc_hw()
|
||||
*/
|
||||
void ieee80211_radar_detected(struct ieee80211_hw *hw);
|
||||
|
||||
/**
|
||||
* ieee80211_chswitch_done - Complete channel switch process
|
||||
* @vif: &struct ieee80211_vif pointer from the add_interface callback.
|
||||
@@ -4211,4 +4253,16 @@ void ieee80211_disable_rssi_reports(struct ieee80211_vif *vif);
|
||||
*/
|
||||
int ieee80211_ave_rssi(struct ieee80211_vif *vif);
|
||||
|
||||
/**
|
||||
* ieee80211_report_wowlan_wakeup - report WoWLAN wakeup
|
||||
* @vif: virtual interface
|
||||
* @wakeup: wakeup reason(s)
|
||||
* @gfp: allocation flags
|
||||
*
|
||||
* See cfg80211_report_wowlan_wakeup().
|
||||
*/
|
||||
void ieee80211_report_wowlan_wakeup(struct ieee80211_vif *vif,
|
||||
struct cfg80211_wowlan_wakeup *wakeup,
|
||||
gfp_t gfp);
|
||||
|
||||
#endif /* MAC80211_H */
|
||||
|
Reference in New Issue
Block a user