diff options
| author | Varun Reddy Yeturu <varunreddy.yeturu@codeaurora.org> | 2017-03-20 17:18:33 -0700 |
|---|---|---|
| committer | qcabuildsw <qcabuildsw@localhost> | 2017-03-24 19:09:04 -0700 |
| commit | 5675fb52b1503f8ef8dcd8f91eab927ef1eb8ffd (patch) | |
| tree | 24d6e2170800cc99d67ca22322f1603cc6d9d75d | |
| parent | 74477b09ef43a4d1ccfcdc32660684a3c6e30ac4 (diff) | |
qcacld-3.0: Inform LDPC self capability to firmware
During the set channel request, as part of vdev
start for INFRA STA, inform the firmware about the
self capability of the Rx LDPC based on the channel
and hw_mode it is coming up, so that the firmware can
accordingly enable/disable the Async DBS scan.
Change-Id: Ic7495f2094848acc558519102a368e6b9fcdbc3e
CRs-Fixed: 2024088
| -rw-r--r-- | core/mac/src/pe/lim/lim_send_messages.c | 7 | ||||
| -rw-r--r-- | core/mac/src/pe/lim/lim_utils.c | 2 | ||||
| -rw-r--r-- | core/mac/src/pe/lim/lim_utils.h | 2 | ||||
| -rw-r--r-- | core/wma/inc/wma.h | 1 | ||||
| -rw-r--r-- | core/wma/inc/wma_if.h | 1 | ||||
| -rw-r--r-- | core/wma/src/wma_dev_if.c | 4 | ||||
| -rw-r--r-- | core/wma/src/wma_scan_roam.c | 1 |
7 files changed, 17 insertions, 1 deletions
diff --git a/core/mac/src/pe/lim/lim_send_messages.c b/core/mac/src/pe/lim/lim_send_messages.c index 1be31a28f3ef..275900c31868 100644 --- a/core/mac/src/pe/lim/lim_send_messages.c +++ b/core/mac/src/pe/lim/lim_send_messages.c @@ -42,6 +42,8 @@ #ifdef FEATURE_WLAN_DIAG_SUPPORT_LIM /* FEATURE_WLAN_DIAG_SUPPORT */ #include "host_diag_core_log.h" #endif /* FEATURE_WLAN_DIAG_SUPPORT */ +#include "wma.h" +#include "lim_utils.h" /* When beacon filtering is enabled, firmware will * analyze the selected beacons received during BMPS, @@ -213,6 +215,7 @@ tSirRetStatus lim_send_switch_chnl_params(tpAniSirGlobal pMac, tpSwitchChannelParams pChnlParams = NULL; tSirMsgQ msgQ; tpPESession pSessionEntry; + bool is_current_hwmode_dbs; pSessionEntry = pe_find_session_by_session_id(pMac, peSessionId); if (pSessionEntry == NULL) { lim_log(pMac, LOGE, FL( @@ -265,6 +268,10 @@ tSirRetStatus lim_send_switch_chnl_params(tpAniSirGlobal pMac, else if (cds_is_10_mhz_enabled()) pChnlParams->ch_width = CH_WIDTH_10MHZ; + /* Inform LDPC cap to firmware */ + is_current_hwmode_dbs = wma_is_current_hwmode_dbs(); + pChnlParams->rx_ldpc = + lim_get_rx_ldpc(pMac, chnlNumber, is_current_hwmode_dbs); /* we need to defer the message until we * get the response back from WMA */ diff --git a/core/mac/src/pe/lim/lim_utils.c b/core/mac/src/pe/lim/lim_utils.c index c8bb6857898e..56e636c94a46 100644 --- a/core/mac/src/pe/lim/lim_utils.c +++ b/core/mac/src/pe/lim/lim_utils.c @@ -6477,7 +6477,7 @@ static QDF_STATUS lim_send_ie(tpAniSirGlobal mac_ctx, uint32_t sme_session_id, * * Return: true if enabled and false otherwise */ -static inline bool lim_get_rx_ldpc(tpAniSirGlobal mac_ctx, uint8_t ch, +bool lim_get_rx_ldpc(tpAniSirGlobal mac_ctx, uint8_t ch, uint8_t is_hw_mode_dbs) { enum hw_mode_dbs_capab hw_mode_to_use; diff --git a/core/mac/src/pe/lim/lim_utils.h b/core/mac/src/pe/lim/lim_utils.h index b8a73645824b..c7d6c2c8b1fb 100644 --- a/core/mac/src/pe/lim/lim_utils.h +++ b/core/mac/src/pe/lim/lim_utils.h @@ -694,4 +694,6 @@ tSirRetStatus lim_strip_ie(tpAniSirGlobal mac_ctx, uint8_t eid, eSizeOfLenField size_of_len_field, uint8_t *oui, uint8_t out_len, uint8_t *extracted_ie, uint32_t eid_max_len); +bool lim_get_rx_ldpc(tpAniSirGlobal mac_ctx, uint8_t ch, + uint8_t is_hw_mode_dbs); #endif /* __LIM_UTILS_H */ diff --git a/core/wma/inc/wma.h b/core/wma/inc/wma.h index 9956744e5002..3c75a625e017 100644 --- a/core/wma/inc/wma.h +++ b/core/wma/inc/wma.h @@ -1811,6 +1811,7 @@ struct wma_vdev_start_req { uint32_t preferred_tx_streams; uint32_t preferred_rx_streams; uint8_t beacon_tx_rate; + bool ldpc_rx_enabled; }; /** diff --git a/core/wma/inc/wma_if.h b/core/wma/inc/wma_if.h index 6052cecc5a06..8f89ef82198c 100644 --- a/core/wma/inc/wma_if.h +++ b/core/wma/inc/wma_if.h @@ -913,6 +913,7 @@ typedef struct { uint8_t restart_on_chan_switch; uint8_t nss; + bool rx_ldpc; } tSwitchChannelParams, *tpSwitchChannelParams; typedef void (*tpSetLinkStateCallback)(tpAniSirGlobal pMac, void *msgParam, diff --git a/core/wma/src/wma_dev_if.c b/core/wma/src/wma_dev_if.c index c2adde986dd0..a7785470d9df 100644 --- a/core/wma/src/wma_dev_if.c +++ b/core/wma/src/wma_dev_if.c @@ -2178,11 +2178,15 @@ QDF_STATUS wma_vdev_start(tp_wma_handle wma, params.hidden_ssid = req->hidden_ssid; params.pmf_enabled = req->pmf_enabled; + params.ldpc_rx_enabled = req->ldpc_rx_enabled; if (req->hidden_ssid) temp_flags |= WMI_UNIFIED_VDEV_START_HIDDEN_SSID; if (req->pmf_enabled) temp_flags |= WMI_UNIFIED_VDEV_START_PMF_ENABLED; + + if (req->ldpc_rx_enabled) + temp_flags |= WMI_UNIFIED_VDEV_START_LDPC_RX_ENABLED; } params.num_noa_descriptors = 0; diff --git a/core/wma/src/wma_scan_roam.c b/core/wma/src/wma_scan_roam.c index d9950974f951..919a9add02fa 100644 --- a/core/wma/src/wma_scan_roam.c +++ b/core/wma/src/wma_scan_roam.c @@ -3033,6 +3033,7 @@ void wma_set_channel(tp_wma_handle wma, tpSwitchChannelParams params) req.beacon_intval = 100; req.dtim_period = 1; req.is_dfs = params->isDfsChannel; + req.ldpc_rx_enabled = params->rx_ldpc; /* In case of AP mode, once radar is detected, we need to * issuse VDEV RESTART, so we making is_channel_switch as |
