diff options
| author | Kabilan Kannan <kabilank@codeaurora.org> | 2016-10-04 12:24:50 -0700 |
|---|---|---|
| committer | qcabuildsw <qcabuildsw@localhost> | 2016-10-07 19:57:23 -0700 |
| commit | 32eb50281c2d80bbeb50df5267392614d8e23bf5 (patch) | |
| tree | 00a2cb1c2914604405ebc6c97109a601b6cd6ca8 | |
| parent | f1ba31e987229aaf9021bc40936979cf58ee1221 (diff) | |
qcacld-3.0: Clean up and refactor tdls module
Currently the build fails, if we disable TDLS
feature flag in the kbuild.
Fix all the tdls conditional compilation issues
to make a successfull build with tdls feature
flag enabled/disabled.
Change-Id: I78114474d9ebe65e76840cb581389535f3486e4f
CRs-Fixed: 1066077
| -rw-r--r-- | core/cds/inc/cds_concurrency.h | 14 | ||||
| -rw-r--r-- | core/cds/src/cds_concurrency.c | 2 | ||||
| -rw-r--r-- | core/hdd/inc/wlan_hdd_assoc.h | 2 | ||||
| -rw-r--r-- | core/hdd/inc/wlan_hdd_main.h | 2 | ||||
| -rw-r--r-- | core/hdd/inc/wlan_hdd_tdls.h | 42 | ||||
| -rw-r--r-- | core/hdd/src/wlan_hdd_assoc.c | 51 | ||||
| -rw-r--r-- | core/hdd/src/wlan_hdd_ioctl.c | 3 | ||||
| -rw-r--r-- | core/hdd/src/wlan_hdd_tdls.c | 98 | ||||
| -rw-r--r-- | core/hdd/src/wlan_hdd_tx_rx.c | 14 | ||||
| -rw-r--r-- | core/mac/src/pe/include/lim_api.h | 17 | ||||
| -rw-r--r-- | core/mac/src/pe/include/lim_session.h | 4 | ||||
| -rw-r--r-- | core/mac/src/pe/lim/lim_api.c | 5 | ||||
| -rw-r--r-- | core/mac/src/pe/lim/lim_process_tdls.c | 9 | ||||
| -rw-r--r-- | core/mac/src/pe/lim/lim_types.h | 5 | ||||
| -rw-r--r-- | core/sme/inc/csr_api.h | 21 | ||||
| -rw-r--r-- | core/sme/src/csr/csr_api_roam.c | 13 |
16 files changed, 222 insertions, 80 deletions
diff --git a/core/cds/inc/cds_concurrency.h b/core/cds/inc/cds_concurrency.h index efe9f70622e0..429d64e0d35b 100644 --- a/core/cds/inc/cds_concurrency.h +++ b/core/cds/inc/cds_concurrency.h @@ -592,8 +592,22 @@ struct cds_conc_connection_info { bool cds_is_connection_in_progress(void); void cds_dump_concurrency_info(void); + +#ifdef FEATURE_WLAN_TDLS bool cds_check_is_tdls_allowed(enum tQDF_ADAPTER_MODE device_mode); void cds_set_tdls_ct_mode(hdd_context_t *hdd_ctx); +#else +static inline bool cds_check_is_tdls_allowed(enum tQDF_ADAPTER_MODE device_mode) +{ + return false; +} + +static inline void cds_set_tdls_ct_mode(hdd_context_t *hdd_ctx) +{ + +} +#endif + void cds_set_concurrency_mode(enum tQDF_ADAPTER_MODE mode); void cds_clear_concurrency_mode(enum tQDF_ADAPTER_MODE mode); uint32_t cds_get_connection_count(void); diff --git a/core/cds/src/cds_concurrency.c b/core/cds/src/cds_concurrency.c index 25155c2c18d5..7504b2315d25 100644 --- a/core/cds/src/cds_concurrency.c +++ b/core/cds/src/cds_concurrency.c @@ -3340,6 +3340,7 @@ void cds_dump_concurrency_info(void) hdd_ctx->mcc_mode = !cds_current_concurrency_is_scc(); } +#ifdef FEATURE_WLAN_TDLS /* * cds_check_is_tdls_allowed() - check is tdls allowed or not * @adapter: pointer to adapter @@ -3419,6 +3420,7 @@ set_state: cds_info("enable_tdls_connection_tracker %d", hdd_ctx->enable_tdls_connection_tracker); } +#endif /** * cds_set_concurrency_mode() - To set concurrency mode diff --git a/core/hdd/inc/wlan_hdd_assoc.h b/core/hdd/inc/wlan_hdd_assoc.h index f49cb125ed54..bf87fcf37fb1 100644 --- a/core/hdd/inc/wlan_hdd_assoc.h +++ b/core/hdd/inc/wlan_hdd_assoc.h @@ -272,6 +272,7 @@ int hdd_set_genie_to_csr(hdd_adapter_t *pAdapter, eCsrAuthType *RSNAuthType); */ int hdd_set_csr_auth_type(hdd_adapter_t *pAdapter, eCsrAuthType RSNAuthType); +#ifdef FEATURE_WLAN_TDLS /** * hdd_roam_register_tdlssta() - register new TDLS station * @pAdapter: pointer to adapter @@ -287,6 +288,7 @@ int hdd_set_csr_auth_type(hdd_adapter_t *pAdapter, eCsrAuthType RSNAuthType); QDF_STATUS hdd_roam_register_tdlssta(hdd_adapter_t *pAdapter, const uint8_t *peerMac, uint16_t staId, uint8_t ucastSig, uint8_t qos); +#endif /** * hdd_perform_roam_set_key_complete() - perform set key complete diff --git a/core/hdd/inc/wlan_hdd_main.h b/core/hdd/inc/wlan_hdd_main.h index 6f263d2b1b64..7d9926e58aac 100644 --- a/core/hdd/inc/wlan_hdd_main.h +++ b/core/hdd/inc/wlan_hdd_main.h @@ -54,9 +54,7 @@ #include <linux/wakelock.h> #endif #include <wlan_hdd_ftm.h> -#ifdef FEATURE_WLAN_TDLS #include "wlan_hdd_tdls.h" -#endif #include "wlan_hdd_tsf.h" #include "wlan_hdd_cfg80211.h" #include <qdf_defer.h> diff --git a/core/hdd/inc/wlan_hdd_tdls.h b/core/hdd/inc/wlan_hdd_tdls.h index 37e6243d572a..7fa22b27002d 100644 --- a/core/hdd/inc/wlan_hdd_tdls.h +++ b/core/hdd/inc/wlan_hdd_tdls.h @@ -710,8 +710,33 @@ void hdd_tdls_context_destroy(hdd_context_t *hdd_ctx); int wlan_hdd_tdls_antenna_switch(hdd_context_t *hdd_ctx, hdd_adapter_t *adapter, uint32_t mode); -hdd_adapter_t *wlan_hdd_tdls_check_and_enable(hdd_context_t *hdd_ctx); +/** + * wlan_hdd_tdls_notify_connect() - Update tdls state for every + * connect event. + * @adapter: hdd adapter + * @csr_roam_info: csr information + * + * After every connect event in the system, check whether TDLS + * can be enabled in the system. If TDLS can be enabled, update the + * TDLS state as needed. + * + * Return: None + */ +void wlan_hdd_tdls_notify_connect(hdd_adapter_t *adapter, + tCsrRoamInfo *csr_roam_info); +/** + * wlan_hdd_tdls_notify_disconnect() - Update tdls state for every + * disconnect event. + * @adapter: hdd adapter + * + * After every disconnect event in the system, check whether TDLS + * can be disabled/enabled in the system and update the + * TDLS state as needed. + * + * Return: None + */ +void wlan_hdd_tdls_notify_disconnect(hdd_adapter_t *adapter); #else static inline void hdd_tdls_notify_mode_change(hdd_adapter_t *adapter, @@ -742,19 +767,18 @@ static inline int wlan_hdd_tdls_antenna_switch(hdd_context_t *hdd_ctx, { return 0; } - -static inline hdd_adapter_t *wlan_hdd_tdls_check_and_enable( - hdd_context_t *hdd_ctx) -{ - return NULL; -} - static inline void wlan_hdd_update_tdls_info(hdd_adapter_t *adapter, bool tdls_prohibited, bool tdls_chan_swit_prohibited) { } - +static inline void wlan_hdd_tdls_notify_connect(hdd_adapter_t *adapter, + tCsrRoamInfo *csr_roam_info) +{ +} +static inline void wlan_hdd_tdls_notify_disconnect(hdd_adapter_t *adapter) +{ +} #endif /* End of FEATURE_WLAN_TDLS */ #ifdef FEATURE_WLAN_DIAG_SUPPORT diff --git a/core/hdd/src/wlan_hdd_assoc.c b/core/hdd/src/wlan_hdd_assoc.c index 8810512e169b..c5a5fcac0922 100644 --- a/core/hdd/src/wlan_hdd_assoc.c +++ b/core/hdd/src/wlan_hdd_assoc.c @@ -47,9 +47,7 @@ #include "wlan_hdd_cfg80211.h" #include "csr_inside_api.h" #include "wlan_hdd_p2p.h" -#ifdef FEATURE_WLAN_TDLS #include "wlan_hdd_tdls.h" -#endif #include "sme_api.h" #include "wlan_hdd_hostapd.h" #include <wlan_hdd_ipa.h> @@ -1191,7 +1189,6 @@ static void hdd_send_association_event(struct net_device *dev, int we_event; char *msg; struct qdf_mac_addr peerMacAddr; - hdd_adapter_t *tdls_adapter; /* Added to find the auth type on the fly at run time */ /* rather than with cfg to see if FT is enabled */ @@ -1282,14 +1279,8 @@ static void hdd_send_association_event(struct net_device *dev, pAdapter->sessionId, &chan_info, pAdapter->device_mode); - - hdd_info("Assoc: Check and enable or disable TDLS state "); - if ((pAdapter->device_mode == QDF_STA_MODE || - pAdapter->device_mode == QDF_P2P_CLIENT_MODE) && - !pHddCtx->concurrency_marked) - wlan_hdd_update_tdls_info(pAdapter, - pCsrRoamInfo->tdls_prohibited, - pCsrRoamInfo->tdls_chan_swit_prohibited); + /* Update tdls module about connection event */ + wlan_hdd_tdls_notify_connect(pAdapter, pCsrRoamInfo); #ifdef MSM_PLATFORM #if defined(CONFIG_ICNSS) || defined(CONFIG_CNSS) @@ -1335,24 +1326,9 @@ static void hdd_send_association_event(struct net_device *dev, pAdapter->device_mode); } hdd_lpass_notify_disconnect(pAdapter); -#ifdef FEATURE_WLAN_TDLS - hdd_info("Disassoc: Check and enable or disable TDLS state "); - if ((pAdapter->device_mode == QDF_STA_MODE || - pAdapter->device_mode == QDF_P2P_CLIENT_MODE) && - !pHddCtx->concurrency_marked) { - wlan_hdd_update_tdls_info(pAdapter, - true, - true); - } - if (!pHddCtx->concurrency_marked) { - tdls_adapter = wlan_hdd_tdls_check_and_enable( - pHddCtx); - if (NULL != tdls_adapter) - wlan_hdd_update_tdls_info(tdls_adapter, - false, - false); - } -#endif + /* Update tdls module about the disconnection event */ + wlan_hdd_tdls_notify_disconnect(pAdapter); + #ifdef MSM_PLATFORM /* stop timer in sta/p2p_cli */ spin_lock_bh(&pHddCtx->bus_bw_lock); @@ -4037,6 +4013,23 @@ hdd_roam_tdls_status_update_handler(hdd_adapter_t *pAdapter, return status; } +#else + +static inline QDF_STATUS hdd_roam_deregister_tdlssta(hdd_adapter_t *pAdapter, + uint8_t staId) +{ + return QDF_STATUS_SUCCESS; +} + +static inline QDF_STATUS +hdd_roam_tdls_status_update_handler(hdd_adapter_t *pAdapter, + tCsrRoamInfo *pRoamInfo, + uint32_t roamId, + eRoamCmdStatus roamStatus, + eCsrRoamResult roamResult) +{ + return QDF_STATUS_SUCCESS; +} #endif #ifdef WLAN_FEATURE_11W diff --git a/core/hdd/src/wlan_hdd_ioctl.c b/core/hdd/src/wlan_hdd_ioctl.c index fcc2f5e0e7b6..61c1a77aec74 100644 --- a/core/hdd/src/wlan_hdd_ioctl.c +++ b/core/hdd/src/wlan_hdd_ioctl.c @@ -6639,8 +6639,7 @@ static int drv_cmd_set_antenna_mode(hdd_adapter_t *adapter, /* Check TDLS status and update antenna mode */ if ((QDF_STA_MODE == adapter->device_mode) && - cds_is_sta_active_connection_exists() && - (hdd_ctx->connected_peer_count > 0)) { + cds_is_sta_active_connection_exists()) { ret = wlan_hdd_tdls_antenna_switch(hdd_ctx, adapter, mode); if (0 != ret) diff --git a/core/hdd/src/wlan_hdd_tdls.c b/core/hdd/src/wlan_hdd_tdls.c index eaac53a0a77f..4abe1fef943f 100644 --- a/core/hdd/src/wlan_hdd_tdls.c +++ b/core/hdd/src/wlan_hdd_tdls.c @@ -1768,16 +1768,15 @@ int wlan_hdd_tdls_set_params(struct net_device *dev, } /** - * wlan_hdd_tdls_check_and_enable() - check system state and enable tdls + * wlan_hdd_tdls_get_adapter() - check system state and return hdd adapter * @hdd_ctx: hdd context * - * After every disassociation in the system, check whether TDLS - * can be enabled in the system. If TDLS possible return the - * corresponding hdd adapter to enable TDLS. + * If TDLS possible, return the corresponding hdd adapter + * to enable TDLS in the system. * * Return: hdd adapter pointer or NULL. */ -hdd_adapter_t *wlan_hdd_tdls_check_and_enable(hdd_context_t *hdd_ctx) +static hdd_adapter_t *wlan_hdd_tdls_get_adapter(hdd_context_t *hdd_ctx) { if (cds_get_connection_count() > 1) return NULL; @@ -1952,6 +1951,74 @@ void wlan_hdd_update_tdls_info(hdd_adapter_t *adapter, bool tdls_prohibited, } /** + * wlan_hdd_tdls_notify_connect() - Update tdls state for every + * connect event. + * @adapter: hdd adapter + * @csr_roam_info: csr information + * + * After every connect event in the system, check whether TDLS + * can be enabled in the system. If TDLS can be enabled, update the + * TDLS state as needed. + * + * Return: None + */ +void wlan_hdd_tdls_notify_connect(hdd_adapter_t *adapter, + tCsrRoamInfo *csr_roam_info) +{ + hdd_context_t *hdd_ctx = WLAN_HDD_GET_CTX(adapter); + + hdd_info("Check and update TDLS state"); + + /* Association event */ + if ((adapter->device_mode == QDF_STA_MODE || + adapter->device_mode == QDF_P2P_CLIENT_MODE) && + !hdd_ctx->concurrency_marked) { + wlan_hdd_update_tdls_info(adapter, + csr_roam_info->tdls_prohibited, + csr_roam_info->tdls_chan_swit_prohibited); + } +} + +/** + * wlan_hdd_tdls_notify_disconnect() - Update tdls state for every + * disconnect event. + * @adapter: hdd adapter + * + * After every disconnect event in the system, check whether TDLS + * can be disabled/enabled in the system and update the + * TDLS state as needed. + * + * Return: None + */ +void wlan_hdd_tdls_notify_disconnect(hdd_adapter_t *adapter) +{ + hdd_adapter_t *temp_adapter; + hdd_context_t *hdd_ctx = WLAN_HDD_GET_CTX(adapter); + + hdd_info("Check and update TDLS state"); + + /* Disassociation event */ + if ((adapter->device_mode == QDF_STA_MODE || + adapter->device_mode == QDF_P2P_CLIENT_MODE) && + !hdd_ctx->concurrency_marked) { + wlan_hdd_update_tdls_info(adapter, true, true); + } + + /* If concurrency is not marked, then we have to + * check, whether TDLS could be enabled in the + * system after this disassoc event. + */ + if (!hdd_ctx->concurrency_marked) { + temp_adapter = wlan_hdd_tdls_get_adapter( + hdd_ctx); + if (NULL != temp_adapter) + wlan_hdd_update_tdls_info(temp_adapter, + false, + false); + } +} + +/** * wlan_hdd_tdls_set_sta_id() - set station ID on a tdls peer * @pAdapter: HDD adapter * @mac: MAC address of a tdls peer @@ -2483,7 +2550,7 @@ void wlan_hdd_tdls_decrement_peer_count(hdd_adapter_t *pAdapter) hdd_err("TDLS set state is not cleared correctly !!!"); pHddCtx->concurrency_marked = false; } - tdls_adapter = wlan_hdd_tdls_check_and_enable(pHddCtx); + tdls_adapter = wlan_hdd_tdls_get_adapter(pHddCtx); if (tdls_adapter) wlan_hdd_update_tdls_info(tdls_adapter, false, false); } @@ -5134,6 +5201,11 @@ void wlan_hdd_tdls_update_rx_pkt_cnt(hdd_adapter_t *adapter, uint8_t valid_mac_entries; struct qdf_mac_addr *mac_addr; + hdd_ctx = WLAN_HDD_GET_CTX(adapter); + + if (!hdd_ctx->enable_tdls_connection_tracker) + return; + mac_addr = (struct qdf_mac_addr *)(skb->data+QDF_MAC_ADDR_SIZE); if (qdf_is_macaddr_group(mac_addr)) return; @@ -5143,7 +5215,6 @@ void wlan_hdd_tdls_update_rx_pkt_cnt(hdd_adapter_t *adapter, mac_addr, QDF_MAC_ADDR_SIZE) == 0) return; - hdd_ctx = WLAN_HDD_GET_CTX(adapter); tdls_ctx = adapter->sessionCtx.station.pHddTdlsCtx; qdf_spin_lock_bh(&hdd_ctx->tdls_ct_spinlock); @@ -5197,6 +5268,11 @@ void wlan_hdd_tdls_update_tx_pkt_cnt(hdd_adapter_t *adapter, uint8_t valid_mac_entries; struct qdf_mac_addr *mac_addr; + hdd_ctx = WLAN_HDD_GET_CTX(adapter); + + if (!hdd_ctx->enable_tdls_connection_tracker) + return; + mac_addr = (struct qdf_mac_addr *)skb->data; if (qdf_is_macaddr_group(mac_addr)) return; @@ -5206,7 +5282,6 @@ void wlan_hdd_tdls_update_tx_pkt_cnt(hdd_adapter_t *adapter, QDF_MAC_ADDR_SIZE) == 0) return; - hdd_ctx = WLAN_HDD_GET_CTX(adapter); tdls_ctx = adapter->sessionCtx.station.pHddTdlsCtx; qdf_spin_lock_bh(&hdd_ctx->tdls_ct_spinlock); @@ -5816,9 +5891,12 @@ int wlan_hdd_tdls_antenna_switch(hdd_context_t *hdd_ctx, { uint8_t tdls_peer_cnt; uint32_t vdev_nss; - hdd_station_ctx_t *sta_ctx = - WLAN_HDD_GET_STATION_CTX_PTR(adapter); + hdd_station_ctx_t *sta_ctx; + + if (hdd_ctx->connected_peer_count == 0) + return 0; + sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(adapter); /* Check whether TDLS antenna switch is in progress */ if (hdd_ctx->tdls_nss_switch_in_progress) { if (hdd_ctx->tdls_nss_teardown_complete == false) { diff --git a/core/hdd/src/wlan_hdd_tx_rx.c b/core/hdd/src/wlan_hdd_tx_rx.c index 918973a91cee..0fea7d814579 100644 --- a/core/hdd/src/wlan_hdd_tx_rx.c +++ b/core/hdd/src/wlan_hdd_tx_rx.c @@ -47,18 +47,12 @@ #include <net/ieee80211_radiotap.h> #include "sap_api.h" #include "wlan_hdd_wmm.h" - -#ifdef FEATURE_WLAN_TDLS #include "wlan_hdd_tdls.h" -#endif #include <wlan_hdd_ipa.h> - #include "wlan_hdd_ocb.h" #include "wlan_hdd_lro.h" - #include "cdp_txrx_peer_ops.h" #include "ol_txrx.h" - #include "wlan_hdd_nan_datapath.h" #include "pld_common.h" @@ -419,8 +413,8 @@ int __hdd_hard_start_xmit(struct sk_buff *skb, struct net_device *dev) hdd_station_ctx_t *pHddStaCtx = &pAdapter->sessionCtx.station; #ifdef QCA_PKT_PROTO_TRACE uint8_t proto_type = 0; -#endif /* QCA_PKT_PROTO_TRACE */ hdd_context_t *hdd_ctx = WLAN_HDD_GET_CTX(pAdapter); +#endif /* QCA_PKT_PROTO_TRACE */ #ifdef QCA_WIFI_FTM if (hdd_get_conparam() == QDF_GLOBAL_FTM_MODE) { @@ -551,8 +545,7 @@ int __hdd_hard_start_xmit(struct sk_buff *skb, struct net_device *dev) pAdapter->stats.tx_bytes += skb->len; - if (hdd_ctx->enable_tdls_connection_tracker) - wlan_hdd_tdls_update_tx_pkt_cnt(pAdapter, skb); + wlan_hdd_tdls_update_tx_pkt_cnt(pAdapter, skb); ++pAdapter->stats.tx_packets; @@ -965,8 +958,7 @@ QDF_STATUS hdd_rx_packet_cbk(void *context, qdf_nbuf_t rxBuf) qdf_nbuf_data_addr(rxBuf), sizeof(qdf_nbuf_data(rxBuf)), QDF_RX)); - if (pHddCtx->enable_tdls_connection_tracker) - wlan_hdd_tdls_update_rx_pkt_cnt(pAdapter, skb); + wlan_hdd_tdls_update_rx_pkt_cnt(pAdapter, skb); skb->dev = pAdapter->dev; skb->protocol = eth_type_trans(skb, skb->dev); diff --git a/core/mac/src/pe/include/lim_api.h b/core/mac/src/pe/include/lim_api.h index 9afa50d2fcc2..dc78c170d79e 100644 --- a/core/mac/src/pe/include/lim_api.h +++ b/core/mac/src/pe/include/lim_api.h @@ -164,6 +164,23 @@ extern void lim_trigger_sta_deletion(tpAniSirGlobal pMac, tpDphHashNode pStaDs, extern void lim_send_sme_tdls_del_sta_ind(tpAniSirGlobal pMac, tpDphHashNode pStaDs, tpPESession psessionEntry, uint16_t reasonCode); +/** + * lim_set_tdls_flags() - update tdls flags based on newer STA connection + * information + * @roam_sync_ind_ptr: pointer to roam offload structure + * @ft_session_ptr: pointer to PE session + * + * Set TDLS flags as per new STA connection capabilities. + * + * Return: None + */ +void lim_set_tdls_flags(roam_offload_synch_ind *roam_sync_ind_ptr, + tpPESession ft_session_ptr); +#else +static inline void lim_set_tdls_flags(roam_offload_synch_ind *roam_sync_ind_ptr, + tpPESession ft_session_ptr) +{ +} #endif /* / Function that checks for change in AP's capabilties on STA */ diff --git a/core/mac/src/pe/include/lim_session.h b/core/mac/src/pe/include/lim_session.h index b8b34a98fb79..4b36c7ee704c 100644 --- a/core/mac/src/pe/include/lim_session.h +++ b/core/mac/src/pe/include/lim_session.h @@ -344,6 +344,10 @@ typedef struct sPESession /* Added to Support BT-AMP */ uint8_t freePeerIdxTail; uint16_t gLimNumOfCurrentSTAs; #ifdef FEATURE_WLAN_TDLS + /* TDLS parameters to check whether TDLS + * and TDLS channel switch is allowed in the + * AP network + */ uint32_t peerAIDBitmap[2]; bool tdls_prohibited; bool tdls_chan_swit_prohibited; diff --git a/core/mac/src/pe/lim/lim_api.c b/core/mac/src/pe/lim/lim_api.c index 2700e9ad55b7..136d0e920579 100644 --- a/core/mac/src/pe/lim/lim_api.c +++ b/core/mac/src/pe/lim/lim_api.c @@ -2070,10 +2070,7 @@ QDF_STATUS pe_roam_synch_callback(tpAniSirGlobal mac_ctx, roam_sync_ind_ptr->join_rsp->nss = curr_sta_ds->nss; roam_sync_ind_ptr->join_rsp->max_rate_flags = lim_get_max_rate_flags(mac_ctx, curr_sta_ds); - roam_sync_ind_ptr->join_rsp->tdls_prohibited = - ft_session_ptr->tdls_prohibited; - roam_sync_ind_ptr->join_rsp->tdls_chan_swit_prohibited = - ft_session_ptr->tdls_chan_swit_prohibited; + lim_set_tdls_flags(roam_sync_ind_ptr, ft_session_ptr); roam_sync_ind_ptr->join_rsp->aid = ft_session_ptr->limAID; lim_fill_join_rsp_ht_caps(ft_session_ptr, roam_sync_ind_ptr->join_rsp); ft_session_ptr->limPrevSmeState = ft_session_ptr->limSmeState; diff --git a/core/mac/src/pe/lim/lim_process_tdls.c b/core/mac/src/pe/lim/lim_process_tdls.c index 1e87bd405276..b2e15757fba5 100644 --- a/core/mac/src/pe/lim/lim_process_tdls.c +++ b/core/mac/src/pe/lim/lim_process_tdls.c @@ -963,6 +963,15 @@ wma_tx_frame_with_tx_complete_send(tpAniSirGlobal pMac, void *pPacket, } #endif +void lim_set_tdls_flags(roam_offload_synch_ind *roam_sync_ind_ptr, + tpPESession ft_session_ptr) +{ + roam_sync_ind_ptr->join_rsp->tdls_prohibited = + ft_session_ptr->tdls_prohibited; + roam_sync_ind_ptr->join_rsp->tdls_chan_swit_prohibited = + ft_session_ptr->tdls_chan_swit_prohibited; +} + /* * TDLS setup Request frame on AP link */ diff --git a/core/mac/src/pe/lim/lim_types.h b/core/mac/src/pe/lim/lim_types.h index 2dd2df5994e7..5b6ec4673827 100644 --- a/core/mac/src/pe/lim/lim_types.h +++ b/core/mac/src/pe/lim/lim_types.h @@ -539,6 +539,11 @@ static inline tSirRetStatus lim_delete_tdls_peers(tpAniSirGlobal mac_ctx, { return eSIR_SUCCESS; } +static inline void lim_init_tdls_data(tpAniSirGlobal pMac, + tpPESession pSessionEntry) +{ + +} #endif /* Algorithms & Link Monitoring related functions */ diff --git a/core/sme/inc/csr_api.h b/core/sme/inc/csr_api.h index 517a01185aab..f36805226cb5 100644 --- a/core/sme/inc/csr_api.h +++ b/core/sme/inc/csr_api.h @@ -476,10 +476,12 @@ typedef enum { eCSR_ROAM_PREAUTH_STATUS_SUCCESS, eCSR_ROAM_PREAUTH_STATUS_FAILURE, eCSR_ROAM_HANDOVER_SUCCESS, -#ifdef FEATURE_WLAN_TDLS + /* + * TDLS callback events + */ eCSR_ROAM_TDLS_STATUS_UPDATE, eCSR_ROAM_RESULT_MGMT_TX_COMPLETE_IND, -#endif + /* Disaconnect all the clients */ eCSR_ROAM_DISCONNECT_ALL_P2P_CLIENTS, /* Stopbss triggered from SME due to different */ @@ -587,7 +589,7 @@ typedef enum { eCSR_ROAM_RESULT_MAX_ASSOC_EXCEEDED, /* Assoc rejected due to concurrent session running on a diff channel */ eCSR_ROAM_RESULT_ASSOC_FAIL_CON_CHANNEL, -#ifdef FEATURE_WLAN_TDLS + /* TDLS events */ eCSR_ROAM_RESULT_ADD_TDLS_PEER, eCSR_ROAM_RESULT_UPDATE_TDLS_PEER, eCSR_ROAM_RESULT_DELETE_TDLS_PEER, @@ -598,7 +600,6 @@ typedef enum { eCSR_ROAM_RESULT_TDLS_SHOULD_TEARDOWN, eCSR_ROAM_RESULT_TDLS_SHOULD_PEER_DISCONNECTED, eCSR_ROAM_RESULT_TDLS_CONNECTION_TRACKER_NOTIFICATION, -#endif eCSR_ROAM_RESULT_IBSS_PEER_INFO_SUCCESS, eCSR_ROAM_RESULT_IBSS_PEER_INFO_FAILED, @@ -1386,6 +1387,11 @@ typedef struct tagCsrRoamInfo { uint32_t roc_scan_id; uint32_t rxChan; #ifdef FEATURE_WLAN_TDLS + /* + * TDLS parameters to check whether TDLS + * and TDLS channel switch is allowed in the + * AP network + */ uint8_t staType; bool tdls_prohibited; /* per ExtCap in Assoc/Reassoc resp */ bool tdls_chan_swit_prohibited; /* per ExtCap in Assoc/Reassoc resp */ @@ -1740,10 +1746,11 @@ QDF_STATUS csr_roam_issue_ft_roam_offload_synch(tHalHandle hHal, #endif typedef void (*tCsrLinkStatusCallback)(uint8_t status, void *pContext); #ifdef FEATURE_WLAN_TDLS -void csr_roam_fill_tdls_info(tCsrRoamInfo *roam_info, tpSirSmeJoinRsp join_rsp); +void csr_roam_fill_tdls_info(tpAniSirGlobal mac_ctx, tCsrRoamInfo *roam_info, + tpSirSmeJoinRsp join_rsp); #else -static inline void csr_roam_fill_tdls_info(tCsrRoamInfo *roam_info, - tpSirSmeJoinRsp join_rsp) +static inline void csr_roam_fill_tdls_info(tpAniSirGlobal mac_ctx, tCsrRoamInfo *roam_info, + tpSirSmeJoinRsp join_rsp) {} #endif diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index fab7f0e48638..896fa91b593d 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -19468,11 +19468,16 @@ fail: * * Return: None */ -void csr_roam_fill_tdls_info(tCsrRoamInfo *roam_info, tpSirSmeJoinRsp join_rsp) +void csr_roam_fill_tdls_info(tpAniSirGlobal mac_ctx, tCsrRoamInfo *roam_info, + tpSirSmeJoinRsp join_rsp) { roam_info->tdls_prohibited = join_rsp->tdls_prohibited; roam_info->tdls_chan_swit_prohibited = join_rsp->tdls_chan_swit_prohibited; + sms_log(mac_ctx, LOG1, + FL("tdls:prohibit: %d, chan_swit_prohibit: %d"), + roam_info->tdls_prohibited, + roam_info->tdls_chan_swit_prohibited); } #endif @@ -19717,11 +19722,7 @@ void csr_roam_synch_callback(tpAniSirGlobal mac_ctx, roam_info->chan_info.nss = roam_synch_data->join_rsp->nss; roam_info->chan_info.rate_flags = roam_synch_data->join_rsp->max_rate_flags; - csr_roam_fill_tdls_info(roam_info, roam_synch_data->join_rsp); - sms_log(mac_ctx, LOG1, - FL("tdls:prohibit: %d, chan_swit_prohibit: %d"), - roam_info->tdls_prohibited, - roam_info->tdls_chan_swit_prohibited); + csr_roam_fill_tdls_info(mac_ctx, roam_info, roam_synch_data->join_rsp); #ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH src_profile = &roam_synch_data->join_rsp->HTProfile; dst_profile = &conn_profile->HTProfile; |
