|
@@ -40,89 +40,86 @@
|
|
|
#include "iwl-agn.h"
|
|
|
#include "iwl-shared.h"
|
|
|
|
|
|
-const char *get_cmd_string(u8 cmd)
|
|
|
-{
|
|
|
- switch (cmd) {
|
|
|
- IWL_CMD(REPLY_ALIVE);
|
|
|
- IWL_CMD(REPLY_ERROR);
|
|
|
- IWL_CMD(REPLY_ECHO);
|
|
|
- IWL_CMD(REPLY_RXON);
|
|
|
- IWL_CMD(REPLY_RXON_ASSOC);
|
|
|
- IWL_CMD(REPLY_QOS_PARAM);
|
|
|
- IWL_CMD(REPLY_RXON_TIMING);
|
|
|
- IWL_CMD(REPLY_ADD_STA);
|
|
|
- IWL_CMD(REPLY_REMOVE_STA);
|
|
|
- IWL_CMD(REPLY_REMOVE_ALL_STA);
|
|
|
- IWL_CMD(REPLY_TXFIFO_FLUSH);
|
|
|
- IWL_CMD(REPLY_WEPKEY);
|
|
|
- IWL_CMD(REPLY_TX);
|
|
|
- IWL_CMD(REPLY_LEDS_CMD);
|
|
|
- IWL_CMD(REPLY_TX_LINK_QUALITY_CMD);
|
|
|
- IWL_CMD(COEX_PRIORITY_TABLE_CMD);
|
|
|
- IWL_CMD(COEX_MEDIUM_NOTIFICATION);
|
|
|
- IWL_CMD(COEX_EVENT_CMD);
|
|
|
- IWL_CMD(REPLY_QUIET_CMD);
|
|
|
- IWL_CMD(REPLY_CHANNEL_SWITCH);
|
|
|
- IWL_CMD(CHANNEL_SWITCH_NOTIFICATION);
|
|
|
- IWL_CMD(REPLY_SPECTRUM_MEASUREMENT_CMD);
|
|
|
- IWL_CMD(SPECTRUM_MEASURE_NOTIFICATION);
|
|
|
- IWL_CMD(POWER_TABLE_CMD);
|
|
|
- IWL_CMD(PM_SLEEP_NOTIFICATION);
|
|
|
- IWL_CMD(PM_DEBUG_STATISTIC_NOTIFIC);
|
|
|
- IWL_CMD(REPLY_SCAN_CMD);
|
|
|
- IWL_CMD(REPLY_SCAN_ABORT_CMD);
|
|
|
- IWL_CMD(SCAN_START_NOTIFICATION);
|
|
|
- IWL_CMD(SCAN_RESULTS_NOTIFICATION);
|
|
|
- IWL_CMD(SCAN_COMPLETE_NOTIFICATION);
|
|
|
- IWL_CMD(BEACON_NOTIFICATION);
|
|
|
- IWL_CMD(REPLY_TX_BEACON);
|
|
|
- IWL_CMD(WHO_IS_AWAKE_NOTIFICATION);
|
|
|
- IWL_CMD(QUIET_NOTIFICATION);
|
|
|
- IWL_CMD(REPLY_TX_PWR_TABLE_CMD);
|
|
|
- IWL_CMD(MEASURE_ABORT_NOTIFICATION);
|
|
|
- IWL_CMD(REPLY_BT_CONFIG);
|
|
|
- IWL_CMD(REPLY_STATISTICS_CMD);
|
|
|
- IWL_CMD(STATISTICS_NOTIFICATION);
|
|
|
- IWL_CMD(REPLY_CARD_STATE_CMD);
|
|
|
- IWL_CMD(CARD_STATE_NOTIFICATION);
|
|
|
- IWL_CMD(MISSED_BEACONS_NOTIFICATION);
|
|
|
- IWL_CMD(REPLY_CT_KILL_CONFIG_CMD);
|
|
|
- IWL_CMD(SENSITIVITY_CMD);
|
|
|
- IWL_CMD(REPLY_PHY_CALIBRATION_CMD);
|
|
|
- IWL_CMD(REPLY_RX_PHY_CMD);
|
|
|
- IWL_CMD(REPLY_RX_MPDU_CMD);
|
|
|
- IWL_CMD(REPLY_RX);
|
|
|
- IWL_CMD(REPLY_COMPRESSED_BA);
|
|
|
- IWL_CMD(CALIBRATION_CFG_CMD);
|
|
|
- IWL_CMD(CALIBRATION_RES_NOTIFICATION);
|
|
|
- IWL_CMD(CALIBRATION_COMPLETE_NOTIFICATION);
|
|
|
- IWL_CMD(REPLY_TX_POWER_DBM_CMD);
|
|
|
- IWL_CMD(TEMPERATURE_NOTIFICATION);
|
|
|
- IWL_CMD(TX_ANT_CONFIGURATION_CMD);
|
|
|
- IWL_CMD(REPLY_BT_COEX_PROFILE_NOTIF);
|
|
|
- IWL_CMD(REPLY_BT_COEX_PRIO_TABLE);
|
|
|
- IWL_CMD(REPLY_BT_COEX_PROT_ENV);
|
|
|
- IWL_CMD(REPLY_WIPAN_PARAMS);
|
|
|
- IWL_CMD(REPLY_WIPAN_RXON);
|
|
|
- IWL_CMD(REPLY_WIPAN_RXON_TIMING);
|
|
|
- IWL_CMD(REPLY_WIPAN_RXON_ASSOC);
|
|
|
- IWL_CMD(REPLY_WIPAN_QOS_PARAM);
|
|
|
- IWL_CMD(REPLY_WIPAN_WEPKEY);
|
|
|
- IWL_CMD(REPLY_WIPAN_P2P_CHANNEL_SWITCH);
|
|
|
- IWL_CMD(REPLY_WIPAN_NOA_NOTIFICATION);
|
|
|
- IWL_CMD(REPLY_WIPAN_DEACTIVATION_COMPLETE);
|
|
|
- IWL_CMD(REPLY_WOWLAN_PATTERNS);
|
|
|
- IWL_CMD(REPLY_WOWLAN_WAKEUP_FILTER);
|
|
|
- IWL_CMD(REPLY_WOWLAN_TSC_RSC_PARAMS);
|
|
|
- IWL_CMD(REPLY_WOWLAN_TKIP_PARAMS);
|
|
|
- IWL_CMD(REPLY_WOWLAN_KEK_KCK_MATERIAL);
|
|
|
- IWL_CMD(REPLY_WOWLAN_GET_STATUS);
|
|
|
- IWL_CMD(REPLY_D3_CONFIG);
|
|
|
- default:
|
|
|
- return "UNKNOWN";
|
|
|
-
|
|
|
- }
|
|
|
-}
|
|
|
+#define IWL_CMD_ENTRY(x) [x] = #x
|
|
|
+
|
|
|
+const char *iwl_dvm_cmd_strings[REPLY_MAX] = {
|
|
|
+ IWL_CMD_ENTRY(REPLY_ALIVE),
|
|
|
+ IWL_CMD_ENTRY(REPLY_ERROR),
|
|
|
+ IWL_CMD_ENTRY(REPLY_ECHO),
|
|
|
+ IWL_CMD_ENTRY(REPLY_RXON),
|
|
|
+ IWL_CMD_ENTRY(REPLY_RXON_ASSOC),
|
|
|
+ IWL_CMD_ENTRY(REPLY_QOS_PARAM),
|
|
|
+ IWL_CMD_ENTRY(REPLY_RXON_TIMING),
|
|
|
+ IWL_CMD_ENTRY(REPLY_ADD_STA),
|
|
|
+ IWL_CMD_ENTRY(REPLY_REMOVE_STA),
|
|
|
+ IWL_CMD_ENTRY(REPLY_REMOVE_ALL_STA),
|
|
|
+ IWL_CMD_ENTRY(REPLY_TXFIFO_FLUSH),
|
|
|
+ IWL_CMD_ENTRY(REPLY_WEPKEY),
|
|
|
+ IWL_CMD_ENTRY(REPLY_TX),
|
|
|
+ IWL_CMD_ENTRY(REPLY_LEDS_CMD),
|
|
|
+ IWL_CMD_ENTRY(REPLY_TX_LINK_QUALITY_CMD),
|
|
|
+ IWL_CMD_ENTRY(COEX_PRIORITY_TABLE_CMD),
|
|
|
+ IWL_CMD_ENTRY(COEX_MEDIUM_NOTIFICATION),
|
|
|
+ IWL_CMD_ENTRY(COEX_EVENT_CMD),
|
|
|
+ IWL_CMD_ENTRY(REPLY_QUIET_CMD),
|
|
|
+ IWL_CMD_ENTRY(REPLY_CHANNEL_SWITCH),
|
|
|
+ IWL_CMD_ENTRY(CHANNEL_SWITCH_NOTIFICATION),
|
|
|
+ IWL_CMD_ENTRY(REPLY_SPECTRUM_MEASUREMENT_CMD),
|
|
|
+ IWL_CMD_ENTRY(SPECTRUM_MEASURE_NOTIFICATION),
|
|
|
+ IWL_CMD_ENTRY(POWER_TABLE_CMD),
|
|
|
+ IWL_CMD_ENTRY(PM_SLEEP_NOTIFICATION),
|
|
|
+ IWL_CMD_ENTRY(PM_DEBUG_STATISTIC_NOTIFIC),
|
|
|
+ IWL_CMD_ENTRY(REPLY_SCAN_CMD),
|
|
|
+ IWL_CMD_ENTRY(REPLY_SCAN_ABORT_CMD),
|
|
|
+ IWL_CMD_ENTRY(SCAN_START_NOTIFICATION),
|
|
|
+ IWL_CMD_ENTRY(SCAN_RESULTS_NOTIFICATION),
|
|
|
+ IWL_CMD_ENTRY(SCAN_COMPLETE_NOTIFICATION),
|
|
|
+ IWL_CMD_ENTRY(BEACON_NOTIFICATION),
|
|
|
+ IWL_CMD_ENTRY(REPLY_TX_BEACON),
|
|
|
+ IWL_CMD_ENTRY(WHO_IS_AWAKE_NOTIFICATION),
|
|
|
+ IWL_CMD_ENTRY(QUIET_NOTIFICATION),
|
|
|
+ IWL_CMD_ENTRY(REPLY_TX_PWR_TABLE_CMD),
|
|
|
+ IWL_CMD_ENTRY(MEASURE_ABORT_NOTIFICATION),
|
|
|
+ IWL_CMD_ENTRY(REPLY_BT_CONFIG),
|
|
|
+ IWL_CMD_ENTRY(REPLY_STATISTICS_CMD),
|
|
|
+ IWL_CMD_ENTRY(STATISTICS_NOTIFICATION),
|
|
|
+ IWL_CMD_ENTRY(REPLY_CARD_STATE_CMD),
|
|
|
+ IWL_CMD_ENTRY(CARD_STATE_NOTIFICATION),
|
|
|
+ IWL_CMD_ENTRY(MISSED_BEACONS_NOTIFICATION),
|
|
|
+ IWL_CMD_ENTRY(REPLY_CT_KILL_CONFIG_CMD),
|
|
|
+ IWL_CMD_ENTRY(SENSITIVITY_CMD),
|
|
|
+ IWL_CMD_ENTRY(REPLY_PHY_CALIBRATION_CMD),
|
|
|
+ IWL_CMD_ENTRY(REPLY_RX_PHY_CMD),
|
|
|
+ IWL_CMD_ENTRY(REPLY_RX_MPDU_CMD),
|
|
|
+ IWL_CMD_ENTRY(REPLY_RX),
|
|
|
+ IWL_CMD_ENTRY(REPLY_COMPRESSED_BA),
|
|
|
+ IWL_CMD_ENTRY(CALIBRATION_CFG_CMD),
|
|
|
+ IWL_CMD_ENTRY(CALIBRATION_RES_NOTIFICATION),
|
|
|
+ IWL_CMD_ENTRY(CALIBRATION_COMPLETE_NOTIFICATION),
|
|
|
+ IWL_CMD_ENTRY(REPLY_TX_POWER_DBM_CMD),
|
|
|
+ IWL_CMD_ENTRY(TEMPERATURE_NOTIFICATION),
|
|
|
+ IWL_CMD_ENTRY(TX_ANT_CONFIGURATION_CMD),
|
|
|
+ IWL_CMD_ENTRY(REPLY_BT_COEX_PROFILE_NOTIF),
|
|
|
+ IWL_CMD_ENTRY(REPLY_BT_COEX_PRIO_TABLE),
|
|
|
+ IWL_CMD_ENTRY(REPLY_BT_COEX_PROT_ENV),
|
|
|
+ IWL_CMD_ENTRY(REPLY_WIPAN_PARAMS),
|
|
|
+ IWL_CMD_ENTRY(REPLY_WIPAN_RXON),
|
|
|
+ IWL_CMD_ENTRY(REPLY_WIPAN_RXON_TIMING),
|
|
|
+ IWL_CMD_ENTRY(REPLY_WIPAN_RXON_ASSOC),
|
|
|
+ IWL_CMD_ENTRY(REPLY_WIPAN_QOS_PARAM),
|
|
|
+ IWL_CMD_ENTRY(REPLY_WIPAN_WEPKEY),
|
|
|
+ IWL_CMD_ENTRY(REPLY_WIPAN_P2P_CHANNEL_SWITCH),
|
|
|
+ IWL_CMD_ENTRY(REPLY_WIPAN_NOA_NOTIFICATION),
|
|
|
+ IWL_CMD_ENTRY(REPLY_WIPAN_DEACTIVATION_COMPLETE),
|
|
|
+ IWL_CMD_ENTRY(REPLY_WOWLAN_PATTERNS),
|
|
|
+ IWL_CMD_ENTRY(REPLY_WOWLAN_WAKEUP_FILTER),
|
|
|
+ IWL_CMD_ENTRY(REPLY_WOWLAN_TSC_RSC_PARAMS),
|
|
|
+ IWL_CMD_ENTRY(REPLY_WOWLAN_TKIP_PARAMS),
|
|
|
+ IWL_CMD_ENTRY(REPLY_WOWLAN_KEK_KCK_MATERIAL),
|
|
|
+ IWL_CMD_ENTRY(REPLY_WOWLAN_GET_STATUS),
|
|
|
+ IWL_CMD_ENTRY(REPLY_D3_CONFIG),
|
|
|
+};
|
|
|
+#undef IWL_CMD_ENTRY
|
|
|
|
|
|
/******************************************************************************
|
|
|
*
|
|
@@ -137,10 +134,9 @@ static int iwlagn_rx_reply_error(struct iwl_priv *priv,
|
|
|
struct iwl_rx_packet *pkt = rxb_addr(rxb);
|
|
|
struct iwl_error_resp *err_resp = (void *)pkt->data;
|
|
|
|
|
|
- IWL_ERR(priv, "Error Reply type 0x%08X cmd %s (0x%02X) "
|
|
|
+ IWL_ERR(priv, "Error Reply type 0x%08X cmd REPLY_ERROR (0x%02X) "
|
|
|
"seq 0x%04X ser 0x%08X\n",
|
|
|
le32_to_cpu(err_resp->error_type),
|
|
|
- get_cmd_string(err_resp->cmd_id),
|
|
|
err_resp->cmd_id,
|
|
|
le16_to_cpu(err_resp->bad_cmd_seq_num),
|
|
|
le32_to_cpu(err_resp->error_info));
|
|
@@ -216,8 +212,7 @@ static int iwlagn_rx_pm_debug_statistics_notif(struct iwl_priv *priv,
|
|
|
u32 __maybe_unused len =
|
|
|
le32_to_cpu(pkt->len_n_flags) & FH_RSCSR_FRAME_SIZE_MSK;
|
|
|
IWL_DEBUG_RADIO(priv, "Dumping %d bytes of unhandled "
|
|
|
- "notification for %s:\n", len,
|
|
|
- get_cmd_string(pkt->hdr.cmd));
|
|
|
+ "notification for PM_DEBUG_STATISTIC_NOTIFIC:\n", len);
|
|
|
iwl_print_hex_dump(priv, IWL_DL_RADIO, pkt->data, len);
|
|
|
return 0;
|
|
|
}
|
|
@@ -1152,9 +1147,9 @@ int iwl_rx_dispatch(struct iwl_op_mode *op_mode, struct iwl_rx_cmd_buffer *rxb,
|
|
|
err = priv->rx_handlers[pkt->hdr.cmd] (priv, rxb, cmd);
|
|
|
} else {
|
|
|
/* No handling needed */
|
|
|
- IWL_DEBUG_RX(priv,
|
|
|
- "No handler needed for %s, 0x%02x\n",
|
|
|
- get_cmd_string(pkt->hdr.cmd), pkt->hdr.cmd);
|
|
|
+ IWL_DEBUG_RX(priv, "No handler needed for %s, 0x%02x\n",
|
|
|
+ iwl_dvm_get_cmd_string(pkt->hdr.cmd),
|
|
|
+ pkt->hdr.cmd);
|
|
|
}
|
|
|
}
|
|
|
return err;
|