diff --git a/sys/dev/iwx/if_iwx.c b/sys/dev/iwx/if_iwx.c --- a/sys/dev/iwx/if_iwx.c +++ b/sys/dev/iwx/if_iwx.c @@ -5111,9 +5111,6 @@ static int iwx_send_cmd(struct iwx_softc *sc, struct iwx_host_cmd *hcmd) { -#ifdef IWX_DEBUG - iwx_bbl_add_entry(hcmd->id, IWX_BBL_CMD_TX, ticks); -#endif struct iwx_tx_ring *ring = &sc->txq[IWX_DQA_CMD_QUEUE]; struct iwx_tfh_tfd *desc; struct iwx_tx_data *txdata; @@ -5717,9 +5714,6 @@ memcpy(tx->hdr, wh, hdrlen); txcmd_size = sizeof(*tx); } -#if IWX_DEBUG - iwx_bbl_add_entry(totlen, IWX_BBL_PKT_TX, ticks); -#endif /* Trim 802.11 header. */ m_adj(m, hdrlen); @@ -8565,9 +8559,6 @@ if (--sc->sc_tx_timer[i] == 0) { printf("%s: device timeout\n", DEVNAME(sc)); - if (sc->sc_debug) - iwx_bbl_print_log(); - iwx_nic_error(sc); iwx_dump_driver_status(sc); ieee80211_restart_all(ic); @@ -8892,9 +8883,7 @@ if (!iwx_rx_pkt_valid(pkt)) break; -#ifdef IWX_DEBUG - iwx_bbl_add_entry(pkt->hdr.code, IWX_BBL_CMD_RX, ticks); -#endif + /* * XXX Intel inside (tm) * Any commands in the LONG_GROUP could actually be in the @@ -9507,7 +9496,6 @@ (inta_hw & IWX_MSIX_HW_INT_CAUSES_REG_SW_ERR) || (inta_hw & IWX_MSIX_HW_INT_CAUSES_REG_SW_ERR_V2)) { if (sc->sc_debug) { - iwx_bbl_print_log(); iwx_nic_error(sc); iwx_dump_driver_status(sc); } diff --git a/sys/dev/iwx/if_iwx_debug.h b/sys/dev/iwx/if_iwx_debug.h --- a/sys/dev/iwx/if_iwx_debug.h +++ b/sys/dev/iwx/if_iwx_debug.h @@ -53,213 +53,7 @@ #define IWX_DPRINTF(sc, m, fmt, ...) do { (void) sc; } while (0) #endif -void print_opcode(const char *, int, int, uint32_t); +void print_opcode(const char *, int, uint32_t); void print_ratenflags(const char *, int , uint32_t , int ); -void iwx_dump_cmd(uint32_t , void *, uint16_t, const char *, int); -void iwx_bbl_add_entry(uint32_t, int, int); -void iwx_bbl_print_log(void); - -#define IWX_BBL_NONE 0x00 -#define IWX_BBL_PKT_TX 0x01 -#define IWX_BBL_PKT_RX 0x02 -#define IWX_BBL_PKT_DUP 0x04 -#define IWX_BBL_CMD_TX 0x10 -#define IWX_BBL_CMD_RX 0x20 -#define IWX_BBL_ANY 0xFF - -static int print_mask = IWX_BBL_NONE; //IWX_BBL_NONE | IWX_BBL_CMD_TX; -static int print_codes[][2] = { -#if 0 - for example: - IWX_LEGACY_GROUP, IWX_ADD_STA_KEY, - IWX_LEGACY_GROUP, IWX_SCD_QUEUE_CONFIG_CMD, - IWX_LEGACY_GROUP, IWX_ADD_STA, - IWX_LEGACY_GROUP, IWX_REMOVE_STA, -#endif -}; - -static int dump_mask = IWX_BBL_NONE; -static int dump_codes[][2] = { -#if 0 - for example: - IWX_LEGACY_GROUP, IWX_ADD_STA_KEY, - IWX_LEGACY_GROUP, IWX_SCD_QUEUE_CONFIG_CMD, - IWX_LEGACY_GROUP, IWX_ADD_STA, - IWX_LEGACY_GROUP, IWX_REMOVE_STA, -#endif -}; - -struct opcode_label { - uint8_t opcode; - const char *label; -}; - -static struct opcode_label command_group[] = { - { 0x0, "IWX_LEGACY_GROUP"}, - { 0x1, "IWX_LONG_GROUP"}, - { 0x2, "IWX_SYSTEM_GROUP"}, - { 0x3, "IWX_MAC_CONF_GROUP"}, - { 0x4, "IWX_PHY_OPS_GROUP"}, - { 0x5, "IWX_DATA_PATH_GROUP"}, - { 0xb, "IWX_PROT_OFFLOAD_GROUP"}, - { 0xc, "IWX_REGULATORY_AND_NVM_GROUP"}, - { 0, NULL } -}; - -static struct opcode_label legacy_opcodes[] = { - { 0xc0, "IWX_REPLY_RX_PHY_CMD" }, - { 0xc1, "IWX_REPLY_RX_MPDU_CMD" }, - { 0xc2, "IWX_BAR_FRAME_RELEASE" }, - { 0xc3, "IWX_FRAME_RELEASE" }, - { 0xc5, "IWX_BA_NOTIF" }, - { 0x62, "IWX_TEMPERATURE_NOTIFICATION" }, - { 0xc8, "IWX_MCC_UPDATE_CMD" }, - { 0xc9, "IWX_MCC_CHUB_UPDATE_CMD" }, - { 0x65, "IWX_CALIBRATION_CFG_CMD" }, - { 0x66, "IWX_CALIBRATION_RES_NOTIFICATION" }, - { 0x67, "IWX_CALIBRATION_COMPLETE_NOTIFICATION" }, - { 0x68, "IWX_RADIO_VERSION_NOTIFICATION" }, - { 0x00, "IWX_CMD_DTS_MEASUREMENT_TRIGGER_WIDE" }, - { 0x01, "IWX_SOC_CONFIGURATION_CMD" }, - { 0x02, "IWX_REPLY_ERROR" }, - { 0x03, "IWX_CTDP_CONFIG_CMD" }, - { 0x04, "IWX_INIT_COMPLETE_NOTIF" }, - { 0x05, "IWX_SESSION_PROTECTION_CMD" }, - { 0x5d, "IWX_BT_COEX_CI" }, - { 0x07, "IWX_FW_ERROR_RECOVERY_CMD" }, - { 0x08, "IWX_RLC_CONFIG_CMD" }, - { 0xd0, "IWX_MCAST_FILTER_CMD" }, - { 0xd1, "IWX_REPLY_SF_CFG_CMD" }, - { 0xd2, "IWX_REPLY_BEACON_FILTERING_CMD" }, - { 0xd3, "IWX_D3_CONFIG_CMD" }, - { 0xd4, "IWX_PROT_OFFLOAD_CONFIG_CMD" }, - { 0xd5, "IWX_OFFLOADS_QUERY_CMD" }, - { 0xd6, "IWX_REMOTE_WAKE_CONFIG_CMD" }, - { 0x77, "IWX_POWER_TABLE_CMD" }, - { 0x78, "IWX_PSM_UAPSD_AP_MISBEHAVING_NOTIFICATION" }, - { 0xcc, "IWX_BT_COEX_PRIO_TABLE" }, - { 0xcd, "IWX_BT_COEX_PROT_ENV" }, - { 0xce, "IWX_BT_PROFILE_NOTIFICATION" }, - { 0x6a, "IWX_PHY_CONFIGURATION_CMD" }, - { 0x16, "IWX_RX_BAID_ALLOCATION_CONFIG_CMD" }, - { 0x17, "IWX_ADD_STA_KEY" }, - { 0x18, "IWX_ADD_STA" }, - { 0x19, "IWX_REMOVE_STA" }, - { 0xe0, "IWX_WOWLAN_PATTERNS" }, - { 0xe1, "IWX_WOWLAN_CONFIGURATION" }, - { 0xe2, "IWX_WOWLAN_TSC_RSC_PARAM" }, - { 0xe3, "IWX_WOWLAN_TKIP_PARAM" }, - { 0xe4, "IWX_WOWLAN_KEK_KCK_MATERIAL" }, - { 0xe5, "IWX_WOWLAN_GET_STATUSES" }, - { 0xe6, "IWX_WOWLAN_TX_POWER_PER_DB" }, - { 0x0f, "IWX_SCAN_COMPLETE_UMAC" }, - { 0x88, "IWX_NVM_ACCESS_CMD" }, - { 0x20, "IWX_WEP_KEY" }, - { 0xdc, "IWX_CMD_DTS_MEASUREMENT_TRIGGER" }, - { 0xdd, "IWX_DTS_MEASUREMENT_NOTIFICATION" }, - { 0x28, "IWX_MAC_CONTEXT_CMD" }, - { 0x29, "IWX_TIME_EVENT_CMD" }, - { 0x01, "IWX_ALIVE" }, - { 0xf0, "IWX_REPLY_DEBUG_CMD" }, - { 0x90, "IWX_BEACON_NOTIFICATION" }, - { 0xf5, "IWX_RX_NO_DATA_NOTIF" }, - { 0x08, "IWX_PHY_CONTEXT_CMD" }, - { 0x91, "IWX_BEACON_TEMPLATE_CMD" }, - { 0xf6, "IWX_THERMAL_DUAL_CHAIN_REQUEST" }, - { 0x09, "IWX_DBG_CFG" }, - { 0xf7, "IWX_DEBUG_LOG_MSG" }, - { 0x1c, "IWX_TX_CMD" }, - { 0x1d, "IWX_SCD_QUEUE_CFG" }, - { 0x1e, "IWX_TXPATH_FLUSH" }, - { 0x1f, "IWX_MGMT_MCAST_KEY" }, - { 0x98, "IWX_TX_ANT_CONFIGURATION_CMD" }, - { 0xee, "IWX_LTR_CONFIG" }, - { 0x8e, "IWX_SET_CALIB_DEFAULT_CMD" }, - { 0xFE, "IWX_CT_KILL_NOTIFICATION" }, - { 0xFF, "IWX_DTS_MEASUREMENT_NOTIF_WIDE" }, - { 0x2a, "IWX_TIME_EVENT_NOTIFICATION" }, - { 0x2b, "IWX_BINDING_CONTEXT_CMD" }, - { 0x2c, "IWX_TIME_QUOTA_CMD" }, - { 0x2d, "IWX_NON_QOS_TX_COUNTER_CMD" }, - { 0xa0, "IWX_CARD_STATE_CMD" }, - { 0xa1, "IWX_CARD_STATE_NOTIFICATION" }, - { 0xa2, "IWX_MISSED_BEACONS_NOTIFICATION" }, - { 0x0c, "IWX_SCAN_CFG_CMD" }, - { 0x0d, "IWX_SCAN_REQ_UMAC" }, - { 0xfb, "IWX_SESSION_PROTECTION_NOTIF" }, - { 0x0e, "IWX_SCAN_ABORT_UMAC" }, - { 0xfe, "IWX_PNVM_INIT_COMPLETE" }, - { 0xa9, "IWX_MAC_PM_POWER_TABLE" }, - { 0xff, "IWX_FSEQ_VER_MISMATCH_NOTIFICATION | IWX_REPLY_MAX" }, - { 0x9b, "IWX_BT_CONFIG" }, - { 0x9c, "IWX_STATISTICS_CMD" }, - { 0x9d, "IWX_STATISTICS_NOTIFICATION" }, - { 0x9f, "IWX_REDUCE_TX_POWER_CMD" }, - { 0xb1, "IWX_MFUART_LOAD_NOTIFICATION" }, - { 0xb5, "IWX_SCAN_ITERATION_COMPLETE_UMAC" }, - { 0x54, "IWX_NET_DETECT_CONFIG_CMD" }, - { 0x56, "IWX_NET_DETECT_PROFILES_QUERY_CMD" }, - { 0x57, "IWX_NET_DETECT_PROFILES_CMD" }, - { 0x58, "IWX_NET_DETECT_HOTSPOTS_CMD" }, - { 0x59, "IWX_NET_DETECT_HOTSPOTS_QUERY_CMD" }, - { 0, NULL } -}; - -/* SYSTEM_GROUP group subcommand IDs */ -static struct opcode_label system_opcodes[] = { - { 0x00, "IWX_SHARED_MEM_CFG_CMD" }, - { 0x01, "IWX_SOC_CONFIGURATION_CMD" }, - { 0x03, "IWX_INIT_EXTENDED_CFG_CMD" }, - { 0x07, "IWX_FW_ERROR_RECOVERY_CMD" }, - { 0xff, "IWX_FSEQ_VER_MISMATCH_NOTIFICATION | IWX_REPLY_MAX" }, - { 0, NULL } -}; - -/* MAC_CONF group subcommand IDs */ -static struct opcode_label macconf_opcodes[] = { - { 0x05, "IWX_SESSION_PROTECTION_CMD" }, - { 0xfb, "IWX_SESSION_PROTECTION_NOTIF" }, - { 0, NULL } -}; - -/* DATA_PATH group subcommand IDs */ -static struct opcode_label data_opcodes[] = { - { 0x00, "IWX_DQA_ENABLE_CMD" }, - { 0x08, "IWX_RLC_CONFIG_CMD" }, - { 0x0f, "IWX_TLC_MNG_CONFIG_CMD" }, - { 0x16, "IWX_RX_BAID_ALLOCATION_CONFIG_CMD" }, - { 0x17, "IWX_SCD_QUEUE_CONFIG_CMD" }, - { 0xf5, "IWX_RX_NO_DATA_NOTIF" }, - { 0xf6, "IWX_THERMAL_DUAL_CHAIN_REQUEST" }, - { 0xf7, "IWX_TLC_MNG_UPDATE_NOTIF" }, - { 0, NULL } -}; - -/* REGULATORY_AND_NVM group subcommand IDs */ -static struct opcode_label reg_opcodes[] = { - { 0x00, "IWX_NVM_ACCESS_COMPLETE" }, - { 0x02, "IWX_NVM_GET_INFO " }, - { 0xfe, "IWX_PNVM_INIT_COMPLETE" }, - { 0, NULL } -}; - -/* PHY_OPS subcommand IDs */ -static struct opcode_label phyops_opcodes[] = { - {0x00, "IWX_CMD_DTS_MEASUREMENT_TRIGGER_WIDE"}, - {0x03, "IWX_CTDP_CONFIG_CMD"}, - {0x04, "IWX_TEMP_REPORTING_THRESHOLDS_CMD"}, - {0xFE, "IWX_CT_KILL_NOTIFICATION"}, - {0xFF, "IWX_DTS_MEASUREMENT_NOTIF_WIDE"}, -}; - -struct iwx_bbl_entry { - uint8_t type; - uint32_t code; - uint32_t seq; - uint32_t ticks; - uint32_t count; -}; -#define IWX_BBL_ENTRIES 2000 -static struct iwx_bbl_entry iwx_bb_log[IWX_BBL_ENTRIES]; #endif /* __IF_IWX_DEBUG_H__ */ diff --git a/sys/dev/iwx/if_iwx_debug.c b/sys/dev/iwx/if_iwx_debug.c --- a/sys/dev/iwx/if_iwx_debug.c +++ b/sys/dev/iwx/if_iwx_debug.c @@ -19,30 +19,178 @@ #include #include -static uint16_t bbl_idx = 0; -static uint32_t bbl_seq = 0; -static uint8_t bbl_compress = 1; +static int print_codes[][2] = { +#if 0 + for example: + IWX_LEGACY_GROUP, IWX_ADD_STA_KEY, + IWX_LEGACY_GROUP, IWX_SCD_QUEUE_CONFIG_CMD, + IWX_LEGACY_GROUP, IWX_ADD_STA, + IWX_LEGACY_GROUP, IWX_REMOVE_STA, +#endif +}; -static const char * -iwx_bbl_to_str(int type) -{ - switch(type) { - case IWX_BBL_PKT_TX: - return ("IWX_BBL_PKT_TX"); - case IWX_BBL_PKT_RX: - return ("IWX_BBL_PKT_RX"); - case IWX_BBL_PKT_DUP: - return ("IWX_BBL_PKT_DUP"); - case IWX_BBL_CMD_TX: - return ("IWX_BBL_CMD_TX"); - case IWX_BBL_CMD_RX: - return ("IWX_BBL_CMD_RX"); - case IWX_BBL_ANY: - return ("IWX_BBL_ANY"); - default: - return ("ERROR"); - } -} +struct opcode_label { + uint8_t opcode; + const char *label; +}; + +static struct opcode_label command_group[] = { + { 0x0, "IWX_LEGACY_GROUP"}, + { 0x1, "IWX_LONG_GROUP"}, + { 0x2, "IWX_SYSTEM_GROUP"}, + { 0x3, "IWX_MAC_CONF_GROUP"}, + { 0x4, "IWX_PHY_OPS_GROUP"}, + { 0x5, "IWX_DATA_PATH_GROUP"}, + { 0xb, "IWX_PROT_OFFLOAD_GROUP"}, + { 0xc, "IWX_REGULATORY_AND_NVM_GROUP"}, + { 0, NULL } +}; + +static struct opcode_label legacy_opcodes[] = { + { 0xc0, "IWX_REPLY_RX_PHY_CMD" }, + { 0xc1, "IWX_REPLY_RX_MPDU_CMD" }, + { 0xc2, "IWX_BAR_FRAME_RELEASE" }, + { 0xc3, "IWX_FRAME_RELEASE" }, + { 0xc5, "IWX_BA_NOTIF" }, + { 0x62, "IWX_TEMPERATURE_NOTIFICATION" }, + { 0xc8, "IWX_MCC_UPDATE_CMD" }, + { 0xc9, "IWX_MCC_CHUB_UPDATE_CMD" }, + { 0x65, "IWX_CALIBRATION_CFG_CMD" }, + { 0x66, "IWX_CALIBRATION_RES_NOTIFICATION" }, + { 0x67, "IWX_CALIBRATION_COMPLETE_NOTIFICATION" }, + { 0x68, "IWX_RADIO_VERSION_NOTIFICATION" }, + { 0x00, "IWX_CMD_DTS_MEASUREMENT_TRIGGER_WIDE" }, + { 0x01, "IWX_SOC_CONFIGURATION_CMD" }, + { 0x02, "IWX_REPLY_ERROR" }, + { 0x03, "IWX_CTDP_CONFIG_CMD" }, + { 0x04, "IWX_INIT_COMPLETE_NOTIF" }, + { 0x05, "IWX_SESSION_PROTECTION_CMD" }, + { 0x5d, "IWX_BT_COEX_CI" }, + { 0x07, "IWX_FW_ERROR_RECOVERY_CMD" }, + { 0x08, "IWX_RLC_CONFIG_CMD" }, + { 0xd0, "IWX_MCAST_FILTER_CMD" }, + { 0xd1, "IWX_REPLY_SF_CFG_CMD" }, + { 0xd2, "IWX_REPLY_BEACON_FILTERING_CMD" }, + { 0xd3, "IWX_D3_CONFIG_CMD" }, + { 0xd4, "IWX_PROT_OFFLOAD_CONFIG_CMD" }, + { 0xd5, "IWX_OFFLOADS_QUERY_CMD" }, + { 0xd6, "IWX_REMOTE_WAKE_CONFIG_CMD" }, + { 0x77, "IWX_POWER_TABLE_CMD" }, + { 0x78, "IWX_PSM_UAPSD_AP_MISBEHAVING_NOTIFICATION" }, + { 0xcc, "IWX_BT_COEX_PRIO_TABLE" }, + { 0xcd, "IWX_BT_COEX_PROT_ENV" }, + { 0xce, "IWX_BT_PROFILE_NOTIFICATION" }, + { 0x6a, "IWX_PHY_CONFIGURATION_CMD" }, + { 0x16, "IWX_RX_BAID_ALLOCATION_CONFIG_CMD" }, + { 0x17, "IWX_ADD_STA_KEY" }, + { 0x18, "IWX_ADD_STA" }, + { 0x19, "IWX_REMOVE_STA" }, + { 0xe0, "IWX_WOWLAN_PATTERNS" }, + { 0xe1, "IWX_WOWLAN_CONFIGURATION" }, + { 0xe2, "IWX_WOWLAN_TSC_RSC_PARAM" }, + { 0xe3, "IWX_WOWLAN_TKIP_PARAM" }, + { 0xe4, "IWX_WOWLAN_KEK_KCK_MATERIAL" }, + { 0xe5, "IWX_WOWLAN_GET_STATUSES" }, + { 0xe6, "IWX_WOWLAN_TX_POWER_PER_DB" }, + { 0x0f, "IWX_SCAN_COMPLETE_UMAC" }, + { 0x88, "IWX_NVM_ACCESS_CMD" }, + { 0x20, "IWX_WEP_KEY" }, + { 0xdc, "IWX_CMD_DTS_MEASUREMENT_TRIGGER" }, + { 0xdd, "IWX_DTS_MEASUREMENT_NOTIFICATION" }, + { 0x28, "IWX_MAC_CONTEXT_CMD" }, + { 0x29, "IWX_TIME_EVENT_CMD" }, + { 0x01, "IWX_ALIVE" }, + { 0xf0, "IWX_REPLY_DEBUG_CMD" }, + { 0x90, "IWX_BEACON_NOTIFICATION" }, + { 0xf5, "IWX_RX_NO_DATA_NOTIF" }, + { 0x08, "IWX_PHY_CONTEXT_CMD" }, + { 0x91, "IWX_BEACON_TEMPLATE_CMD" }, + { 0xf6, "IWX_THERMAL_DUAL_CHAIN_REQUEST" }, + { 0x09, "IWX_DBG_CFG" }, + { 0xf7, "IWX_DEBUG_LOG_MSG" }, + { 0x1c, "IWX_TX_CMD" }, + { 0x1d, "IWX_SCD_QUEUE_CFG" }, + { 0x1e, "IWX_TXPATH_FLUSH" }, + { 0x1f, "IWX_MGMT_MCAST_KEY" }, + { 0x98, "IWX_TX_ANT_CONFIGURATION_CMD" }, + { 0xee, "IWX_LTR_CONFIG" }, + { 0x8e, "IWX_SET_CALIB_DEFAULT_CMD" }, + { 0xFE, "IWX_CT_KILL_NOTIFICATION" }, + { 0xFF, "IWX_DTS_MEASUREMENT_NOTIF_WIDE" }, + { 0x2a, "IWX_TIME_EVENT_NOTIFICATION" }, + { 0x2b, "IWX_BINDING_CONTEXT_CMD" }, + { 0x2c, "IWX_TIME_QUOTA_CMD" }, + { 0x2d, "IWX_NON_QOS_TX_COUNTER_CMD" }, + { 0xa0, "IWX_CARD_STATE_CMD" }, + { 0xa1, "IWX_CARD_STATE_NOTIFICATION" }, + { 0xa2, "IWX_MISSED_BEACONS_NOTIFICATION" }, + { 0x0c, "IWX_SCAN_CFG_CMD" }, + { 0x0d, "IWX_SCAN_REQ_UMAC" }, + { 0xfb, "IWX_SESSION_PROTECTION_NOTIF" }, + { 0x0e, "IWX_SCAN_ABORT_UMAC" }, + { 0xfe, "IWX_PNVM_INIT_COMPLETE" }, + { 0xa9, "IWX_MAC_PM_POWER_TABLE" }, + { 0xff, "IWX_FSEQ_VER_MISMATCH_NOTIFICATION | IWX_REPLY_MAX" }, + { 0x9b, "IWX_BT_CONFIG" }, + { 0x9c, "IWX_STATISTICS_CMD" }, + { 0x9d, "IWX_STATISTICS_NOTIFICATION" }, + { 0x9f, "IWX_REDUCE_TX_POWER_CMD" }, + { 0xb1, "IWX_MFUART_LOAD_NOTIFICATION" }, + { 0xb5, "IWX_SCAN_ITERATION_COMPLETE_UMAC" }, + { 0x54, "IWX_NET_DETECT_CONFIG_CMD" }, + { 0x56, "IWX_NET_DETECT_PROFILES_QUERY_CMD" }, + { 0x57, "IWX_NET_DETECT_PROFILES_CMD" }, + { 0x58, "IWX_NET_DETECT_HOTSPOTS_CMD" }, + { 0x59, "IWX_NET_DETECT_HOTSPOTS_QUERY_CMD" }, + { 0, NULL } +}; + +/* SYSTEM_GROUP group subcommand IDs */ +static struct opcode_label system_opcodes[] = { + { 0x00, "IWX_SHARED_MEM_CFG_CMD" }, + { 0x01, "IWX_SOC_CONFIGURATION_CMD" }, + { 0x03, "IWX_INIT_EXTENDED_CFG_CMD" }, + { 0x07, "IWX_FW_ERROR_RECOVERY_CMD" }, + { 0xff, "IWX_FSEQ_VER_MISMATCH_NOTIFICATION | IWX_REPLY_MAX" }, + { 0, NULL } +}; + +/* MAC_CONF group subcommand IDs */ +static struct opcode_label macconf_opcodes[] = { + { 0x05, "IWX_SESSION_PROTECTION_CMD" }, + { 0xfb, "IWX_SESSION_PROTECTION_NOTIF" }, + { 0, NULL } +}; + +/* DATA_PATH group subcommand IDs */ +static struct opcode_label data_opcodes[] = { + { 0x00, "IWX_DQA_ENABLE_CMD" }, + { 0x08, "IWX_RLC_CONFIG_CMD" }, + { 0x0f, "IWX_TLC_MNG_CONFIG_CMD" }, + { 0x16, "IWX_RX_BAID_ALLOCATION_CONFIG_CMD" }, + { 0x17, "IWX_SCD_QUEUE_CONFIG_CMD" }, + { 0xf5, "IWX_RX_NO_DATA_NOTIF" }, + { 0xf6, "IWX_THERMAL_DUAL_CHAIN_REQUEST" }, + { 0xf7, "IWX_TLC_MNG_UPDATE_NOTIF" }, + { 0, NULL } +}; + +/* REGULATORY_AND_NVM group subcommand IDs */ +static struct opcode_label reg_opcodes[] = { + { 0x00, "IWX_NVM_ACCESS_COMPLETE" }, + { 0x02, "IWX_NVM_GET_INFO " }, + { 0xfe, "IWX_PNVM_INIT_COMPLETE" }, + { 0, NULL } +}; + +/* PHY_OPS subcommand IDs */ +static struct opcode_label phyops_opcodes[] = { + {0x00, "IWX_CMD_DTS_MEASUREMENT_TRIGGER_WIDE"}, + {0x03, "IWX_CTDP_CONFIG_CMD"}, + {0x04, "IWX_TEMP_REPORTING_THRESHOLDS_CMD"}, + {0xFE, "IWX_CT_KILL_NOTIFICATION"}, + {0xFF, "IWX_DTS_MEASUREMENT_NOTIF_WIDE"}, +}; static const char * get_label(struct opcode_label *table, uint8_t opcode) @@ -87,9 +235,9 @@ } void -print_opcode(const char *func, int line, int type, uint32_t code) +print_opcode(const char *func, int line, uint32_t code) { - int print = print_mask & type; + int print = 0; uint8_t opcode = iwx_cmd_opcode(code); uint8_t group = iwx_cmd_groupid(code); @@ -104,111 +252,12 @@ print = 1; if (print) { - printf("%s:%d %s\t%s\t%s\t(0x%08x)\n", func, line, - iwx_bbl_to_str(type), get_label(command_group, group), + printf("%s:%d \t%s\t%s\t(0x%08x)\n", func, line, + get_label(command_group, group), get_label(table, opcode), code); } } -void -iwx_dump_cmd(uint32_t id, void *data, uint16_t len, const char *str, int type) -{ - int dump = dump_mask & type; - uint8_t opcode = iwx_cmd_opcode(id); - uint8_t group = iwx_cmd_groupid(id); - - for (int i = 0; i < nitems(dump_codes); i++) - if (dump_codes[i][0] == group && dump_codes[i][1] == opcode) - dump = 1; - - if (dump) - hexdump(data, len, str, 0); -} - -void -iwx_bbl_add_entry(uint32_t code, int type, int ticks) -{ - /* - * Compress together repeated notifications, but increment the sequence - * number so we can track things processing. - */ - if (bbl_compress && (iwx_bb_log[bbl_idx].code == code && - iwx_bb_log[bbl_idx].type == type)) { - iwx_bb_log[bbl_idx].count++; - iwx_bb_log[bbl_idx].seq = bbl_seq++; - iwx_bb_log[bbl_idx].ticks = ticks; - return; - } - - if (bbl_idx++ > IWX_BBL_ENTRIES) { -#if 0 - printf("iwx bbl roll over: type %d (%lu)\n", type, code); -#endif - bbl_idx = 0; - } - iwx_bb_log[bbl_idx].code = code; - iwx_bb_log[bbl_idx].type = type; - iwx_bb_log[bbl_idx].seq = bbl_seq++; - iwx_bb_log[bbl_idx].ticks = ticks; - iwx_bb_log[bbl_idx].count = 1; -} - -static void -iwx_bbl_print_entry(struct iwx_bbl_entry *e) -{ - uint8_t opcode = iwx_cmd_opcode(e->code); - uint8_t group = iwx_cmd_groupid(e->code); - - switch(e->type) { - case IWX_BBL_PKT_TX: - printf("pkt "); - printf("seq %08d\t pkt len %u", - e->seq, e->code); - break; - printf("pkt dup "); - printf("seq %08d\t dup count %u", - e->seq, e->code); - break; - case IWX_BBL_CMD_TX: - printf("tx -> "); - printf("seq %08d\tcode 0x%08x (%s:%s)", - e->seq, e->code, get_label(command_group, group), - get_label(get_table(group), opcode)); - break; - case IWX_BBL_CMD_RX: - printf("rx "); - printf("seq %08d\tcode 0x%08x (%s:%s)", - e->seq, e->code, get_label(command_group, group), - get_label(get_table(group), opcode)); - break; - } - if (e->count > 1) - printf(" (count %d)", e->count); - printf("\n"); -} - -void -iwx_bbl_print_log(void) -{ - int start = -1; - - start = bbl_idx+1; - if (start > IWX_BBL_ENTRIES-1) - start = 0; - - for (int i = start; i < IWX_BBL_ENTRIES; i++) { - struct iwx_bbl_entry *e = &iwx_bb_log[i]; - printf("bbl entry %05d %05d: ", i, e->ticks); - iwx_bbl_print_entry(e); - } - for (int i = 0; i < start; i++) { - struct iwx_bbl_entry *e = &iwx_bb_log[i]; - printf("bbl entry %05d %05d: ", i, e->ticks); - iwx_bbl_print_entry(e); - } - printf("iwx bblog index %d seq %d\n", bbl_idx, bbl_seq); -} - void print_ratenflags(const char *func, int line, uint32_t flags, int ver) {