Ver Fonte

qcacld-3.0: Ignore HW power limit for TPC calculation

Currently, Host considers HW power limit received from
FW via vdev start response along with other parameters
like regulatory channel power, AP constraint, and TPE
IE for TPC power calculation.
FW calculates this power for default LPI power mode.
If Host associates with an SP AP, it still uses this
LPI-specific value and could result in capping tx
power to a lower value than expected if this HW power
limit ends up being the limiting factor in Host.
Thus, ignore this field altogether while calculating
TPC power and Hal Phy will apply other limits
once they receive set tpc WMI from Host.
Note- HW power limit is still valid for tx power
calculation in the case of legacy Host (old WMI
vdev_set_param with WMI_VDEV_PARAM_TX_PWRLIMIT
param id).

Change-Id: Ia3af651a765c5440f3a37c6d1144ef08882e4938
CRs-Fixed: 3312165
Gururaj Pandurangi há 2 anos atrás
pai
commit
dac3c95d0e
1 ficheiros alterados com 2 adições e 15 exclusões
  1. 2 15
      core/mac/src/pe/lim/lim_process_sme_req_messages.c

+ 2 - 15
core/mac/src/pe/lim/lim_process_sme_req_messages.c

@@ -5662,18 +5662,6 @@ void lim_calculate_tpc(struct mac_context *mac,
 			max_tx_power = QDF_MIN(max_tx_power, tpe_power);
 			pe_debug("TPE: %d", tpe_power);
 		}
-
-		/** If firmware updated max tx power is non zero,
-		 * then allocate the min of firmware updated ap tx
-		 * power and max power derived from above mentioned
-		 * parameters.
-		 */
-		if (mlme_obj->mgmt.generic.tx_pwrlimit)
-			max_tx_power =
-				QDF_MIN(max_tx_power, (int8_t)
-					mlme_obj->mgmt.generic.tx_pwrlimit);
-		else
-			pe_err("HW power limit from FW is zero");
 		mlme_obj->reg_tpc_obj.chan_power_info[i].tx_power =
 						(uint8_t)max_tx_power;
 
@@ -5686,9 +5674,8 @@ void lim_calculate_tpc(struct mac_context *mac,
 	mlme_obj->reg_tpc_obj.eirp_power = reg_max;
 	mlme_obj->reg_tpc_obj.power_type_6g = ap_power_type_6g;
 
-	pe_debug("num_pwr_levels: %d, is_psd_power: %d, total eirp_power: %d, ap_pwr_type: %d tx_pwrlimit: %d",
-		 num_pwr_levels, is_psd_power, reg_max, ap_power_type_6g,
-		 mlme_obj->mgmt.generic.tx_pwrlimit);
+	pe_debug("num_pwr_levels: %d, is_psd_power: %d, total eirp_power: %d, ap_pwr_type: %d",
+		 num_pwr_levels, is_psd_power, reg_max, ap_power_type_6g);
 }
 
 bool send_disassoc_frame = 1;