From f3f97970148caa904e661b111cde59eeab815a26 Mon Sep 17 00:00:00 2001 From: Abhishek Singh Date: Wed, 18 Sep 2019 12:13:46 +0530 Subject: [PATCH] qcacmn: Fix enum wlan_phymode to include proper phymode value Few phymode are missing from enum wlan_phymode and many are not valid phymode, e.g for 5ghz 40minus and 40plus are not valid. So add the missing enums and remove invalid enums from enum wlan_phymode. Change-Id: Id6a1fb4cf0d629cc410bd262a048b5050d05ed5d CRs-fixed: 2505422 --- umac/cmn_services/inc/wlan_cmn.h | 159 ++++++++++-------- umac/scan/core/src/wlan_scan_bss_score.c | 17 +- .../scan/dispatcher/src/wlan_scan_utils_api.c | 41 +++-- 3 files changed, 123 insertions(+), 94 deletions(-) diff --git a/umac/cmn_services/inc/wlan_cmn.h b/umac/cmn_services/inc/wlan_cmn.h index df9b84e359..e23330bc6a 100644 --- a/umac/cmn_services/inc/wlan_cmn.h +++ b/umac/cmn_services/inc/wlan_cmn.h @@ -327,83 +327,110 @@ typedef enum { } WLAN_DEV_TYPE; /** - * enum wlan_phymode - phy mode - * @WLAN_PHYMODE_AUTO: autoselect - * @WLAN_PHYMODE_11A: 5GHz, OFDM - * @WLAN_PHYMODE_11B: 2GHz, CCK - * @WLAN_PHYMODE_11G: 2GHz, OFDM - * @WLAN_PHYMODE_11NA_HT20: 5Ghz, HT20 - * @WLAN_PHYMODE_11NG_HT20: 2Ghz, HT20 - * @WLAN_PHYMODE_11NA_HT40PLUS: 5Ghz, HT40 (ext ch +1) - * @WLAN_PHYMODE_11NA_HT40MINUS: 5Ghz, HT40 (ext ch -1) - * @WLAN_PHYMODE_11NG_HT40PLUS: 2Ghz, HT40 (ext ch +1) - * @WLAN_PHYMODE_11NG_HT40MINUS: 2Ghz, HT40 (ext ch -1) - * @WLAN_PHYMODE_11NG_HT40: 2Ghz, Auto HT40 - * @WLAN_PHYMODE_11NA_HT40: 5Ghz, Auto HT40 - * @WLAN_PHYMODE_11AC_VHT20: 5Ghz, VHT20 - * @WLAN_PHYMODE_11AC_VHT40PLUS: 5Ghz, VHT40 (Ext ch +1) - * @WLAN_PHYMODE_11AC_VHT40MINUS:5Ghz VHT40 (Ext ch -1) - * @WLAN_PHYMODE_11AC_VHT40: 5Ghz, VHT40 - * @WLAN_PHYMODE_11AC_VHT80: 5Ghz, VHT80 - * @WLAN_PHYMODE_11AC_VHT160: 5Ghz, VHT160 - * @WLAN_PHYMODE_11AC_VHT80_80: 5Ghz, VHT80_80 - * @WLAN_PHYMODE_11AXA_HE20: 5GHz, HE20 - * @WLAN_PHYMODE_11AXG_HE20: 2GHz, HE20 - * @WLAN_PHYMODE_11AXA_HE40PLUS: 5GHz, HE40 (ext ch +1) - * @WLAN_PHYMODE_11AXA_HE40MINUS:5GHz, HE40 (ext ch -1) - * @WLAN_PHYMODE_11AXG_HE40PLUS: 2GHz, HE40 (ext ch +1) - * @WLAN_PHYMODE_11AXG_HE40MINUS:2GHz, HE40 (ext ch -1) - * @WLAN_PHYMODE_11AXA_HE40: 5GHz, HE40 - * @WLAN_PHYMODE_11AXG_HE40: 2GHz, HE40 - * @WLAN_PHYMODE_11AXA_HE80: 5GHz, HE80 - * @WLAN_PHYMODE_11AXA_HE160: 5GHz, HE160 - * @WLAN_PHYMODE_11AXA_HE80_80: 5GHz, HE80_80 + * enum wlan_phymode - phy mode + * @WLAN_PHYMODE_AUTO: autoselect + * @WLAN_PHYMODE_11A: 5GHz, OFDM + * @WLAN_PHYMODE_11B: 2GHz, CCK + * @WLAN_PHYMODE_11G: 2GHz, OFDM + * @WLAN_PHYMODE_11G_ONLY: 2GHz only + * @WLAN_PHYMODE_11NA_HT20: 5Ghz, HT20 + * @WLAN_PHYMODE_11NG_HT20: 2Ghz, HT20 + * @WLAN_PHYMODE_11NA_HT40: 5Ghz, Auto HT40 + * @WLAN_PHYMODE_11NG_HT40PLUS: 2Ghz, HT40 (ext ch +1) + * @WLAN_PHYMODE_11NG_HT40MINUS: 2Ghz, HT40 (ext ch -1) + * @WLAN_PHYMODE_11NG_HT40: 2Ghz, Auto HT40 + * @WLAN_PHYMODE_11AC_VHT20: 5Ghz, VHT20 + * @WLAN_PHYMODE_11AC_VHT20_2G: 2Ghz, VHT20 + * @WLAN_PHYMODE_11AC_VHT40: 5Ghz, VHT40 + * @WLAN_PHYMODE_11AC_VHT40PLUS_2G: 2Ghz, VHT40 (ext ch +1) + * @WLAN_PHYMODE_11AC_VHT40MINUS_2G: 2Ghz, VHT40 (ext ch -1) + * @WLAN_PHYMODE_11AC_VHT40_2G: 2Ghz, VHT40 + * @WLAN_PHYMODE_11AC_VHT80: 5Ghz, VHT80 + * @WLAN_PHYMODE_11AC_VHT80_2G: 2Ghz, VHT80 + * @WLAN_PHYMODE_11AC_VHT160: 5Ghz, VHT160 + * @WLAN_PHYMODE_11AC_VHT80_80: 5Ghz, VHT80_80 + * @WLAN_PHYMODE_11AXA_HE20: 5GHz, HE20 + * @WLAN_PHYMODE_11AXG_HE20: 2GHz, HE20 + * @WLAN_PHYMODE_11AXA_HE40: 5GHz, HE40 + * @WLAN_PHYMODE_11AXG_HE40PLUS: 2GHz, HE40 (ext ch +1) + * @WLAN_PHYMODE_11AXG_HE40MINUS:2GHz, HE40 (ext ch -1) + * @WLAN_PHYMODE_11AXG_HE40: 2GHz, HE40 + * @WLAN_PHYMODE_11AXA_HE80: 5GHz, HE80 + * @WLAN_PHYMODE_11AXG_HE80: 2GHz, HE80 + * @WLAN_PHYMODE_11AXA_HE160: 5GHz, HE160 + * @WLAN_PHYMODE_11AXA_HE80_80: 5GHz, HE80_80 + * @WLAN_PHYMODE_MAX: Max phymode */ enum wlan_phymode { - WLAN_PHYMODE_AUTO = 0, - WLAN_PHYMODE_11A = 1, - WLAN_PHYMODE_11B = 2, - WLAN_PHYMODE_11G = 3, - WLAN_PHYMODE_11NA_HT20 = 4, - WLAN_PHYMODE_11NG_HT20 = 5, - WLAN_PHYMODE_11NA_HT40PLUS = 6, - WLAN_PHYMODE_11NA_HT40MINUS = 7, - WLAN_PHYMODE_11NG_HT40PLUS = 8, - WLAN_PHYMODE_11NG_HT40MINUS = 9, - WLAN_PHYMODE_11NG_HT40 = 10, - WLAN_PHYMODE_11NA_HT40 = 11, - WLAN_PHYMODE_11AC_VHT20 = 12, - WLAN_PHYMODE_11AC_VHT40PLUS = 13, - WLAN_PHYMODE_11AC_VHT40MINUS = 14, - WLAN_PHYMODE_11AC_VHT40 = 15, - WLAN_PHYMODE_11AC_VHT80 = 16, - WLAN_PHYMODE_11AC_VHT160 = 17, - WLAN_PHYMODE_11AC_VHT80_80 = 18, - WLAN_PHYMODE_11AXA_HE20 = 19, - WLAN_PHYMODE_11AXG_HE20 = 20, - WLAN_PHYMODE_11AXA_HE40PLUS = 21, - WLAN_PHYMODE_11AXA_HE40MINUS = 22, - WLAN_PHYMODE_11AXG_HE40PLUS = 23, - WLAN_PHYMODE_11AXG_HE40MINUS = 24, - WLAN_PHYMODE_11AXA_HE40 = 25, - WLAN_PHYMODE_11AXG_HE40 = 26, - WLAN_PHYMODE_11AXA_HE80 = 27, - WLAN_PHYMODE_11AXA_HE160 = 28, - WLAN_PHYMODE_11AXA_HE80_80 = 29, + WLAN_PHYMODE_AUTO = 0, + WLAN_PHYMODE_11A = 1, + WLAN_PHYMODE_11B = 2, + WLAN_PHYMODE_11G = 3, + WLAN_PHYMODE_11G_ONLY = 4, + WLAN_PHYMODE_11NA_HT20 = 5, + WLAN_PHYMODE_11NG_HT20 = 6, + WLAN_PHYMODE_11NA_HT40 = 7, + WLAN_PHYMODE_11NG_HT40PLUS = 8, + WLAN_PHYMODE_11NG_HT40MINUS = 9, + WLAN_PHYMODE_11NG_HT40 = 10, + WLAN_PHYMODE_11AC_VHT20 = 11, + WLAN_PHYMODE_11AC_VHT20_2G = 12, + WLAN_PHYMODE_11AC_VHT40 = 13, + WLAN_PHYMODE_11AC_VHT40PLUS_2G = 14, + WLAN_PHYMODE_11AC_VHT40MINUS_2G = 15, + WLAN_PHYMODE_11AC_VHT40_2G = 16, + WLAN_PHYMODE_11AC_VHT80 = 17, + WLAN_PHYMODE_11AC_VHT80_2G = 18, + WLAN_PHYMODE_11AC_VHT160 = 19, + WLAN_PHYMODE_11AC_VHT80_80 = 20, + WLAN_PHYMODE_11AXA_HE20 = 21, + WLAN_PHYMODE_11AXG_HE20 = 22, + WLAN_PHYMODE_11AXA_HE40 = 23, + WLAN_PHYMODE_11AXG_HE40PLUS = 24, + WLAN_PHYMODE_11AXG_HE40MINUS = 25, + WLAN_PHYMODE_11AXG_HE40 = 26, + WLAN_PHYMODE_11AXA_HE80 = 27, + WLAN_PHYMODE_11AXG_HE80 = 28, + WLAN_PHYMODE_11AXA_HE160 = 29, + WLAN_PHYMODE_11AXA_HE80_80 = 30, + WLAN_PHYMODE_MAX }; -#define WLAN_PHYMODE_MAX (WLAN_PHYMODE_11AXA_HE80_80 + 1) +#define IS_WLAN_PHYMODE_160MHZ(_mode) ({typeof(_mode) mode = (_mode); \ + ((mode) == WLAN_PHYMODE_11AC_VHT80_80) || \ + ((mode) == WLAN_PHYMODE_11AC_VHT160) || \ + ((mode) == WLAN_PHYMODE_11AXA_HE80_80) || \ + ((mode) == WLAN_PHYMODE_11AXA_HE160); }) + +#define IS_WLAN_PHYMODE_80MHZ(_mode) ({typeof(_mode) mode = (_mode); \ + ((mode) == WLAN_PHYMODE_11AC_VHT80) || \ + ((mode) == WLAN_PHYMODE_11AC_VHT80_2G) || \ + ((mode) == WLAN_PHYMODE_11AXA_HE80) || \ + ((mode) == WLAN_PHYMODE_11AXG_HE80); }) + +#define IS_WLAN_PHYMODE_40MHZ(_mode) ({typeof(_mode) mode = (_mode); \ + ((mode) == WLAN_PHYMODE_11NG_HT40) || \ + ((mode) == WLAN_PHYMODE_11NG_HT40PLUS) || \ + ((mode) == WLAN_PHYMODE_11NG_HT40MINUS) || \ + ((mode) == WLAN_PHYMODE_11NA_HT40) || \ + ((mode) == WLAN_PHYMODE_11AC_VHT40) || \ + ((mode) == WLAN_PHYMODE_11AC_VHT40_2G) || \ + ((mode) == WLAN_PHYMODE_11AC_VHT40PLUS_2G) || \ + ((mode) == WLAN_PHYMODE_11AC_VHT40MINUS_2G) || \ + ((mode) == WLAN_PHYMODE_11AXA_HE40) || \ + ((mode) == WLAN_PHYMODE_11AXG_HE40) || \ + ((mode) == WLAN_PHYMODE_11AXG_HE40PLUS) || \ + ((mode) == WLAN_PHYMODE_11AXG_HE40MINUS); }) #define IS_WLAN_PHYMODE_HE(_mode) ({typeof(_mode) mode = (_mode); \ ((mode) == WLAN_PHYMODE_11AXA_HE20) || \ ((mode) == WLAN_PHYMODE_11AXG_HE20) || \ - ((mode) == WLAN_PHYMODE_11AXA_HE40PLUS) || \ - ((mode) == WLAN_PHYMODE_11AXA_HE40MINUS) || \ - ((mode) == WLAN_PHYMODE_11AXG_HE40PLUS) || \ - ((mode) == WLAN_PHYMODE_11AXG_HE40MINUS) || \ ((mode) == WLAN_PHYMODE_11AXA_HE40) || \ ((mode) == WLAN_PHYMODE_11AXG_HE40) || \ + ((mode) == WLAN_PHYMODE_11AXG_HE40PLUS) || \ + ((mode) == WLAN_PHYMODE_11AXG_HE40MINUS) || \ ((mode) == WLAN_PHYMODE_11AXA_HE80) || \ + ((mode) == WLAN_PHYMODE_11AXG_HE80) || \ ((mode) == WLAN_PHYMODE_11AXA_HE160) || \ ((mode) == WLAN_PHYMODE_11AXA_HE80_80); }) diff --git a/umac/scan/core/src/wlan_scan_bss_score.c b/umac/scan/core/src/wlan_scan_bss_score.c index db7f46b6f2..7fe93d0de6 100644 --- a/umac/scan/core/src/wlan_scan_bss_score.c +++ b/umac/scan/core/src/wlan_scan_bss_score.c @@ -396,20 +396,11 @@ static int32_t scm_calculate_bandwidth_score( cbmode = score_config->cb_mode_5G; } - if (entry->phy_mode == WLAN_PHYMODE_11AC_VHT80_80 || - entry->phy_mode == WLAN_PHYMODE_11AC_VHT160) + if (IS_WLAN_PHYMODE_160MHZ(entry->phy_mode)) ch_width_index = SCM_160MHZ_BW_INDEX; - else if (entry->phy_mode == WLAN_PHYMODE_11AC_VHT80) - ch_width_index = SCM_80MHZ_BW_INDEX; - else if (entry->phy_mode == WLAN_PHYMODE_11NA_HT40PLUS || - entry->phy_mode == WLAN_PHYMODE_11NA_HT40MINUS || - entry->phy_mode == WLAN_PHYMODE_11NG_HT40PLUS || - entry->phy_mode == WLAN_PHYMODE_11NG_HT40MINUS || - entry->phy_mode == WLAN_PHYMODE_11NG_HT40 || - entry->phy_mode == WLAN_PHYMODE_11NA_HT40 || - entry->phy_mode == WLAN_PHYMODE_11AC_VHT40PLUS || - entry->phy_mode == WLAN_PHYMODE_11AC_VHT40MINUS || - entry->phy_mode == WLAN_PHYMODE_11AC_VHT40) + else if (IS_WLAN_PHYMODE_80MHZ(entry->phy_mode)) + ch_width_index = SCM_80MHZ_BW_INDEX; + else if (IS_WLAN_PHYMODE_40MHZ(entry->phy_mode)) ch_width_index = SCM_40MHZ_BW_INDEX; else ch_width_index = SCM_20MHZ_BW_INDEX; diff --git a/umac/scan/dispatcher/src/wlan_scan_utils_api.c b/umac/scan/dispatcher/src/wlan_scan_utils_api.c index 3d5d4f4ffd..d949717ec4 100644 --- a/umac/scan/dispatcher/src/wlan_scan_utils_api.c +++ b/umac/scan/dispatcher/src/wlan_scan_utils_api.c @@ -205,14 +205,8 @@ util_scan_get_phymode_5g(struct scan_cache_entry *scan_params) if (util_scan_entry_vhtcap(scan_params) && vhtop) { switch (vhtop->vht_op_chwidth) { case WLAN_VHTOP_CHWIDTH_2040: - if ((ht_cap & WLAN_HTCAP_C_CHWIDTH40) && - (htinfo->hi_extchoff == - WLAN_HTINFO_EXTOFFSET_ABOVE)) - phymode = WLAN_PHYMODE_11AC_VHT40PLUS; - else if ((ht_cap & WLAN_HTCAP_C_CHWIDTH40) && - (htinfo->hi_extchoff == - WLAN_HTINFO_EXTOFFSET_BELOW)) - phymode = WLAN_PHYMODE_11AC_VHT40MINUS; + if (ht_cap & WLAN_HTCAP_C_CHWIDTH40) + phymode = WLAN_PHYMODE_11AC_VHT40; else phymode = WLAN_PHYMODE_11AC_VHT20; break; @@ -233,16 +227,14 @@ util_scan_get_phymode_5g(struct scan_cache_entry *scan_params) default: scm_err("bad channel: %d", vhtop->vht_op_chwidth); + phymode = WLAN_PHYMODE_11AC_VHT20; break; } - } else if ((ht_cap & WLAN_HTCAP_C_CHWIDTH40) && - (htinfo->hi_extchoff == WLAN_HTINFO_EXTOFFSET_ABOVE)) - phymode = WLAN_PHYMODE_11NA_HT40PLUS; - else if ((ht_cap & WLAN_HTCAP_C_CHWIDTH40) && - (htinfo->hi_extchoff == WLAN_HTINFO_EXTOFFSET_BELOW)) - phymode = WLAN_PHYMODE_11NA_HT40MINUS; - else + } else if (ht_cap & WLAN_HTCAP_C_CHWIDTH40) { + phymode = WLAN_PHYMODE_11NA_HT40; + } else { phymode = WLAN_PHYMODE_11NA_HT20; + } return phymode; } @@ -291,6 +283,25 @@ util_scan_get_phymode_2g(struct scan_cache_entry *scan_params) } } + if (util_scan_entry_vhtcap(scan_params) && vhtop) { + switch (vhtop->vht_op_chwidth) { + case WLAN_VHTOP_CHWIDTH_2040: + if (phymode == WLAN_PHYMODE_11NG_HT40PLUS) + phymode = WLAN_PHYMODE_11AC_VHT40PLUS_2G; + else if (phymode == WLAN_PHYMODE_11NG_HT40MINUS) + phymode = WLAN_PHYMODE_11AC_VHT40MINUS_2G; + else + phymode = WLAN_PHYMODE_11AC_VHT20_2G; + + break; + default: + scm_info("bad vht_op_chwidth: %d", + vhtop->vht_op_chwidth); + phymode = WLAN_PHYMODE_11AC_VHT20_2G; + break; + } + } + return phymode; }