wifi: iwlwifi: Revert "wifi: iwlwifi: remove support of several iwl_ppag_table_cmd versions"

It turns out that version 6 is still needed.
This change will be brought back once the FW that supports version 6 will no
longer be supported.

This reverts commit 24bc49d158 ("wifi: iwlwifi: remove support of several
iwl_ppag_table_cmd versions")

Link: https://patch.msgid.link/20250723064515.2084903-2-miriam.rachel.korenblit@intel.com
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
pull/1309/head
Miri Korenblit 2025-07-23 09:45:15 +03:00
parent 343c906522
commit da75f183fe
2 changed files with 30 additions and 10 deletions

View File

@ -571,7 +571,8 @@ enum iwl_ppag_flags {
/** /**
* union iwl_ppag_table_cmd - union for all versions of PPAG command * union iwl_ppag_table_cmd - union for all versions of PPAG command
* @v1: command version 1 structure. * @v1: command version 1 structure.
* @v2: command version 5 structure. * @v2: command version from 2 to 6 are same structure as v2.
* but has a different format of the flags bitmap
* @v3: command version 7 structure. * @v3: command version 7 structure.
* @v1.flags: values from &enum iwl_ppag_flags * @v1.flags: values from &enum iwl_ppag_flags
* @v1.gain: table of antenna gain values per chain and sub-band * @v1.gain: table of antenna gain values per chain and sub-band
@ -592,7 +593,9 @@ union iwl_ppag_table_cmd {
__le32 flags; __le32 flags;
s8 gain[IWL_NUM_CHAIN_LIMITS][IWL_NUM_SUB_BANDS_V2]; s8 gain[IWL_NUM_CHAIN_LIMITS][IWL_NUM_SUB_BANDS_V2];
s8 reserved[2]; s8 reserved[2];
} __packed v2; /* PER_PLAT_ANTENNA_GAIN_CMD_API_S_VER_5 */ } __packed v2; /* PER_PLAT_ANTENNA_GAIN_CMD_API_S_VER_2, VER3, VER4,
* VER5, VER6
*/
struct { struct {
struct bios_value_u32 ppag_config_info; struct bios_value_u32 ppag_config_info;
s8 gain[IWL_NUM_CHAIN_LIMITS][IWL_NUM_SUB_BANDS_V2]; s8 gain[IWL_NUM_CHAIN_LIMITS][IWL_NUM_SUB_BANDS_V2];
@ -600,11 +603,20 @@ union iwl_ppag_table_cmd {
} __packed v3; /* PER_PLAT_ANTENNA_GAIN_CMD_API_S_VER_7 */ } __packed v3; /* PER_PLAT_ANTENNA_GAIN_CMD_API_S_VER_7 */
} __packed; } __packed;
#define IWL_PPAG_CMD_V1_MASK (IWL_PPAG_ETSI_MASK | IWL_PPAG_CHINA_MASK) #define IWL_PPAG_CMD_V4_MASK (IWL_PPAG_ETSI_MASK | IWL_PPAG_CHINA_MASK)
#define IWL_PPAG_CMD_V5_MASK (IWL_PPAG_CMD_V1_MASK | \ #define IWL_PPAG_CMD_V5_MASK (IWL_PPAG_CMD_V4_MASK | \
IWL_PPAG_ETSI_LPI_UHB_MASK | \ IWL_PPAG_ETSI_LPI_UHB_MASK | \
IWL_PPAG_USA_LPI_UHB_MASK) IWL_PPAG_USA_LPI_UHB_MASK)
#define IWL_PPAG_CMD_V6_MASK (IWL_PPAG_CMD_V5_MASK | \
IWL_PPAG_ETSI_VLP_UHB_MASK | \
IWL_PPAG_ETSI_SP_UHB_MASK | \
IWL_PPAG_USA_VLP_UHB_MASK | \
IWL_PPAG_USA_SP_UHB_MASK | \
IWL_PPAG_CANADA_LPI_UHB_MASK | \
IWL_PPAG_CANADA_VLP_UHB_MASK | \
IWL_PPAG_CANADA_SP_UHB_MASK)
#define MCC_TO_SAR_OFFSET_TABLE_ROW_SIZE 26 #define MCC_TO_SAR_OFFSET_TABLE_ROW_SIZE 26
#define MCC_TO_SAR_OFFSET_TABLE_COL_SIZE 13 #define MCC_TO_SAR_OFFSET_TABLE_COL_SIZE 13

