diff options
| -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 |
