Path: blob/main/sys/contrib/dev/iwlwifi/iwl-debug.h
105247 views
/*-1* Copyright (c) 2020-2021 The FreeBSD Foundation2*3* This software was developed by Björn Zeeb under sponsorship from4* the FreeBSD Foundation.5*6* Redistribution and use in source and binary forms, with or without7* modification, are permitted provided that the following conditions8* are met:9* 1. Redistributions of source code must retain the above copyright10* notice, this list of conditions and the following disclaimer.11* 2. Redistributions in binary form must reproduce the above copyright12* notice, this list of conditions and the following disclaimer in the13* documentation and/or other materials provided with the distribution.14*15* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND16* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE17* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE18* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE19* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL20* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS21* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)22* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT23* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY24* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF25* SUCH DAMAGE.26*27* $FreeBSD$28*/2930#ifndef _IWL_DEBUG_H31#define _IWL_DEBUG_H3233#if defined(__FreeBSD__)34#ifdef CONFIG_IWLWIFI_DEBUG35#include <sys/types.h>36#endif37#endif3839#include <linux/device.h>4041enum iwl_dl {42IWL_DL_ASSOC = 0x00000001,43IWL_DL_CALIB = 0x00000002,44IWL_DL_COEX = 0x00000004,45IWL_DL_WOWLAN = 0x00000008,46IWL_DL_DROP = 0x00000010,47IWL_DL_EEPROM = 0x00000020,48IWL_DL_FW = 0x00000040,49IWL_DL_DEV_RADIO = 0x00000080,50IWL_DL_HC = 0x00000100,51IWL_DL_HT = 0x00000200,52IWL_DL_INFO = 0x00000400,53IWL_DL_ISR = 0x00000800,54IWL_DL_LAR = 0x00001000,55IWL_DL_MAC80211 = 0x00002000,56IWL_DL_POWER = 0x00004000,57IWL_DL_QUOTA = 0x00008000,58IWL_DL_RADIO = 0x00010000,59IWL_DL_RATE = 0x00020000,60IWL_DL_RF_KILL = 0x00040000,61IWL_DL_RX = 0x00080000,62IWL_DL_SCAN = 0x00100000,63IWL_DL_STATS = 0x00200000,64IWL_DL_EHT = 0x00400000,65IWL_DL_TDLS = 0x00800000,66IWL_DL_TE = 0x01000000,67IWL_DL_TEMP = 0x02000000,68IWL_DL_TPT = 0x04000000,69IWL_DL_TX = 0x08000000,70IWL_DL_TX_QUEUES = 0x10000000,71IWL_DL_TX_REPLY = 0x20000000,72IWL_DL_WEP = 0x40000000,73IWL_DL_PTP = 0x80000000,7475IWL_DL_ANY = 0x7fffffff,76};7778enum iwl_err_mode {79IWL_ERR_MODE_RATELIMIT,80IWL_ERR_MODE_REGULAR,81IWL_ERR_MODE_RFKILL, /* XXX we do not pass that from anywhere? */82};8384void __iwl_crit(struct device *, const char *, ...);85void __iwl_info(struct device *, const char *, ...);86void __iwl_warn(struct device *, const char *, ...);87void __iwl_err(struct device *, enum iwl_err_mode, const char *, ...);8889#define IWL_CRIT(_subsys, _fmt, ...) \90__iwl_crit((_subsys)->dev, _fmt, ##__VA_ARGS__)91#define IWL_INFO(_subsys, _fmt, ...) \92__iwl_info((_subsys)->dev, _fmt, ##__VA_ARGS__)93#define IWL_WARN(_subsys, _fmt, ...) \94__iwl_warn((_subsys)->dev, _fmt, ##__VA_ARGS__)95/* XXX Not sure what the two bools are good for if never passed. */96#define __IWL_ERR_DEV(_dev, _mode, _fmt, ...) \97__iwl_err((_dev), IWL_ERR_MODE_REGULAR, _fmt, ##__VA_ARGS__)98#define IWL_ERR_DEV(_dev, _fmt, ...) \99__IWL_ERR_DEV(_dev, IWL_ERR_MODE_REGULAR, _fmt, ##__VA_ARGS__)100#define IWL_ERR(_subsys, _fmt, ...) \101IWL_ERR_DEV((_subsys)->dev, _fmt, ##__VA_ARGS__)102#define IWL_ERR_LIMIT(_subsys, _fmt, ...) \103__IWL_ERR_DEV((_subsys)->dev, IWL_ERR_MODE_RATELIMIT, \104_fmt, ##__VA_ARGS__)105106#define iwl_print_hex_error(_subsys, _pkt, _n) /* XXX-BZ TODO */107108#ifdef CONFIG_IWLWIFI_DEBUG109bool iwl_have_debug_level(enum iwl_dl);110#if defined(__linux__)111void iwl_print_hex_dump(void *, enum iwl_dl, const char *, uint8_t *, size_t);112#elif defined(__FreeBSD__)113void iwl_print_hex_dump(void *, enum iwl_dl, const char *, const uint8_t *, size_t);114#endif115void __iwl_dbg(struct device *, u32, bool, const char *, const char *fmt, ...);116117#define IWL_DPRINTF_DEV_PREFIX(_dev, _e, _prefix, _fmt, ...) \118__iwl_dbg(_dev, _e, false, __func__, #_prefix " " _fmt, ##__VA_ARGS__)119#define IWL_DPRINTF_DEV(_dev, _e, _fmt, ...) \120IWL_DPRINTF_DEV_PREFIX(_dev, _e, _e, _fmt, ##__VA_ARGS__)121#define IWL_DPRINTF(_subsys, _e, _fmt, ...) \122IWL_DPRINTF_DEV((_subsys)->dev, _e, _fmt, ##__VA_ARGS__)123#define IWL_DPRINTF_PREFIX(_subsys, _e, _prefix, _fmt, ...) \124IWL_DPRINTF_DEV_PREFIX((_subsys)->dev, _e, _prefix, _fmt, ##__VA_ARGS__)125126#else /* !CONFIG_IWLWIFI_DEBUG */127#define IWL_DPRINTF_DEV(_dev, _e, _fmt, ...)128#define IWL_DPRINTF(_subsys, _e, _fmt, ...)129#define IWL_DPRINTF_PREFIX(_subsys, _e, _prefix, _fmt, ...)130#endif /* CONFIG_IWLWIFI_DEBUG */131132#define IWL_DEBUG_ASSOC(_subsys, _fmt, ...) \133IWL_DPRINTF(_subsys, IWL_DL_ASSOC, _fmt, ##__VA_ARGS__)134#define IWL_DEBUG_CALIB(_subsys, _fmt, ...) \135IWL_DPRINTF(_subsys, IWL_DL_CALIB, _fmt, ##__VA_ARGS__)136#define IWL_DEBUG_COEX(_subsys, _fmt, ...) \137IWL_DPRINTF(_subsys, IWL_DL_COEX, _fmt, ##__VA_ARGS__)138#define IWL_DEBUG_DEV(_dev, _level, _fmt, ...) \139IWL_DPRINTF_DEV((_dev), (_level), _fmt, ##__VA_ARGS__)140#define IWL_DEBUG_DROP(_subsys, _fmt, ...) \141IWL_DPRINTF(_subsys, IWL_DL_DROP, _fmt, ##__VA_ARGS__)142#define IWL_DEBUG_EEPROM(_dev, _fmt, ...) \143IWL_DPRINTF_DEV((_dev), IWL_DL_EEPROM, _fmt, ##__VA_ARGS__)144#define IWL_DEBUG_FW(_subsys, _fmt, ...) \145IWL_DPRINTF(_subsys, IWL_DL_FW, _fmt, ##__VA_ARGS__)146#define IWL_DEBUG_FW_INFO(_subsys, _fmt, ...) \147IWL_DPRINTF_PREFIX(_subsys, IWL_DL_FW | IWL_DL_INFO, IWL_DL_FW_INFO, _fmt, ##__VA_ARGS__)148#define IWL_DEBUG_HC(_subsys, _fmt, ...) \149IWL_DPRINTF(_subsys, IWL_DL_HC, _fmt, ##__VA_ARGS__)150#define IWL_DEBUG_HT(_subsys, _fmt, ...) \151IWL_DPRINTF(_subsys, IWL_DL_HT, _fmt, ##__VA_ARGS__)152#define IWL_DEBUG_INFO(_subsys, _fmt, ...) \153IWL_DPRINTF(_subsys, IWL_DL_INFO, _fmt, ##__VA_ARGS__)154#define IWL_DEBUG_ISR(_subsys, _fmt, ...) \155IWL_DPRINTF(_subsys, IWL_DL_ISR, _fmt, ##__VA_ARGS__)156#define IWL_DEBUG_LAR(_subsys, _fmt, ...) \157IWL_DPRINTF(_subsys, IWL_DL_LAR, _fmt, ##__VA_ARGS__)158#define IWL_DEBUG_MAC80211(_subsys, _fmt, ...) \159IWL_DPRINTF(_subsys, IWL_DL_MAC80211, _fmt, ##__VA_ARGS__)160#define IWL_DEBUG_POWER(_subsys, _fmt, ...) \161IWL_DPRINTF(_subsys, IWL_DL_POWER, _fmt, ##__VA_ARGS__)162#define IWL_DEBUG_DEV_POWER(_dev, _fmt, ...) \163IWL_DPRINTF_DEV((_dev), IWL_DL_POWER, _fmt, ##__VA_ARGS__)164#define IWL_DEBUG_QUOTA(_subsys, _fmt, ...) \165IWL_DPRINTF(_subsys, IWL_DL_QUOTA, _fmt, ##__VA_ARGS__)166#define IWL_DEBUG_RADIO(_subsys, _fmt, ...) \167IWL_DPRINTF(_subsys, IWL_DL_RADIO, _fmt, ##__VA_ARGS__)168#define IWL_DEBUG_RATE(_subsys, _fmt, ...) \169IWL_DPRINTF(_subsys, IWL_DL_RATE, _fmt, ##__VA_ARGS__)170#define IWL_DEBUG_RF_KILL(_subsys, _fmt, ...) \171IWL_DPRINTF(_subsys, IWL_DL_RF_KILL, _fmt, ##__VA_ARGS__)172#define IWL_DEBUG_RX(_subsys, _fmt, ...) \173IWL_DPRINTF(_subsys, IWL_DL_RX, _fmt, ##__VA_ARGS__)174#define IWL_DEBUG_SCAN(_subsys, _fmt, ...) \175IWL_DPRINTF(_subsys, IWL_DL_SCAN, _fmt, ##__VA_ARGS__)176#define IWL_DEBUG_STATS(_subsys, _fmt, ...) \177IWL_DPRINTF(_subsys, IWL_DL_STATS, _fmt, ##__VA_ARGS__)178#define IWL_DEBUG_STATS_LIMIT(_subsys, _fmt, ...) \179IWL_DPRINTF(_subsys, IWL_DL_STATS, _fmt, ##__VA_ARGS__)180#define IWL_DEBUG_TDLS(_subsys, _fmt, ...) \181IWL_DPRINTF(_subsys, IWL_DL_TDLS, _fmt, ##__VA_ARGS__)182#define IWL_DEBUG_TE(_subsys, _fmt, ...) \183IWL_DPRINTF(_subsys, IWL_DL_TE, _fmt, ##__VA_ARGS__)184#define IWL_DEBUG_TEMP(_subsys, _fmt, ...) \185IWL_DPRINTF(_subsys, IWL_DL_TEMP, _fmt, ##__VA_ARGS__)186#define IWL_DEBUG_TPT(_subsys, _fmt, ...) \187IWL_DPRINTF(_subsys, IWL_DL_TPT, _fmt, ##__VA_ARGS__)188#define IWL_DEBUG_TX(_subsys, _fmt, ...) \189IWL_DPRINTF(_subsys, IWL_DL_TX, _fmt, ##__VA_ARGS__)190#define IWL_DEBUG_TX_QUEUES(_subsys, _fmt, ...) \191IWL_DPRINTF(_subsys, IWL_DL_TX_QUEUES, _fmt, ##__VA_ARGS__)192#define IWL_DEBUG_TX_REPLY(_subsys, _fmt, ...) \193IWL_DPRINTF(_subsys, IWL_DL_TX_REPLY, _fmt, ##__VA_ARGS__)194#define IWL_DEBUG_WEP(_subsys, _fmt, ...) \195IWL_DPRINTF(_subsys, IWL_DL_WEP, _fmt, ##__VA_ARGS__)196#define IWL_DEBUG_WOWLAN(_subsys, _fmt, ...) \197IWL_DPRINTF(_subsys, IWL_DL_WOWLAN, _fmt, ##__VA_ARGS__)198#define IWL_DEBUG_DEV_RADIO(_dev, _fmt, ...) \199IWL_DPRINTF_DEV((_dev), IWL_DL_DEV_RADIO, _fmt, ##__VA_ARGS__)200#define IWL_DEBUG_PTP(_subsys, _fmt, ...) \201IWL_DPRINTF(_subsys, IWL_DL_PTP, _fmt, ##__VA_ARGS__)202#define IWL_DEBUG_EHT(_subsys, _fmt, ...) \203IWL_DPRINTF(_subsys, IWL_DL_EHT, _fmt, ##__VA_ARGS__)204205#endif /* _IWL_DEBUG_H */206207208