310c8387c6
Rewrite the station-side connection handling. The connection flags (IEEE80211_DISABLE_*) are rather confusing, and they're not always maintained well. Additionally, for wider-bandwidth OFDMA support we need to know the precise bandwidth of the AP, which is currently somewhat difficult. Rewrite this to have a 'mode' (S1G/legacy/HT/...) and a limit on the bandwidth. This is not entirely clean because some of those modes aren't completely sequenced (as this assumes in some places), e.g. VHT doesn't exist on 2.4 GHz, but HE does. However, it still simplifies things and gives us a good idea what we're operating as, so we can parse elements accordingly etc. This leaves a FIXME for puncturing, this is addressed in a later patch. Reviewed-by: Ilan Peer <ilan.peer@intel.com> Reviewed-by: Miriam Rachel Korenblit <miriam.rachel.korenblit@intel.com> Link: https://msgid.link/20240129194108.9451722c0110.I3e61f4cfe9da89008e1854160093c76a1e69dc2a@changeid Signed-off-by: Johannes Berg <johannes.berg@intel.com>
239 lines
6.2 KiB
C
239 lines
6.2 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* Portions
|
|
* Copyright (C) 2022 - 2023 Intel Corporation
|
|
*/
|
|
#ifndef __MAC80211_DEBUG_H
|
|
#define __MAC80211_DEBUG_H
|
|
#include <net/cfg80211.h>
|
|
|
|
#ifdef CONFIG_MAC80211_OCB_DEBUG
|
|
#define MAC80211_OCB_DEBUG 1
|
|
#else
|
|
#define MAC80211_OCB_DEBUG 0
|
|
#endif
|
|
|
|
#ifdef CONFIG_MAC80211_IBSS_DEBUG
|
|
#define MAC80211_IBSS_DEBUG 1
|
|
#else
|
|
#define MAC80211_IBSS_DEBUG 0
|
|
#endif
|
|
|
|
#ifdef CONFIG_MAC80211_PS_DEBUG
|
|
#define MAC80211_PS_DEBUG 1
|
|
#else
|
|
#define MAC80211_PS_DEBUG 0
|
|
#endif
|
|
|
|
#ifdef CONFIG_MAC80211_HT_DEBUG
|
|
#define MAC80211_HT_DEBUG 1
|
|
#else
|
|
#define MAC80211_HT_DEBUG 0
|
|
#endif
|
|
|
|
#ifdef CONFIG_MAC80211_MPL_DEBUG
|
|
#define MAC80211_MPL_DEBUG 1
|
|
#else
|
|
#define MAC80211_MPL_DEBUG 0
|
|
#endif
|
|
|
|
#ifdef CONFIG_MAC80211_MPATH_DEBUG
|
|
#define MAC80211_MPATH_DEBUG 1
|
|
#else
|
|
#define MAC80211_MPATH_DEBUG 0
|
|
#endif
|
|
|
|
#ifdef CONFIG_MAC80211_MHWMP_DEBUG
|
|
#define MAC80211_MHWMP_DEBUG 1
|
|
#else
|
|
#define MAC80211_MHWMP_DEBUG 0
|
|
#endif
|
|
|
|
#ifdef CONFIG_MAC80211_MESH_SYNC_DEBUG
|
|
#define MAC80211_MESH_SYNC_DEBUG 1
|
|
#else
|
|
#define MAC80211_MESH_SYNC_DEBUG 0
|
|
#endif
|
|
|
|
#ifdef CONFIG_MAC80211_MESH_CSA_DEBUG
|
|
#define MAC80211_MESH_CSA_DEBUG 1
|
|
#else
|
|
#define MAC80211_MESH_CSA_DEBUG 0
|
|
#endif
|
|
|
|
#ifdef CONFIG_MAC80211_MESH_PS_DEBUG
|
|
#define MAC80211_MESH_PS_DEBUG 1
|
|
#else
|
|
#define MAC80211_MESH_PS_DEBUG 0
|
|
#endif
|
|
|
|
#ifdef CONFIG_MAC80211_TDLS_DEBUG
|
|
#define MAC80211_TDLS_DEBUG 1
|
|
#else
|
|
#define MAC80211_TDLS_DEBUG 0
|
|
#endif
|
|
|
|
#ifdef CONFIG_MAC80211_STA_DEBUG
|
|
#define MAC80211_STA_DEBUG 1
|
|
#else
|
|
#define MAC80211_STA_DEBUG 0
|
|
#endif
|
|
|
|
#ifdef CONFIG_MAC80211_MLME_DEBUG
|
|
#define MAC80211_MLME_DEBUG 1
|
|
#else
|
|
#define MAC80211_MLME_DEBUG 0
|
|
#endif
|
|
|
|
#ifdef CONFIG_MAC80211_MESSAGE_TRACING
|
|
void __sdata_info(const char *fmt, ...) __printf(1, 2);
|
|
void __sdata_dbg(bool print, const char *fmt, ...) __printf(2, 3);
|
|
void __sdata_err(const char *fmt, ...) __printf(1, 2);
|
|
void __wiphy_dbg(struct wiphy *wiphy, bool print, const char *fmt, ...)
|
|
__printf(3, 4);
|
|
|
|
#define _sdata_info(sdata, fmt, ...) \
|
|
__sdata_info("%s: " fmt, (sdata)->name, ##__VA_ARGS__)
|
|
#define _sdata_dbg(print, sdata, fmt, ...) \
|
|
__sdata_dbg(print, "%s: " fmt, (sdata)->name, ##__VA_ARGS__)
|
|
#define _sdata_err(sdata, fmt, ...) \
|
|
__sdata_err("%s: " fmt, (sdata)->name, ##__VA_ARGS__)
|
|
#define _wiphy_dbg(print, wiphy, fmt, ...) \
|
|
__wiphy_dbg(wiphy, print, fmt, ##__VA_ARGS__)
|
|
#else
|
|
#define _sdata_info(sdata, fmt, ...) \
|
|
do { \
|
|
pr_info("%s: " fmt, \
|
|
(sdata)->name, ##__VA_ARGS__); \
|
|
} while (0)
|
|
|
|
#define _sdata_dbg(print, sdata, fmt, ...) \
|
|
do { \
|
|
if (print) \
|
|
pr_debug("%s: " fmt, \
|
|
(sdata)->name, ##__VA_ARGS__); \
|
|
} while (0)
|
|
|
|
#define _sdata_err(sdata, fmt, ...) \
|
|
do { \
|
|
pr_err("%s: " fmt, \
|
|
(sdata)->name, ##__VA_ARGS__); \
|
|
} while (0)
|
|
|
|
#define _wiphy_dbg(print, wiphy, fmt, ...) \
|
|
do { \
|
|
if (print) \
|
|
wiphy_dbg((wiphy), fmt, ##__VA_ARGS__); \
|
|
} while (0)
|
|
#endif
|
|
|
|
#define sdata_info(sdata, fmt, ...) \
|
|
_sdata_info(sdata, fmt, ##__VA_ARGS__)
|
|
#define sdata_err(sdata, fmt, ...) \
|
|
_sdata_err(sdata, fmt, ##__VA_ARGS__)
|
|
#define sdata_dbg(sdata, fmt, ...) \
|
|
_sdata_dbg(1, sdata, fmt, ##__VA_ARGS__)
|
|
|
|
#define link_info(link, fmt, ...) \
|
|
do { \
|
|
if (ieee80211_vif_is_mld(&(link)->sdata->vif)) \
|
|
_sdata_info((link)->sdata, "[link %d] " fmt, \
|
|
(link)->link_id, \
|
|
##__VA_ARGS__); \
|
|
else \
|
|
_sdata_info((link)->sdata, fmt, ##__VA_ARGS__); \
|
|
} while (0)
|
|
#define link_err(link, fmt, ...) \
|
|
do { \
|
|
if (ieee80211_vif_is_mld(&(link)->sdata->vif)) \
|
|
_sdata_err((link)->sdata, "[link %d] " fmt, \
|
|
(link)->link_id, \
|
|
##__VA_ARGS__); \
|
|
else \
|
|
_sdata_err((link)->sdata, fmt, ##__VA_ARGS__); \
|
|
} while (0)
|
|
#define _link_id_dbg(print, sdata, link_id, fmt, ...) \
|
|
do { \
|
|
if (ieee80211_vif_is_mld(&(sdata)->vif)) \
|
|
_sdata_dbg(print, sdata, "[link %d] " fmt, \
|
|
link_id, ##__VA_ARGS__); \
|
|
else \
|
|
_sdata_dbg(1, sdata, fmt, ##__VA_ARGS__); \
|
|
} while (0)
|
|
#define link_dbg(link, fmt, ...) \
|
|
_link_id_dbg(1, (link)->sdata, (link)->link_id, \
|
|
fmt, ##__VA_ARGS__)
|
|
|
|
#define ht_dbg(sdata, fmt, ...) \
|
|
_sdata_dbg(MAC80211_HT_DEBUG, \
|
|
sdata, fmt, ##__VA_ARGS__)
|
|
|
|
#define ht_dbg_ratelimited(sdata, fmt, ...) \
|
|
_sdata_dbg(MAC80211_HT_DEBUG && net_ratelimit(), \
|
|
sdata, fmt, ##__VA_ARGS__)
|
|
|
|
#define ocb_dbg(sdata, fmt, ...) \
|
|
_sdata_dbg(MAC80211_OCB_DEBUG, \
|
|
sdata, fmt, ##__VA_ARGS__)
|
|
|
|
#define ibss_dbg(sdata, fmt, ...) \
|
|
_sdata_dbg(MAC80211_IBSS_DEBUG, \
|
|
sdata, fmt, ##__VA_ARGS__)
|
|
|
|
#define ps_dbg(sdata, fmt, ...) \
|
|
_sdata_dbg(MAC80211_PS_DEBUG, \
|
|
sdata, fmt, ##__VA_ARGS__)
|
|
|
|
#define ps_dbg_hw(hw, fmt, ...) \
|
|
_wiphy_dbg(MAC80211_PS_DEBUG, \
|
|
(hw)->wiphy, fmt, ##__VA_ARGS__)
|
|
|
|
#define ps_dbg_ratelimited(sdata, fmt, ...) \
|
|
_sdata_dbg(MAC80211_PS_DEBUG && net_ratelimit(), \
|
|
sdata, fmt, ##__VA_ARGS__)
|
|
|
|
#define mpl_dbg(sdata, fmt, ...) \
|
|
_sdata_dbg(MAC80211_MPL_DEBUG, \
|
|
sdata, fmt, ##__VA_ARGS__)
|
|
|
|
#define mpath_dbg(sdata, fmt, ...) \
|
|
_sdata_dbg(MAC80211_MPATH_DEBUG, \
|
|
sdata, fmt, ##__VA_ARGS__)
|
|
|
|
#define mhwmp_dbg(sdata, fmt, ...) \
|
|
_sdata_dbg(MAC80211_MHWMP_DEBUG, \
|
|
sdata, fmt, ##__VA_ARGS__)
|
|
|
|
#define msync_dbg(sdata, fmt, ...) \
|
|
_sdata_dbg(MAC80211_MESH_SYNC_DEBUG, \
|
|
sdata, fmt, ##__VA_ARGS__)
|
|
|
|
#define mcsa_dbg(sdata, fmt, ...) \
|
|
_sdata_dbg(MAC80211_MESH_CSA_DEBUG, \
|
|
sdata, fmt, ##__VA_ARGS__)
|
|
|
|
#define mps_dbg(sdata, fmt, ...) \
|
|
_sdata_dbg(MAC80211_MESH_PS_DEBUG, \
|
|
sdata, fmt, ##__VA_ARGS__)
|
|
|
|
#define tdls_dbg(sdata, fmt, ...) \
|
|
_sdata_dbg(MAC80211_TDLS_DEBUG, \
|
|
sdata, fmt, ##__VA_ARGS__)
|
|
|
|
#define sta_dbg(sdata, fmt, ...) \
|
|
_sdata_dbg(MAC80211_STA_DEBUG, \
|
|
sdata, fmt, ##__VA_ARGS__)
|
|
|
|
#define mlme_dbg(sdata, fmt, ...) \
|
|
_sdata_dbg(MAC80211_MLME_DEBUG, \
|
|
sdata, fmt, ##__VA_ARGS__)
|
|
#define mlme_link_id_dbg(sdata, link_id, fmt, ...) \
|
|
_link_id_dbg(MAC80211_MLME_DEBUG, sdata, link_id, \
|
|
fmt, ##__VA_ARGS__)
|
|
|
|
#define mlme_dbg_ratelimited(sdata, fmt, ...) \
|
|
_sdata_dbg(MAC80211_MLME_DEBUG && net_ratelimit(), \
|
|
sdata, fmt, ##__VA_ARGS__)
|
|
|
|
#endif /* __MAC80211_DEBUG_H */
|