View File

@ -344,18 +344,18 @@ int iwl_fill_ppag_table(struct iwl_fw_runtime *fwrt,
num_sub_bands = IWL_NUM_SUB_BANDS_V1; num_sub_bands = IWL_NUM_SUB_BANDS_V1;
gain = cmd->v1.gain[0]; gain = cmd->v1.gain[0];
*cmd_size = sizeof(cmd->v1); *cmd_size = sizeof(cmd->v1);
cmd->v1.flags = cpu_to_le32(fwrt->ppag_flags & IWL_PPAG_CMD_V1_MASK); cmd->v1.flags = cpu_to_le32(fwrt->ppag_flags);
if (fwrt->ppag_bios_rev >= 1) { if (fwrt->ppag_bios_rev >= 1) {
/* in this case FW supports revision 0 */ /* in this case FW supports revision 0 */
IWL_DEBUG_RADIO(fwrt, IWL_DEBUG_RADIO(fwrt,
"PPAG table rev is %d, send truncated table\n", "PPAG table rev is %d, send truncated table\n",
fwrt->ppag_bios_rev); fwrt->ppag_bios_rev);
} }
} else if (cmd_ver == 5) { } else if (cmd_ver >= 2 && cmd_ver <= 6) {
num_sub_bands = IWL_NUM_SUB_BANDS_V2; num_sub_bands = IWL_NUM_SUB_BANDS_V2;
gain = cmd->v2.gain[0]; gain = cmd->v2.gain[0];
*cmd_size = sizeof(cmd->v2); *cmd_size = sizeof(cmd->v2);
cmd->v2.flags = cpu_to_le32(fwrt->ppag_flags & IWL_PPAG_CMD_V5_MASK); cmd->v2.flags = cpu_to_le32(fwrt->ppag_flags);
if (fwrt->ppag_bios_rev == 0) { if (fwrt->ppag_bios_rev == 0) {
/* in this case FW supports revisions 1,2 or 3 */ /* in this case FW supports revisions 1,2 or 3 */
IWL_DEBUG_RADIO(fwrt, IWL_DEBUG_RADIO(fwrt,
@ -378,9 +378,17 @@ int iwl_fill_ppag_table(struct iwl_fw_runtime *fwrt,
"PPAG MODE bits were read from bios: %d\n", "PPAG MODE bits were read from bios: %d\n",
fwrt->ppag_flags); fwrt->ppag_flags);
if (cmd_ver == 1 && if (cmd_ver == 6)
!fw_has_capa(&fwrt->fw->ucode_capa, cmd->v1.flags &= cpu_to_le32(IWL_PPAG_CMD_V6_MASK);
IWL_UCODE_TLV_CAPA_PPAG_CHINA_BIOS_SUPPORT)) { else if (cmd_ver == 5)
cmd->v1.flags &= cpu_to_le32(IWL_PPAG_CMD_V5_MASK);
else if (cmd_ver < 5)
cmd->v1.flags &= cpu_to_le32(IWL_PPAG_CMD_V4_MASK);
if ((cmd_ver == 1 &&
!fw_has_capa(&fwrt->fw->ucode_capa,
IWL_UCODE_TLV_CAPA_PPAG_CHINA_BIOS_SUPPORT)) ||
(cmd_ver == 2 && fwrt->ppag_bios_rev >= 2)) {
cmd->v1.flags &= cpu_to_le32(IWL_PPAG_ETSI_MASK); cmd->v1.flags &= cpu_to_le32(IWL_PPAG_ETSI_MASK);
IWL_DEBUG_RADIO(fwrt, "masking ppag China bit\n"); IWL_DEBUG_RADIO(fwrt, "masking ppag China bit\n");
} else { } else {