|
@@ -1,5 +1,5 @@
|
|
|
/*
|
|
|
- * Copyright (c) 2011, 2014-2015, 2018 The Linux Foundation. All rights reserved.
|
|
|
+ * Copyright (c) 2011, 2014-2015, 2018-2019 The Linux Foundation. All rights reserved.
|
|
|
*
|
|
|
* Permission to use, copy, modify, and/or distribute this software for
|
|
|
* any purpose with or without fee is hereby granted, provided that the
|
|
@@ -25,96 +25,12 @@
|
|
|
* Public defines for Atheros Upper MAC Layer
|
|
|
*/
|
|
|
|
|
|
-/**
|
|
|
- * @brief Opaque handle of 802.11 protocal layer.
|
|
|
- */
|
|
|
-struct ieee80211com;
|
|
|
-typedef struct ieee80211com *wlan_dev_t;
|
|
|
-
|
|
|
-/**
|
|
|
- * @brief Opaque handle to App IE module.
|
|
|
- */
|
|
|
-struct wlan_mlme_app_ie;
|
|
|
-typedef struct wlan_mlme_app_ie *wlan_mlme_app_ie_t;
|
|
|
-
|
|
|
-/**
|
|
|
- * @brief Opaque handle of network instance (vap) in 802.11 protocal layer.
|
|
|
- */
|
|
|
-struct ieee80211vap;
|
|
|
-typedef struct ieee80211vap *wlan_if_t;
|
|
|
-
|
|
|
-struct ieee80211vapprofile;
|
|
|
-typedef struct ieee80211vapprofile *wlan_if_info_t;
|
|
|
-
|
|
|
-/**
|
|
|
- * @brief Opaque handle of a node in the wifi network.
|
|
|
- */
|
|
|
-struct ieee80211_node;
|
|
|
-typedef struct ieee80211_node *wlan_node_t;
|
|
|
-
|
|
|
-/**
|
|
|
- * @brief Opaque handle of OS interface (ifp in the case of unix ).
|
|
|
- */
|
|
|
-struct _os_if_t;
|
|
|
-typedef struct _os_if_t *os_if_t;
|
|
|
-
|
|
|
-/**
|
|
|
- *
|
|
|
- * @brief Opaque handle.
|
|
|
- */
|
|
|
-typedef void *os_handle_t;
|
|
|
-
|
|
|
-/**
|
|
|
- * @brief Opaque handle of a channel.
|
|
|
- */
|
|
|
-struct ieee80211_channel;
|
|
|
-typedef struct ieee80211_channel *wlan_chan_t;
|
|
|
-
|
|
|
-/**
|
|
|
- * @brief Opaque handle scan_entry.
|
|
|
- */
|
|
|
-struct ieee80211_scan_entry;
|
|
|
-typedef struct ieee80211_scan_entry *wlan_scan_entry_t;
|
|
|
-
|
|
|
-/* AoW related defines */
|
|
|
-#define AOW_MAX_RECEIVER_COUNT 10
|
|
|
-
|
|
|
-#define IEEE80211_NWID_LEN 32
|
|
|
-#define IEEE80211_ISO_COUNTRY_LENGTH 3 /* length of 11d ISO country string */
|
|
|
-
|
|
|
-typedef struct _ieee80211_ssid {
|
|
|
- int len;
|
|
|
- uint8_t ssid[IEEE80211_NWID_LEN];
|
|
|
-} ieee80211_ssid;
|
|
|
-
|
|
|
-typedef struct ieee80211_tx_status {
|
|
|
- int ts_flags;
|
|
|
-#define IEEE80211_TX_ERROR 0x01
|
|
|
-#define IEEE80211_TX_XRETRY 0x02
|
|
|
+#ifndef EXTERNAL_USE_ONLY
|
|
|
|
|
|
- int ts_retries; /* number of retries to successfully transmit this frame */
|
|
|
-#ifdef ATH_SUPPORT_TxBF
|
|
|
- uint8_t ts_txbfstatus;
|
|
|
-#define AR_BW_Mismatch 0x1
|
|
|
-#define AR_Stream_Miss 0x2
|
|
|
-#define AR_CV_Missed 0x4
|
|
|
-#define AR_Dest_Miss 0x8
|
|
|
-#define AR_Expired 0x10
|
|
|
-#define AR_TxBF_Valid_HW_Status (AR_BW_Mismatch|AR_Stream_Miss|AR_CV_Missed|AR_Dest_Miss|AR_Expired)
|
|
|
-#define TxBF_STATUS_Sounding_Complete 0x20
|
|
|
-#define TxBF_STATUS_Sounding_Request 0x40
|
|
|
-#define TxBF_Valid_SW_Status (TxBF_STATUS_Sounding_Complete | TxBF_STATUS_Sounding_Request)
|
|
|
-#define TxBF_Valid_Status (AR_TxBF_Valid_HW_Status | TxBF_Valid_SW_Status)
|
|
|
- uint32_t ts_tstamp; /* tx time stamp */
|
|
|
-#endif
|
|
|
-#ifdef ATH_SUPPORT_FLOWMAC_MODULE
|
|
|
- uint8_t ts_flowmac_flags;
|
|
|
-#define IEEE80211_TX_FLOWMAC_DONE 0x01
|
|
|
-#endif
|
|
|
- uint32_t ts_rateKbps;
|
|
|
-} ieee80211_xmit_status;
|
|
|
+#define IEEE80211_LSIG_LEN 3
|
|
|
+#define IEEE80211_HTSIG_LEN 6
|
|
|
+#define IEEE80211_SB_LEN 2
|
|
|
|
|
|
-#ifndef EXTERNAL_USE_ONLY
|
|
|
typedef struct ieee80211_rx_status {
|
|
|
int rs_numchains;
|
|
|
int rs_flags;
|
|
@@ -175,1191 +91,6 @@ typedef struct ieee80211_rx_status {
|
|
|
} ieee80211_recv_status;
|
|
|
#endif /* EXTERNAL_USE_ONLY */
|
|
|
|
|
|
-/*
|
|
|
- * flags to be passed to ieee80211_vap_create function .
|
|
|
- */
|
|
|
-#define IEEE80211_CLONE_BSSID 0x0001 /* allocate unique mac/bssid */
|
|
|
-#define IEEE80211_CLONE_NOBEACONS 0x0002 /* don't setup beacon timers */
|
|
|
-#define IEEE80211_CLONE_WDS 0x0004 /* enable WDS processing */
|
|
|
-#define IEEE80211_CLONE_WDSLEGACY 0x0008 /* legacy WDS operation */
|
|
|
-#define IEEE80211_PRIMARY_VAP 0x0010 /* primary vap */
|
|
|
-#define IEEE80211_P2PDEV_VAP 0x0020 /* p2pdev vap */
|
|
|
-#define IEEE80211_P2PGO_VAP 0x0040 /* p2p-go vap */
|
|
|
-#define IEEE80211_P2PCLI_VAP 0x0080 /* p2p-client vap */
|
|
|
-#define IEEE80211_CLONE_MACADDR 0x0100 /* create vap w/ specified mac/bssid */
|
|
|
-#define IEEE80211_CLONE_MATADDR 0x0200 /* create vap w/ specified MAT addr */
|
|
|
-#define IEEE80211_WRAP_VAP 0x0400 /* wireless repeater ap vap */
|
|
|
-
|
|
|
-/*
|
|
|
- * For the new multi-vap scan feature, there is a set of default priority tables
|
|
|
- * for each OpMode.
|
|
|
- * The following are the default list of the VAP Scan Priority Mapping based on OpModes.
|
|
|
- * NOTE: the following are only used when "#if ATH_SUPPORT_MULTIPLE_SCANS" is true.
|
|
|
- */
|
|
|
-/* For IBSS opmode */
|
|
|
-#define DEF_VAP_SCAN_PRI_MAP_OPMODE_IBSS_BASE 0
|
|
|
-/* For STA opmode */
|
|
|
-#define DEF_VAP_SCAN_PRI_MAP_OPMODE_STA_BASE 0
|
|
|
-#define DEF_VAP_SCAN_PRI_MAP_OPMODE_STA_P2P_CLIENT 1
|
|
|
-/* For HostAp opmode */
|
|
|
-#define DEF_VAP_SCAN_PRI_MAP_OPMODE_AP_BASE 0
|
|
|
-#define DEF_VAP_SCAN_PRI_MAP_OPMODE_AP_P2P_GO 1
|
|
|
-#define DEF_VAP_SCAN_PRI_MAP_OPMODE_AP_P2P_DEVICE 2
|
|
|
-/* For BTAmp opmode */
|
|
|
-#define DEF_VAP_SCAN_PRI_MAP_OPMODE_BTAMP_BASE 0
|
|
|
-
|
|
|
-typedef enum _ieee80211_dev_vap_event {
|
|
|
- IEEE80211_VAP_CREATED = 1,
|
|
|
- IEEE80211_VAP_STOPPED,
|
|
|
- IEEE80211_VAP_DELETED
|
|
|
-} ieee80211_dev_vap_event;
|
|
|
-
|
|
|
-typedef struct _wlan_dev_event_handler_table {
|
|
|
- void (*wlan_dev_vap_event)(void *event_arg, wlan_dev_t, os_if_t, ieee80211_dev_vap_event); /* callback to receive vap events */
|
|
|
-#ifdef ATH_SUPPORT_SPECTRAL
|
|
|
- void (*wlan_dev_spectral_indicate)(void *, void *, uint32_t);
|
|
|
-#endif
|
|
|
-} wlan_dev_event_handler_table;
|
|
|
-
|
|
|
-typedef enum _ieee80211_ap_stopped_reason {
|
|
|
- IEEE80211_AP_STOPPED_REASON_DUMMY = 0, /* Dummy placeholder. Should not use */
|
|
|
- IEEE80211_AP_STOPPED_REASON_CHANNEL_DFS = 1,
|
|
|
-} ieee80211_ap_stopped_reason;
|
|
|
-
|
|
|
-typedef int IEEE80211_REASON_CODE;
|
|
|
-typedef int IEEE80211_STATUS;
|
|
|
-
|
|
|
-/*
|
|
|
- * scan API related structs.
|
|
|
- */
|
|
|
-typedef enum _ieee80211_scan_type {
|
|
|
- IEEE80211_SCAN_BACKGROUND,
|
|
|
- IEEE80211_SCAN_FOREGROUND,
|
|
|
- IEEE80211_SCAN_SPECTRAL,
|
|
|
- IEEE80211_SCAN_REPEATER_BACKGROUND,
|
|
|
- IEEE80211_SCAN_REPEATER_EXT_BACKGROUND,
|
|
|
- IEEE80211_SCAN_RADIO_MEASUREMENTS,
|
|
|
-} ieee80211_scan_type;
|
|
|
-
|
|
|
-/*
|
|
|
- * Priority numbers must be sequential, starting with 0.
|
|
|
- */
|
|
|
-typedef enum ieee80211_scan_priority_t {
|
|
|
- IEEE80211_SCAN_PRIORITY_VERY_LOW = 0,
|
|
|
- IEEE80211_SCAN_PRIORITY_LOW,
|
|
|
- IEEE80211_SCAN_PRIORITY_MEDIUM,
|
|
|
- IEEE80211_SCAN_PRIORITY_HIGH,
|
|
|
- IEEE80211_SCAN_PRIORITY_VERY_HIGH,
|
|
|
-
|
|
|
- IEEE80211_SCAN_PRIORITY_COUNT /* number of priorities supported */
|
|
|
-} IEEE80211_SCAN_PRIORITY;
|
|
|
-
|
|
|
-typedef uint16_t IEEE80211_SCAN_REQUESTOR;
|
|
|
-typedef uint32_t IEEE80211_SCAN_ID;
|
|
|
-
|
|
|
-#define IEEE80211_SCAN_ID_NONE 0
|
|
|
-
|
|
|
-/* All P2P scans currently use medium priority */
|
|
|
-#define IEEE80211_P2P_DEFAULT_SCAN_PRIORITY IEEE80211_SCAN_PRIORITY_MEDIUM
|
|
|
-#define IEEE80211_P2P_SCAN_PRIORITY_HIGH IEEE80211_SCAN_PRIORITY_HIGH
|
|
|
-
|
|
|
-/* Masks identifying types/ID of scans */
|
|
|
-#define IEEE80211_SPECIFIC_SCAN 0x00000000
|
|
|
-#define IEEE80211_VAP_SCAN 0x01000000
|
|
|
-#define IEEE80211_ALL_SCANS 0x04000000
|
|
|
-
|
|
|
-/**
|
|
|
- * host scan bit. only relevant for host/target architecture.
|
|
|
- * do not reuse this bit definition. target uses this .
|
|
|
- *
|
|
|
- */
|
|
|
-#define IEEE80211_HOST_SCAN 0x80000000
|
|
|
-#define IEEE80211_SCAN_CLASS_MASK 0xFF000000
|
|
|
-
|
|
|
-#define IEEE80211_SCAN_PASSIVE 0x0001 /* passively scan all the channels */
|
|
|
-#define IEEE80211_SCAN_ACTIVE 0x0002 /* actively scan all the channels (regdomain rules still apply) */
|
|
|
-#define IEEE80211_SCAN_2GHZ 0x0004 /* scan 2GHz band */
|
|
|
-#define IEEE80211_SCAN_5GHZ 0x0008 /* scan 5GHz band */
|
|
|
-#define IEEE80211_SCAN_ALLBANDS (IEEE80211_SCAN_5GHZ | IEEE80211_SCAN_2GHZ)
|
|
|
-#define IEEE80211_SCAN_CONTINUOUS 0x0010 /* keep scanning until maxscantime expires */
|
|
|
-#define IEEE80211_SCAN_FORCED 0x0020 /* forced scan (OS request) - should proceed even in the presence of data traffic */
|
|
|
-#define IEEE80211_SCAN_NOW 0x0040 /* scan now (User request) - should proceed even in the presence of data traffic */
|
|
|
-#define IEEE80211_SCAN_ADD_BCAST_PROBE 0x0080 /* add wildcard ssid and broadcast probe request if there is none */
|
|
|
-#define IEEE80211_SCAN_EXTERNAL 0x0100 /* scan requested by OS */
|
|
|
-#define IEEE80211_SCAN_BURST 0x0200 /* scan multiple channels before returning to BSS channel */
|
|
|
-#define IEEE80211_SCAN_CHAN_EVENT 0x0400 /* scan chan event for offload architectures */
|
|
|
-#define IEEE80211_SCAN_FILTER_PROBE_REQ 0x0800 /* Filter probe requests- applicable only for offload architectures */
|
|
|
-
|
|
|
-#define IEEE80211_SCAN_PARAMS_MAX_SSID 10
|
|
|
-#define IEEE80211_SCAN_PARAMS_MAX_BSSID 10
|
|
|
-
|
|
|
-/* flag definitions passed to scan_cancel API */
|
|
|
-
|
|
|
-#define IEEE80211_SCAN_CANCEL_ASYNC 0x0 /* asynchronouly wait for scan SM to complete cancel */
|
|
|
-#define IEEE80211_SCAN_CANCEL_WAIT 0x1 /* wait for scan SM to complete cancel */
|
|
|
-#define IEEE80211_SCAN_CANCEL_SYNC 0x2 /* synchronously execute cancel scan */
|
|
|
-
|
|
|
-#ifndef EXTERNAL_USE_ONLY
|
|
|
-typedef bool (*ieee80211_scan_termination_check)(void *arg);
|
|
|
-
|
|
|
-typedef struct _ieee80211_scan_params {
|
|
|
- ieee80211_scan_type type;
|
|
|
- int min_dwell_time_active; /* min time in msec on active channels */
|
|
|
- int max_dwell_time_active; /* max time in msec on active channels (if no response) */
|
|
|
- int min_dwell_time_passive; /* min time in msec on passive channels */
|
|
|
- int max_dwell_time_passive; /* max time in msec on passive channels (if no response) */
|
|
|
- int min_rest_time; /* min time in msec on the BSS channel, only valid for BG scan */
|
|
|
- int max_rest_time; /* max time in msec on the BSS channel, only valid for BG scan */
|
|
|
- int max_offchannel_time; /* max time away from BSS channel, in ms */
|
|
|
- int repeat_probe_time; /* time before sending second probe request */
|
|
|
- int idle_time; /* time in msec on bss channel before switching channel */
|
|
|
- int max_scan_time; /* maximum time in msec allowed for scan */
|
|
|
- int probe_delay; /* delay in msec before sending probe request */
|
|
|
- int offchan_retry_delay; /* delay in msec before retrying off-channel switch */
|
|
|
- int min_beacon_count; /* number of home AP beacons to receive before leaving the home channel */
|
|
|
- int max_offchan_retries; /* maximum number of times to retry off-channel switch */
|
|
|
- int beacon_timeout; /* maximum time to wait for beacons */
|
|
|
- int flags; /* scan flags */
|
|
|
- int num_channels; /* number of channels to scan */
|
|
|
- bool multiple_ports_active; /* driver has multiple ports active in the home channel */
|
|
|
- bool restricted_scan; /* Perform restricted scan */
|
|
|
- bool chan_list_allocated;
|
|
|
- IEEE80211_SCAN_PRIORITY p2p_scan_priority; /* indicates the scan priority if this is a P2P-related scan */
|
|
|
- uint32_t *chan_list; /* array of ieee channels (or) frequencies to scan */
|
|
|
- int num_ssid; /* number of desired ssids */
|
|
|
- ieee80211_ssid ssid_list[IEEE80211_SCAN_PARAMS_MAX_SSID];
|
|
|
- int num_bssid; /* number of desired bssids */
|
|
|
- uint8_t bssid_list[IEEE80211_SCAN_PARAMS_MAX_BSSID][IEEE80211_ADDR_LEN];
|
|
|
- struct ieee80211_node *bss_node; /* BSS node */
|
|
|
- int ie_len; /* length of the ie data to be added to probe req */
|
|
|
- uint8_t *ie_data; /* pointer to ie data */
|
|
|
- ieee80211_scan_termination_check check_termination_function; /* function checking for termination condition */
|
|
|
- void *check_termination_context; /* context passed to function above */
|
|
|
-} ieee80211_scan_params;
|
|
|
-
|
|
|
-/* Data types used to specify scan priorities */
|
|
|
-typedef uint32_t IEEE80211_PRIORITY_MAPPING[IEEE80211_SCAN_PRIORITY_COUNT];
|
|
|
-
|
|
|
-/**************************************
|
|
|
- * Called before attempting to roam. Modifies the rssiAdder of a BSS
|
|
|
- * based on the preferred status of a BSS.
|
|
|
- *
|
|
|
- * According to CCX spec, AP in the neighbor list is not meant for giving extra
|
|
|
- * weightage in roaming. By doing so, roaming becomes sticky. See bug 21220.
|
|
|
- * Change the weightage to 0. Cisco may ask in future for a user control of
|
|
|
- * this weightage.
|
|
|
- */
|
|
|
-#define PREFERRED_BSS_RANK 20
|
|
|
-#define NEIGHBOR_BSS_RANK 0 /* must be less than preferred BSS rank */
|
|
|
-
|
|
|
-/*
|
|
|
- * The utility of the BSS is the metric used in the selection
|
|
|
- * of a BSS. The Utility of the BSS is reduced if we just left the BSS.
|
|
|
- * The Utility of the BSS is not reduced if we have left the
|
|
|
- * BSS for 8 seconds (8000ms) or more.
|
|
|
- * 2^13 milliseconds is a close approximation to avoid expensive division
|
|
|
- */
|
|
|
-#define LAST_ASSOC_TIME_DELTA_REQUIREMENT (1 << 13) /* 8192 */
|
|
|
-
|
|
|
-#define QBSS_SCALE_MAX 255 /* Qbss channel load Max value */
|
|
|
-#define QBSS_SCALE_DOWN_FACTOR 2 /* scale factor to reduce Qbss channel load */
|
|
|
-#define QBSS_HYST_ADJ 60 /* Qbss Weightage factor for the current AP */
|
|
|
-
|
|
|
-/*
|
|
|
- * Flags used to set field APState
|
|
|
- */
|
|
|
-#define AP_STATE_GOOD 0x00
|
|
|
-#define AP_STATE_BAD 0x01
|
|
|
-#define AP_STATE_RETRY 0x10
|
|
|
-#define BAD_AP_TIMEOUT 6000 /* In milli seconds */
|
|
|
-/*
|
|
|
- * To disable BAD_AP status check on any scan entry
|
|
|
- */
|
|
|
-#define BAD_AP_TIMEOUT_DISABLED 0
|
|
|
-
|
|
|
-/*
|
|
|
- * BAD_AP timeout specified in seconds
|
|
|
- */
|
|
|
-#define BAD_AP_TIMEOUT_IN_SECONDS 10
|
|
|
-
|
|
|
-/*
|
|
|
- * State values used to represent our assoc_state with ap (discrete, not bitmasks)
|
|
|
- */
|
|
|
-#define AP_ASSOC_STATE_NONE 0
|
|
|
-#define AP_ASSOC_STATE_AUTH 1
|
|
|
-#define AP_ASSOC_STATE_ASSOC 2
|
|
|
-
|
|
|
-/*
|
|
|
- * Entries in the scan list are considered obsolete after 75 seconds.
|
|
|
- */
|
|
|
-#define IEEE80211_SCAN_ENTRY_EXPIRE_TIME 75000
|
|
|
-
|
|
|
-/*
|
|
|
- * idle time is only valid for scan type IEEE80211_SCAN_BACKGROUND.
|
|
|
- * if idle time is set then the scanner would change channel from BSS
|
|
|
- * channel to foreign channel only if both resttime is expired and
|
|
|
- * the theres was not traffic for idletime msec on the bss channel.
|
|
|
- * value of 0 for idletime would cause the channel to switch from BSS
|
|
|
- * channel to foreign channel as soon as the resttime is expired.
|
|
|
- *
|
|
|
- * if maxscantime is nonzero and if the scanner can not complete the
|
|
|
- * scan in maxscantime msec then the scanner will cancel the scan and
|
|
|
- * post IEEE80211_SCAN_COMPLETED event with reason SCAN_TIMEDOUT.
|
|
|
- *
|
|
|
- */
|
|
|
-
|
|
|
-/*
|
|
|
- * chanlist can be either ieee channels (or) frequencies.
|
|
|
- * if a value is less than 1000 implementation assumes it
|
|
|
- * as ieee channel # otherwise implementation assumes it
|
|
|
- * as frequency in Mhz.
|
|
|
- */
|
|
|
-
|
|
|
-typedef enum _ieee80211_scan_event_type {
|
|
|
- IEEE80211_SCAN_STARTED,
|
|
|
- IEEE80211_SCAN_COMPLETED,
|
|
|
- IEEE80211_SCAN_RADIO_MEASUREMENT_START,
|
|
|
- IEEE80211_SCAN_RADIO_MEASUREMENT_END,
|
|
|
- IEEE80211_SCAN_RESTARTED,
|
|
|
- IEEE80211_SCAN_HOME_CHANNEL,
|
|
|
- IEEE80211_SCAN_FOREIGN_CHANNEL,
|
|
|
- IEEE80211_SCAN_BSSID_MATCH,
|
|
|
- IEEE80211_SCAN_FOREIGN_CHANNEL_GET_NF,
|
|
|
- IEEE80211_SCAN_DEQUEUED,
|
|
|
- IEEE80211_SCAN_PREEMPTED,
|
|
|
-
|
|
|
- IEEE80211_SCAN_EVENT_COUNT
|
|
|
-} ieee80211_scan_event_type;
|
|
|
-
|
|
|
-typedef enum ieee80211_scan_completion_reason {
|
|
|
- IEEE80211_REASON_NONE,
|
|
|
- IEEE80211_REASON_COMPLETED,
|
|
|
- IEEE80211_REASON_CANCELLED,
|
|
|
- IEEE80211_REASON_TIMEDOUT,
|
|
|
- IEEE80211_REASON_TERMINATION_FUNCTION,
|
|
|
- IEEE80211_REASON_MAX_OFFCHAN_RETRIES,
|
|
|
- IEEE80211_REASON_PREEMPTED,
|
|
|
- IEEE80211_REASON_RUN_FAILED,
|
|
|
- IEEE80211_REASON_INTERNAL_STOP,
|
|
|
-
|
|
|
- IEEE80211_REASON_COUNT
|
|
|
-} ieee80211_scan_completion_reason;
|
|
|
-
|
|
|
-typedef struct _ieee80211_scan_event {
|
|
|
- ieee80211_scan_event_type type;
|
|
|
- ieee80211_scan_completion_reason reason;
|
|
|
- wlan_chan_t chan;
|
|
|
- IEEE80211_SCAN_REQUESTOR requestor; /* Requestor ID passed to the scan_start function */
|
|
|
- IEEE80211_SCAN_ID scan_id; /* Specific ID of the scan reporting the event */
|
|
|
-} ieee80211_scan_event;
|
|
|
-
|
|
|
-typedef enum _ieee80211_scan_request_status {
|
|
|
- IEEE80211_SCAN_STATUS_QUEUED,
|
|
|
- IEEE80211_SCAN_STATUS_RUNNING,
|
|
|
- IEEE80211_SCAN_STATUS_PREEMPTED,
|
|
|
- IEEE80211_SCAN_STATUS_COMPLETED
|
|
|
-} ieee80211_scan_request_status;
|
|
|
-
|
|
|
-/*
|
|
|
- * the sentry field of tht ieee80211_scan_event is only valid if the
|
|
|
- * event type is IEEE80211_SCAN_BSSID_MATCH.
|
|
|
- */
|
|
|
-
|
|
|
-typedef void (*ieee80211_scan_event_handler)(wlan_if_t vaphandle,
|
|
|
- ieee80211_scan_event *event,
|
|
|
- void *arg);
|
|
|
-
|
|
|
-typedef struct _ieee80211_scan_info {
|
|
|
- ieee80211_scan_type type;
|
|
|
- IEEE80211_SCAN_REQUESTOR requestor; /* Originator ID passed to the scan_start function */
|
|
|
- IEEE80211_SCAN_ID scan_id; /* Specific ID of the scan reporting the event */
|
|
|
- IEEE80211_SCAN_PRIORITY priority; /* Requested priority level (low/medium/high) */
|
|
|
- ieee80211_scan_request_status scheduling_status; /* Queued/running/preempted/completed */
|
|
|
- int min_dwell_time_active; /* min time in msec on active channels */
|
|
|
- int max_dwell_time_active; /* max time in msec on active channel (if no response) */
|
|
|
- int min_dwell_time_passive; /* min time in msec on passive channels */
|
|
|
- int max_dwell_time_passive; /* max time in msec on passive channel */
|
|
|
- int min_rest_time; /* min time in msec on the BSS channel, only valid for BG scan */
|
|
|
- int max_rest_time; /* max time in msec on the BSS channel, only valid for BG scan */
|
|
|
- int max_offchannel_time; /* max time away from BSS channel, in ms */
|
|
|
- int repeat_probe_time; /* time before sending second probe request */
|
|
|
- int min_beacon_count; /* number of home AP beacons to receive before leaving the home channel */
|
|
|
- int flags; /* scan flags */
|
|
|
- systime_t scan_start_time; /* system time when last scani started */
|
|
|
- int scanned_channels; /* number of scanned channels */
|
|
|
- int default_channel_list_length; /* number of channels in the default channel list */
|
|
|
- int channel_list_length; /* number of channels in the channel list used for the current scan */
|
|
|
- uint8_t in_progress : 1, /* if the scan is in progress */
|
|
|
- cancelled : 1, /* if the scan is cancelled */
|
|
|
- preempted : 1, /* if the scan is preempted */
|
|
|
- restricted : 1; /* if the scan is restricted */
|
|
|
-} ieee80211_scan_info;
|
|
|
-
|
|
|
-typedef struct _ieee80211_scan_request_info {
|
|
|
- wlan_if_t vaphandle;
|
|
|
- IEEE80211_SCAN_REQUESTOR requestor;
|
|
|
- IEEE80211_SCAN_PRIORITY requested_priority;
|
|
|
- IEEE80211_SCAN_PRIORITY absolute_priority;
|
|
|
- IEEE80211_SCAN_ID scan_id;
|
|
|
- ieee80211_scan_request_status scheduling_status;
|
|
|
- ieee80211_scan_params params;
|
|
|
- systime_t request_timestamp;
|
|
|
- uint32_t maximum_duration;
|
|
|
-} ieee80211_scan_request_info;
|
|
|
-
|
|
|
-#endif /* EXTERNAL_USE_ONLY */
|
|
|
-
|
|
|
-#ifndef EXTERNAL_USE_ONLY
|
|
|
-typedef void (*ieee80211_acs_event_handler)(void *arg, wlan_chan_t channel);
|
|
|
-#endif /* EXTERNAL_USE_ONLY */
|
|
|
-
|
|
|
-#define MAX_CHAINS 3
|
|
|
-
|
|
|
-typedef struct _wlan_rssi_info {
|
|
|
- int8_t avg_rssi; /* average rssi */
|
|
|
- uint8_t valid_mask; /* bitmap of valid elements in rssi_ctrl/ext array */
|
|
|
- int8_t rssi_ctrl[MAX_CHAINS];
|
|
|
- int8_t rssi_ext[MAX_CHAINS];
|
|
|
-} wlan_rssi_info;
|
|
|
-
|
|
|
-typedef enum _wlan_rssi_type {
|
|
|
- WLAN_RSSI_TX,
|
|
|
- WLAN_RSSI_RX,
|
|
|
- WLAN_RSSI_BEACON, /* rssi of the beacon, only valid for STA/IBSS vap */
|
|
|
- WLAN_RSSI_RX_DATA
|
|
|
-} wlan_rssi_type;
|
|
|
-
|
|
|
-typedef enum _ieee80211_rate_type {
|
|
|
- IEEE80211_RATE_TYPE_LEGACY,
|
|
|
- IEEE80211_RATE_TYPE_MCS,
|
|
|
-} ieee80211_rate_type;
|
|
|
-
|
|
|
-typedef struct _ieee80211_rate_info {
|
|
|
- ieee80211_rate_type type;
|
|
|
- uint32_t rate; /* average rate in kbps */
|
|
|
- uint32_t lastrate; /* last packet rate in kbps */
|
|
|
- uint8_t mcs; /* mcs index . is valid if rate type is MCS20 or MCS40 */
|
|
|
- uint8_t maxrate_per_client;
|
|
|
-} ieee80211_rate_info;
|
|
|
-
|
|
|
-typedef enum _ieee80211_node_param_type {
|
|
|
- IEEE80211_NODE_PARAM_TX_POWER,
|
|
|
- IEEE80211_NODE_PARAM_ASSOCID,
|
|
|
- IEEE80211_NODE_PARAM_INACT, /* inactivity timer value */
|
|
|
- IEEE80211_NODE_PARAM_AUTH_MODE, /* auth mode */
|
|
|
- IEEE80211_NODE_PARAM_CAP_INFO, /* auth mode */
|
|
|
-} ieee80211_node_param_type;
|
|
|
-
|
|
|
-/*
|
|
|
- * Per/node (station) statistics available when operating as an AP.
|
|
|
- */
|
|
|
-struct ieee80211_nodestats {
|
|
|
- uint32_t ns_rx_data; /* rx data frames */
|
|
|
- uint32_t ns_rx_mgmt; /* rx management frames */
|
|
|
- uint32_t ns_rx_ctrl; /* rx control frames */
|
|
|
- uint32_t ns_rx_ucast; /* rx unicast frames */
|
|
|
- uint32_t ns_rx_mcast; /* rx multi/broadcast frames */
|
|
|
- uint64_t ns_rx_bytes; /* rx data count (bytes) */
|
|
|
- uint64_t ns_rx_beacons; /* rx beacon frames */
|
|
|
- uint32_t ns_rx_proberesp; /* rx probe response frames */
|
|
|
-
|
|
|
- uint32_t ns_rx_dup; /* rx discard 'cuz dup */
|
|
|
- uint32_t ns_rx_noprivacy; /* rx w/ wep but privacy off */
|
|
|
- uint32_t ns_rx_wepfail; /* rx wep processing failed */
|
|
|
- uint32_t ns_rx_demicfail; /* rx demic failed */
|
|
|
-
|
|
|
- /* We log MIC and decryption failures against Transmitter STA stats.
|
|
|
- Though the frames may not actually be sent by STAs corresponding
|
|
|
- to TA, the stats are still valuable for some customers as a sort
|
|
|
- of rough indication.
|
|
|
- Also note that the mapping from TA to STA may fail sometimes. */
|
|
|
- uint32_t ns_rx_tkipmic; /* rx TKIP MIC failure */
|
|
|
- uint32_t ns_rx_ccmpmic; /* rx CCMP MIC failure */
|
|
|
- uint32_t ns_rx_wpimic; /* rx WAPI MIC failure */
|
|
|
- uint32_t ns_rx_tkipicv; /* rx ICV check failed (TKIP) */
|
|
|
- uint32_t ns_rx_decap; /* rx decapsulation failed */
|
|
|
- uint32_t ns_rx_defrag; /* rx defragmentation failed */
|
|
|
- uint32_t ns_rx_disassoc; /* rx disassociation */
|
|
|
- uint32_t ns_rx_deauth; /* rx deauthentication */
|
|
|
- uint32_t ns_rx_action; /* rx action */
|
|
|
- uint32_t ns_rx_decryptcrc; /* rx decrypt failed on crc */
|
|
|
- uint32_t ns_rx_unauth; /* rx on unauthorized port */
|
|
|
- uint32_t ns_rx_unencrypted; /* rx unecrypted w/ privacy */
|
|
|
-
|
|
|
- uint32_t ns_tx_data; /* tx data frames */
|
|
|
- uint32_t ns_tx_data_success; /* tx data frames successfully
|
|
|
- transmitted (unicast only) */
|
|
|
- uint32_t ns_tx_mgmt; /* tx management frames */
|
|
|
- uint32_t ns_tx_ucast; /* tx unicast frames */
|
|
|
- uint32_t ns_tx_mcast; /* tx multi/broadcast frames */
|
|
|
- uint64_t ns_tx_bytes; /* tx data count (bytes) */
|
|
|
- uint64_t ns_tx_bytes_success; /* tx success data count - unicast only
|
|
|
- (bytes) */
|
|
|
- uint32_t ns_tx_probereq; /* tx probe request frames */
|
|
|
- uint32_t ns_tx_uapsd; /* tx on uapsd queue */
|
|
|
- uint32_t ns_tx_discard; /* tx dropped by NIC */
|
|
|
-
|
|
|
- uint32_t ns_tx_novlantag; /* tx discard 'cuz no tag */
|
|
|
- uint32_t ns_tx_vlanmismatch; /* tx discard 'cuz bad tag */
|
|
|
-
|
|
|
- uint32_t ns_tx_eosplost; /* uapsd EOSP retried out */
|
|
|
-
|
|
|
- uint32_t ns_ps_discard; /* ps discard 'cuz of age */
|
|
|
-
|
|
|
- uint32_t ns_uapsd_triggers; /* uapsd triggers */
|
|
|
- uint32_t ns_uapsd_duptriggers; /* uapsd duplicate triggers */
|
|
|
- uint32_t ns_uapsd_ignoretriggers; /* uapsd duplicate triggers */
|
|
|
- uint32_t ns_uapsd_active; /* uapsd duplicate triggers */
|
|
|
- uint32_t ns_uapsd_triggerenabled; /* uapsd duplicate triggers */
|
|
|
-
|
|
|
- /* MIB-related state */
|
|
|
- uint32_t ns_tx_assoc; /* [re]associations */
|
|
|
- uint32_t ns_tx_assoc_fail; /* [re]association failures */
|
|
|
- uint32_t ns_tx_auth; /* [re]authentications */
|
|
|
- uint32_t ns_tx_auth_fail; /* [re]authentication failures */
|
|
|
- uint32_t ns_tx_deauth; /* deauthentications */
|
|
|
- uint32_t ns_tx_deauth_code; /* last deauth reason */
|
|
|
- uint32_t ns_tx_disassoc; /* disassociations */
|
|
|
- uint32_t ns_tx_disassoc_code; /* last disassociation reason */
|
|
|
- uint32_t ns_psq_drops; /* power save queue drops */
|
|
|
-};
|
|
|
-
|
|
|
-/*
|
|
|
- * station power save mode.
|
|
|
- */
|
|
|
-typedef enum ieee80211_psmode {
|
|
|
- IEEE80211_PWRSAVE_NONE = 0, /* no power save */
|
|
|
- IEEE80211_PWRSAVE_LOW,
|
|
|
- IEEE80211_PWRSAVE_NORMAL,
|
|
|
- IEEE80211_PWRSAVE_MAXIMUM,
|
|
|
- IEEE80211_PWRSAVE_WNM /* WNM-Sleep Mode */
|
|
|
-} ieee80211_pwrsave_mode;
|
|
|
-
|
|
|
-/* station power save pspoll handling */
|
|
|
-typedef enum {
|
|
|
- IEEE80211_CONTINUE_PSPOLL_FOR_MORE_DATA,
|
|
|
- IEEE80211_WAKEUP_FOR_MORE_DATA,
|
|
|
-} ieee80211_pspoll_moredata_handling;
|
|
|
-
|
|
|
-/*
|
|
|
- * apps power save state.
|
|
|
- */
|
|
|
-typedef enum {
|
|
|
- APPS_AWAKE = 0,
|
|
|
- APPS_PENDING_SLEEP,
|
|
|
- APPS_SLEEP,
|
|
|
- APPS_FAKE_SLEEP, /* Pending blocking sleep */
|
|
|
- APPS_FAKING_SLEEP, /* Blocking sleep */
|
|
|
- APPS_UNKNOWN_PWRSAVE,
|
|
|
-} ieee80211_apps_pwrsave_state;
|
|
|
-
|
|
|
-typedef enum _iee80211_mimo_powersave_mode {
|
|
|
- IEEE80211_MIMO_POWERSAVE_NONE, /* no mimo power save */
|
|
|
- IEEE80211_MIMO_POWERSAVE_STATIC, /* static mimo power save */
|
|
|
- IEEE80211_MIMO_POWERSAVE_DYNAMIC /* dynamic mimo powersave */
|
|
|
-} ieee80211_mimo_powersave_mode;
|
|
|
-
|
|
|
-#ifdef ATH_COALESCING
|
|
|
-typedef enum _ieee80211_coalescing_state {
|
|
|
- IEEE80211_COALESCING_DISABLED = 0, /* Coalescing is disabled */
|
|
|
- IEEE80211_COALESCING_DYNAMIC = 1, /* Dynamically move to Enabled state based on Uruns */
|
|
|
- IEEE80211_COALESCING_ENABLED = 2, /* Coalescing is enabled */
|
|
|
-} ieee80211_coalescing_state;
|
|
|
-
|
|
|
-#define IEEE80211_TX_COALESCING_THRESHOLD 5 /* Number of underrun errors to trigger coalescing */
|
|
|
-#endif
|
|
|
-
|
|
|
-typedef enum _ieee80211_cap {
|
|
|
- IEEE80211_CAP_SHSLOT, /* CAPABILITY: short slot */
|
|
|
- IEEE80211_CAP_SHPREAMBLE, /* CAPABILITY: short premable */
|
|
|
- IEEE80211_CAP_MULTI_DOMAIN, /* CAPABILITY: multiple domain */
|
|
|
- IEEE80211_CAP_WMM, /* CAPABILITY: WMM */
|
|
|
- IEEE80211_CAP_HT, /* CAPABILITY: HT */
|
|
|
- IEEE80211_CAP_PERF_PWR_OFLD, /* CAPABILITY: power performance offload support */
|
|
|
- IEEE80211_CAP_11AC, /* CAPABILITY: 11ac support */
|
|
|
-} ieee80211_cap;
|
|
|
-
|
|
|
-typedef enum _ieee80211_device_param {
|
|
|
- IEEE80211_DEVICE_RSSI_CTL,
|
|
|
- IEEE80211_DEVICE_NUM_TX_CHAIN,
|
|
|
- IEEE80211_DEVICE_NUM_RX_CHAIN,
|
|
|
- IEEE80211_DEVICE_TX_CHAIN_MASK,
|
|
|
- IEEE80211_DEVICE_RX_CHAIN_MASK,
|
|
|
- IEEE80211_DEVICE_TX_CHAIN_MASK_LEGACY,
|
|
|
- IEEE80211_DEVICE_RX_CHAIN_MASK_LEGACY,
|
|
|
- IEEE80211_DEVICE_BMISS_LIMIT, /* # of beacon misses for HW to generate BMISS intr */
|
|
|
- IEEE80211_DEVICE_PROTECTION_MODE, /* protection mode */
|
|
|
- IEEE80211_DEVICE_BLKDFSCHAN, /* block the use of DFS channels */
|
|
|
- IEEE80211_DEVICE_GREEN_AP_PS_ENABLE,
|
|
|
- IEEE80211_DEVICE_GREEN_AP_PS_TIMEOUT,
|
|
|
- IEEE80211_DEVICE_GREEN_AP_PS_ON_TIME,
|
|
|
- IEEE80211_DEVICE_CWM_EXTPROTMODE,
|
|
|
- IEEE80211_DEVICE_CWM_EXTPROTSPACING,
|
|
|
- IEEE80211_DEVICE_CWM_ENABLE,
|
|
|
- IEEE80211_DEVICE_CWM_EXTBUSYTHRESHOLD,
|
|
|
- IEEE80211_DEVICE_DOTH,
|
|
|
- IEEE80211_DEVICE_ADDBA_MODE,
|
|
|
- IEEE80211_DEVICE_COUNTRYCODE,
|
|
|
- IEEE80211_DEVICE_MULTI_CHANNEL, /* turn on/off off channel support */
|
|
|
- IEEE80211_DEVICE_MAX_AMSDU_SIZE, /* Size of AMSDU to be sent on the air */
|
|
|
- IEEE80211_DEVICE_P2P, /* Enable or Disable P2P */
|
|
|
- IEEE80211_DEVICE_OVERRIDE_SCAN_PROBERESPONSE_IE, /* Override scan Probe response IE, 0: Don't over-ride */
|
|
|
- IEEE80211_DEVICE_2G_CSA,
|
|
|
- IEEE80211_DEVICE_PWRTARGET,
|
|
|
- IEEE80211_DEVICE_OFF_CHANNEL_SUPPORT,
|
|
|
-} ieee80211_device_param;
|
|
|
-
|
|
|
-typedef enum _ieee80211_param {
|
|
|
- IEEE80211_BEACON_INTVAL, /* in TUs */
|
|
|
- IEEE80211_LISTEN_INTVAL, /* number of beacons */
|
|
|
- IEEE80211_DTIM_INTVAL, /* number of beacons */
|
|
|
- IEEE80211_BMISS_COUNT_RESET, /* number of beacon miss intrs before reset */
|
|
|
- IEEE80211_BMISS_COUNT_MAX, /* number of beacon miss intrs for bmiss notificationst */
|
|
|
- IEEE80211_ATIM_WINDOW, /* ATIM window */
|
|
|
- IEEE80211_SHORT_SLOT, /* short slot on/off */
|
|
|
- IEEE80211_SHORT_PREAMBLE, /* short preamble on/off */
|
|
|
- IEEE80211_RTS_THRESHOLD, /* rts threshold, 0 means no rts threshold */
|
|
|
- IEEE80211_FRAG_THRESHOLD, /* fragmentation threshold, 0 means no rts threshold */
|
|
|
- IEEE80211_FIXED_RATE, /*
|
|
|
- * rate code series(0: auto rate, 32 bit value: rate
|
|
|
- * codes for 4 rate series. each byte for one rate series)
|
|
|
- */
|
|
|
- IEEE80211_MCAST_RATE, /* rate in Kbps */
|
|
|
- IEEE80211_TXPOWER, /* in 0.5db units */
|
|
|
- IEEE80211_AMPDU_DENCITY, /* AMPDU dencity */
|
|
|
- IEEE80211_AMPDU_LIMIT, /* AMPDU limit */
|
|
|
- IEEE80211_MAX_AMPDU, /* Max AMPDU Exp */
|
|
|
- IEEE80211_VHT_MAX_AMPDU, /* VHT Max AMPDU Exp */
|
|
|
- IEEE80211_WPS_MODE, /* WPS mode */
|
|
|
- IEEE80211_TSN_MODE, /* TSN mode */
|
|
|
- IEEE80211_MULTI_DOMAIN, /* Multiple domain */
|
|
|
- IEEE80211_SAFE_MODE, /* Safe mode */
|
|
|
- IEEE80211_NOBRIDGE_MODE, /* No bridging done, all frames sent up the stack */
|
|
|
- IEEE80211_PERSTA_KEYTABLE_SIZE, /* IBSS-only, read-only: persta key table size */
|
|
|
- IEEE80211_RECEIVE_80211, /* deliver std 802.11 frames 802.11 instead of ethernet frames on the rx */
|
|
|
- IEEE80211_SEND_80211, /* OS sends std 802.11 frames 802.11 instead of ethernet frames on tx side */
|
|
|
- IEEE80211_MIN_BEACON_COUNT, /* minimum number beacons to tx/rx before vap can pause */
|
|
|
- IEEE80211_IDLE_TIME, /* minimun no activity time before vap can pause */
|
|
|
- IEEE80211_MIN_FRAMESIZE, /* smallest frame size we are allowed to receive */
|
|
|
- /* features. 0:feature is off. 1:feature is on. */
|
|
|
- IEEE80211_FEATURE_WMM, /* WMM */
|
|
|
- IEEE80211_FEATURE_WMM_PWRSAVE, /* WMM Power Save */
|
|
|
- IEEE80211_FEATURE_UAPSD, /* UAPSD setting (BE/BK/VI/VO) */
|
|
|
- IEEE80211_FEATURE_WDS, /* dynamic WDS feature */
|
|
|
- IEEE80211_FEATURE_PRIVACY, /* encryption */
|
|
|
- IEEE80211_FEATURE_DROP_UNENC, /* drop un encrypted frames */
|
|
|
- IEEE80211_FEATURE_COUNTER_MEASURES, /* turn on counter measures */
|
|
|
- IEEE80211_FEATURE_HIDE_SSID, /* turn on hide ssid feature */
|
|
|
- IEEE80211_FEATURE_APBRIDGE, /* turn on internal mcast traffic bridging for AP */
|
|
|
- IEEE80211_FEATURE_PUREB, /* turn on pure B mode for AP */
|
|
|
- IEEE80211_FEATURE_PUREG, /* turn on pure G mode for AP */
|
|
|
- IEEE80211_FEATURE_REGCLASS, /* add regulatory class IE in AP */
|
|
|
- IEEE80211_FEATURE_COUNTRY_IE, /* add country IE for vap in AP */
|
|
|
- IEEE80211_FEATURE_IC_COUNTRY_IE, /* add country IE for ic in AP */
|
|
|
- IEEE80211_FEATURE_DOTH, /* enable 802.11h */
|
|
|
- IEEE80211_FEATURE_PURE11N, /* enable pure 11n mode */
|
|
|
- IEEE80211_FEATURE_PRIVATE_RSNIE, /* enable OS shim to setup RSN IE */
|
|
|
- IEEE80211_FEATURE_COPY_BEACON, /* keep a copy of beacon */
|
|
|
- IEEE80211_FEATURE_PSPOLL, /* enable/disable pspoll mode in power save SM */
|
|
|
- IEEE80211_FEATURE_CONTINUE_PSPOLL_FOR_MOREDATA, /* enable/disable option to contunue sending ps polls when there is more data */
|
|
|
- IEEE80211_FEATURE_AMPDU, /* Enable or Disable Aggregation */
|
|
|
-#ifdef ATH_COALESCING
|
|
|
- IEEE80211_FEATURE_TX_COALESCING, /* enable tx coalescing */
|
|
|
-#endif
|
|
|
- IEEE80211_FEATURE_VAP_IND, /* Repeater independent VAP */
|
|
|
- IEEE80211_FIXED_RETRIES, /* fixed retries 0-4 */
|
|
|
- IEEE80211_SHORT_GI, /* short gi on/off */
|
|
|
- IEEE80211_HT40_INTOLERANT,
|
|
|
- IEEE80211_CHWIDTH,
|
|
|
- IEEE80211_CHEXTOFFSET,
|
|
|
- IEEE80211_DISABLE_2040COEXIST,
|
|
|
- IEEE80211_DISABLE_HTPROTECTION,
|
|
|
- IEEE80211_STA_QUICKKICKOUT,
|
|
|
- IEEE80211_CHSCANINIT,
|
|
|
- IEEE80211_FEATURE_STAFWD, /* dynamic AP Client feature */
|
|
|
- IEEE80211_DRIVER_CAPS,
|
|
|
- IEEE80211_UAPSD_MAXSP, /* UAPSD service period setting (0:unlimited, 2,4,6) */
|
|
|
- IEEE80211_WEP_MBSSID,
|
|
|
- IEEE80211_MGMT_RATE, /* ieee rate to be used for management */
|
|
|
- IEEE80211_RESMGR_VAP_AIR_TIME_LIMIT, /* When multi-channel enabled, restrict air-time allocated to a VAP */
|
|
|
- IEEE80211_TDLS_MACADDR1, /* Upper 4 bytes of device's MAC address */
|
|
|
- IEEE80211_TDLS_MACADDR2, /* Lower 2 bytes of device's MAC address */
|
|
|
- IEEE80211_TDLS_ACTION, /* TDLS action requested */
|
|
|
- IEEE80211_AUTO_ASSOC,
|
|
|
- IEEE80211_PROTECTION_MODE, /* per VAP protection mode */
|
|
|
- IEEE80211_AUTH_INACT_TIMEOUT, /* inactivity time while waiting for 802.11x auth to complete */
|
|
|
- IEEE80211_INIT_INACT_TIMEOUT, /* inactivity time while waiting for 802.11 auth/assoc to complete */
|
|
|
- IEEE80211_RUN_INACT_TIMEOUT, /* inactivity time when fully authed */
|
|
|
- IEEE80211_PROBE_INACT_TIMEOUT, /* inactivity counter value below which starts probing */
|
|
|
- IEEE80211_QBSS_LOAD,
|
|
|
- IEEE80211_WNM_CAP,
|
|
|
- IEEE80211_WNM_BSS_CAP,
|
|
|
- IEEE80211_WNM_TFS_CAP,
|
|
|
- IEEE80211_WNM_TIM_CAP,
|
|
|
- IEEE80211_WNM_SLEEP_CAP,
|
|
|
- IEEE80211_WNM_FMS_CAP,
|
|
|
- IEEE80211_AP_REJECT_DFS_CHAN, /* AP to reject resuming on DFS Channel */
|
|
|
- IEEE80211_ABOLT,
|
|
|
- IEEE80211_COMP,
|
|
|
- IEEE80211_FF,
|
|
|
- IEEE80211_TURBO,
|
|
|
- IEEE80211_BURST,
|
|
|
- IEEE80211_AR,
|
|
|
- IEEE80211_SLEEP,
|
|
|
- IEEE80211_EOSPDROP,
|
|
|
- IEEE80211_MARKDFS,
|
|
|
- IEEE80211_WDS_AUTODETECT,
|
|
|
- IEEE80211_WEP_TKIP_HT,
|
|
|
- IEEE80211_ATH_RADIO,
|
|
|
- IEEE80211_IGNORE_11DBEACON,
|
|
|
- /* Video debug feature */
|
|
|
- IEEE80211_VI_DBG_CFG, /* Video debug configuration - Bit0- enable dbg, Bit1 - enable stats log */
|
|
|
- IEEE80211_VI_DBG_NUM_STREAMS, /* Total number of receive streams */
|
|
|
- IEEE80211_VI_STREAM_NUM, /* the stream number whose marker parameters are being set */
|
|
|
- IEEE80211_VI_DBG_NUM_MARKERS, /* total number of markers used to filter pkts */
|
|
|
- IEEE80211_VI_MARKER_NUM, /* the marker number whose parameters (offset, size & match) are being set */
|
|
|
- IEEE80211_VI_MARKER_OFFSET_SIZE, /* byte offset from skb start (upper 16 bits) & size in bytes(lower 16 bits) */
|
|
|
- IEEE80211_VI_MARKER_MATCH, /* marker pattern match used in filtering */
|
|
|
- IEEE80211_VI_RXSEQ_OFFSET_SIZE, /* Rx Seq num offset skb start (upper 16 bits) & size in bytes(lower 16 bits) */
|
|
|
- IEEE80211_VI_RX_SEQ_RSHIFT, /* right-shift value in case field is not word aligned */
|
|
|
- IEEE80211_VI_RX_SEQ_MAX, /* maximum Rx Seq number (to check wrap around) */
|
|
|
- IEEE80211_VI_RX_SEQ_DROP, /* Indicator to the debug app that a particular seq num has been dropped */
|
|
|
- IEEE80211_VI_TIME_OFFSET_SIZE, /* Timestamp offset skb start (upper 16 bits) & size in bytes(lower 16 bits) */
|
|
|
- IEEE80211_VI_RESTART, /* If set to 1 resets all internal variables/counters & restarts debug tool */
|
|
|
- IEEE80211_VI_RXDROP_STATUS, /* Total RX drops in wireless */
|
|
|
- IEEE80211_TRIGGER_MLME_RESP, /* Option for App to trigger mlme response */
|
|
|
-#ifdef ATH_SUPPORT_TxBF
|
|
|
- IEEE80211_TXBF_AUTO_CVUPDATE, /* auto CV update enable */
|
|
|
- IEEE80211_TXBF_CVUPDATE_PER, /* per threshold to initial CV update */
|
|
|
-#endif
|
|
|
- IEEE80211_MAX_CLIENT_NUMBERS,
|
|
|
- IEEE80211_SMARTNET,
|
|
|
- IEEE80211_FEATURE_MFP_TEST, /* MFP test */
|
|
|
- IEEE80211_WEATHER_RADAR, /* weather radar channel skip */
|
|
|
- IEEE80211_WEP_KEYCACHE, /* WEP KEYCACHE is enable */
|
|
|
- IEEE80211_SEND_DEAUTH, /* send deauth instead of disassoc while doing interface down */
|
|
|
- IEEE80211_SET_TXPWRADJUST,
|
|
|
- IEEE80211_RRM_CAP,
|
|
|
- IEEE80211_RRM_DEBUG,
|
|
|
- IEEE80211_RRM_STATS,
|
|
|
- IEEE80211_RRM_SLWINDOW,
|
|
|
- IEEE80211_FEATURE_OFF_CHANNEL_SUPPORT,
|
|
|
- IEEE80211_FIXED_VHT_MCS, /* VHT mcs index */
|
|
|
- IEEE80211_FIXED_NSS, /* Spatial Streams count */
|
|
|
- IEEE80211_SUPPORT_LDPC, /* LDPC Support */
|
|
|
- IEEE80211_SUPPORT_TX_STBC, /* TX STBC enable/disable */
|
|
|
- IEEE80211_SUPPORT_RX_STBC, /* RX STBC enable/disable */
|
|
|
- IEEE80211_DEFAULT_KEYID, /* XMIT default key */
|
|
|
- IEEE80211_OPMODE_NOTIFY_ENABLE, /* Op mode notification enable/disable */
|
|
|
- IEEE80211_ENABLE_RTSCTS, /* Enable/Disable RTS-CTS */
|
|
|
- IEEE80211_VHT_MCSMAP, /* VHT MCS Map */
|
|
|
- IEEE80211_GET_ACS_STATE, /* get acs state */
|
|
|
- IEEE80211_GET_CAC_STATE, /* get cac state */
|
|
|
-} ieee80211_param;
|
|
|
-
|
|
|
-#define IEEE80211_PROTECTION_NONE 0
|
|
|
-#define IEEE80211_PROTECTION_CTSTOSELF 1
|
|
|
-#define IEEE80211_PROTECTION_RTS_CTS 2
|
|
|
-
|
|
|
-typedef enum _ieee80211_privacy_filter {
|
|
|
- IEEE80211_PRIVACY_FILTER_ALLWAYS,
|
|
|
- IEEE80211_PRIVACY_FILTER_KEY_UNAVAILABLE,
|
|
|
-} ieee80211_privacy_filter;
|
|
|
-
|
|
|
-typedef enum _ieee80211_privacy_filter_packet_type {
|
|
|
- IEEE80211_PRIVACY_FILTER_PACKET_UNICAST,
|
|
|
- IEEE80211_PRIVACY_FILTER_PACKET_MULTICAST,
|
|
|
- IEEE80211_PRIVACY_FILTER_PACKET_BOTH
|
|
|
-} ieee80211_privacy_filter_packet_type;
|
|
|
-
|
|
|
-typedef struct _ieee80211_privacy_excemption_filter {
|
|
|
- uint16_t ether_type; /* type of ethernet to apply this filter, in host byte order */
|
|
|
- ieee80211_privacy_filter filter_type;
|
|
|
- ieee80211_privacy_filter_packet_type packet_type;
|
|
|
-} ieee80211_privacy_exemption;
|
|
|
-
|
|
|
-/*
|
|
|
- * Authentication mode.
|
|
|
- * NB: the usage of auth modes NONE, AUTO are deprecated,
|
|
|
- * they are implemented through combinations of other auth modes
|
|
|
- * and cipher types. The deprecated values are preserved here to
|
|
|
- * maintain binary compatibility with applications like
|
|
|
- * wpa_supplicant and hostapd.
|
|
|
- */
|
|
|
-typedef enum _ieee80211_auth_mode {
|
|
|
- IEEE80211_AUTH_NONE = 0, /* deprecated */
|
|
|
- IEEE80211_AUTH_OPEN = 1, /* open */
|
|
|
- IEEE80211_AUTH_SHARED = 2, /* shared-key */
|
|
|
- IEEE80211_AUTH_8021X = 3, /* 802.1x */
|
|
|
- IEEE80211_AUTH_AUTO = 4, /* deprecated */
|
|
|
- IEEE80211_AUTH_WPA = 5, /* WPA */
|
|
|
- IEEE80211_AUTH_RSNA = 6, /* WPA2/RSNA */
|
|
|
- IEEE80211_AUTH_CCKM = 7, /* CCK */
|
|
|
- IEEE80211_AUTH_WAPI = 8, /* WAPI */
|
|
|
-} ieee80211_auth_mode;
|
|
|
-
|
|
|
-#define IEEE80211_AUTH_MAX (IEEE80211_AUTH_WAPI+1)
|
|
|
-
|
|
|
-/*
|
|
|
- * Cipher types.
|
|
|
- * NB: The values are preserved here to maintain binary compatibility
|
|
|
- * with applications like wpa_supplicant and hostapd.
|
|
|
- */
|
|
|
-typedef enum _ieee80211_cipher_type {
|
|
|
- IEEE80211_CIPHER_WEP = 0,
|
|
|
- IEEE80211_CIPHER_TKIP = 1,
|
|
|
- IEEE80211_CIPHER_AES_OCB = 2,
|
|
|
- IEEE80211_CIPHER_AES_CCM = 3,
|
|
|
- IEEE80211_CIPHER_WAPI = 4,
|
|
|
- IEEE80211_CIPHER_CKIP = 5,
|
|
|
- IEEE80211_CIPHER_AES_CMAC = 6,
|
|
|
- IEEE80211_CIPHER_NONE = 7,
|
|
|
-} ieee80211_cipher_type;
|
|
|
-
|
|
|
-#define IEEE80211_CIPHER_MAX (IEEE80211_CIPHER_NONE+1)
|
|
|
-
|
|
|
-/* key direction */
|
|
|
-typedef enum _ieee80211_key_direction {
|
|
|
- IEEE80211_KEY_DIR_TX,
|
|
|
- IEEE80211_KEY_DIR_RX,
|
|
|
- IEEE80211_KEY_DIR_BOTH
|
|
|
-} ieee80211_key_direction;
|
|
|
-
|
|
|
-#define IEEE80211_KEYIX_NONE ((uint16_t) -1)
|
|
|
-
|
|
|
-typedef struct _ieee80211_keyval {
|
|
|
- ieee80211_cipher_type keytype;
|
|
|
- ieee80211_key_direction keydir;
|
|
|
- u_int persistent : 1, /* persistent key */
|
|
|
- mfp : 1; /* management frame protection */
|
|
|
- uint16_t keylen; /* length of the key data fields */
|
|
|
- uint8_t *macaddr; /* mac address of length IEEE80211_ADDR_LEN . all bytes are 0xff for multicast key */
|
|
|
- uint64_t keyrsc;
|
|
|
- uint64_t keytsc;
|
|
|
- uint16_t txmic_offset; /* TKIP/SMS4 only: offset to tx mic key */
|
|
|
- uint16_t rxmic_offset; /* TKIP/SMS4 only: offset to rx mic key */
|
|
|
- uint8_t *keydata;
|
|
|
-#ifdef ATH_SUPPORT_WAPI
|
|
|
- uint8_t key_used; /*index for WAPI rekey labeling */
|
|
|
-#endif
|
|
|
-} ieee80211_keyval;
|
|
|
-
|
|
|
-#define IEEE80211_AES_CMAC_LEN 128
|
|
|
-typedef enum _ieee80211_rsn_param {
|
|
|
- IEEE80211_UCAST_CIPHER_LEN,
|
|
|
- IEEE80211_MCAST_CIPHER_LEN,
|
|
|
- IEEE80211_MCASTMGMT_CIPHER_LEN,
|
|
|
- IEEE80211_KEYMGT_ALGS,
|
|
|
- IEEE80211_RSN_CAPS
|
|
|
-} ieee80211_rsn_param;
|
|
|
-
|
|
|
#define IEEE80211_PMKID_LEN 16
|
|
|
|
|
|
-typedef struct _ieee80211_pmkid_entry {
|
|
|
- uint8_t bssid[IEEE80211_ADDR_LEN];
|
|
|
- uint8_t pmkid[IEEE80211_PMKID_LEN];
|
|
|
-} ieee80211_pmkid_entry;
|
|
|
-
|
|
|
-typedef enum _wlan_wme_param {
|
|
|
- WLAN_WME_CWMIN,
|
|
|
- WLAN_WME_CWMAX,
|
|
|
- WLAN_WME_AIFS,
|
|
|
- WLAN_WME_TXOPLIMIT,
|
|
|
- WLAN_WME_ACM, /*bss only */
|
|
|
- WLAN_WME_ACKPOLICY /*bss only */
|
|
|
-} wlan_wme_param;
|
|
|
-
|
|
|
-typedef enum _ieee80211_frame_type {
|
|
|
- IEEE80211_FRAME_TYPE_PROBEREQ,
|
|
|
- IEEE80211_FRAME_TYPE_BEACON,
|
|
|
- IEEE80211_FRAME_TYPE_PROBERESP,
|
|
|
- IEEE80211_FRAME_TYPE_ASSOCREQ,
|
|
|
- IEEE80211_FRAME_TYPE_ASSOCRESP,
|
|
|
- IEEE80211_FRAME_TYPE_AUTH
|
|
|
-} ieee80211_frame_type;
|
|
|
-
|
|
|
-#define IEEE80211_FRAME_TYPE_MAX (IEEE80211_FRAME_TYPE_AUTH+1)
|
|
|
-
|
|
|
-typedef enum _ieee80211_ampdu_mode {
|
|
|
- IEEE80211_AMPDU_MODE_OFF, /* disable AMPDU */
|
|
|
- IEEE80211_AMPDU_MODE_ON, /* enable AMPDU */
|
|
|
- IEEE80211_AMPDU_MODE_WDSVAR /* enable AMPDU with 4addr WAR */
|
|
|
-} ieee80211_ampdu_mode;
|
|
|
-
|
|
|
-typedef enum _ieee80211_reset_type {
|
|
|
- IEEE80211_RESET_TYPE_DEVICE = 0, /* device reset on error: tx timeout and etc. */
|
|
|
- IEEE80211_RESET_TYPE_DOT11_INTF, /* dot11 reset: only reset one network interface (vap) */
|
|
|
- IEEE80211_RESET_TYPE_INTERNAL, /* internal reset */
|
|
|
-} ieee80211_reset_type;
|
|
|
-
|
|
|
-typedef struct _ieee80211_reset_request {
|
|
|
- ieee80211_reset_type type;
|
|
|
-
|
|
|
- u_int reset_hw : 1, /* reset the actual H/W */
|
|
|
- /*
|
|
|
- * The following fields are only valid for DOT11 reset, i.e.,
|
|
|
- * IEEE80211_RESET_TYPE_DOT11_INTF
|
|
|
- */
|
|
|
- reset_phy : 1, /* reset PHY */
|
|
|
- reset_mac : 1, /* reset MAC */
|
|
|
- set_default_mib : 1, /* set default MIB variables */
|
|
|
- no_flush : 1;
|
|
|
- uint8_t macaddr[IEEE80211_ADDR_LEN];
|
|
|
- enum ieee80211_phymode phy_mode;
|
|
|
-} ieee80211_reset_request;
|
|
|
-
|
|
|
-#define IEEE80211_MSG_MAX 63
|
|
|
-#define IEEE80211_MSG_SMARTANT 7 /* Bit 7 (0x80)for Smart Antenna debug */
|
|
|
-enum {
|
|
|
- /* IEEE80211_PARAM_DBG_LVL */
|
|
|
- IEEE80211_MSG_TDLS = 0, /* TDLS */
|
|
|
- IEEE80211_MSG_ACS, /* auto channel selection */
|
|
|
- IEEE80211_MSG_SCAN_SM, /* scan state machine */
|
|
|
- IEEE80211_MSG_SCANENTRY, /* scan entry */
|
|
|
- IEEE80211_MSG_WDS, /* WDS handling */
|
|
|
- IEEE80211_MSG_ACTION, /* action management frames */
|
|
|
- IEEE80211_MSG_ROAM, /* sta-mode roaming */
|
|
|
- IEEE80211_MSG_INACT, /* inactivity handling */
|
|
|
- IEEE80211_MSG_DOTH = 8, /* 11.h */
|
|
|
- IEEE80211_MSG_IQUE, /* IQUE features */
|
|
|
- IEEE80211_MSG_WME, /* WME protocol */
|
|
|
- IEEE80211_MSG_ACL, /* ACL handling */
|
|
|
- IEEE80211_MSG_WPA, /* WPA/RSN protocol */
|
|
|
- IEEE80211_MSG_RADKEYS, /* dump 802.1x keys */
|
|
|
- IEEE80211_MSG_RADDUMP, /* dump 802.1x radius packets */
|
|
|
- IEEE80211_MSG_RADIUS, /* 802.1x radius client */
|
|
|
- IEEE80211_MSG_DOT1XSM = 16, /* 802.1x state machine */
|
|
|
- IEEE80211_MSG_DOT1X, /* 802.1x authenticator */
|
|
|
- IEEE80211_MSG_POWER, /* power save handling */
|
|
|
- IEEE80211_MSG_STATE, /* state machine */
|
|
|
- IEEE80211_MSG_OUTPUT, /* output handling */
|
|
|
- IEEE80211_MSG_SCAN, /* scanning */
|
|
|
- IEEE80211_MSG_AUTH, /* authentication handling */
|
|
|
- IEEE80211_MSG_ASSOC, /* association handling */
|
|
|
- IEEE80211_MSG_NODE = 24, /* node handling */
|
|
|
- IEEE80211_MSG_ELEMID, /* element id parsing */
|
|
|
- IEEE80211_MSG_XRATE, /* rate set handling */
|
|
|
- IEEE80211_MSG_INPUT, /* input handling */
|
|
|
- IEEE80211_MSG_CRYPTO, /* crypto work */
|
|
|
- IEEE80211_MSG_DUMPPKTS, /* IFF_LINK2 equivalant */
|
|
|
- IEEE80211_MSG_DEBUG, /* IFF_DEBUG equivalent */
|
|
|
- IEEE80211_MSG_MLME, /* MLME */
|
|
|
- /* IEEE80211_PARAM_DBG_LVL_HIGH */
|
|
|
- IEEE80211_MSG_RRM = 32, /* Radio resource measurement */
|
|
|
- IEEE80211_MSG_WNM, /* Wireless Network Management */
|
|
|
- IEEE80211_MSG_P2P_PROT, /* P2P Protocol driver */
|
|
|
- IEEE80211_MSG_PROXYARP, /* 11v Proxy ARP */
|
|
|
- IEEE80211_MSG_L2TIF, /* Hotspot 2.0 L2 TIF */
|
|
|
- IEEE80211_MSG_WIFIPOS, /* WifiPositioning Feature */
|
|
|
- IEEE80211_MSG_WRAP, /* WRAP or Wireless ProxySTA */
|
|
|
- IEEE80211_MSG_DFS, /* DFS debug mesg */
|
|
|
-
|
|
|
- IEEE80211_MSG_NUM_CATEGORIES, /* total ieee80211 messages */
|
|
|
- IEEE80211_MSG_UNMASKABLE = IEEE80211_MSG_MAX, /* anything */
|
|
|
- IEEE80211_MSG_ANY = IEEE80211_MSG_MAX, /* anything */
|
|
|
-};
|
|
|
-
|
|
|
-/* verbosity levels */
|
|
|
-#define IEEE80211_VERBOSE_OFF 100
|
|
|
-#define IEEE80211_VERBOSE_FORCE 1
|
|
|
-#define IEEE80211_VERBOSE_SERIOUS 2
|
|
|
-#define IEEE80211_VERBOSE_NORMAL 3
|
|
|
-#define IEEE80211_VERBOSE_LOUD 4
|
|
|
-#define IEEE80211_VERBOSE_DETAILED 5
|
|
|
-#define IEEE80211_VERBOSE_COMPLEX 6
|
|
|
-#define IEEE80211_VERBOSE_FUNCTION 7
|
|
|
-#define IEEE80211_VERBOSE_TRACE 8
|
|
|
-
|
|
|
-#define IEEE80211_DEBUG_DEFAULT IEEE80211_MSG_DEBUG
|
|
|
-
|
|
|
-/*
|
|
|
- * the lower 4 bits of the msg flags are used for extending the
|
|
|
- * debug flags.
|
|
|
- */
|
|
|
-
|
|
|
-/*
|
|
|
- * flag definitions for wlan_mlme_stop_bss(vap) API.
|
|
|
- */
|
|
|
-#define WLAN_MLME_STOP_BSS_F_SEND_DEAUTH 0x01
|
|
|
-#define WLAN_MLME_STOP_BSS_F_CLEAR_ASSOC_STATE 0x02
|
|
|
-#define WLAN_MLME_STOP_BSS_F_FORCE_STOP_RESET 0x04
|
|
|
-#define WLAN_MLME_STOP_BSS_F_WAIT_RX_DONE 0x08
|
|
|
-#define WLAN_MLME_STOP_BSS_F_NO_RESET 0x10
|
|
|
-#define WLAN_MLME_STOP_BSS_F_STANDBY 0x20
|
|
|
-
|
|
|
-/*
|
|
|
- * WAPI commands to authenticator
|
|
|
- */
|
|
|
-#define WAPI_WAI_REQUEST (uint16_t)0x00F1
|
|
|
-#define WAPI_UNICAST_REKEY (uint16_t)0x00F2
|
|
|
-#define WAPI_STA_AGING (uint16_t)0x00F3
|
|
|
-#define WAPI_MULTI_REKEY (uint16_t)0x00F4
|
|
|
-#define WAPI_STA_STATS (uint16_t)0x00F5
|
|
|
-
|
|
|
-/*
|
|
|
- * IEEE80211 PHY Statistics.
|
|
|
- */
|
|
|
-struct ieee80211_phy_stats {
|
|
|
- uint64_t ips_tx_packets; /* frames successfully transmitted */
|
|
|
- uint64_t ips_tx_multicast; /* multicast/broadcast frames successfully transmitted */
|
|
|
- uint64_t ips_tx_fragments; /* fragments successfully transmitted */
|
|
|
- uint64_t ips_tx_xretries; /* frames that are xretried. NB: not number of retries */
|
|
|
- uint64_t ips_tx_retries; /* frames transmitted after retries. NB: not number of retries */
|
|
|
- uint64_t ips_tx_multiretries; /* frames transmitted after more than one retry. */
|
|
|
- uint64_t ips_tx_timeout; /* frames that expire the dot11MaxTransmitMSDULifetime */
|
|
|
- uint64_t ips_rx_packets; /* frames successfully received */
|
|
|
- uint64_t ips_rx_multicast; /* multicast/broadcast frames successfully received */
|
|
|
- uint64_t ips_rx_fragments; /* fragments successfully received */
|
|
|
- uint64_t ips_rx_timeout; /* frmaes that expired the dot11MaxReceiveLifetime */
|
|
|
- uint64_t ips_rx_dup; /* duplicated fragments */
|
|
|
- uint64_t ips_rx_mdup; /* multiple duplicated fragments */
|
|
|
- uint64_t ips_rx_promiscuous; /* frames that are received only because promiscuous filter is on */
|
|
|
- uint64_t ips_rx_promiscuous_fragments; /* fragments that are received only because promiscuous filter is on */
|
|
|
- uint64_t ips_tx_rts; /* RTS success count */
|
|
|
- uint64_t ips_tx_shortretry; /* tx on-chip retries (short). RTSFailCnt */
|
|
|
- uint64_t ips_tx_longretry; /* tx on-chip retries (long). DataFailCnt */
|
|
|
- uint64_t ips_rx_crcerr; /* rx failed 'cuz of bad CRC */
|
|
|
- uint64_t ips_rx_fifoerr; /* rx failed 'cuz of FIFO overrun */
|
|
|
- uint64_t ips_rx_decrypterr; /* rx decryption error */
|
|
|
-};
|
|
|
-
|
|
|
-struct ieee80211_chan_stats {
|
|
|
- uint32_t chan_clr_cnt;
|
|
|
- uint32_t cycle_cnt;
|
|
|
- uint32_t phy_err_cnt;
|
|
|
-};
|
|
|
-
|
|
|
-struct ieee80211_mac_stats {
|
|
|
- uint64_t ims_tx_packets; /* frames successfully transmitted */
|
|
|
- uint64_t ims_rx_packets; /* frames successfully received */
|
|
|
- uint64_t ims_tx_bytes; /* bytes successfully transmitted */
|
|
|
- uint64_t ims_rx_bytes; /* bytes successfully received */
|
|
|
-
|
|
|
- /* TODO: For the byte counts below, we need to handle some scenarios
|
|
|
- such as encryption related decaps, etc */
|
|
|
- uint64_t ims_tx_data_packets; /* data frames successfully transmitted */
|
|
|
- uint64_t ims_rx_data_packets; /* data frames successfully received */
|
|
|
- uint64_t ims_tx_data_bytes; /* data bytes successfully transmitted,
|
|
|
- inclusive of FCS. */
|
|
|
- uint64_t ims_rx_data_bytes; /* data bytes successfully received,
|
|
|
- inclusive of FCS. */
|
|
|
-
|
|
|
- uint64_t ims_tx_datapyld_bytes; /* data payload bytes successfully
|
|
|
- transmitted */
|
|
|
- uint64_t ims_rx_datapyld_bytes; /* data payload successfully
|
|
|
- received */
|
|
|
-
|
|
|
- /* Decryption errors */
|
|
|
- uint64_t ims_rx_unencrypted; /* rx w/o wep and privacy on */
|
|
|
- uint64_t ims_rx_badkeyid; /* rx w/ incorrect keyid */
|
|
|
- uint64_t ims_rx_decryptok; /* rx decrypt okay */
|
|
|
- uint64_t ims_rx_decryptcrc; /* rx decrypt failed on crc */
|
|
|
- uint64_t ims_rx_wepfail; /* rx wep processing failed */
|
|
|
- uint64_t ims_rx_tkipreplay; /* rx seq# violation (TKIP) */
|
|
|
- uint64_t ims_rx_tkipformat; /* rx format bad (TKIP) */
|
|
|
- uint64_t ims_rx_tkipmic; /* rx MIC check failed (TKIP) */
|
|
|
- uint64_t ims_rx_tkipicv; /* rx ICV check failed (TKIP) */
|
|
|
- uint64_t ims_rx_ccmpreplay; /* rx seq# violation (CCMP) */
|
|
|
- uint64_t ims_rx_ccmpformat; /* rx format bad (CCMP) */
|
|
|
- uint64_t ims_rx_ccmpmic; /* rx MIC check failed (CCMP) */
|
|
|
-/*this file can be included by applications as 80211stats that has no such MACRO definition*/
|
|
|
-/* #if ATH_SUPPORT_WAPI */
|
|
|
- uint64_t ims_rx_wpireplay; /* rx seq# violation (WPI) */
|
|
|
- uint64_t ims_rx_wpimic; /* rx MIC check failed (WPI) */
|
|
|
-/* #endif */
|
|
|
- /* Other Tx/Rx errors */
|
|
|
- uint64_t ims_tx_discard; /* tx dropped by NIC */
|
|
|
- uint64_t ims_rx_discard; /* rx dropped by NIC */
|
|
|
-
|
|
|
- uint64_t ims_rx_countermeasure; /* rx TKIP countermeasure activation count */
|
|
|
-};
|
|
|
-
|
|
|
-/*
|
|
|
- * Summary statistics.
|
|
|
- */
|
|
|
-struct ieee80211_stats {
|
|
|
- uint32_t is_rx_badversion; /* rx frame with bad version */
|
|
|
- uint32_t is_rx_tooshort; /* rx frame too short */
|
|
|
- uint32_t is_rx_wrongbss; /* rx from wrong bssid */
|
|
|
- uint32_t is_rx_wrongdir; /* rx w/ wrong direction */
|
|
|
- uint32_t is_rx_mcastecho; /* rx discard 'cuz mcast echo */
|
|
|
- uint32_t is_rx_notassoc; /* rx discard 'cuz sta !assoc */
|
|
|
- uint32_t is_rx_noprivacy; /* rx w/ wep but privacy off */
|
|
|
- uint32_t is_rx_decap; /* rx decapsulation failed */
|
|
|
- uint32_t is_rx_mgtdiscard; /* rx discard mgt frames */
|
|
|
- uint32_t is_rx_ctl; /* rx discard ctrl frames */
|
|
|
- uint32_t is_rx_beacon; /* rx beacon frames */
|
|
|
- uint32_t is_rx_rstoobig; /* rx rate set truncated */
|
|
|
- uint32_t is_rx_elem_missing; /* rx required element missing */
|
|
|
- uint32_t is_rx_elem_toobig; /* rx element too big */
|
|
|
- uint32_t is_rx_elem_toosmall; /* rx element too small */
|
|
|
- uint32_t is_rx_elem_unknown; /* rx element unknown */
|
|
|
- uint32_t is_rx_badchan; /* rx frame w/ invalid chan */
|
|
|
- uint32_t is_rx_chanmismatch; /* rx frame chan mismatch */
|
|
|
- uint32_t is_rx_nodealloc; /* rx frame dropped */
|
|
|
- uint32_t is_rx_ssidmismatch; /* rx frame ssid mismatch */
|
|
|
- uint32_t is_rx_auth_unsupported; /* rx w/ unsupported auth alg */
|
|
|
- uint32_t is_rx_auth_fail; /* rx sta auth failure */
|
|
|
- uint32_t is_rx_auth_countermeasures; /* rx auth discard 'cuz CM */
|
|
|
- uint32_t is_rx_assoc_bss; /* rx assoc from wrong bssid */
|
|
|
- uint32_t is_rx_assoc_notauth; /* rx assoc w/o auth */
|
|
|
- uint32_t is_rx_assoc_capmismatch; /* rx assoc w/ cap mismatch */
|
|
|
- uint32_t is_rx_assoc_norate; /* rx assoc w/ no rate match */
|
|
|
- uint32_t is_rx_assoc_badwpaie; /* rx assoc w/ bad WPA IE */
|
|
|
- uint32_t is_rx_deauth; /* rx deauthentication */
|
|
|
- uint32_t is_rx_disassoc; /* rx disassociation */
|
|
|
- uint32_t is_rx_action; /* rx action mgt */
|
|
|
- uint32_t is_rx_badsubtype; /* rx frame w/ unknown subtype */
|
|
|
- uint32_t is_rx_nobuf; /* rx failed for lack of buf */
|
|
|
- uint32_t is_rx_ahdemo_mgt; /* rx discard ahdemo mgt frame */
|
|
|
- uint32_t is_rx_bad_auth; /* rx bad auth request */
|
|
|
- uint32_t is_rx_unauth; /* rx on unauthorized port */
|
|
|
- uint32_t is_rx_badcipher; /* rx failed 'cuz key type */
|
|
|
- uint32_t is_tx_nodefkey; /* tx failed 'cuz no defkey */
|
|
|
- uint32_t is_tx_noheadroom; /* tx failed 'cuz no space */
|
|
|
- uint32_t is_rx_nocipherctx; /* rx failed 'cuz key !setup */
|
|
|
- uint32_t is_rx_acl; /* rx discard 'cuz acl policy */
|
|
|
- uint32_t is_rx_ffcnt; /* rx fast frames */
|
|
|
- uint32_t is_rx_badathtnl; /* driver key alloc failed */
|
|
|
- uint32_t is_rx_nowds; /* 4-addr packets received with no wds enabled */
|
|
|
- uint32_t is_tx_nobuf; /* tx failed for lack of buf */
|
|
|
- uint32_t is_tx_nonode; /* tx failed for no node */
|
|
|
- uint32_t is_tx_unknownmgt; /* tx of unknown mgt frame */
|
|
|
- uint32_t is_tx_badcipher; /* tx failed 'cuz key type */
|
|
|
- uint32_t is_tx_ffokcnt; /* tx fast frames sent success */
|
|
|
- uint32_t is_tx_fferrcnt; /* tx fast frames sent success */
|
|
|
- uint32_t is_scan_active; /* active scans started */
|
|
|
- uint32_t is_scan_passive; /* passive scans started */
|
|
|
- uint32_t is_node_timeout; /* nodes timed out inactivity */
|
|
|
- uint32_t is_crypto_nomem; /* no memory for crypto ctx */
|
|
|
- uint32_t is_crypto_tkip; /* tkip crypto done in s/w */
|
|
|
- uint32_t is_crypto_tkipenmic; /* tkip en-MIC done in s/w */
|
|
|
- uint32_t is_crypto_tkipdemic; /* tkip de-MIC done in s/w */
|
|
|
- uint32_t is_crypto_tkipcm; /* tkip counter measures */
|
|
|
- uint32_t is_crypto_ccmp; /* ccmp crypto done in s/w */
|
|
|
- uint32_t is_crypto_wep; /* wep crypto done in s/w */
|
|
|
- uint32_t is_crypto_setkey_cipher; /* cipher rejected key */
|
|
|
- uint32_t is_crypto_setkey_nokey; /* no key index for setkey */
|
|
|
- uint32_t is_crypto_delkey; /* driver key delete failed */
|
|
|
- uint32_t is_crypto_badcipher; /* unknown cipher */
|
|
|
- uint32_t is_crypto_nocipher; /* cipher not available */
|
|
|
- uint32_t is_crypto_attachfail; /* cipher attach failed */
|
|
|
- uint32_t is_crypto_swfallback; /* cipher fallback to s/w */
|
|
|
- uint32_t is_crypto_keyfail; /* driver key alloc failed */
|
|
|
- uint32_t is_crypto_enmicfail; /* en-MIC failed */
|
|
|
- uint32_t is_ibss_capmismatch; /* merge failed-cap mismatch */
|
|
|
- uint32_t is_ibss_norate; /* merge failed-rate mismatch */
|
|
|
- uint32_t is_ps_unassoc; /* ps-poll for unassoc. sta */
|
|
|
- uint32_t is_ps_badaid; /* ps-poll w/ incorrect aid */
|
|
|
- uint32_t is_ps_qempty; /* ps-poll w/ nothing to send */
|
|
|
-};
|
|
|
-
|
|
|
-typedef enum _ieee80211_send_frame_type {
|
|
|
- IEEE80211_SEND_NULL,
|
|
|
- IEEE80211_SEND_QOSNULL,
|
|
|
-} ieee80211_send_frame_type;
|
|
|
-
|
|
|
-typedef struct _ieee80211_tspec_info {
|
|
|
- uint8_t traffic_type;
|
|
|
- uint8_t direction;
|
|
|
- uint8_t dot1Dtag;
|
|
|
- uint8_t tid;
|
|
|
- uint8_t acc_policy_edca;
|
|
|
- uint8_t acc_policy_hcca;
|
|
|
- uint8_t aggregation;
|
|
|
- uint8_t psb;
|
|
|
- uint8_t ack_policy;
|
|
|
- uint16_t norminal_msdu_size;
|
|
|
- uint16_t max_msdu_size;
|
|
|
- uint32_t min_srv_interval;
|
|
|
- uint32_t max_srv_interval;
|
|
|
- uint32_t inactivity_interval;
|
|
|
- uint32_t suspension_interval;
|
|
|
- uint32_t srv_start_time;
|
|
|
- uint32_t min_data_rate;
|
|
|
- uint32_t mean_data_rate;
|
|
|
- uint32_t peak_data_rate;
|
|
|
- uint32_t max_burst_size;
|
|
|
- uint32_t delay_bound;
|
|
|
- uint32_t min_phy_rate;
|
|
|
- uint16_t surplus_bw;
|
|
|
- uint16_t medium_time;
|
|
|
-} ieee80211_tspec_info;
|
|
|
-
|
|
|
-#ifndef EXTERNAL_USE_ONLY
|
|
|
-/*
|
|
|
- * Manual ADDBA support
|
|
|
- */
|
|
|
-enum {
|
|
|
- ADDBA_SEND = 0,
|
|
|
- ADDBA_STATUS = 1,
|
|
|
- DELBA_SEND = 2,
|
|
|
- ADDBA_RESP = 3,
|
|
|
- ADDBA_CLR_RESP = 4,
|
|
|
- SINGLE_AMSDU = 5,
|
|
|
-};
|
|
|
-
|
|
|
-enum {
|
|
|
- ADDBA_MODE_AUTO = 0,
|
|
|
- ADDBA_MODE_MANUAL = 1,
|
|
|
-};
|
|
|
-
|
|
|
-struct ieee80211_addba_delba_request {
|
|
|
- wlan_dev_t ic;
|
|
|
- uint8_t action;
|
|
|
- uint8_t tid;
|
|
|
- uint16_t status;
|
|
|
- uint16_t aid;
|
|
|
- uint32_t arg1;
|
|
|
- uint32_t arg2;
|
|
|
-};
|
|
|
-#endif /* EXTERNAL_USE_ONLY */
|
|
|
-
|
|
|
-#ifdef ATH_BT_COEX
|
|
|
-typedef enum _ieee80211_bt_coex_info_type {
|
|
|
- IEEE80211_BT_COEX_INFO_SCHEME = 0,
|
|
|
- IEEE80211_BT_COEX_INFO_BTBUSY = 1,
|
|
|
-} ieee80211_bt_coex_info_type;
|
|
|
-#endif
|
|
|
-
|
|
|
-struct tkip_countermeasure {
|
|
|
- uint16_t mic_count_in_60s;
|
|
|
- uint32_t timestamp;
|
|
|
-};
|
|
|
-
|
|
|
-enum _ieee80211_qos_frame_direction {
|
|
|
- IEEE80211_RX_QOS_FRAME = 0,
|
|
|
- IEEE80211_TX_QOS_FRAME = 1,
|
|
|
- IEEE80211_TX_COMPLETE_QOS_FRAME = 2
|
|
|
-};
|
|
|
-
|
|
|
-typedef struct ieee80211_vap_opmode_count {
|
|
|
- int total_vaps;
|
|
|
- int ibss_count;
|
|
|
- int sta_count;
|
|
|
- int wds_count;
|
|
|
- int ahdemo_count;
|
|
|
- int ap_count;
|
|
|
- int monitor_count;
|
|
|
- int btamp_count;
|
|
|
- int unknown_count;
|
|
|
-} ieee80211_vap_opmode_count;
|
|
|
-
|
|
|
-struct ieee80211_app_ie_t {
|
|
|
- uint32_t length;
|
|
|
- uint8_t *ie;
|
|
|
-};
|
|
|
-
|
|
|
-/*
|
|
|
- * MAC ACL operations.
|
|
|
- */
|
|
|
-enum {
|
|
|
- IEEE80211_MACCMD_POLICY_OPEN = 0, /* set policy: no ACL's */
|
|
|
- IEEE80211_MACCMD_POLICY_ALLOW = 1, /* set policy: allow traffic */
|
|
|
- IEEE80211_MACCMD_POLICY_DENY = 2, /* set policy: deny traffic */
|
|
|
- IEEE80211_MACCMD_FLUSH = 3, /* flush ACL database */
|
|
|
- IEEE80211_MACCMD_DETACH = 4, /* detach ACL policy */
|
|
|
- IEEE80211_MACCMD_POLICY_RADIUS = 5, /* set policy: RADIUS managed ACLs */
|
|
|
-};
|
|
|
-
|
|
|
#endif
|