Merge tag 'LA.UM.9.14.r1-23100-LAHAINA.QSSI14.0' of https://git.codelinaro.org/clo/la/platform/vendor/qcom-opensource/wlan/qca-wifi-host-cmn into android13-5.4-lahaina

"LA.UM.9.14.r1-23100-LAHAINA.QSSI14.0"

* tag 'LA.UM.9.14.r1-23100-LAHAINA.QSSI14.0' of https://git.codelinaro.org/clo/la/platform/vendor/qcom-opensource/wlan/qca-wifi-host-cmn:
  qcacmn: Consider gindoor_channel_support ini to decide ap_power_type
  qcacmn: Fix OOB issue
  qcacmn: handle integer underflow in util_gen_new_ie
  qcacmn: add new counter to fisa stats
  qcacmn: Extract Rx data packet SGI from WMI_VDEV_SMART_MONITOR_EVENTID

Change-Id: Ie9380449beee36ba953010870e7de50ae17cd397
This commit is contained in:
Michael Bestas 2023-11-09 14:30:02 +02:00
commit c0fb939726
No known key found for this signature in database
GPG key ID: CC95044519BE6669
5 changed files with 37 additions and 13 deletions

View file

@ -3138,6 +3138,7 @@ struct dp_fisa_stats {
/* flow index invalid from RX HW TLV */
uint32_t invalid_flow_index;
uint32_t reo_mismatch;
uint32_t incorrect_rdi;
};
enum fisa_aggr_ret {

View file

@ -205,6 +205,10 @@
#define WLAN_MAX_HEOP_IE_LEN 16
#define WLAN_HEOP_OUI_TYPE "\x24"
#define WLAN_HEOP_OUI_SIZE 1
#define WLAN_MIN_HECAP_IE_LEN 22
#define WLAN_MAX_HECAP_IE_LEN 55
#define WLAN_HE_MCS_MAP_LEN 2
#define WLAN_INVALID_RX_MCS_MAP 0xFFFF
#define WLAN_HEOP_FIXED_PARAM_LENGTH 7
#define WLAN_HEOP_VHTOP_LENGTH 3

View file

@ -831,11 +831,18 @@ enum reg_6g_ap_type reg_decide_6g_ap_pwr_type(struct wlan_objmgr_pdev *pdev)
return REG_VERY_LOW_POWER_AP;
}
if (reg_is_afc_available(pdev))
if (reg_is_afc_available(pdev)) {
ap_pwr_type = REG_STANDARD_POWER_AP;
else if (pdev_priv_obj->reg_6g_superid != FCC1_6G &&
pdev_priv_obj->reg_6g_superid != FCC1_6G_CL)
} else if (pdev_priv_obj->indoor_chan_enabled) {
if (pdev_priv_obj->reg_rules.num_of_6g_ap_reg_rules[REG_INDOOR_AP])
ap_pwr_type = REG_INDOOR_AP;
else
ap_pwr_type = REG_VERY_LOW_POWER_AP;
} else if (pdev_priv_obj->reg_rules.num_of_6g_ap_reg_rules[REG_VERY_LOW_POWER_AP]) {
ap_pwr_type = REG_VERY_LOW_POWER_AP;
}
reg_debug("indoor_chan_enabled %d ap_pwr_type %d",
pdev_priv_obj->indoor_chan_enabled, ap_pwr_type);
reg_set_ap_pwr_and_update_chan_list(pdev, ap_pwr_type);

View file

@ -789,6 +789,9 @@ util_scan_parse_extn_ie(struct scan_cache_entry *scan_params,
scan_params->ie_list.srp = (uint8_t *)ie;
break;
case WLAN_EXTN_ELEMID_HECAP:
if ((extn_ie->ie_len < WLAN_MIN_HECAP_IE_LEN) ||
(extn_ie->ie_len > WLAN_MAX_HECAP_IE_LEN))
return QDF_STATUS_E_INVAL;
scan_params->ie_list.hecap = (uint8_t *)ie;
break;
case WLAN_EXTN_ELEMID_HEOP:
@ -1317,28 +1320,36 @@ static int util_scan_scm_calc_nss_supported_by_ap(
{
struct htcap_cmn_ie *htcap;
struct wlan_ie_vhtcaps *vhtcaps;
struct wlan_ie_hecaps *hecaps;
uint8_t *he_cap;
uint8_t *end_ptr = NULL;
uint16_t rx_mcs_map = 0;
uint8_t *mcs_map_offset;
htcap = (struct htcap_cmn_ie *)
util_scan_entry_htcap(scan_params);
vhtcaps = (struct wlan_ie_vhtcaps *)
util_scan_entry_vhtcap(scan_params);
hecaps = (struct wlan_ie_hecaps *)
util_scan_entry_hecap(scan_params);
he_cap = util_scan_entry_hecap(scan_params);
if (hecaps) {
if (he_cap) {
/* Using rx mcs map related to 80MHz or lower as in some
* cases higher mcs may suuport lesser NSS than that
* of lowe mcs. Thus giving max NSS capability.
*/
rx_mcs_map =
qdf_cpu_to_le16(hecaps->mcs_bw_map[0].rx_mcs_map);
end_ptr = he_cap + he_cap[1] + sizeof(struct ie_header);
mcs_map_offset = (he_cap + sizeof(struct extn_ie_header) +
WLAN_HE_MACCAP_LEN + WLAN_HE_PHYCAP_LEN);
if ((mcs_map_offset + WLAN_HE_MCS_MAP_LEN) <= end_ptr) {
rx_mcs_map = *(uint16_t *)mcs_map_offset;
} else {
rx_mcs_map = WLAN_INVALID_RX_MCS_MAP;
scm_debug("mcs_map_offset exceeds he cap len");
}
} else if (vhtcaps) {
rx_mcs_map = vhtcaps->rx_mcs_map;
}
if (hecaps || vhtcaps) {
if (he_cap || vhtcaps) {
if ((rx_mcs_map & 0xC000) != 0xC000)
return 8;
@ -2134,8 +2145,9 @@ static uint32_t util_gen_new_ie(uint8_t *ie, uint32_t ielen,
* copied to new ie, skip ssid, capability, bssid-index ie
*/
tmp_new = sub_copy;
while (((tmp_new + tmp_new[1] + MIN_IE_LEN) - sub_copy) <=
(subie_len - 1)) {
while ((subie_len > 0) &&
(((tmp_new + tmp_new[1] + MIN_IE_LEN) - sub_copy) <=
(subie_len - 1))) {
if (!(tmp_new[0] == WLAN_ELEMID_NONTX_BSSID_CAP ||
tmp_new[0] == WLAN_ELEMID_SSID ||
tmp_new[0] == WLAN_ELEMID_MULTI_BSSID_IDX ||

View file

@ -14539,7 +14539,7 @@ extract_smart_monitor_event_tlv(void *handle, void *evt_buf,
if (params->vdev_id >= WLAN_UMAC_PDEV_MAX_VDEVS)
return QDF_STATUS_E_INVAL;
params->rx_avg_rssi = smu_event->avg_rssi_data_dbm;
params->rx_vht_sgi = smu_event->rx_vht_sgi;
return QDF_STATUS_SUCCESS;
}