wifi: iwlwifi: move lari_config handlig to regulatory
authorAnjaneyulu <pagadala.yesu.anjaneyulu@intel.com>
Mon, 15 Apr 2024 08:54:40 +0000 (11:54 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 19 Apr 2024 08:15:44 +0000 (10:15 +0200)
moved lari_config handling to common place to avoid code duplication.

Signed-off-by: Anjaneyulu <pagadala.yesu.anjaneyulu@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://msgid.link/20240415114847.02bfcd27b333.If149c3038bdfe57e254b26857209e8c7ab709779@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/intel/iwlwifi/fw/regulatory.c
drivers/net/wireless/intel/iwlwifi/fw/regulatory.h
drivers/net/wireless/intel/iwlwifi/mvm/fw.c

index 36d506463e0e7892c5f7467a9eba676724df279e..a3bf16b8b5fda9012b997f3c8bb2bcf7330a4e7f 100644 (file)
@@ -443,7 +443,7 @@ int iwl_parse_tas_selection(struct iwl_fw_runtime *fwrt,
        return enabled;
 }
 
-__le32 iwl_get_lari_config_bitmap(struct iwl_fw_runtime *fwrt)
+static __le32 iwl_get_lari_config_bitmap(struct iwl_fw_runtime *fwrt)
 {
        int ret;
        u32 val;
@@ -490,7 +490,118 @@ __le32 iwl_get_lari_config_bitmap(struct iwl_fw_runtime *fwrt)
 
        return config_bitmap;
 }
-IWL_EXPORT_SYMBOL(iwl_get_lari_config_bitmap);
+
+static size_t iwl_get_lari_config_cmd_size(u8 cmd_ver)
+{
+       size_t cmd_size;
+
+       switch (cmd_ver) {
+       case 9:
+       case 8:
+       case 7:
+               cmd_size = sizeof(struct iwl_lari_config_change_cmd_v7);
+               break;
+       case 6:
+               cmd_size = sizeof(struct iwl_lari_config_change_cmd_v6);
+               break;
+       case 5:
+               cmd_size = sizeof(struct iwl_lari_config_change_cmd_v5);
+               break;
+       case 4:
+               cmd_size = sizeof(struct iwl_lari_config_change_cmd_v4);
+               break;
+       case 3:
+               cmd_size = sizeof(struct iwl_lari_config_change_cmd_v3);
+               break;
+       case 2:
+               cmd_size = sizeof(struct iwl_lari_config_change_cmd_v2);
+               break;
+       default:
+               cmd_size = sizeof(struct iwl_lari_config_change_cmd_v1);
+               break;
+       }
+       return cmd_size;
+}
+
+int iwl_fill_lari_config(struct iwl_fw_runtime *fwrt,
+                        struct iwl_lari_config_change_cmd_v7 *cmd,
+                        size_t *cmd_size)
+{
+       int ret;
+       u32 value;
+       u8 cmd_ver = iwl_fw_lookup_cmd_ver(fwrt->fw,
+                                          WIDE_ID(REGULATORY_AND_NVM_GROUP,
+                                                  LARI_CONFIG_CHANGE), 1);
+
+       memset(cmd, 0, sizeof(*cmd));
+       *cmd_size = iwl_get_lari_config_cmd_size(cmd_ver);
+
+       cmd->config_bitmap = iwl_get_lari_config_bitmap(fwrt);
+
+       ret = iwl_bios_get_dsm(fwrt, DSM_FUNC_11AX_ENABLEMENT, &value);
+       if (!ret)
+               cmd->oem_11ax_allow_bitmap = cpu_to_le32(value);
+
+       ret = iwl_bios_get_dsm(fwrt, DSM_FUNC_ENABLE_UNII4_CHAN, &value);
+       if (!ret) {
+               if (cmd_ver < 9)
+                       value &= DSM_UNII4_ALLOW_BITMAP_CMD_V8;
+               else
+                       value &= DSM_UNII4_ALLOW_BITMAP;
+
+               cmd->oem_unii4_allow_bitmap = cpu_to_le32(value);
+       }
+
+       ret = iwl_bios_get_dsm(fwrt, DSM_FUNC_ACTIVATE_CHANNEL, &value);
+       if (!ret) {
+               if (cmd_ver < 8)
+                       value &= ~ACTIVATE_5G2_IN_WW_MASK;
+               cmd->chan_state_active_bitmap = cpu_to_le32(value);
+       }
+
+       ret = iwl_bios_get_dsm(fwrt, DSM_FUNC_ENABLE_6E, &value);
+       if (!ret)
+               cmd->oem_uhb_allow_bitmap = cpu_to_le32(value);
+
+       ret = iwl_bios_get_dsm(fwrt, DSM_FUNC_FORCE_DISABLE_CHANNELS, &value);
+       if (!ret)
+               cmd->force_disable_channels_bitmap = cpu_to_le32(value);
+
+       ret = iwl_bios_get_dsm(fwrt, DSM_FUNC_ENERGY_DETECTION_THRESHOLD,
+                              &value);
+       if (!ret)
+               cmd->edt_bitmap = cpu_to_le32(value);
+
+       if (cmd->config_bitmap ||
+           cmd->oem_uhb_allow_bitmap ||
+           cmd->oem_11ax_allow_bitmap ||
+           cmd->oem_unii4_allow_bitmap ||
+           cmd->chan_state_active_bitmap ||
+           cmd->force_disable_channels_bitmap ||
+           cmd->edt_bitmap) {
+               IWL_DEBUG_RADIO(fwrt,
+                               "sending LARI_CONFIG_CHANGE, config_bitmap=0x%x, oem_11ax_allow_bitmap=0x%x\n",
+                               le32_to_cpu(cmd->config_bitmap),
+                               le32_to_cpu(cmd->oem_11ax_allow_bitmap));
+               IWL_DEBUG_RADIO(fwrt,
+                               "sending LARI_CONFIG_CHANGE, oem_unii4_allow_bitmap=0x%x, chan_state_active_bitmap=0x%x, cmd_ver=%d\n",
+                               le32_to_cpu(cmd->oem_unii4_allow_bitmap),
+                               le32_to_cpu(cmd->chan_state_active_bitmap),
+                               cmd_ver);
+               IWL_DEBUG_RADIO(fwrt,
+                               "sending LARI_CONFIG_CHANGE, oem_uhb_allow_bitmap=0x%x, force_disable_channels_bitmap=0x%x\n",
+                               le32_to_cpu(cmd->oem_uhb_allow_bitmap),
+                               le32_to_cpu(cmd->force_disable_channels_bitmap));
+               IWL_DEBUG_RADIO(fwrt,
+                               "sending LARI_CONFIG_CHANGE, edt_bitmap=0x%x\n",
+                               le32_to_cpu(cmd->edt_bitmap));
+       } else {
+               return 1;
+       }
+
+       return 0;
+}
+IWL_EXPORT_SYMBOL(iwl_fill_lari_config);
 
 int iwl_bios_get_dsm(struct iwl_fw_runtime *fwrt, enum iwl_dsm_funcs func,
                     u32 *value)
index c9fbd84e0436ec994db0d0081d667707e1db7706..eea04d2934ab9c7222eecbe508f1abd4fe717a67 100644 (file)
@@ -202,7 +202,9 @@ int iwl_bios_get_pwr_limit(struct iwl_fw_runtime *fwrt,
 int iwl_bios_get_mcc(struct iwl_fw_runtime *fwrt, char *mcc);
 int iwl_bios_get_eckv(struct iwl_fw_runtime *fwrt, u32 *ext_clk);
 
-__le32 iwl_get_lari_config_bitmap(struct iwl_fw_runtime *fwrt);
+int iwl_fill_lari_config(struct iwl_fw_runtime *fwrt,
+                        struct iwl_lari_config_change_cmd_v7 *cmd,
+                        size_t *cmd_size);
 
 int iwl_bios_get_dsm(struct iwl_fw_runtime *fwrt, enum iwl_dsm_funcs func,
                     u32 *value);
index 5958e48d812b11dabcd51941a09768ad08b84199..243eeccc7ef67fe9d2a238d472ce048a27defd72 100644 (file)
@@ -1226,100 +1226,11 @@ static bool iwl_mvm_eval_dsm_rfi(struct iwl_mvm *mvm)
 static void iwl_mvm_lari_cfg(struct iwl_mvm *mvm)
 {
        int ret;
-       u32 value;
-       struct iwl_lari_config_change_cmd_v7 cmd = {};
-       u8 cmd_ver = iwl_fw_lookup_cmd_ver(mvm->fw,
-                                          WIDE_ID(REGULATORY_AND_NVM_GROUP,
-                                                  LARI_CONFIG_CHANGE), 1);
-
-       cmd.config_bitmap = iwl_get_lari_config_bitmap(&mvm->fwrt);
-
-       ret = iwl_bios_get_dsm(&mvm->fwrt, DSM_FUNC_11AX_ENABLEMENT, &value);
-       if (!ret)
-               cmd.oem_11ax_allow_bitmap = cpu_to_le32(value);
-
-       ret = iwl_bios_get_dsm(&mvm->fwrt, DSM_FUNC_ENABLE_UNII4_CHAN, &value);
-       if (!ret) {
-               if (cmd_ver < 9)
-                       value &= DSM_UNII4_ALLOW_BITMAP_CMD_V8;
-               else
-                       value &= DSM_UNII4_ALLOW_BITMAP;
-
-               cmd.oem_unii4_allow_bitmap = cpu_to_le32(value);
-       }
+       size_t cmd_size;
+       struct iwl_lari_config_change_cmd_v7 cmd;
 
-       ret = iwl_bios_get_dsm(&mvm->fwrt, DSM_FUNC_ACTIVATE_CHANNEL, &value);
+       ret = iwl_fill_lari_config(&mvm->fwrt, &cmd, &cmd_size);
        if (!ret) {
-               if (cmd_ver < 8)
-                       value &= ~ACTIVATE_5G2_IN_WW_MASK;
-               cmd.chan_state_active_bitmap = cpu_to_le32(value);
-       }
-
-       ret = iwl_bios_get_dsm(&mvm->fwrt, DSM_FUNC_ENABLE_6E, &value);
-       if (!ret)
-               cmd.oem_uhb_allow_bitmap = cpu_to_le32(value);
-
-       ret = iwl_bios_get_dsm(&mvm->fwrt, DSM_FUNC_FORCE_DISABLE_CHANNELS,
-                              &value);
-       if (!ret)
-               cmd.force_disable_channels_bitmap = cpu_to_le32(value);
-
-       ret = iwl_bios_get_dsm(&mvm->fwrt, DSM_FUNC_ENERGY_DETECTION_THRESHOLD,
-                              &value);
-       if (!ret)
-               cmd.edt_bitmap = cpu_to_le32(value);
-
-       if (cmd.config_bitmap ||
-           cmd.oem_uhb_allow_bitmap ||
-           cmd.oem_11ax_allow_bitmap ||
-           cmd.oem_unii4_allow_bitmap ||
-           cmd.chan_state_active_bitmap ||
-           cmd.force_disable_channels_bitmap ||
-           cmd.edt_bitmap) {
-               size_t cmd_size;
-
-               switch (cmd_ver) {
-               case 9:
-               case 8:
-               case 7:
-                       cmd_size = sizeof(struct iwl_lari_config_change_cmd_v7);
-                       break;
-               case 6:
-                       cmd_size = sizeof(struct iwl_lari_config_change_cmd_v6);
-                       break;
-               case 5:
-                       cmd_size = sizeof(struct iwl_lari_config_change_cmd_v5);
-                       break;
-               case 4:
-                       cmd_size = sizeof(struct iwl_lari_config_change_cmd_v4);
-                       break;
-               case 3:
-                       cmd_size = sizeof(struct iwl_lari_config_change_cmd_v3);
-                       break;
-               case 2:
-                       cmd_size = sizeof(struct iwl_lari_config_change_cmd_v2);
-                       break;
-               default:
-                       cmd_size = sizeof(struct iwl_lari_config_change_cmd_v1);
-                       break;
-               }
-
-               IWL_DEBUG_RADIO(mvm,
-                               "sending LARI_CONFIG_CHANGE, config_bitmap=0x%x, oem_11ax_allow_bitmap=0x%x\n",
-                               le32_to_cpu(cmd.config_bitmap),
-                               le32_to_cpu(cmd.oem_11ax_allow_bitmap));
-               IWL_DEBUG_RADIO(mvm,
-                               "sending LARI_CONFIG_CHANGE, oem_unii4_allow_bitmap=0x%x, chan_state_active_bitmap=0x%x, cmd_ver=%d\n",
-                               le32_to_cpu(cmd.oem_unii4_allow_bitmap),
-                               le32_to_cpu(cmd.chan_state_active_bitmap),
-                               cmd_ver);
-               IWL_DEBUG_RADIO(mvm,
-                               "sending LARI_CONFIG_CHANGE, oem_uhb_allow_bitmap=0x%x, force_disable_channels_bitmap=0x%x\n",
-                               le32_to_cpu(cmd.oem_uhb_allow_bitmap),
-                               le32_to_cpu(cmd.force_disable_channels_bitmap));
-               IWL_DEBUG_RADIO(mvm,
-                               "sending LARI_CONFIG_CHANGE, edt_bitmap=0x%x\n",
-                               le32_to_cpu(cmd.edt_bitmap));
                ret = iwl_mvm_send_cmd_pdu(mvm,
                                           WIDE_ID(REGULATORY_AND_NVM_GROUP,
                                                   LARI_CONFIG_CHANGE),