mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-13 16:16:15 -04:00
fw-api: CL 3484280 - update fw common interface files
WMI roam scoring information Change-Id: I3909f61bc77548e02535713d84ece0cc7b781486 CRs-Fixed: 1107600
This commit is contained in:
parent
e44bca0f79
commit
def49dc392
3 changed files with 226 additions and 2 deletions
|
|
@ -857,6 +857,7 @@ typedef enum {
|
|||
WMITLV_TAG_STRUC_wmi_wlm_config_cmd_fixed_param,
|
||||
WMITLV_TAG_STRUC_wmi_pdev_update_ctltable_request_fixed_param,
|
||||
WMITLV_TAG_STRUC_wmi_pdev_update_ctltable_event_fixed_param,
|
||||
WMITLV_TAG_STRUC_wmi_roam_cnd_scoring_param,
|
||||
} WMITLV_TAG_ID;
|
||||
|
||||
/*
|
||||
|
|
@ -2276,7 +2277,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_MCAST_GROUP_CMDID);
|
|||
/* Roam AP profile Cmd */
|
||||
#define WMITLV_TABLE_WMI_ROAM_AP_PROFILE(id,op,buf,len) \
|
||||
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_roam_ap_profile_fixed_param, wmi_roam_ap_profile_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
|
||||
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_ap_profile, wmi_ap_profile, ap_profile, WMITLV_SIZE_FIX)
|
||||
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_ap_profile, wmi_ap_profile, ap_profile, WMITLV_SIZE_FIX) \
|
||||
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_roam_cnd_scoring_param, wmi_roam_cnd_scoring_param, roam_cnd_scoring_param, WMITLV_SIZE_FIX)
|
||||
|
||||
WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_AP_PROFILE);
|
||||
|
||||
|
|
|
|||
222
fw/wmi_unified.h
222
fw/wmi_unified.h
|
|
@ -9721,6 +9721,227 @@ typedef struct {
|
|||
/** looking for a PMF enabled AP */
|
||||
#define WMI_AP_PROFILE_FLAG_PMF 0x4
|
||||
|
||||
/* the value used in wmi_roam_cnd_scoring_param->disable_bitmap */
|
||||
#define WLAN_ROAM_SCORING_RSSI_DISABLE 0x00000001
|
||||
#define WLAN_ROAM_SCORING_HT_DISABLE 0x00000002
|
||||
#define WLAN_ROAM_SCORING_VHT_DISABLE 0x00000004
|
||||
#define WLAN_ROAM_SCORING_BW_DISABLE 0x00000008
|
||||
#define WLAN_ROAM_SCORING_BAND_DISABLE 0x00000010
|
||||
#define WLAN_ROAM_SCORING_NSS_DISABLE 0x00000020
|
||||
#define WLAN_ROAM_SCORING_CHAN_CONGESTION_DISABLE 0x00000040
|
||||
#define WLAN_ROAM_SCORING_BEAMFORMING_DISABLE 0x00000080
|
||||
#define WLAN_ROAM_SCORING_PCL_DISABLE 0x00000100
|
||||
#define WLAN_ROAM_SCORING_HE_DISABLE 0x00000200
|
||||
#define WLAN_ROAM_SCORING_OCE_WAN_DISABLE 0x00000400
|
||||
#define WLAN_ROAM_SCORING_DISABLE_ALL 0xFFFFFFFF
|
||||
#define WLAN_ROAM_SCORING_DEFAULT_PARAM_ALLOW 0x0
|
||||
|
||||
#define WLAN_ROAM_MAX_SELECTION_SCORE 10000
|
||||
|
||||
#define WLAN_ROAM_SCORE_20MHZ_BW_INDEX 0
|
||||
#define WLAN_ROAM_SCORE_40MHZ_BW_INDEX 1
|
||||
#define WLAN_ROAM_SCORE_80MHZ_BW_INDEX 2
|
||||
#define WLAN_ROAM_SCORE_160MHZ_BW_INDEX 3
|
||||
#define WLAN_ROAM_SCORE_MAX_BW_INDEX 4
|
||||
#define WMI_ROAM_GET_BW_SCORE_PERCENTAGE(value32, bw_index) WMI_GET_BITS(value32, (8 * (bw_index)), 8)
|
||||
#define WMI_ROAM_SET_BW_SCORE_PERCENTAGE(value32, score_pcnt, bw_index) WMI_SET_BITS(value32, (8 * (bw_index)), 8, score_pcnt)
|
||||
|
||||
#define WLAN_ROAM_SCORE_NSS_1x1_INDEX 0
|
||||
#define WLAN_ROAM_SCORE_NSS_2x2_INDEX 1
|
||||
#define WLAN_ROAM_SCORE_NSS_3x3_INDEX 2
|
||||
#define WLAN_ROAM_SCORE_NSS_4x4_INDEX 3
|
||||
#define WLAN_ROAM_SCORE_MAX_NSS_INDEX 4
|
||||
#define WMI_ROAM_GET_NSS_SCORE_PERCENTAGE(value32, nss_index) WMI_GET_BITS(value32, (8 * (nss_index)), 8)
|
||||
#define WMI_ROAM_SET_NSS_SCORE_PERCENTAGE(value32, score_pcnt, nss_index) WMI_SET_BITS(value32, (8 * (nss_index)), 8, score_pcnt)
|
||||
|
||||
#define WLAN_ROAM_SCORE_BAND_2G_INDEX 0
|
||||
#define WLAN_ROAM_SCORE_BAND_5G_INDEX 1
|
||||
/* 2 and 3 are reserved */
|
||||
#define WLAN_ROAM_SCORE_MAX_BAND_INDEX 4
|
||||
#define WMI_ROAM_GET_BAND_SCORE_PERCENTAGE(value32, band_index) WMI_GET_BITS(value32, (8 * (band_index)), 8)
|
||||
#define WMI_ROAM_SET_BAND_SCORE_PERCENTAGE(value32, score_pcnt, band_index) WMI_SET_BITS(value32, (8 * (band_index)), 8, score_pcnt)
|
||||
|
||||
#define WLAN_ROAM_SCORE_MAX_CHAN_CONGESTION_SLOT 16
|
||||
#define WLAN_ROAM_SCORE_DEFAULT_CONGESTION_SLOT 0
|
||||
|
||||
#define WLAN_ROAM_SCORE_MAX_OCE_WAN_SLOT 16
|
||||
#define WLAN_ROAM_SCORE_DEFAULT_OCE_WAN_SLOT 0
|
||||
|
||||
/**
|
||||
best_rssi_threshold: Roamable AP RSSI equal or better than this threshold, full rssi score 100. Units in dBm.
|
||||
good_rssi_threshold: Below this threshold, scoring linear percentage between rssi_good_pcnt and 100. Units in dBm.
|
||||
bad_rssi_threshold: Between good and bad rssi threshold, scoring linear percentage between rssi_bad_pcnt and rssi_good_pcnt. Units in dBm.
|
||||
good_rssi_pcnt: Used to assigned scoring percentage of each slot between best to good rssi threshold. Units in percentage.
|
||||
bad_rssi_pcnt: Used to assigned scoring percentage of each slot between good to bad rssi threshold. Units in percentage.
|
||||
good_bucket_size : bucket size of slot in good zone. Units in dB.
|
||||
bad_bucket_size : bucket size of slot in bad zone. Units in dB.
|
||||
rssi_pref_5g_rssi_thresh: Below rssi threshold, 5G AP have given preference of band percentage. Units in dBm.
|
||||
*/
|
||||
/**
|
||||
The graph below explains how RSSI scoring percentage is calculated
|
||||
as the RSSI improves. In the graph, the derived parameters good_buckets
|
||||
and bad_buckets are used. These derived parameters are related to the
|
||||
specified parameters as follows:
|
||||
good_buckets =
|
||||
(best_rssi_threshold - good_rssi_threshold) / good_bucket_size
|
||||
bad_buckets =
|
||||
(good_rssi_threshold - bad_rssi_threshold) / bad_bucket_size
|
||||
|
||||
| (x0,y0) (x0 = best_rssi, y0 = 100)
|
||||
p 100 |-------o
|
||||
e | |<--------- (100 - good_rssi_pct)/good_buckets
|
||||
r | |___ ,---- good_bucket_size
|
||||
c | | |
|
||||
e | |_V_
|
||||
n | |
|
||||
t | |___o (x1,y1) (x1 = good_rssi, y1 = good_rssi_pcnt)
|
||||
80 | |
|
||||
% | |<------ (good_rssi_pcnt - bad_rssi_pcnt)/bad_buckets
|
||||
| |_____
|
||||
| | ,-- bad_bucket_size
|
||||
| | |
|
||||
| |__v__
|
||||
| |
|
||||
| |
|
||||
40 | o------------
|
||||
| (x2,y2) (x2 = bad_rssi, y2 = bad_rssi_pcnt)
|
||||
+------o------------o-----------o------------->
|
||||
-50 -70 -80 rssi dBm
|
||||
|
||||
| excellent | good | bad | poor
|
||||
| zone | zone | zone | zone
|
||||
V V V
|
||||
BEST_THRES GOOD_THRES BAD_THRES
|
||||
*/
|
||||
typedef struct {
|
||||
A_INT32 best_rssi_threshold;
|
||||
A_INT32 good_rssi_threshold;
|
||||
A_INT32 bad_rssi_threshold;
|
||||
A_UINT32 good_rssi_pcnt;
|
||||
A_UINT32 bad_rssi_pcnt;
|
||||
A_UINT32 good_bucket_size;
|
||||
A_UINT32 bad_bucket_size;
|
||||
A_INT32 rssi_pref_5g_rssi_thresh;
|
||||
} wmi_roam_cnd_rssi_scoring;
|
||||
|
||||
/**
|
||||
Use macro WMI_ROAM_CND_GET/SET_BW_SCORE_PERCENTAGE to get and set the value respectively.
|
||||
BITS 0-7 :- It contains scoring percentage of 20MHz BW
|
||||
BITS 8-15 :- It contains scoring percentage of 40MHz BW
|
||||
BITS 16-23 :- It contains scoring percentage of 80MHz BW
|
||||
BITS 24-31 :- It contains scoring percentage of 1600MHz BW
|
||||
|
||||
The value of each index must be 0-100
|
||||
*/
|
||||
typedef struct {
|
||||
A_UINT32 score_pcnt;
|
||||
} wmi_roam_cnd_bw_scoring;
|
||||
|
||||
/**
|
||||
Use macro WMI_ROAM_CND_GET/SET_BAND_SCORE_PERCENTAGE to get and set the value respectively.
|
||||
BITS 0-7 :- It contains scoring percentage of 2G
|
||||
BITS 8-15 :- It contains scoring percentage of 5G
|
||||
BITS 16-23 :- reserved
|
||||
BITS 24-31 :- reserved
|
||||
|
||||
The value of each index must be 0-100
|
||||
*/
|
||||
typedef struct {
|
||||
A_UINT32 score_pcnt;
|
||||
} wmi_roam_cnd_band_scoring;
|
||||
|
||||
/**
|
||||
Use macro WMI_ROAM_CND_GET/SET_NSS_SCORE_PERCENTAGE to get and set the value respectively.
|
||||
BITS 0-7 :- It contains scoring percentage of 1x1
|
||||
BITS 8-15 :- It contains scoring percentage of 2x2
|
||||
BITS 16-23 :- It contains scoring percentage of 3x3
|
||||
BITS 24-31 :- It contains scoring percentage of 4x4
|
||||
|
||||
The value of each index must be 0-100
|
||||
*/
|
||||
typedef struct {
|
||||
A_UINT32 score_pcnt;
|
||||
} wmi_roam_cnd_nss_scoring;
|
||||
|
||||
/**
|
||||
score_pcnt: Contains roam score percentage of each slot of respective channel_congestion_pcnt.It is also used same BITS for slot(0-3)
|
||||
BITS 0-7 :- the scoring pcnt when AP is not advertise QBSS/ESP info
|
||||
BITS 8-15 :- SLOT_1
|
||||
BITS 16-23 :- SLOT_2
|
||||
BITS 24-31 :- SLOT_3
|
||||
BITS 32- ...
|
||||
|
||||
num_slot will equally divide 100. e.g, if num_slot = 4
|
||||
slot 0 = 0-25%, slot 1 = 26-50% slot 2 = 51-75%, slot 3 = 76-100%
|
||||
*/
|
||||
typedef struct {
|
||||
A_UINT32 num_slot; /* max 15 */
|
||||
A_UINT32 score_pcnt3_to_0;
|
||||
A_UINT32 score_pcnt7_to_4;
|
||||
A_UINT32 score_pcnt11_to_8;
|
||||
A_UINT32 score_pcnt15_to_12;
|
||||
} wmi_roam_cnd_esp_qbss_scoring;
|
||||
|
||||
/**
|
||||
score_pcnt: Contains roam score percentage of each slot of respective channel_congestion_pcnt.It is also used same BITS for slot(0-3)
|
||||
BITS 0-7 :- the scoring pcnt when AP is not advertise QBSS/ESP info
|
||||
BITS 8-15 :- SLOT_1
|
||||
BITS 16-23 :- SLOT_2
|
||||
BITS 24-31 :- SLOT_3
|
||||
BITS 32- ...
|
||||
|
||||
num_slot will equally divide 100. e.g, if num_slot = 4
|
||||
slot 0 = 0-25%, slot 1 = 26-50% slot 2 = 51-75%, slot 3 = 76-100%
|
||||
*/
|
||||
typedef struct {
|
||||
A_UINT32 num_slot; /* max 15 */
|
||||
A_UINT32 score_pcnt3_to_0;
|
||||
A_UINT32 score_pcnt7_to_4;
|
||||
A_UINT32 score_pcnt11_to_8;
|
||||
A_UINT32 score_pcnt15_to_12;
|
||||
} wmi_roam_cnd_oce_wan_scoring;
|
||||
|
||||
/**
|
||||
disable_bitmap :- Each bit will be either allow(0)/disallow(1) to considered the roam score param.
|
||||
rssi_weightage_pcnt :- RSSI weightage out of total score in percentage
|
||||
ht_weightage_pcnt :- HT weightage out of total score in percentage.
|
||||
vht_weightage_pcnt :- VHT weightage out of total score in percentage.
|
||||
he_weightage_pcnt :- 11ax weightage out of total score in percentage.
|
||||
bw_weightage_pcnt :- Bandwidth weightage out of total score in percentage.
|
||||
band_weightage_pcnt :- Band(2G/5G) weightage out of total score in percentage.
|
||||
nss_weightage_pcnt:- NSS(1x1 / 2x2) weightage out of total score in percentage.
|
||||
esp_qbss_weightage_pcnt: ESP/QBSS weightage out of total score in percentage.
|
||||
beamforming_weightage_pcnt :- Beamforming weightage out of total score in percentage.
|
||||
pcl_weightage_pcnt :- PCL weightage out of total score in percentage.
|
||||
oce_wan_weightage_pcnt :- OCE WAN metrics weightage out of total score in percentage.
|
||||
rssi_scoring :- RSSI scoring information.
|
||||
bw_scoring :- channel BW scoring percentage information.
|
||||
band_scoring : - band scording percentage information.
|
||||
nss_scoring :- NSS scoring percentage information.
|
||||
esp_qbss_scoring :- ESP/QBSS scoring percentage information
|
||||
oce_wan_scoring : OCE WAN metrics percentage information
|
||||
*/
|
||||
typedef struct {
|
||||
A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_cnd_scoring_param */
|
||||
A_UINT32 disable_bitmap;
|
||||
A_INT32 rssi_weightage_pcnt;
|
||||
A_INT32 ht_weightage_pcnt;
|
||||
A_INT32 vht_weightage_pcnt;
|
||||
A_INT32 he_weightage_pcnt;
|
||||
A_INT32 bw_weightage_pcnt;
|
||||
A_INT32 band_weightage_pcnt;
|
||||
A_INT32 nss_weightage_pcnt;
|
||||
A_INT32 esp_qbss_weightage_pcnt;
|
||||
A_INT32 beamforming_weightage_pcnt;
|
||||
A_INT32 pcl_weightage_pcnt;
|
||||
A_INT32 oce_wan_weightage_pcnt;
|
||||
wmi_roam_cnd_rssi_scoring rssi_scoring;
|
||||
wmi_roam_cnd_bw_scoring bw_scoring;
|
||||
wmi_roam_cnd_band_scoring band_scoring;
|
||||
wmi_roam_cnd_nss_scoring nss_scoring;
|
||||
wmi_roam_cnd_esp_qbss_scoring esp_qbss_scoring;
|
||||
wmi_roam_cnd_oce_wan_scoring oce_wan_scoring;
|
||||
} wmi_roam_cnd_scoring_param;
|
||||
|
||||
/** To match an open AP, the rs_authmode should be set to WMI_AUTH_NONE
|
||||
* and WMI_AP_PROFILE_FLAG_CRYPTO should be clear.
|
||||
|
|
@ -9879,6 +10100,7 @@ typedef struct {
|
|||
/*
|
||||
* Following this structure is the TLV:
|
||||
* wmi_ap_profile ap_profile; <-- AP profile info
|
||||
* wmi_roam_cnd_scoring_param roam_cnd_scoring_param
|
||||
*/
|
||||
} wmi_roam_ap_profile_fixed_param;
|
||||
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@
|
|||
#define __WMI_VER_MINOR_ 0
|
||||
/** WMI revision number has to be incremented when there is a
|
||||
* change that may or may not break compatibility. */
|
||||
#define __WMI_REVISION_ 436
|
||||
#define __WMI_REVISION_ 437
|
||||
|
||||
/** The Version Namespace should not be normally changed. Only
|
||||
* host and firmware of the same WMI namespace will work
|
||||
|
|
|
|||
Loading…
Reference in a new issue