Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit c0fb9397 authored by Michael Bestas's avatar Michael Bestas
Browse files

Merge tag 'LA.UM.9.14.r1-23100-LAHAINA.QSSI14.0' of...

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
parents 5994fbf3 9909727a
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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 {
+4 −0
Original line number Diff line number Diff line
@@ -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
+10 −3
Original line number Diff line number Diff line
@@ -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);

+21 −9
Original line number Diff line number Diff line
@@ -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 ||
+1 −1
Original line number Diff line number Diff line
@@ -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;
}