ファイル
android_kernel_samsung_sm86…/umac/cmn_services/inc/wlan_cmn.h
Vivek 5747b78091 qcacmn: Move mgmt descriptors per pdev for probe response throttling
Mgmt tx rx descriptors are now used instead of WMI descriptors
for management Tx/Rx.
Since WMI descriptors were per radio to support probe response throttling
the mgmt descriptors should also be moved from per psoc to per pdev.

The reason for this is probe response throttling should happen per radio
and not per psoc since if the mgmt frames peding counter is
maintained per psoc, it could affect other radios of the same psoc also.

The maximum number of mgmt descriptors per psoc was 50.
This is also changed to 512 mgmt descriptors per pdev which is the
same as WMI descriptors per radio as used earlier to support
probe response throttling.

Change-Id: Ibb46082e0acf340800418a7e9689a29cd688bdab
CRs-Fixed: 2146177
2018-01-08 09:39:20 -08:00

394 行
12 KiB
C

/*
* Copyright (c) 2016-2018 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
* above copyright notice and this permission notice appear in all
* copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
* AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
/**
* DOC: This file provides the common definitions for object manager
*/
#ifndef _WLAN_CMN_H_
#define _WLAN_CMN_H_
#include <qdf_types.h>
/* Max no of UMAC components */
#define WLAN_UMAC_MAX_COMPONENTS 25
/* Max no. of radios, a pSoc/Device can support */
#define WLAN_UMAC_MAX_PDEVS 3
/* Max no. of VDEV per PSOC */
#define WLAN_UMAC_PSOC_MAX_VDEVS 51
/* Max no. of VDEVs, a PDEV can support */
#define WLAN_UMAC_PDEV_MAX_VDEVS 17
/* Max no. of Peers, a device can support */
#define WLAN_UMAC_PSOC_MAX_PEERS 1024
/* Max length of a SSID */
#define WLAN_SSID_MAX_LEN 32
/* Max sequence number */
#define WLAN_MAX_SEQ_NUM 4096
/* Max no. of peers for STA vap */
#define WLAN_UMAC_MAX_STA_PEERS 2
/* Max vdev_id */
#define WLAN_UMAC_VDEV_ID_MAX 0xFF
/* Invalid pdev_id */
#define WLAN_INVALID_PDEV_ID 0xFFFFFFFF
/* Invalid free descriptor count */
#define WLAN_INVALID_MGMT_DESC_COUNT 0xFFFFFFFF
/* 802.11 cap info */
/* 802.11 cap info */
#define WLAN_CAPINFO_ESS 0x0001
#define WLAN_CAPINFO_IBSS 0x0002
#define WLAN_CAPINFO_CF_POLLABLE 0x0004
#define WLAN_CAPINFO_CF_POLLREQ 0x0008
#define WLAN_CAPINFO_PRIVACY 0x0010
#define WLAN_CAPINFO_SHORT_PREAMBLE 0x0020
#define WLAN_CAPINFO_PBCC 0x0040
#define WLAN_CAPINFO_CHNL_AGILITY 0x0080
#define WLAN_CAPINFO_SPECTRUM_MGMT 0x0100
#define WLAN_CAPINFO_QOS 0x0200
#define WLAN_CAPINFO_SHORT_SLOTTIME 0x0400
#define WLAN_CAPINFO_APSD 0x0800
#define WLAN_CAPINFO_RADIOMEAS 0x1000
#define WLAN_CAPINFO_DSSSOFDM 0x2000
/* Allowed time to wait for Object creation */
#define WLAN_VDEV_CREATE_TIMEOUT_CNT 300
/* 25 msec */
#define WLAN_VDEV_CREATE_TIMEOUT 25
#define WLAN_PDEV_CREATE_TIMEOUT_CNT 300
/* 25 msec */
#define WLAN_PDEV_CREATE_TIMEOUT 25
#define WLAN_PSOC_CREATE_TIMEOUT_CNT 300
/* 25 msec */
#define WLAN_PSOC_CREATE_TIMEOUT 25
#define WLAN_24_GHZ_BASE_FREQ (2407)
#define WLAN_5_GHZ_BASE_FREQ (5000)
#define WLAN_24_GHZ_CHANNEL_6 (6)
#define WLAN_24_GHZ_CHANNEL_14 (14)
#define WLAN_24_GHZ_CHANNEL_15 (15)
#define WLAN_24_GHZ_CHANNEL_27 (27)
#define WLAN_5_GHZ_CHANNEL_170 (170)
#define WLAN_CHAN_SPACING_5MHZ (5)
#define WLAN_CHAN_SPACING_20MHZ (20)
#define WLAN_CHAN_14_FREQ (2484)
#define WLAN_CHAN_15_FREQ (2512)
#define WLAN_CHAN_170_FREQ (5852)
#define WLAN_MAC_EID_VENDOR 221
#define WLAN_MAC_EID_EXT 255
/**
* enum wlan_umac_comp_id - UMAC component id
* @WLAN_UMAC_COMP_MLME: MLME
* @WLAN_UMAC_COMP_MGMT_TXRX: MGMT Tx/Rx
* @WLAN_UMAC_COMP_SERIALIZATION: Serialization
* @WLAN_UMAC_COMP_SCAN: SCAN - as scan module uses services provided by
* MLME, MGMT_TXRX and SERIALIZATION, SCAN module
* must be initializes after above modules.
* @WLAN_UMAC_COMP_PMO: PMO component
* @WLAN_UMAC_COMP_P2P: P2P
* @WLAN_UMAC_COMP_POLICY_MGR: Policy Manager
* @WLAN_UMAC_COMP_CONFIG: Configuration
* @WLAN_UMAC_COMP_WIFI_POS: WIFI Positioning
* @WLAN_UMAC_COMP_TDLS: TDLS
* @WLAN_UMAC_COMP_ATF: Airtime Fairness
* @WLAN_UMAC_COMP_SA_API: Smart Antenna API
* @WLAN_UMAC_COMP_REGULATORY: REGULATORY
* @WLAN_UMAC_COMP_CRYPTO: CRYPTO
* @WLAN_UMAC_COMP_NAN: Neighbor Aware Networking
* @WLAN_UMAC_COMP_DFS: DFS
* @WLAN_UMAC_COMP_SPECTRAL: Spectral
* @WLAN_UMAC_COMP_ID_MAX: Maximum components in UMAC
* @WLAN_UMAC_COMP_OFFCHAN_TXRX: Offchan TxRx
* @WLAN_UMAC_COMP_SPLITMAC: SplitMAC
*
* This id is static.
* On Adding new component, new id has to be assigned
*/
enum wlan_umac_comp_id {
WLAN_UMAC_COMP_MLME,
WLAN_UMAC_COMP_MGMT_TXRX,
WLAN_UMAC_COMP_SERIALIZATION,
WLAN_UMAC_COMP_SCAN,
WLAN_UMAC_COMP_PMO,
WLAN_UMAC_COMP_P2P,
WLAN_UMAC_COMP_POLICY_MGR,
WLAN_UMAC_COMP_CONFIG,
WLAN_TARGET_IF_COMP_DIRECT_BUF_RX,
WLAN_UMAC_COMP_WIFI_POS,
WLAN_UMAC_COMP_TDLS,
WLAN_UMAC_COMP_ATF,
WLAN_UMAC_COMP_SA_API,
WLAN_UMAC_COMP_REGULATORY,
WLAN_UMAC_COMP_CRYPTO,
WLAN_UMAC_COMP_NAN,
WLAN_UMAC_COMP_DFS,
WLAN_UMAC_COMP_OFFCHAN_TXRX,
WLAN_UMAC_COMP_SON,
WLAN_UMAC_COMP_SPECTRAL,
WLAN_UMAC_COMP_SPLITMAC,
WLAN_UMAC_COMP_ID_MAX,
};
/**
* enum WLAN_DEV_TYPE - for DA or OL architecture types
* @WLAN_DEV_DA: Direct attach
* @WLAN_DEV_OL: Partial offload
* @WLAN_DEV_INVALID: Invalid dev type
*/
typedef enum {
WLAN_DEV_DA = 0,
WLAN_DEV_OL = 1,
WLAN_DEV_INVALID = 3,
} WLAN_DEV_TYPE;
/**
* enum wlan_phymode - phy mode
* @WLAN_PHYMODE_AUTO: autoselect
* @WLAN_PHYMODE_11A: 5GHz, OFDM
* @WLAN_PHYMODE_11B: 2GHz, CCK
* @WLAN_PHYMODE_11G: 2GHz, OFDM
* @WLAN_PHYMODE_11NA_HT20: 5Ghz, HT20
* @WLAN_PHYMODE_11NG_HT20: 2Ghz, HT20
* @WLAN_PHYMODE_11NA_HT40PLUS: 5Ghz, HT40 (ext ch +1)
* @WLAN_PHYMODE_11NA_HT40MINUS: 5Ghz, HT40 (ext ch -1)
* @WLAN_PHYMODE_11NG_HT40PLUS: 2Ghz, HT40 (ext ch +1)
* @WLAN_PHYMODE_11NG_HT40MINUS: 2Ghz, HT40 (ext ch -1)
* @WLAN_PHYMODE_11NG_HT40: 2Ghz, Auto HT40
* @WLAN_PHYMODE_11NA_HT40: 5Ghz, Auto HT40
* @WLAN_PHYMODE_11AC_VHT20: 5Ghz, VHT20
* @WLAN_PHYMODE_11AC_VHT40PLUS: 5Ghz, VHT40 (Ext ch +1)
* @WLAN_PHYMODE_11AC_VHT40MINUS:5Ghz VHT40 (Ext ch -1)
* @WLAN_PHYMODE_11AC_VHT40: 5Ghz, VHT40
* @WLAN_PHYMODE_11AC_VHT80: 5Ghz, VHT80
* @WLAN_PHYMODE_11AC_VHT160: 5Ghz, VHT160
* @WLAN_PHYMODE_11AC_VHT80_80: 5Ghz, VHT80_80
*/
enum wlan_phymode {
WLAN_PHYMODE_AUTO = 0,
WLAN_PHYMODE_11A = 1,
WLAN_PHYMODE_11B = 2,
WLAN_PHYMODE_11G = 3,
WLAN_PHYMODE_11NA_HT20 = 4,
WLAN_PHYMODE_11NG_HT20 = 5,
WLAN_PHYMODE_11NA_HT40PLUS = 6,
WLAN_PHYMODE_11NA_HT40MINUS = 7,
WLAN_PHYMODE_11NG_HT40PLUS = 8,
WLAN_PHYMODE_11NG_HT40MINUS = 9,
WLAN_PHYMODE_11NG_HT40 = 10,
WLAN_PHYMODE_11NA_HT40 = 11,
WLAN_PHYMODE_11AC_VHT20 = 12,
WLAN_PHYMODE_11AC_VHT40PLUS = 13,
WLAN_PHYMODE_11AC_VHT40MINUS = 14,
WLAN_PHYMODE_11AC_VHT40 = 15,
WLAN_PHYMODE_11AC_VHT80 = 16,
WLAN_PHYMODE_11AC_VHT160 = 17,
WLAN_PHYMODE_11AC_VHT80_80 = 18,
};
#define WLAN_PHYMODE_MAX (WLAN_PHYMODE_11AC_VHT80_80 + 1)
/**
* enum wifi_traffic_ac - access category type
* @WIFI_AC_VO: Voice AC
* @WIFI_AC_VI: Video AC
* @WIFI_AC_BE: Best effort AC
* @WIFI_AC_BK: Background AC
* @WIFI_AC_MAX: MAX access category
*/
enum wifi_traffic_ac {
WIFI_AC_VO = 0,
WIFI_AC_VI = 1,
WIFI_AC_BE = 2,
WIFI_AC_BK = 3,
WIFI_AC_MAX = 4,
};
/**
* enum wlan_peer_type - peer type
* @WLAN_PEER_SELF: for AP mode, SELF PEER or AP PEER are same
* @WLAN_PEER_AP: BSS peer for STA mode, Self peer for AP mode
* @WLAN_PEER_P2P_GO: BSS peer for P2P CLI mode, Self peer for P2P GO mode
* @WLAN_PEER_STA: Self Peer for STA mode, STA peer for AP mode
* @WLAN_PEER_P2P_CLI: Self peer for P2P CLI mode, P2P CLI peer for P2P GO mode
* @WLAN_PEER_TDLS: TDLS Peer
* @WLAN_PEER_NAWDS: NAWDS Peer
* @WLAN_PEER_STA_TEMP: STA Peer Temp (its host only node)
* @WLAN_PEER_IBSS: IBSS Peer
* @WLAN_PEER_NDP: NDP Peer
*/
enum wlan_peer_type {
WLAN_PEER_SELF = 1,
WLAN_PEER_AP = 2,
WLAN_PEER_P2P_GO = 3,
WLAN_PEER_STA = 4,
WLAN_PEER_P2P_CLI = 5,
WLAN_PEER_TDLS = 6,
WLAN_PEER_NAWDS = 7,
WLAN_PEER_STA_TEMP = 8,
WLAN_PEER_IBSS = 9,
WLAN_PEER_NDP = 10,
};
/**
* enum wlan_band - specifies operating channel band
* @WLAN_BAND_ALL: Any band
* @WLAN_BAND_2_4_GHZ: 2.4 GHz band
* @WLAN_BAND_5_GHZ: 5 GHz band
* @WLAN_BAND_4_9_GHZ: 4.9 GHz band
*/
enum wlan_band {
WLAN_BAND_ALL,
WLAN_BAND_2_4_GHZ,
WLAN_BAND_5_GHZ,
WLAN_BAND_4_9_GHZ,
};
/**
* enum wlan_bss_type - type of network
* @WLAN_TYPE_ANY: Default value
* @WLAN_TYPE_BSS: Type BSS
* @WLAN_TYPE_IBSS: Type IBSS
*/
enum wlan_bss_type {
WLAN_TYPE_ANY,
WLAN_TYPE_BSS,
WLAN_TYPE_IBSS,
};
/**
* enum wlan_pmf_cap: pmf capability
* @PMF_DISABLED: PMF is disabled
* @PMF_CAPABLE: PMF is supported
* @PMF_REQUIRED: PMF is mandatory
*/
enum wlan_pmf_cap {
WLAN_PMF_DISABLED,
WLAN_PMF_CAPABLE,
WLAN_PMF_REQUIRED,
};
/**
* enum wlan_auth_type - Enumeration of the various Auth types
* @WLAN_AUTH_TYPE_OPEN_SYSTEM: Open auth type
* @WLAN_AUTH_TYPE_SHARED_KEY: Shared Key Auth type
* @WLAN_AUTH_TYPE_AUTOSWITCH: Auto switch Open/Shared
* @WLAN_AUTH_TYPE_WPA: WPA Enterprise
* @WLAN_AUTH_TYPE_WPA_PSK: WPA PSK
* @WLAN_AUTH_TYPE_WPA_NONE: WPA None
* @WLAN_AUTH_TYPE_RSN: RSN Enterprise
* @WLAN_AUTH_TYPE_RSN_PSK: RSN PSK
* @WLAN_AUTH_TYPE_FT_RSN: FT RSN Enterprise
* @WLAN_AUTH_TYPE_FT_RSN_PSK: FT RSN PSK
* @WLAN_AUTH_TYPE_WAPI_WAI_CERTIFICATE: WAPI certificate
* @WLAN_AUTH_TYPE_WAPI_WAI_PSK: WAPI PSK
* @WLAN_AUTH_TYPE_CCKM_WPA: CCKM WPA
* @WLAN_AUTH_TYPE_CCKM_RSN: CCKM RSN
* @WLAN_AUTH_TYPE_RSN_PSK_SHA256: SHA256 PSK
* @WLAN_AUTH_TYPE_RSN_8021X_SHA256: SHA256 Enterprise
* @WLAN_AUTH_TYPE_FILS_SHA256: FILS SHA256
* @WLAN_AUTH_TYPE_FILS_SHA384: FILS SHA384
* @WLAN_AUTH_TYPE_FT_FILS_SHA256: FILS SHA256 for 11r
* @WLAN_AUTH_TYPE_FT_FILS_SHA384: FILS SHA384 for 11r
* @WLAN_NUM_OF_SUPPORT_AUTH_TYPE: Max no of Auth type
*/
enum wlan_auth_type {
WLAN_AUTH_TYPE_OPEN_SYSTEM,
WLAN_AUTH_TYPE_SHARED_KEY,
WLAN_AUTH_TYPE_AUTOSWITCH,
WLAN_AUTH_TYPE_WPA,
WLAN_AUTH_TYPE_WPA_PSK,
WLAN_AUTH_TYPE_WPA_NONE,
WLAN_AUTH_TYPE_RSN,
WLAN_AUTH_TYPE_RSN_PSK,
WLAN_AUTH_TYPE_FT_RSN,
WLAN_AUTH_TYPE_FT_RSN_PSK,
WLAN_AUTH_TYPE_WAPI_WAI_CERTIFICATE,
WLAN_AUTH_TYPE_WAPI_WAI_PSK,
WLAN_AUTH_TYPE_CCKM_WPA,
WLAN_AUTH_TYPE_CCKM_RSN,
WLAN_AUTH_TYPE_RSN_PSK_SHA256,
WLAN_AUTH_TYPE_RSN_8021X_SHA256,
WLAN_AUTH_TYPE_FILS_SHA256,
WLAN_AUTH_TYPE_FILS_SHA384,
WLAN_AUTH_TYPE_FT_FILS_SHA256,
WLAN_AUTH_TYPE_FT_FILS_SHA384,
WLAN_AUTH_TYPE_DPP_RSN,
WLAN_AUTH_TYPE_OWE,
WLAN_NUM_OF_SUPPORT_AUTH_TYPE,
};
/**
* enum wlan_enc_type - Enumeration of the various Enc types
* @WLAN_ENCRYPT_TYPE_NONE: No encryption
* @WLAN_ENCRYPT_TYPE_WEP40_STATICKEY: WEP 40 Static key
* @WLAN_ENCRYPT_TYPE_WEP104_STATICKEY: WEP 104 Static key
* @WLAN_ENCRYPT_TYPE_WEP40: WEP 40
* @WLAN_ENCRYPT_TYPE_WEP104: WEP 104
* @WLAN_ENCRYPT_TYPE_TKIP: TKIP
* @WLAN_ENCRYPT_TYPE_AES: AES
* @WLAN_ENCRYPT_TYPE_WPI: WAPI
* @WLAN_ENCRYPT_TYPE_KRK: KRK
* @WLAN_ENCRYPT_TYPE_BTK: BTK
* @WLAN_ENCRYPT_TYPE_AES_CMAC: 11W BIP
* @WLAN_ENCRYPT_TYPE_ANY: Any
* @WLAN_NUM_OF_ENCRYPT_TYPE: Max value
*/
enum wlan_enc_type {
WLAN_ENCRYPT_TYPE_NONE,
WLAN_ENCRYPT_TYPE_WEP40_STATICKEY,
WLAN_ENCRYPT_TYPE_WEP104_STATICKEY,
WLAN_ENCRYPT_TYPE_WEP40,
WLAN_ENCRYPT_TYPE_WEP104,
WLAN_ENCRYPT_TYPE_TKIP,
WLAN_ENCRYPT_TYPE_AES,
WLAN_ENCRYPT_TYPE_WPI,
WLAN_ENCRYPT_TYPE_KRK,
WLAN_ENCRYPT_TYPE_BTK,
WLAN_ENCRYPT_TYPE_AES_CMAC,
WLAN_ENCRYPT_TYPE_AES_GCMP,
WLAN_ENCRYPT_TYPE_AES_GCMP_256,
WLAN_ENCRYPT_TYPE_ANY,
WLAN_NUM_OF_ENCRYPT_TYPE = WLAN_ENCRYPT_TYPE_ANY,
};
/**
* struct wlan_ssid - SSID info
* @length: ssid length of bss excluding null
* @ssid: ssid character array potentially non null terminated
*/
struct wlan_ssid {
uint8_t length;
uint8_t ssid[WLAN_SSID_MAX_LEN];
};
/* MAC address length */
#define WLAN_MACADDR_LEN 6
/* Util API to copy the MAC address */
#define WLAN_ADDR_COPY(dst, src) qdf_mem_copy(dst, src, WLAN_MACADDR_LEN)
/* Util API to compare the MAC address */
#define WLAN_ADDR_EQ(a1, a2) qdf_mem_cmp(a1, a2, WLAN_MACADDR_LEN)
#endif /* _WLAN_OBJMGR_CMN_H_*/