qcacmn: Enable target_if in object manager
1) Remove service ready members 2) Replace few macros with variables Change-Id: I1dbfa824cbbb504ce24ef0e05869197a06760162 CRs-Fixed: 2177109
Bu işleme şunda yer alıyor:

işlemeyi yapan:
snandini

ebeveyn
c664572a93
işleme
c7f4e03208
@@ -52,7 +52,6 @@
|
||||
/* 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
|
||||
@@ -71,11 +70,11 @@
|
||||
|
||||
/* Allowed time to wait for Object creation */
|
||||
#define WLAN_VDEV_CREATE_TIMEOUT_CNT 300
|
||||
/* 25 msec */
|
||||
/* 25 msec */
|
||||
#define WLAN_VDEV_CREATE_TIMEOUT 25
|
||||
|
||||
#define WLAN_PDEV_CREATE_TIMEOUT_CNT 300
|
||||
/* 25 msec */
|
||||
/* 25 msec */
|
||||
#define WLAN_PDEV_CREATE_TIMEOUT 25
|
||||
|
||||
#define WLAN_PSOC_CREATE_TIMEOUT_CNT 300
|
||||
@@ -97,6 +96,122 @@
|
||||
#define WLAN_MAC_EID_VENDOR 221
|
||||
#define WLAN_MAC_EID_EXT 255
|
||||
|
||||
/* VHT capability flags */
|
||||
/* B0-B1 Maximum MPDU Length */
|
||||
/* A-MSDU Length 3839 octets */
|
||||
#define WLAN_VHTCAP_MAX_MPDU_LEN_3839 0x00000000
|
||||
/* A-MSDU Length 7991 octets */
|
||||
#define WLAN_VHTCAP_MAX_MPDU_LEN_7935 0x00000001
|
||||
/* A-MSDU Length 11454 octets */
|
||||
#define WLAN_VHTCAP_MAX_MPDU_LEN_11454 0x00000002
|
||||
|
||||
/* B2-B3 Supported Channel Width */
|
||||
/* Does not support 160 or 80+80 */
|
||||
#define WLAN_VHTCAP_SUP_CHAN_WIDTH_80 0x00000000
|
||||
/* Supports 160 */
|
||||
#define WLAN_VHTCAP_SUP_CHAN_WIDTH_160 0x00000004
|
||||
/* Support both 160 or 80+80 */
|
||||
#define WLAN_VHTCAP_SUP_CHAN_WIDTH_80_160 0x00000008
|
||||
/* B2-B3 */
|
||||
#define WLAN_VHTCAP_SUP_CHAN_WIDTH_S 2
|
||||
#define WLAN_VHTCAP_SUP_CHAN_WIDTH_MASK 0x0000000C
|
||||
/* B4 RX LDPC */
|
||||
#define WLAN_VHTCAP_RX_LDPC 0x00000010
|
||||
/* B5 Short GI for 80MHz */
|
||||
#define WLAN_VHTCAP_SHORTGI_80 0x00000020
|
||||
/* B6 Short GI for 160 and 80+80 MHz */
|
||||
#define WLAN_VHTCAP_SHORTGI_160 0x00000040
|
||||
/* B7 Tx STBC */
|
||||
#define WLAN_VHTCAP_TX_STBC 0x00000080
|
||||
#define WLAN_VHTCAP_TX_STBC_S 7
|
||||
/* B8-B10 Rx STBC */
|
||||
#define WLAN_VHTCAP_RX_STBC 0x00000700
|
||||
#define WLAN_VHTCAP_RX_STBC_S 8
|
||||
/* B11 SU Beam former capable */
|
||||
#define WLAN_VHTCAP_SU_BFORMER 0x00000800
|
||||
#define WLAN_VHTCAP_SU_BFORMER_S 11
|
||||
/* B12 SU Beam formee capable */
|
||||
#define WLAN_VHTCAP_SU_BFORMEE 0x00001000
|
||||
#define WLAN_VHTCAP_SU_BFORMEE_S 12
|
||||
|
||||
/* B13-B15 Compressed steering number of beacomformer Antennas supported */
|
||||
#define WLAN_VHTCAP_BF_MAX_ANT 0x0000E000
|
||||
#define WLAN_VHTCAP_BF_MAX_ANT_S 13
|
||||
/* B13-B15 Beamformee STS Capability */
|
||||
#define WLAN_VHTCAP_STS_CAP_S 13
|
||||
#define WLAN_VHTCAP_STS_CAP_M 0x7
|
||||
|
||||
/* B16-B18 Sounding Dimensions */
|
||||
#define WLAN_VHTCAP_SOUND_DIM 0x00070000
|
||||
#define WLAN_VHTCAP_SOUND_DIM_S 16
|
||||
/* B19 MU Beam Former */
|
||||
#define WLAN_VHTCAP_MU_BFORMER 0x00080000
|
||||
#define WLAN_VHTCAP_MU_BFORMER_S 19
|
||||
/* B20 MU Beam Formee */
|
||||
#define WLAN_VHTCAP_MU_BFORMEE 0x00100000
|
||||
#define WLAN_VHTCAP_MU_BFORMEE_S 20
|
||||
/* B21 VHT TXOP PS */
|
||||
#define WLAN_VHTCAP_TXOP_PS 0x00200000
|
||||
/* B22 +HTC-VHT capable */
|
||||
#define WLAN_VHTCAP_PLUS_HTC_VHT 0x00400000
|
||||
|
||||
#define WLAN_VHTCAP_MAX_AMPDU_LEN_FACTOR 13
|
||||
/* B23-B25 maximum AMPDU Length Exponent */
|
||||
#define WLAN_VHTCAP_MAX_AMPDU_LEN_EXP 0x03800000
|
||||
#define WLAN_VHTCAP_MAX_AMPDU_LEN_EXP_S 23
|
||||
/* B26-B27 VHT Link Adaptation capable */
|
||||
#define WLAN_VHTCAP_LINK_ADAPT 0x0C000000
|
||||
/* Rx Antenna Pattern Consistency Supported */
|
||||
#define WLAN_VHTCAP_RX_ANTENNA_PATTERN 0x10000000
|
||||
/* Tx Antenna Pattern Consistency Supported */
|
||||
#define WLAN_VHTCAP_TX_ANTENNA_PATTERN 0x20000000
|
||||
/* B30-B31 Extended NSS Bandwidth Support */
|
||||
#define WLAN_VHTCAP_NO_EXT_NSS_BW_SUPPORT 0x00000000
|
||||
/* B30-B31 Extended NSS Bandwidth Support */
|
||||
#define WLAN_VHTCAP_EXT_NSS_BW_SUPPORT_1 0x40000000
|
||||
/* B30-B31 Extended NSS Bandwidth Support */
|
||||
#define WLAN_VHTCAP_EXT_NSS_BW_SUPPORT_2 0x80000000
|
||||
/* B30-B31 Extended NSS Bandwidth Support */
|
||||
#define WLAN_VHTCAP_EXT_NSS_BW_SUPPORT_3 0xC0000000
|
||||
#define WLAN_VHTCAP_EXT_NSS_BW_SUPPORT_S 30
|
||||
#define WLAN_VHTCAP_EXT_NSS_BW_SUPPORT_MASK 0xC0000000
|
||||
|
||||
#define WLAN_VHTCAP_EXT_NSS_MASK (WLAN_VHTCAP_SUP_CHAN_WIDTH_MASK |\
|
||||
WLAN_VHTCAP_EXT_NSS_BW_SUPPORT_MASK)
|
||||
/* VHTCAP combinations of "supported channel width" and "ext nss support"
|
||||
* which determine the NSS value supported by STA for <=80 MHz, 160 MHz
|
||||
* and 80+80 MHz. The macros to be read as combination of
|
||||
* "supported channel width" and "ext nss support" followed by NSS for 80MHz,
|
||||
* 160MHz and 80+80MHz defined as a function of Max VHT NSS supported.
|
||||
* Ex: WLAN_EXTNSS_MAP_01_80F1_160FDOT5_80P80NONE - To be reas as
|
||||
* supported channel width = 0
|
||||
* ext nss support = 1
|
||||
* NSS value for <=80MHz = max_vht_nss * 1
|
||||
* NSS value for 160MHz = max_vht_nss * (.5)
|
||||
* NSS value for 80+80MHz = not supported
|
||||
*/
|
||||
#define WLAN_EXTNSS_MAP_00_80F1_160NONE_80P80NONE \
|
||||
(WLAN_VHTCAP_SUP_CHAN_WIDTH_80 | WLAN_VHTCAP_NO_EXT_NSS_BW_SUPPORT)
|
||||
#define WLAN_EXTNSS_MAP_01_80F1_160FDOT5_80P80NONE \
|
||||
(WLAN_VHTCAP_SUP_CHAN_WIDTH_80 | WLAN_VHTCAP_EXT_NSS_BW_SUPPORT_1)
|
||||
#define WLAN_EXTNSS_MAP_02_80F1_160FDOT5_80P80FDOT5 \
|
||||
(WLAN_VHTCAP_SUP_CHAN_WIDTH_80 | WLAN_VHTCAP_EXT_NSS_BW_SUPPORT_2)
|
||||
#define WLAN_EXTNSS_MAP_03_80F1_160FDOT75_80P80FDOT75 \
|
||||
(WLAN_VHTCAP_SUP_CHAN_WIDTH_80 | WLAN_VHTCAP_EXT_NSS_BW_SUPPORT_3)
|
||||
#define WLAN_EXTNSS_MAP_10_80F1_160F1_80P80NONE \
|
||||
(WLAN_VHTCAP_SUP_CHAN_WIDTH_160 | WLAN_VHTCAP_NO_EXT_NSS_BW_SUPPORT)
|
||||
#define WLAN_EXTNSS_MAP_11_80F1_160F1_80P80FDOT5 \
|
||||
(WLAN_VHTCAP_SUP_CHAN_WIDTH_160 | WLAN_VHTCAP_EXT_NSS_BW_SUPPORT_1)
|
||||
#define WLAN_EXTNSS_MAP_12_80F1_160F1_80P80FDOT75 \
|
||||
(WLAN_VHTCAP_SUP_CHAN_WIDTH_160 | WLAN_VHTCAP_EXT_NSS_BW_SUPPORT_2)
|
||||
#define WLAN_EXTNSS_MAP_13_80F2_160F2_80P80F1 \
|
||||
(WLAN_VHTCAP_SUP_CHAN_WIDTH_160 | WLAN_VHTCAP_EXT_NSS_BW_SUPPORT_3)
|
||||
#define WLAN_EXTNSS_MAP_20_80F1_160F1_80P80F1 \
|
||||
(WLAN_VHTCAP_SUP_CHAN_WIDTH_80_160 | WLAN_VHTCAP_NO_EXT_NSS_BW_SUPPORT)
|
||||
#define WLAN_EXTNSS_MAP_23_80F2_160F1_80P80F1 \
|
||||
(WLAN_VHTCAP_SUP_CHAN_WIDTH_80_160 | WLAN_VHTCAP_EXT_NSS_BW_SUPPORT_3)
|
||||
|
||||
|
||||
/**
|
||||
* enum wlan_umac_comp_id - UMAC component id
|
||||
* @WLAN_UMAC_COMP_MLME: MLME
|
||||
@@ -406,4 +521,13 @@ struct wlan_ssid {
|
||||
/* Util API to compare the MAC address */
|
||||
#define WLAN_ADDR_EQ(a1, a2) qdf_mem_cmp(a1, a2, WLAN_MACADDR_LEN)
|
||||
|
||||
#define PSOC_SERVICE_BM_SIZE ((128 + sizeof(uint32_t) - 1) / sizeof(uint32_t))
|
||||
#define PSOC_HOST_MAX_NUM_SS (8)
|
||||
#define PSOC_HOST_MAX_PHY_SIZE (3)
|
||||
#define PSOC_MAX_HW_MODE (2)
|
||||
#define PSOC_MAX_MAC_PHY_CAP (5)
|
||||
#define PSOC_MAX_PHY_REG_CAP (3)
|
||||
#define PSOC_MAX_CHAINMASK_TABLES (5)
|
||||
|
||||
|
||||
#endif /* _WLAN_OBJMGR_CMN_H_*/
|
||||
|
@@ -212,6 +212,7 @@ typedef void (*wlan_objmgr_peer_status_handler)(
|
||||
* @WLAN_FD_ID: FILS Discovery
|
||||
* @WLAN_OCB_NB_ID: OCB Northbound operations
|
||||
* @WLAN_OCB_SB_ID: OCB Southbound operations
|
||||
* @WLAN_INIT_DEINIT_ID: Init deinit module
|
||||
* @WLAN_REF_ID_MAX: Max id used to generate ref count tracking array
|
||||
*/
|
||||
/* New value added to the enum must also be reflected in function
|
||||
@@ -254,6 +255,7 @@ typedef enum {
|
||||
WLAN_FD_ID = 33,
|
||||
WLAN_OCB_NB_ID = 34,
|
||||
WLAN_OCB_SB_ID = 35,
|
||||
WLAN_INIT_DEINIT_ID = 36,
|
||||
WLAN_REF_ID_MAX,
|
||||
} wlan_objmgr_ref_dbgid;
|
||||
|
||||
@@ -301,6 +303,9 @@ static inline char *string_from_dbgid(wlan_objmgr_ref_dbgid id)
|
||||
"WLAN_DISA_ID",
|
||||
"WLAN_FTM_ID",
|
||||
"WLAN_FD_ID",
|
||||
"WLAN_OCB_NB_ID",
|
||||
"WLAN_OCB_SB_ID",
|
||||
"WLAN_INIT_DEINIT_ID",
|
||||
"WLAN_REF_ID_MAX" };
|
||||
|
||||
return (char *)strings[id];
|
||||
|
@@ -120,12 +120,14 @@ struct osif_pdev_priv;
|
||||
* @pdev_fw_caps: radio specific FW capabilities
|
||||
* @pdev_feature_caps: radio specific feature capabilities
|
||||
* @pdev_ospriv: OS specific pointer
|
||||
* @macaddr[]: MAC address
|
||||
* @notified_ap_vdev: ap vdev
|
||||
*/
|
||||
struct wlan_objmgr_pdev_nif {
|
||||
uint32_t pdev_fw_caps;
|
||||
uint32_t pdev_feature_caps;
|
||||
struct pdev_osif_priv *pdev_ospriv;
|
||||
uint8_t macaddr[WLAN_MACADDR_LEN];
|
||||
uint8_t notified_ap_vdev;
|
||||
};
|
||||
|
||||
@@ -576,10 +578,11 @@ static inline uint8_t wlan_pdev_nif_feat_cap_get(struct wlan_objmgr_pdev *pdev,
|
||||
*/
|
||||
static inline uint8_t *wlan_pdev_get_hw_macaddr(struct wlan_objmgr_pdev *pdev)
|
||||
{
|
||||
struct wlan_objmgr_psoc *psoc = wlan_pdev_get_psoc(pdev);
|
||||
if (!pdev)
|
||||
return NULL;
|
||||
|
||||
/* This API is invoked with lock acquired, do not add log prints */
|
||||
return wlan_psoc_get_hw_macaddr(psoc);
|
||||
return pdev->pdev_nif.macaddr;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -596,11 +599,8 @@ static inline uint8_t *wlan_pdev_get_hw_macaddr(struct wlan_objmgr_pdev *pdev)
|
||||
static inline void wlan_pdev_set_hw_macaddr(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t *macaddr)
|
||||
{
|
||||
struct wlan_objmgr_psoc *psoc = wlan_pdev_get_psoc(pdev);
|
||||
|
||||
/* This API is invoked with lock acquired, do not add log prints */
|
||||
if (psoc != NULL)
|
||||
wlan_psoc_set_hw_macaddr(psoc, macaddr);
|
||||
WLAN_ADDR_COPY(pdev->pdev_nif.macaddr, macaddr);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -22,7 +22,6 @@
|
||||
#ifndef _WLAN_OBJMGR_PSOC_OBJ_H_
|
||||
#define _WLAN_OBJMGR_PSOC_OBJ_H_
|
||||
|
||||
#include "wlan_objmgr_psoc_service_ready_api.h"
|
||||
#include "wlan_objmgr_cmn.h"
|
||||
#include "wlan_lmac_if_def.h"
|
||||
|
||||
@@ -109,6 +108,18 @@
|
||||
#define WLAN_SOC_CEXT_ACS_CHAN_HOP 0x00000020
|
||||
/* CAPABILITY: the device support STA DFS */
|
||||
#define WLAN_SOC_CEXT_STADFS 0x00000040
|
||||
/* NSS offload capability */
|
||||
#define WLAN_SOC_CEXT_NSS_OFFLOAD 0x00000080
|
||||
/* SW cal support capability */
|
||||
#define WLAN_SOC_CEXT_SW_CAL 0x00000100
|
||||
/* Hybrid mode */
|
||||
#define WLAN_SOC_CEXT_HYBRID_MODE 0x00000200
|
||||
/* TT support */
|
||||
#define WLAN_SOC_CEXT_TT_SUPPORT 0x00000400
|
||||
/* WMI MGMT REF */
|
||||
#define WLAN_SOC_CEXT_WMI_MGMT_REF 0x00000800
|
||||
/* Wideband scan */
|
||||
#define WLAN_SOC_CEXT_WIDEBAND_SCAN 0x00001000
|
||||
|
||||
/* feature_flags */
|
||||
/* CONF: ATH FF enabled */
|
||||
@@ -151,7 +162,21 @@
|
||||
#define WLAN_SOC_F_PWRCNSTRIE 0x00010000
|
||||
/* STATUS: 11D in used */
|
||||
#define WLAN_SOC_F_DOT11D 0x00020000
|
||||
/* Beacon offload */
|
||||
#define WLAN_SOC_F_BCN_OFFLOAD 0x00040000
|
||||
/* QWRAP enable */
|
||||
#define WLAN_SOC_F_QWRAP_ENABLE 0x00080000
|
||||
/* LTEU support */
|
||||
#define WLAN_SOC_F_LTEU_SUPPORT 0x00100000
|
||||
/* BT coext support */
|
||||
#define WLAN_SOC_F_BTCOEX_SUPPORT 0x00200000
|
||||
/* HOST 80211 enable*/
|
||||
#define WLAN_SOC_F_HOST_80211_ENABLE 0x00400000
|
||||
|
||||
/* PSOC op flags */
|
||||
|
||||
/* Invalid VHT cap */
|
||||
#define WLAN_SOC_OP_VHT_INVALID_CAP 0x00000001
|
||||
/**
|
||||
* struct wlan_objmgr_psoc_regulatory - Regulatory sub structure of PSOC
|
||||
* @country_code: Country code
|
||||
@@ -196,6 +221,7 @@ struct wlan_objmgr_psoc_user_config {
|
||||
* @soc_fw_caps: FW capabilities
|
||||
* @soc_fw_ext_caps: FW ext capabilities
|
||||
* @soc_feature_caps:Feature capabilities
|
||||
* @soc_op_flags: Flags to set/reset during operation
|
||||
* @soc_hw_macaddr[]:HW MAC address
|
||||
* @user_config: user config from OS layer
|
||||
*/
|
||||
@@ -205,6 +231,7 @@ struct wlan_objmgr_psoc_nif {
|
||||
uint32_t soc_fw_caps;
|
||||
uint32_t soc_fw_ext_caps;
|
||||
uint32_t soc_feature_caps;
|
||||
uint32_t soc_op_flags;
|
||||
uint8_t soc_hw_macaddr[WLAN_MACADDR_LEN];
|
||||
struct wlan_objmgr_psoc_user_config user_config;
|
||||
};
|
||||
@@ -220,6 +247,7 @@ struct wlan_objmgr_psoc_nif {
|
||||
* @wlan_vdev_list[]: VDEV list
|
||||
* @wlan_vdev_id_map[]: VDEV id map, to allocate free ids
|
||||
* @wlan_peer_count: PEER count
|
||||
* @max_peer_count: Max no. of peers supported by this PSOC
|
||||
* @peer_list: Peer list
|
||||
* @ref_cnt: Ref count
|
||||
* @ref_id_dbg: Array to track Ref count
|
||||
@@ -236,6 +264,7 @@ struct wlan_objmgr_psoc_objmgr {
|
||||
struct wlan_objmgr_vdev *wlan_vdev_list[WLAN_UMAC_PSOC_MAX_VDEVS];
|
||||
uint32_t wlan_vdev_id_map[2];
|
||||
uint16_t wlan_peer_count;
|
||||
uint16_t max_peer_count;
|
||||
struct wlan_peer_list peer_list;
|
||||
qdf_atomic_t ref_cnt;
|
||||
qdf_atomic_t ref_id_dbg[WLAN_REF_ID_MAX];
|
||||
@@ -280,10 +309,6 @@ struct wlan_soc_timer {
|
||||
* @obj_status[]: component object status
|
||||
* @obj_state: object state
|
||||
* @tgt_if_handle: target interface handle
|
||||
* For OL based target it points to wmi handle
|
||||
* @total_mac_phy: number of mac/phy supported by HW
|
||||
* @service_param: FW service capability info
|
||||
* @ext_service_param: extended FW service capability info
|
||||
* @dp_handle: DP module handle
|
||||
* @psoc_lock: psoc lock
|
||||
*/
|
||||
@@ -299,13 +324,37 @@ struct wlan_objmgr_psoc {
|
||||
QDF_STATUS obj_status[WLAN_UMAC_MAX_COMPONENTS];
|
||||
WLAN_OBJ_STATE obj_state;
|
||||
void *tgt_if_handle;
|
||||
uint8_t total_mac_phy;
|
||||
struct wlan_objmgr_psoc_service_ready_param service_param;
|
||||
struct wlan_objmgr_psoc_ext_service_ready_param ext_service_param;
|
||||
void *dp_handle;
|
||||
qdf_spinlock_t psoc_lock;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct wlan_psoc_host_hal_reg_capabilities_ext: Below are Reg caps per PHY.
|
||||
* Please note PHY ID starts with 0.
|
||||
* @phy_id: phy id starts with 0.
|
||||
* @eeprom_reg_domain: regdomain value specified in EEPROM
|
||||
* @eeprom_reg_domain_ext: regdomain
|
||||
* @regcap1: CAP1 capabilities bit map, see REGDMN_CAP1_ defines
|
||||
* @regcap2: REGDMN EEPROM CAP, see REGDMN_EEPROM_EEREGCAP_ defines
|
||||
* @wireless_modes: REGDMN MODE, see REGDMN_MODE_ enum
|
||||
* @low_2ghz_chan: 2G channel low
|
||||
* @high_2ghz_chan: 2G channel High
|
||||
* @low_5ghz_chan: 5G channel low
|
||||
* @high_5ghz_chan: 5G channel High
|
||||
*/
|
||||
struct wlan_psoc_host_hal_reg_capabilities_ext {
|
||||
uint32_t phy_id;
|
||||
uint32_t eeprom_reg_domain;
|
||||
uint32_t eeprom_reg_domain_ext;
|
||||
uint32_t regcap1;
|
||||
uint32_t regcap2;
|
||||
uint32_t wireless_modes;
|
||||
uint32_t low_2ghz_chan;
|
||||
uint32_t high_2ghz_chan;
|
||||
uint32_t low_5ghz_chan;
|
||||
uint32_t high_5ghz_chan;
|
||||
};
|
||||
|
||||
/**
|
||||
** APIs to Create/Delete Global object APIs
|
||||
*/
|
||||
@@ -1016,11 +1065,56 @@ static inline void wlan_psoc_nif_feat_cap_clear(struct wlan_objmgr_psoc *psoc,
|
||||
* Return: 1 (for set) or 0 (for not set)
|
||||
*/
|
||||
static inline uint8_t wlan_psoc_nif_feat_cap_get(struct wlan_objmgr_psoc *psoc,
|
||||
uint32_t feat_cap)
|
||||
uint32_t feat_cap)
|
||||
{
|
||||
return (psoc->soc_nif.soc_feature_caps & feat_cap) ? 1 : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* wlan_psoc_nif_op_flag_get() - get op flags
|
||||
* @psoc: PSOC object
|
||||
* @flag: op flag to be checked
|
||||
*
|
||||
* API to know, whether particular op flag is set in psoc
|
||||
*
|
||||
* Return: 1 (for set) or 0 (for not set)
|
||||
*/
|
||||
static inline uint8_t wlan_psoc_nif_op_flag_get(struct wlan_objmgr_psoc *psoc,
|
||||
uint32_t flag)
|
||||
{
|
||||
return (psoc->soc_nif.soc_op_flags & flag) ? 1 : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* wlan_psoc_nif_op_flag_set() - set op flag
|
||||
* @psoc: PSOC object
|
||||
* @flag: op flag to be set
|
||||
*
|
||||
* API to set op flag in psoc
|
||||
*
|
||||
* Return: void
|
||||
*/
|
||||
static inline void wlan_psoc_nif_op_flag_set(struct wlan_objmgr_psoc *psoc,
|
||||
uint32_t flag)
|
||||
{
|
||||
psoc->soc_nif.soc_op_flags |= flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* wlan_psoc_nif_op_flag_clear() - clear op flag
|
||||
* @psoc: PSOC object
|
||||
* @flag: op flag to be cleared
|
||||
*
|
||||
* API to clear op flag in psoc
|
||||
*
|
||||
* Return: void
|
||||
*/
|
||||
static inline void wlan_psoc_nif_op_flag_clear(struct wlan_objmgr_psoc *psoc,
|
||||
uint32_t flag)
|
||||
{
|
||||
psoc->soc_nif.soc_op_flags &= ~flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* wlan_psoc_set_hw_macaddr() - set hw mac addr
|
||||
* @psoc: PSOC object
|
||||
@@ -1154,6 +1248,64 @@ static inline void wlan_psoc_set_qdf_dev(
|
||||
psoc->soc_objmgr.qdf_dev = dev;
|
||||
}
|
||||
|
||||
/**
|
||||
* wlan_psoc_set_max_vdev_count() - set psoc max vdev count
|
||||
* @psoc: PSOC object
|
||||
* @vdev count: Max vdev count
|
||||
*
|
||||
* API to set Max vdev count
|
||||
*
|
||||
* Return: void
|
||||
*/
|
||||
static inline void wlan_psoc_set_max_vdev_count(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t max_vdev_count)
|
||||
{
|
||||
psoc->soc_objmgr.max_vdev_count = max_vdev_count;
|
||||
}
|
||||
|
||||
/**
|
||||
* wlan_psoc_get_max_vdev_count() - get psoc max vdev count
|
||||
* @psoc: PSOC object
|
||||
*
|
||||
* API to set Max vdev count
|
||||
*
|
||||
* Return: @vdev count: Max vdev count
|
||||
*/
|
||||
static inline uint8_t wlan_psoc_get_max_vdev_count(
|
||||
struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return psoc->soc_objmgr.max_vdev_count;
|
||||
}
|
||||
|
||||
/**
|
||||
* wlan_psoc_set_max_peer_count() - set psoc max peer count
|
||||
* @psoc: PSOC object
|
||||
* @peer count: Max peer count
|
||||
*
|
||||
* API to set Max peer count
|
||||
*
|
||||
* Return: void
|
||||
*/
|
||||
static inline void wlan_psoc_set_max_peer_count(struct wlan_objmgr_psoc *psoc,
|
||||
uint16_t max_peer_count)
|
||||
{
|
||||
psoc->soc_objmgr.max_peer_count = max_peer_count;
|
||||
}
|
||||
|
||||
/**
|
||||
* wlan_psoc_get_max_peer_count() - get psoc max peer count
|
||||
* @psoc: PSOC object
|
||||
*
|
||||
* API to set Max peer count
|
||||
*
|
||||
* Return: @peer count: Max peer count
|
||||
*/
|
||||
static inline uint16_t wlan_psoc_get_max_peer_count(
|
||||
struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return psoc->soc_objmgr.max_peer_count;
|
||||
}
|
||||
|
||||
/**
|
||||
* DOC: Examples to use PSOC ref count APIs
|
||||
*
|
||||
|
@@ -128,7 +128,7 @@ struct wlan_objmgr_pdev *wlan_objmgr_pdev_obj_create(
|
||||
pdev->pdev_objmgr.wlan_vdev_count = 0;
|
||||
pdev->pdev_objmgr.max_vdev_count = WLAN_UMAC_PDEV_MAX_VDEVS;
|
||||
pdev->pdev_objmgr.wlan_peer_count = 0;
|
||||
pdev->pdev_objmgr.max_peer_count = WLAN_UMAC_PSOC_MAX_PEERS;
|
||||
pdev->pdev_objmgr.max_peer_count = wlan_psoc_get_max_peer_count(psoc);
|
||||
/* Save HDD/OSIF pointer */
|
||||
pdev->pdev_nif.pdev_ospriv = osdev_priv;
|
||||
qdf_atomic_init(&pdev->pdev_objmgr.ref_cnt);
|
||||
|
@@ -57,6 +57,7 @@ static QDF_STATUS wlan_objmgr_peer_object_status(
|
||||
failure, complete object need to be cleaned up */
|
||||
} else if ((peer->obj_status[id] == QDF_STATUS_E_NOMEM) ||
|
||||
(peer->obj_status[id] == QDF_STATUS_E_FAILURE)) {
|
||||
obj_mgr_err("Peer comp object(id:%d) alloc fail", id);
|
||||
status = QDF_STATUS_E_FAILURE;
|
||||
break;
|
||||
}
|
||||
|
@@ -90,16 +90,12 @@ static void wlan_objmgr_psoc_peer_list_deinit(struct wlan_peer_list *peer_list)
|
||||
|
||||
static QDF_STATUS wlan_objmgr_psoc_obj_free(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
struct wlan_psoc_host_service_ext_param *ext_param =
|
||||
&(psoc->ext_service_param.service_ext_param);
|
||||
|
||||
/* Detach PSOC from global object's psoc list */
|
||||
if (wlan_objmgr_psoc_object_detach(psoc) == QDF_STATUS_E_FAILURE) {
|
||||
obj_mgr_err("PSOC object detach failed");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
wlan_objmgr_psoc_peer_list_deinit(&psoc->soc_objmgr.peer_list);
|
||||
wlan_objmgr_ext_service_ready_chainmask_table_free(ext_param);
|
||||
|
||||
qdf_spinlock_destroy(&psoc->psoc_lock);
|
||||
qdf_mem_free(psoc);
|
||||
@@ -131,6 +127,7 @@ struct wlan_objmgr_psoc *wlan_objmgr_psoc_obj_create(uint32_t phy_version,
|
||||
objmgr->wlan_vdev_count = 0;
|
||||
objmgr->max_vdev_count = WLAN_UMAC_PSOC_MAX_VDEVS;
|
||||
objmgr->wlan_peer_count = 0;
|
||||
objmgr->max_peer_count = WLAN_UMAC_PSOC_MAX_PEERS;
|
||||
qdf_atomic_init(&objmgr->ref_cnt);
|
||||
objmgr->print_cnt = 0;
|
||||
/* set phy version, dev_type in psoc */
|
||||
@@ -417,6 +414,7 @@ QDF_STATUS wlan_objmgr_iterate_obj_list(
|
||||
struct wlan_objmgr_vdev *vdev;
|
||||
struct wlan_objmgr_peer *peer;
|
||||
struct wlan_objmgr_peer *peer_next;
|
||||
uint16_t max_vdev_cnt;
|
||||
|
||||
/* If caller requests for lock free opeation, do not acquire,
|
||||
* handler will handle the synchronization
|
||||
@@ -439,7 +437,8 @@ QDF_STATUS wlan_objmgr_iterate_obj_list(
|
||||
break;
|
||||
case WLAN_VDEV_OP:
|
||||
/* Iterate through VDEV list, invoke handler for each vdev */
|
||||
for (obj_id = 0; obj_id < WLAN_UMAC_PSOC_MAX_VDEVS; obj_id++) {
|
||||
max_vdev_cnt = wlan_psoc_get_max_vdev_count(psoc);
|
||||
for (obj_id = 0; obj_id < max_vdev_cnt; obj_id++) {
|
||||
vdev = objmgr->wlan_vdev_list[obj_id];
|
||||
if ((vdev != NULL) &&
|
||||
(wlan_objmgr_vdev_try_get_ref(vdev, dbg_id) ==
|
||||
@@ -501,6 +500,7 @@ QDF_STATUS wlan_objmgr_iterate_obj_list_all(
|
||||
struct wlan_objmgr_vdev *vdev;
|
||||
struct wlan_objmgr_peer *peer;
|
||||
struct wlan_objmgr_peer *peer_next;
|
||||
uint16_t max_vdev_cnt;
|
||||
|
||||
/* If caller requests for lock free opeation, do not acquire,
|
||||
* handler will handle the synchronization
|
||||
@@ -522,7 +522,8 @@ QDF_STATUS wlan_objmgr_iterate_obj_list_all(
|
||||
break;
|
||||
case WLAN_VDEV_OP:
|
||||
/* Iterate through VDEV list, invoke handler for each vdev */
|
||||
for (obj_id = 0; obj_id < WLAN_UMAC_PSOC_MAX_VDEVS; obj_id++) {
|
||||
max_vdev_cnt = wlan_psoc_get_max_vdev_count(psoc);
|
||||
for (obj_id = 0; obj_id < max_vdev_cnt; obj_id++) {
|
||||
vdev = objmgr->wlan_vdev_list[obj_id];
|
||||
if (vdev != NULL) {
|
||||
wlan_objmgr_vdev_get_ref(vdev, dbg_id);
|
||||
@@ -850,7 +851,7 @@ QDF_STATUS wlan_objmgr_psoc_vdev_detach(struct wlan_objmgr_psoc *psoc,
|
||||
|
||||
id = vdev->vdev_objmgr.vdev_id;
|
||||
/* Invalid vdev id */
|
||||
if (id >= WLAN_UMAC_PSOC_MAX_VDEVS)
|
||||
if (id >= wlan_psoc_get_max_vdev_count(psoc))
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
/*
|
||||
* Derive map_index and adjust_ix to find actual DWORD
|
||||
@@ -881,6 +882,7 @@ struct wlan_objmgr_vdev *wlan_objmgr_get_vdev_by_opmode_from_psoc(
|
||||
{
|
||||
struct wlan_objmgr_vdev *vdev = NULL;
|
||||
int vdev_cnt = 0;
|
||||
uint16_t max_vdev_cnt;
|
||||
|
||||
/* if PSOC is NULL, return */
|
||||
if (psoc == NULL)
|
||||
@@ -888,8 +890,9 @@ struct wlan_objmgr_vdev *wlan_objmgr_get_vdev_by_opmode_from_psoc(
|
||||
|
||||
wlan_psoc_obj_lock(psoc);
|
||||
|
||||
max_vdev_cnt = wlan_psoc_get_max_vdev_count(psoc);
|
||||
/* retrieve vdev pointer from vdev list */
|
||||
while (vdev_cnt < WLAN_UMAC_PSOC_MAX_VDEVS) {
|
||||
while (vdev_cnt < max_vdev_cnt) {
|
||||
vdev = psoc->soc_objmgr.wlan_vdev_list[vdev_cnt];
|
||||
vdev_cnt++;
|
||||
if (vdev == NULL)
|
||||
@@ -921,7 +924,7 @@ struct wlan_objmgr_vdev *wlan_objmgr_get_vdev_by_id_from_psoc(
|
||||
if (psoc == NULL)
|
||||
return NULL;
|
||||
/* vdev id is invalid */
|
||||
if (vdev_id >= WLAN_UMAC_PSOC_MAX_VDEVS)
|
||||
if (vdev_id >= wlan_psoc_get_max_vdev_count(psoc))
|
||||
return NULL;
|
||||
|
||||
wlan_psoc_obj_lock(psoc);
|
||||
@@ -948,7 +951,7 @@ struct wlan_objmgr_vdev *wlan_objmgr_get_vdev_by_id_from_psoc_no_state(
|
||||
if (psoc == NULL)
|
||||
return NULL;
|
||||
/* vdev id is invalid */
|
||||
if (vdev_id >= WLAN_UMAC_PSOC_MAX_VDEVS)
|
||||
if (vdev_id >= wlan_psoc_get_max_vdev_count(psoc))
|
||||
return NULL;
|
||||
|
||||
wlan_psoc_obj_lock(psoc);
|
||||
@@ -969,14 +972,16 @@ struct wlan_objmgr_vdev *wlan_objmgr_get_vdev_by_macaddr_from_psoc(
|
||||
{
|
||||
struct wlan_objmgr_vdev *vdev;
|
||||
uint8_t id;
|
||||
uint16_t max_vdev_cnt;
|
||||
|
||||
/* if PSOC is NULL, return */
|
||||
if (psoc == NULL)
|
||||
return NULL;
|
||||
|
||||
wlan_psoc_obj_lock(psoc);
|
||||
max_vdev_cnt = wlan_psoc_get_max_vdev_count(psoc);
|
||||
/* Iterate through PSOC's vdev list */
|
||||
for (id = 0; id < WLAN_UMAC_PSOC_MAX_VDEVS; id++) {
|
||||
for (id = 0; id < max_vdev_cnt; id++) {
|
||||
vdev = psoc->soc_objmgr.wlan_vdev_list[id];
|
||||
if (vdev == NULL)
|
||||
continue;
|
||||
@@ -1004,14 +1009,16 @@ struct wlan_objmgr_vdev *wlan_objmgr_get_vdev_by_macaddr_from_psoc_no_state(
|
||||
{
|
||||
struct wlan_objmgr_vdev *vdev;
|
||||
uint8_t id;
|
||||
uint16_t max_vdev_cnt;
|
||||
|
||||
/* if PSOC is NULL, return */
|
||||
if (psoc == NULL)
|
||||
return NULL;
|
||||
|
||||
wlan_psoc_obj_lock(psoc);
|
||||
max_vdev_cnt = wlan_psoc_get_max_vdev_count(psoc);
|
||||
/* Iterate through PSOC's vdev list */
|
||||
for (id = 0; id < WLAN_UMAC_PSOC_MAX_VDEVS; id++) {
|
||||
for (id = 0; id < max_vdev_cnt; id++) {
|
||||
vdev = psoc->soc_objmgr.wlan_vdev_list[id];
|
||||
if (vdev == NULL)
|
||||
continue;
|
||||
@@ -1367,7 +1374,7 @@ QDF_STATUS wlan_objmgr_psoc_peer_attach(struct wlan_objmgr_psoc *psoc,
|
||||
wlan_psoc_obj_lock(psoc);
|
||||
objmgr = &psoc->soc_objmgr;
|
||||
/* Max peer limit is reached, return failure */
|
||||
if (objmgr->wlan_peer_count >= WLAN_UMAC_PSOC_MAX_PEERS) {
|
||||
if (objmgr->wlan_peer_count >= wlan_psoc_get_max_peer_count(psoc)) {
|
||||
wlan_psoc_obj_unlock(psoc);
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
Yeni konuda referans
Bir kullanıcı engelle