iwlwifi: update host command messages to new format
[deliverable/linux.git] / drivers / net / wireless / intel / iwlwifi / mvm / ops.c
index 4e417fd9beb64252f5af881759b32c6e5a35dab7..958984cc4d2e2bb0667374cdcec11037b86afc0f 100644 (file)
@@ -83,6 +83,8 @@
 #include "fw-api-scan.h"
 #include "time-event.h"
 #include "fw-dbg.h"
+#include "fw-api.h"
+#include "fw-api-scan.h"
 
 #define DRV_DESCRIPTION        "The new Intel(R) wireless AGN driver for Linux"
 MODULE_DESCRIPTION(DRV_DESCRIPTION);
@@ -269,104 +271,127 @@ static const struct iwl_rx_handlers iwl_mvm_rx_handlers[] = {
 };
 #undef RX_HANDLER
 #undef RX_HANDLER_GRP
-#define CMD(x) [x] = #x
-
-static const char *const iwl_mvm_cmd_strings[REPLY_MAX + 1] = {
-       CMD(MVM_ALIVE),
-       CMD(REPLY_ERROR),
-       CMD(ECHO_CMD),
-       CMD(INIT_COMPLETE_NOTIF),
-       CMD(PHY_CONTEXT_CMD),
-       CMD(MGMT_MCAST_KEY),
-       CMD(TX_CMD),
-       CMD(TXPATH_FLUSH),
-       CMD(SHARED_MEM_CFG),
-       CMD(MAC_CONTEXT_CMD),
-       CMD(TIME_EVENT_CMD),
-       CMD(TIME_EVENT_NOTIFICATION),
-       CMD(BINDING_CONTEXT_CMD),
-       CMD(TIME_QUOTA_CMD),
-       CMD(NON_QOS_TX_COUNTER_CMD),
-       CMD(DC2DC_CONFIG_CMD),
-       CMD(NVM_ACCESS_CMD),
-       CMD(PHY_CONFIGURATION_CMD),
-       CMD(CALIB_RES_NOTIF_PHY_DB),
-       CMD(SET_CALIB_DEFAULT_CMD),
-       CMD(FW_PAGING_BLOCK_CMD),
-       CMD(ADD_STA_KEY),
-       CMD(ADD_STA),
-       CMD(FW_GET_ITEM_CMD),
-       CMD(REMOVE_STA),
-       CMD(LQ_CMD),
-       CMD(SCAN_OFFLOAD_CONFIG_CMD),
-       CMD(MATCH_FOUND_NOTIFICATION),
-       CMD(SCAN_OFFLOAD_REQUEST_CMD),
-       CMD(SCAN_OFFLOAD_ABORT_CMD),
-       CMD(HOT_SPOT_CMD),
-       CMD(SCAN_OFFLOAD_COMPLETE),
-       CMD(SCAN_OFFLOAD_UPDATE_PROFILES_CMD),
-       CMD(SCAN_ITERATION_COMPLETE),
-       CMD(POWER_TABLE_CMD),
-       CMD(WEP_KEY),
-       CMD(REPLY_RX_PHY_CMD),
-       CMD(REPLY_RX_MPDU_CMD),
-       CMD(FRAME_RELEASE),
-       CMD(BEACON_NOTIFICATION),
-       CMD(BEACON_TEMPLATE_CMD),
-       CMD(STATISTICS_CMD),
-       CMD(STATISTICS_NOTIFICATION),
-       CMD(EOSP_NOTIFICATION),
-       CMD(REDUCE_TX_POWER_CMD),
-       CMD(TX_ANT_CONFIGURATION_CMD),
-       CMD(D3_CONFIG_CMD),
-       CMD(D0I3_END_CMD),
-       CMD(PROT_OFFLOAD_CONFIG_CMD),
-       CMD(OFFLOADS_QUERY_CMD),
-       CMD(REMOTE_WAKE_CONFIG_CMD),
-       CMD(WOWLAN_PATTERNS),
-       CMD(WOWLAN_CONFIGURATION),
-       CMD(WOWLAN_TSC_RSC_PARAM),
-       CMD(WOWLAN_TKIP_PARAM),
-       CMD(WOWLAN_KEK_KCK_MATERIAL),
-       CMD(WOWLAN_GET_STATUSES),
-       CMD(WOWLAN_TX_POWER_PER_DB),
-       CMD(SCAN_OFFLOAD_PROFILES_QUERY_CMD),
-       CMD(SCAN_OFFLOAD_HOTSPOTS_CONFIG_CMD),
-       CMD(SCAN_OFFLOAD_HOTSPOTS_QUERY_CMD),
-       CMD(CARD_STATE_NOTIFICATION),
-       CMD(MISSED_BEACONS_NOTIFICATION),
-       CMD(BT_COEX_PRIO_TABLE),
-       CMD(BT_COEX_PROT_ENV),
-       CMD(BT_PROFILE_NOTIFICATION),
-       CMD(BT_CONFIG),
-       CMD(MCAST_FILTER_CMD),
-       CMD(BCAST_FILTER_CMD),
-       CMD(REPLY_SF_CFG_CMD),
-       CMD(REPLY_BEACON_FILTERING_CMD),
-       CMD(CMD_DTS_MEASUREMENT_TRIGGER),
-       CMD(DTS_MEASUREMENT_NOTIFICATION),
-       CMD(REPLY_THERMAL_MNG_BACKOFF),
-       CMD(MAC_PM_POWER_TABLE),
-       CMD(LTR_CONFIG),
-       CMD(BT_COEX_CI),
-       CMD(BT_COEX_UPDATE_SW_BOOST),
-       CMD(BT_COEX_UPDATE_CORUN_LUT),
-       CMD(BT_COEX_UPDATE_REDUCED_TXP),
-       CMD(PSM_UAPSD_AP_MISBEHAVING_NOTIFICATION),
-       CMD(ANTENNA_COUPLING_NOTIFICATION),
-       CMD(SCD_QUEUE_CFG),
-       CMD(SCAN_CFG_CMD),
-       CMD(SCAN_REQ_UMAC),
-       CMD(SCAN_ABORT_UMAC),
-       CMD(SCAN_COMPLETE_UMAC),
-       CMD(TDLS_CHANNEL_SWITCH_CMD),
-       CMD(TDLS_CHANNEL_SWITCH_NOTIFICATION),
-       CMD(TDLS_CONFIG_CMD),
-       CMD(MCC_UPDATE_CMD),
-       CMD(SCAN_ITERATION_COMPLETE_UMAC),
-       CMD(LDBG_CONFIG_CMD),
+
+/* Please keep this array *SORTED* by hex value.
+ * Access is done through binary search
+ */
+static const struct iwl_hcmd_names iwl_mvm_legacy_names[] = {
+       HCMD_NAME(MVM_ALIVE),
+       HCMD_NAME(REPLY_ERROR),
+       HCMD_NAME(ECHO_CMD),
+       HCMD_NAME(INIT_COMPLETE_NOTIF),
+       HCMD_NAME(PHY_CONTEXT_CMD),
+       HCMD_NAME(DBG_CFG),
+       HCMD_NAME(ANTENNA_COUPLING_NOTIFICATION),
+       HCMD_NAME(SCAN_CFG_CMD),
+       HCMD_NAME(SCAN_REQ_UMAC),
+       HCMD_NAME(SCAN_ABORT_UMAC),
+       HCMD_NAME(SCAN_COMPLETE_UMAC),
+       HCMD_NAME(TOF_CMD),
+       HCMD_NAME(TOF_NOTIFICATION),
+       HCMD_NAME(ADD_STA_KEY),
+       HCMD_NAME(ADD_STA),
+       HCMD_NAME(REMOVE_STA),
+       HCMD_NAME(FW_GET_ITEM_CMD),
+       HCMD_NAME(TX_CMD),
+       HCMD_NAME(SCD_QUEUE_CFG),
+       HCMD_NAME(TXPATH_FLUSH),
+       HCMD_NAME(MGMT_MCAST_KEY),
+       HCMD_NAME(WEP_KEY),
+       HCMD_NAME(SHARED_MEM_CFG),
+       HCMD_NAME(TDLS_CHANNEL_SWITCH_CMD),
+       HCMD_NAME(MAC_CONTEXT_CMD),
+       HCMD_NAME(TIME_EVENT_CMD),
+       HCMD_NAME(TIME_EVENT_NOTIFICATION),
+       HCMD_NAME(BINDING_CONTEXT_CMD),
+       HCMD_NAME(TIME_QUOTA_CMD),
+       HCMD_NAME(NON_QOS_TX_COUNTER_CMD),
+       HCMD_NAME(LQ_CMD),
+       HCMD_NAME(FW_PAGING_BLOCK_CMD),
+       HCMD_NAME(SCAN_OFFLOAD_REQUEST_CMD),
+       HCMD_NAME(SCAN_OFFLOAD_ABORT_CMD),
+       HCMD_NAME(HOT_SPOT_CMD),
+       HCMD_NAME(SCAN_OFFLOAD_PROFILES_QUERY_CMD),
+       HCMD_NAME(SCAN_OFFLOAD_HOTSPOTS_CONFIG_CMD),
+       HCMD_NAME(SCAN_OFFLOAD_HOTSPOTS_QUERY_CMD),
+       HCMD_NAME(BT_COEX_UPDATE_SW_BOOST),
+       HCMD_NAME(BT_COEX_UPDATE_CORUN_LUT),
+       HCMD_NAME(BT_COEX_UPDATE_REDUCED_TXP),
+       HCMD_NAME(BT_COEX_CI),
+       HCMD_NAME(PHY_CONFIGURATION_CMD),
+       HCMD_NAME(CALIB_RES_NOTIF_PHY_DB),
+       HCMD_NAME(SCAN_OFFLOAD_COMPLETE),
+       HCMD_NAME(SCAN_OFFLOAD_UPDATE_PROFILES_CMD),
+       HCMD_NAME(SCAN_OFFLOAD_CONFIG_CMD),
+       HCMD_NAME(POWER_TABLE_CMD),
+       HCMD_NAME(PSM_UAPSD_AP_MISBEHAVING_NOTIFICATION),
+       HCMD_NAME(REPLY_THERMAL_MNG_BACKOFF),
+       HCMD_NAME(DC2DC_CONFIG_CMD),
+       HCMD_NAME(NVM_ACCESS_CMD),
+       HCMD_NAME(SET_CALIB_DEFAULT_CMD),
+       HCMD_NAME(BEACON_NOTIFICATION),
+       HCMD_NAME(BEACON_TEMPLATE_CMD),
+       HCMD_NAME(TX_ANT_CONFIGURATION_CMD),
+       HCMD_NAME(BT_CONFIG),
+       HCMD_NAME(STATISTICS_CMD),
+       HCMD_NAME(STATISTICS_NOTIFICATION),
+       HCMD_NAME(EOSP_NOTIFICATION),
+       HCMD_NAME(REDUCE_TX_POWER_CMD),
+       HCMD_NAME(CARD_STATE_CMD),
+       HCMD_NAME(CARD_STATE_NOTIFICATION),
+       HCMD_NAME(MISSED_BEACONS_NOTIFICATION),
+       HCMD_NAME(TDLS_CONFIG_CMD),
+       HCMD_NAME(MAC_PM_POWER_TABLE),
+       HCMD_NAME(TDLS_CHANNEL_SWITCH_NOTIFICATION),
+       HCMD_NAME(MFUART_LOAD_NOTIFICATION),
+       HCMD_NAME(SCAN_ITERATION_COMPLETE_UMAC),
+       HCMD_NAME(REPLY_RX_PHY_CMD),
+       HCMD_NAME(REPLY_RX_MPDU_CMD),
+       HCMD_NAME(BA_NOTIF),
+       HCMD_NAME(MCC_UPDATE_CMD),
+       HCMD_NAME(MCC_CHUB_UPDATE_CMD),
+       HCMD_NAME(MARKER_CMD),
+       HCMD_NAME(BT_COEX_PRIO_TABLE),
+       HCMD_NAME(BT_COEX_PROT_ENV),
+       HCMD_NAME(BT_PROFILE_NOTIFICATION),
+       HCMD_NAME(BCAST_FILTER_CMD),
+       HCMD_NAME(MCAST_FILTER_CMD),
+       HCMD_NAME(REPLY_SF_CFG_CMD),
+       HCMD_NAME(REPLY_BEACON_FILTERING_CMD),
+       HCMD_NAME(D3_CONFIG_CMD),
+       HCMD_NAME(PROT_OFFLOAD_CONFIG_CMD),
+       HCMD_NAME(OFFLOADS_QUERY_CMD),
+       HCMD_NAME(REMOTE_WAKE_CONFIG_CMD),
+       HCMD_NAME(MATCH_FOUND_NOTIFICATION),
+       HCMD_NAME(CMD_DTS_MEASUREMENT_TRIGGER),
+       HCMD_NAME(DTS_MEASUREMENT_NOTIFICATION),
+       HCMD_NAME(WOWLAN_PATTERNS),
+       HCMD_NAME(WOWLAN_CONFIGURATION),
+       HCMD_NAME(WOWLAN_TSC_RSC_PARAM),
+       HCMD_NAME(WOWLAN_TKIP_PARAM),
+       HCMD_NAME(WOWLAN_KEK_KCK_MATERIAL),
+       HCMD_NAME(WOWLAN_GET_STATUSES),
+       HCMD_NAME(WOWLAN_TX_POWER_PER_DB),
+       HCMD_NAME(SCAN_ITERATION_COMPLETE),
+       HCMD_NAME(D0I3_END_CMD),
+       HCMD_NAME(LTR_CONFIG),
+       HCMD_NAME(REPLY_DEBUG_CMD),
 };
-#undef CMD
+
+/* Please keep this array *SORTED* by hex value.
+ * Access is done through binary search
+ */
+static const struct iwl_hcmd_names iwl_mvm_phy_names[] = {
+       HCMD_NAME(CMD_DTS_MEASUREMENT_TRIGGER_WIDE),
+       HCMD_NAME(DTS_MEASUREMENT_NOTIF_WIDE),
+};
+
+static const struct iwl_hcmd_arr iwl_mvm_groups[] = {
+       [LEGACY_GROUP] = HCMD_ARR(iwl_mvm_legacy_names),
+       [LONG_GROUP] = HCMD_ARR(iwl_mvm_legacy_names),
+       [PHY_OPS_GROUP] = HCMD_ARR(iwl_mvm_phy_names),
+};
+
 
 /* this forward declaration can avoid to export the function */
 static void iwl_mvm_async_handlers_wk(struct work_struct *wk);
@@ -508,7 +533,8 @@ iwl_op_mode_mvm_start(struct iwl_trans *trans, const struct iwl_cfg *cfg,
        if (mvm->fw->ucode_capa.flags & IWL_UCODE_TLV_FLAGS_DW_BC_TABLE)
                trans_cfg.bc_table_dword = true;
 
-       trans_cfg.command_names = iwl_mvm_cmd_strings;
+       trans_cfg.command_groups = iwl_mvm_groups;
+       trans_cfg.command_groups_size = ARRAY_SIZE(iwl_mvm_groups);
 
        trans_cfg.cmd_queue = IWL_MVM_CMD_QUEUE;
        trans_cfg.cmd_fifo = IWL_MVM_TX_FIFO_CMD;
This page took 0.030863 seconds and 5 git commands to generate.