mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-25 14:13:01 -04:00
qcacld-3.0: Refine the MGMT rate valid check function
qcacld-2.0 to qcacld-3.0 propagation 1. CCK rate should not allowed in 5G mode 2. Avoid configure 2 stream rates to send MGMT packet Change-Id: Id222bc5c41264ba802a43a02d333f16578bc4a5d CRs-Fixed: 2182955
This commit is contained in:
parent
b64650c29a
commit
d1a229d412
1 changed files with 14 additions and 7 deletions
|
|
@ -601,10 +601,11 @@ static inline void wma_get_link_probe_timeout(struct sAniSirGlobal *mac,
|
|||
/**
|
||||
* wma_verify_rate_code() - verify if rate code is valid.
|
||||
* @rate_code: rate code
|
||||
* @band: band information
|
||||
*
|
||||
* Return: verify result
|
||||
*/
|
||||
static bool wma_verify_rate_code(u_int32_t rate_code)
|
||||
static bool wma_verify_rate_code(u_int32_t rate_code, enum cds_band_type band)
|
||||
{
|
||||
uint8_t preamble, nss, rate;
|
||||
bool valid = true;
|
||||
|
|
@ -615,7 +616,7 @@ static bool wma_verify_rate_code(u_int32_t rate_code)
|
|||
|
||||
switch (preamble) {
|
||||
case WMI_RATE_PREAMBLE_CCK:
|
||||
if (nss != 0 || rate > 3)
|
||||
if (nss != 0 || rate > 3 || band == CDS_BAND_5GHZ)
|
||||
valid = false;
|
||||
break;
|
||||
case WMI_RATE_PREAMBLE_OFDM:
|
||||
|
|
@ -623,11 +624,11 @@ static bool wma_verify_rate_code(u_int32_t rate_code)
|
|||
valid = false;
|
||||
break;
|
||||
case WMI_RATE_PREAMBLE_HT:
|
||||
if (nss > 1 || rate > 7)
|
||||
if (nss != 0 || rate > 7)
|
||||
valid = false;
|
||||
break;
|
||||
case WMI_RATE_PREAMBLE_VHT:
|
||||
if (nss > 1 || rate > 9)
|
||||
if (nss != 0 || rate > 9)
|
||||
valid = false;
|
||||
break;
|
||||
default:
|
||||
|
|
@ -653,6 +654,7 @@ void wma_set_vdev_mgmt_rate(tp_wma_handle wma, uint8_t vdev_id)
|
|||
uint32_t cfg_val;
|
||||
int ret;
|
||||
uint32_t per_band_mgmt_tx_rate = 0;
|
||||
enum cds_band_type band = 0;
|
||||
struct sAniSirGlobal *mac = cds_get_context(QDF_MODULE_ID_PE);
|
||||
|
||||
if (NULL == mac) {
|
||||
|
|
@ -662,8 +664,9 @@ void wma_set_vdev_mgmt_rate(tp_wma_handle wma, uint8_t vdev_id)
|
|||
|
||||
if (wlan_cfg_get_int(mac, WNI_CFG_RATE_FOR_TX_MGMT,
|
||||
&cfg_val) == eSIR_SUCCESS) {
|
||||
band = CDS_BAND_ALL;
|
||||
if ((cfg_val == WNI_CFG_RATE_FOR_TX_MGMT_STADEF) ||
|
||||
!wma_verify_rate_code(cfg_val)) {
|
||||
!wma_verify_rate_code(cfg_val, band)) {
|
||||
WMA_LOGD("default WNI_CFG_RATE_FOR_TX_MGMT, ignore");
|
||||
} else {
|
||||
ret = wma_vdev_set_param(
|
||||
|
|
@ -682,8 +685,10 @@ void wma_set_vdev_mgmt_rate(tp_wma_handle wma, uint8_t vdev_id)
|
|||
|
||||
if (wlan_cfg_get_int(mac, WNI_CFG_RATE_FOR_TX_MGMT_2G,
|
||||
&cfg_val) == eSIR_SUCCESS) {
|
||||
band = CDS_BAND_2GHZ;
|
||||
if ((cfg_val == WNI_CFG_RATE_FOR_TX_MGMT_2G_STADEF) ||
|
||||
!wma_verify_rate_code(cfg_val)) {
|
||||
!wma_verify_rate_code(cfg_val, band)) {
|
||||
WMA_LOGD("use default 2G MGMT rate.");
|
||||
per_band_mgmt_tx_rate &=
|
||||
~(1 << TX_MGMT_RATE_2G_ENABLE_OFFSET);
|
||||
} else {
|
||||
|
|
@ -698,8 +703,10 @@ void wma_set_vdev_mgmt_rate(tp_wma_handle wma, uint8_t vdev_id)
|
|||
|
||||
if (wlan_cfg_get_int(mac, WNI_CFG_RATE_FOR_TX_MGMT_5G,
|
||||
&cfg_val) == eSIR_SUCCESS) {
|
||||
band = CDS_BAND_5GHZ;
|
||||
if ((cfg_val == WNI_CFG_RATE_FOR_TX_MGMT_5G_STADEF) ||
|
||||
!wma_verify_rate_code(cfg_val)) {
|
||||
!wma_verify_rate_code(cfg_val, band)) {
|
||||
WMA_LOGD("use default 5G MGMT rate.");
|
||||
per_band_mgmt_tx_rate &=
|
||||
~(1 << TX_MGMT_RATE_5G_ENABLE_OFFSET);
|
||||
} else {
|
||||
|
|
|
|||
Loading…
Reference in a new issue