summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/mac/src/pe/lim/lim_send_messages.c7
-rw-r--r--core/mac/src/pe/lim/lim_utils.c2
-rw-r--r--core/mac/src/pe/lim/lim_utils.h2
-rw-r--r--core/wma/inc/wma.h1
-rw-r--r--core/wma/inc/wma_if.h1
-rw-r--r--core/wma/src/wma_dev_if.c4
-rw-r--r--core/wma/src/wma_scan_roam.c1
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