git: e269958566ff - stable/13 - LinuxKPI: 802.11: cleanup debugging
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 27 Mar 2022 20:14:17 UTC
The branch stable/13 has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=e269958566ff0df8d479996507636ed14ff6078a commit e269958566ff0df8d479996507636ed14ff6078a Author: Bjoern A. Zeeb <bz@FreeBSD.org> AuthorDate: 2022-03-24 19:09:04 +0000 Commit: Bjoern A. Zeeb <bz@FreeBSD.org> CommitDate: 2022-03-27 18:13:00 +0000 LinuxKPI: 802.11: cleanup debugging Cleanup some debugging. Rename the global variable to be less generic. Hide all debugging behind #ifdef for now and turn off. Rename the debugging sysctl so we can start adding more to the subtree. There is a need to change that wildly grown infrastructure into something more homogenic soon but this should do for 13.1. Sponsored by: The FreeBSD Foundation (cherry picked from commit 9d9ba2b79b3196935431879efd9094eb9bfedd95) --- .../linuxkpi/common/include/linux/ieee80211.h | 8 +- sys/compat/linuxkpi/common/include/net/cfg80211.h | 6 +- sys/compat/linuxkpi/common/src/linux_80211.c | 125 ++++++++++++++------- 3 files changed, 88 insertions(+), 51 deletions(-) diff --git a/sys/compat/linuxkpi/common/include/linux/ieee80211.h b/sys/compat/linuxkpi/common/include/linux/ieee80211.h index 55e31a7a88ae..e0aa558fe273 100644 --- a/sys/compat/linuxkpi/common/include/linux/ieee80211.h +++ b/sys/compat/linuxkpi/common/include/linux/ieee80211.h @@ -38,9 +38,6 @@ #include <linux/bitops.h> #include <linux/if_ether.h> -/* linux_80211.c */ -extern int debug_80211; - /* 9.4.2.55 Management MIC element (CMAC-256, GMAC-128, and GMAC-256). */ struct ieee80211_mmie_16 { @@ -544,9 +541,8 @@ ieee80211_hdrlen(__le16 fc) if (ieee80211_is_mgmt(fc)) { #ifdef __notyet__ - if (debug_80211 > 0) - printf("XXX-BZ %s: TODO? fc %#04x size %u\n", - __func__, fc, size); + printf("XXX-BZ %s: TODO? fc %#04x size %u\n", + __func__, fc, size); #endif ; } diff --git a/sys/compat/linuxkpi/common/include/net/cfg80211.h b/sys/compat/linuxkpi/common/include/net/cfg80211.h index 64aef659c771..29fe65395385 100644 --- a/sys/compat/linuxkpi/common/include/net/cfg80211.h +++ b/sys/compat/linuxkpi/common/include/net/cfg80211.h @@ -44,16 +44,16 @@ #include <net/regulatory.h> /* linux_80211.c */ -extern int debug_80211; +extern int linuxkpi_debug_80211; #ifndef D80211_TODO #define D80211_TODO 0x1 #endif #ifndef D80211_IMPROVE #define D80211_IMPROVE 0x2 #endif -#define TODO() if (debug_80211 & D80211_TODO) \ +#define TODO() if (linuxkpi_debug_80211 & D80211_TODO) \ printf("%s:%d: XXX LKPI80211 TODO\n", __func__, __LINE__) -#define IMPROVE(...) if (debug_80211 & D80211_IMPROVE) \ +#define IMPROVE(...) if (linuxkpi_debug_80211 & D80211_IMPROVE) \ printf("%s:%d: XXX LKPI80211 IMPROVE\n", __func__, __LINE__) enum rfkill_hard_block_reasons { diff --git a/sys/compat/linuxkpi/common/src/linux_80211.c b/sys/compat/linuxkpi/common/src/linux_80211.c index 384d068d7920..3a70d8bbfcab 100644 --- a/sys/compat/linuxkpi/common/src/linux_80211.c +++ b/sys/compat/linuxkpi/common/src/linux_80211.c @@ -70,16 +70,21 @@ __FBSDID("$FreeBSD$"); #include <linux/workqueue.h> #include "linux_80211.h" -static MALLOC_DEFINE(M_LKPI80211, "lkpi80211", "Linux KPI 80211 compat"); +static MALLOC_DEFINE(M_LKPI80211, "lkpi80211", "LinuxKPI 80211 compat"); /* -------------------------------------------------------------------------- */ -int debug_80211; -SYSCTL_INT(_compat_linuxkpi, OID_AUTO, debug_80211, CTLFLAG_RWTUN, - &debug_80211, 0, "80211 debug Level"); +/* Keep public for as long as header files are using it too. */ +int linuxkpi_debug_80211; -#define LINUXKPI_DEBUG_80211 #ifdef LINUXKPI_DEBUG_80211 +SYSCTL_DECL(_compat_linuxkpi); +SYSCTL_NODE(_compat_linuxkpi, OID_AUTO, 80211, CTLFLAG_RW | CTLFLAG_MPSAFE, 0, + "LinuxKPI 802.11 compatibility layer"); + +SYSCTL_INT(_compat_linuxkpi_80211, OID_AUTO, debug, CTLFLAG_RWTUN, + &linuxkpi_debug_80211, 0, "LinuxKPI 802.11 debug level"); + #ifndef D80211_TODO #define D80211_TODO 0x1 #endif @@ -96,9 +101,9 @@ SYSCTL_INT(_compat_linuxkpi, OID_AUTO, debug_80211, CTLFLAG_RWTUN, #define D80211_TRACEX (D80211_TRACE_TX|D80211_TRACE_RX) #define D80211_TRACEX_DUMP (D80211_TRACE_TX_DUMP|D80211_TRACE_RX_DUMP) #define D80211_TRACE_STA 0x10000 -#define UNIMPLEMENTED if (debug_80211 & D80211_TODO) \ +#define UNIMPLEMENTED if (linuxkpi_debug_80211 & D80211_TODO) \ printf("XXX-TODO %s:%d: UNIMPLEMENTED\n", __func__, __LINE__) -#define TRACEOK() if (debug_80211 & D80211_TRACEOK) \ +#define TRACEOK() if (linuxkpi_debug_80211 & D80211_TRACEOK) \ printf("XXX-TODO %s:%d: TRACEPOINT\n", __func__, __LINE__) #else #define UNIMPLEMENTED do { } while (0) @@ -145,7 +150,8 @@ lkpi_lsta_dump(struct lkpi_sta *lsta, struct ieee80211_node *ni, const char *_f, int _l) { - if ((debug_80211 & D80211_TRACE_STA) == 0) +#ifdef LINUXKPI_DEBUG_80211 + if ((linuxkpi_debug_80211 & D80211_TRACE_STA) == 0) return; if (lsta == NULL) return; @@ -157,6 +163,7 @@ lkpi_lsta_dump(struct lkpi_sta *lsta, struct ieee80211_node *ni, printf("\ttxq_task txq len %d mtx\n", mbufq_len(&lsta->txq)); printf("\tkc %p state %d added_to_drv %d in_mgd %d\n", lsta->kc, lsta->state, lsta->added_to_drv, lsta->in_mgd); +#endif } static void @@ -626,9 +633,11 @@ lkpi_ic_update_mcast_copy(void *arg, struct sockaddr_dl *sdl, u_int cnt) list_add(&addr->addr_list, &mc_list->addr_list); mc_list->count++; - if (debug_80211 & D80211_TRACE) +#ifdef LINUXKPI_DEBUG_80211 + if (linuxkpi_debug_80211 & D80211_TRACE) printf("%s:%d: mc_list count %d: added %6D\n", __func__, __LINE__, mc_list->count, addr->addr, ":"); +#endif return (1); } @@ -674,9 +683,11 @@ lkpi_update_mcast_filter(struct ieee80211com *ic, bool force) total_flags = changed_flags; lkpi_80211_mo_configure_filter(hw, changed_flags, &total_flags, mc); - if (debug_80211 & D80211_TRACE) +#ifdef LINUXKPI_DEBUG_80211 + if (linuxkpi_debug_80211 & D80211_TRACE) printf("%s: changed_flags %#06x count %d total_flags %#010x\n", __func__, changed_flags, mc_list.count, total_flags); +#endif if (mc_list.count != 0) { list_for_each_safe(le, next, &mc_list.addr_list) { @@ -697,7 +708,8 @@ lkpi_update_dtim_tsf(struct ieee80211_vif *vif, struct ieee80211_node *ni, bss_changed = 0; - if (debug_80211 & D80211_TRACE) +#ifdef LINUXKPI_DEBUG_80211 + if (linuxkpi_debug_80211 & D80211_TRACE) printf("%s:%d [%s:%d] assoc %d aid %d beacon_int %u " "dtim_period %u sync_dtim_count %u sync_tsf %ju " "sync_device_ts %u bss_changed %#08x\n", @@ -708,6 +720,7 @@ lkpi_update_dtim_tsf(struct ieee80211_vif *vif, struct ieee80211_node *ni, (uintmax_t)vif->bss_conf.sync_tsf, vif->bss_conf.sync_device_ts, bss_changed); +#endif if (vif->bss_conf.beacon_int != ni->ni_intval) { vif->bss_conf.beacon_int = ni->ni_intval; @@ -726,7 +739,8 @@ lkpi_update_dtim_tsf(struct ieee80211_vif *vif, struct ieee80211_node *ni, vif->bss_conf.sync_tsf = le64toh(ni->ni_tstamp.tsf); /* vif->bss_conf.sync_device_ts = set in linuxkpi_ieee80211_rx. */ - if (debug_80211 & D80211_TRACE) +#ifdef LINUXKPI_DEBUG_80211 + if (linuxkpi_debug_80211 & D80211_TRACE) printf("%s:%d [%s:%d] assoc %d aid %d beacon_int %u " "dtim_period %u sync_dtim_count %u sync_tsf %ju " "sync_device_ts %u bss_changed %#08x\n", @@ -737,6 +751,7 @@ lkpi_update_dtim_tsf(struct ieee80211_vif *vif, struct ieee80211_node *ni, (uintmax_t)vif->bss_conf.sync_tsf, vif->bss_conf.sync_device_ts, bss_changed); +#endif return (bss_changed); } @@ -1003,6 +1018,8 @@ lkpi_sta_scan_to_auth(struct ieee80211vap *vap, enum ieee80211_state nstate, int lsta->added_to_drv = true; /* mo manages. */ #endif + lkpi_lsta_dump(lsta, ni, __func__, __LINE__); + /* * Wakeup all queues now that sta is there so we have as much time to * possibly prepare the queue in the driver to be ready for the 1st @@ -1967,9 +1984,11 @@ lkpi_iv_newstate(struct ieee80211vap *vap, enum ieee80211_state nstate, int arg) IEEE80211_LOCK_ASSERT(ic); ostate = vap->iv_state; - if (debug_80211 & D80211_TRACE) +#ifdef LINUXKPI_DEBUG_80211 + if (linuxkpi_debug_80211 & D80211_TRACE) ic_printf(vap->iv_ic, "%s:%d: vap %p nstate %#x arg %#x\n", __func__, __LINE__, vap, nstate, arg); +#endif if (vap->iv_opmode == IEEE80211_M_STA) { @@ -1992,11 +2011,13 @@ lkpi_iv_newstate(struct ieee80211vap *vap, enum ieee80211_state nstate, int arg) error = 0; for (; s->handler != NULL; s++) { if (ostate == s->ostate && nstate == s->nstate) { - if (debug_80211 & D80211_TRACE) +#ifdef LINUXKPI_DEBUG_80211 + if (linuxkpi_debug_80211 & D80211_TRACE) ic_printf(vap->iv_ic, "%s: new state %d (%s) ->" " %d (%s): arg %d.\n", __func__, ostate, ieee80211_state_name[ostate], nstate, ieee80211_state_name[nstate], arg); +#endif error = s->handler(vap, nstate, arg); break; } @@ -2013,11 +2034,13 @@ lkpi_iv_newstate(struct ieee80211vap *vap, enum ieee80211_state nstate, int arg) } if (error == EALREADY) { - if (debug_80211 & D80211_TRACE) +#ifdef LINUXKPI_DEBUG_80211 + if (linuxkpi_debug_80211 & D80211_TRACE) ic_printf(vap->iv_ic, "%s: state transition %d (%s) -> " "%d (%s): iv_newstate already handled: %d.\n", __func__, ostate, ieee80211_state_name[ostate], nstate, ieee80211_state_name[nstate], error); +#endif return (0); } @@ -2030,10 +2053,12 @@ lkpi_iv_newstate(struct ieee80211vap *vap, enum ieee80211_state nstate, int arg) /* return (error); */ } - if (debug_80211 & D80211_TRACE) +#ifdef LINUXKPI_DEBUG_80211 + if (linuxkpi_debug_80211 & D80211_TRACE) ic_printf(vap->iv_ic, "%s:%d: vap %p nstate %#x arg %#x " "calling net80211 parent\n", __func__, __LINE__, vap, nstate, arg); +#endif return (lvif->iv_newstate(vap, nstate, arg)); } @@ -2055,6 +2080,14 @@ lkpi_iv_update_bss(struct ieee80211vap *vap, struct ieee80211_node *ni) lvif = VAP_TO_LVIF(vap); obss = vap->iv_bss; +#ifdef LINUXKPI_DEBUG_80211 + if (linuxkpi_debug_80211 & D80211_TRACE) + ic_printf(vap->iv_ic, "%s: obss %p ni_drv_data %p " + "ni %p ni_drv_data %p\n", __func__, + obss, (obss != NULL) ? obss->ni_drv_data : NULL, + ni, (ni != NULL) ? ni->ni_drv_data : NULL); +#endif + /* Nothing to copy from. Just return. */ if (obss == NULL || obss->ni_drv_data == NULL) goto out; @@ -2068,12 +2101,6 @@ lkpi_iv_update_bss(struct ieee80211vap *vap, struct ieee80211_node *ni) if (obss == ni) goto out; - if (debug_80211 & D80211_TRACE) - ic_printf(vap->iv_ic, "%s: obss %p ni_drv_data %p " - "ni %p ni_drv_data %p\n", __func__, - obss, (obss != NULL) ? obss->ni_drv_data : NULL, - ni, (ni != NULL) ? ni->ni_drv_data : NULL); - lsta = obss->ni_drv_data; obss->ni_drv_data = ni->ni_drv_data; ni->ni_drv_data = lsta; @@ -2802,10 +2829,12 @@ lkpi_ic_raw_xmit(struct ieee80211_node *ni, struct mbuf *m, mbufq_enqueue(&lsta->txq, m); LKPI_80211_LSTA_UNLOCK(lsta); - if (debug_80211 & D80211_TRACE_TX) +#ifdef LINUXKPI_DEBUG_80211 + if (linuxkpi_debug_80211 & D80211_TRACE_TX) printf("%s:%d lsta %p ni %p %6D mbuf_qlen %d\n", __func__, __LINE__, lsta, ni, ni->ni_macaddr, ":", mbufq_len(&lsta->txq)); +#endif taskqueue_enqueue(taskqueue_thread, &lsta->txq_task); return (0); @@ -2832,7 +2861,7 @@ lkpi_80211_txq_tx_one(struct lkpi_sta *lsta, struct mbuf *m) M_ASSERTPKTHDR(m); #ifdef LINUXKPI_DEBUG_80211 - if (debug_80211 & D80211_TRACE_TX_DUMP) + if (linuxkpi_debug_80211 & D80211_TRACE_TX_DUMP) hexdump(mtod(m, const void *), m->m_len, "RAW TX (plain) ", 0); #endif @@ -2967,22 +2996,26 @@ lkpi_80211_txq_tx_one(struct lkpi_sta *lsta, struct mbuf *m) goto ops_tx; skb_queue_tail(<xq->skbq, skb); - if (debug_80211 & D80211_TRACE_TX) +#ifdef LINUXKPI_DEBUG_80211 + if (linuxkpi_debug_80211 & D80211_TRACE_TX) printf("%s:%d lsta %p sta %p ni %p %6D skb %p lxtq %p " "qlen %u WAKE_TX_Q ac %d prio %u qmap %u\n", __func__, __LINE__, lsta, sta, ni, ni->ni_macaddr, ":", skb, ltxq, skb_queue_len(<xq->skbq), ac, skb->priority, skb->qmap); +#endif lkpi_80211_mo_wake_tx_queue(hw, sta->txq[ac]); /* XXX-BZ */ return; } ops_tx: - if (debug_80211 & D80211_TRACE_TX) +#ifdef LINUXKPI_DEBUG_80211 + if (linuxkpi_debug_80211 & D80211_TRACE_TX) printf("%s:%d lsta %p sta %p ni %p %6D skb %p TX ac %d prio %u qmap %u\n", __func__, __LINE__, lsta, sta, ni, ni->ni_macaddr, ":", skb, ac, skb->priority, skb->qmap); +#endif memset(&control, 0, sizeof(control)); control.sta = sta; @@ -2994,17 +3027,17 @@ static void lkpi_80211_txq_task(void *ctx, int pending) { struct lkpi_sta *lsta; - struct ieee80211_node *ni; struct mbufq mq; struct mbuf *m; lsta = ctx; - ni = lsta->ni; - if (debug_80211 & D80211_TRACE_TX) +#ifdef LINUXKPI_DEBUG_80211 + if (linuxkpi_debug_80211 & D80211_TRACE_TX) printf("%s:%d lsta %p ni %p %6D pending %d mbuf_qlen %d\n", - __func__, __LINE__, lsta, ni, ni->ni_macaddr, ":", + __func__, __LINE__, lsta, lsta->ni, lsta->ni->ni_macaddr, ":", pending, mbufq_len(&lsta->txq)); +#endif mbufq_init(&mq, IFQ_MAXLEN); @@ -3613,7 +3646,7 @@ linuxkpi_ieee80211_rx(struct ieee80211_hw *hw, struct sk_buff *skb, struct ieee80211vap *vap; struct ieee80211_hdr *hdr; struct lkpi_sta *lsta; - int i, offset, ok, type; + int i, offset, ok; bool is_beacon; if (skb->len < 2) { @@ -3646,10 +3679,10 @@ linuxkpi_ieee80211_rx(struct ieee80211_hw *hw, struct sk_buff *skb, is_beacon = ieee80211_is_beacon(hdr->frame_control); #ifdef LINUXKPI_DEBUG_80211 - if (is_beacon && (debug_80211 & D80211_TRACE_RX_BEACONS) == 0) + if (is_beacon && (linuxkpi_debug_80211 & D80211_TRACE_RX_BEACONS) == 0) goto no_trace_beacons; - if (debug_80211 & D80211_TRACE_RX) + if (linuxkpi_debug_80211 & D80211_TRACE_RX) printf("TRACE-RX: %s: skb %p a/l/d/t-len (%u/%u/%u/%u) " "h %p d %p t %p e %p sh %p (%u) m %p plen %u len %u%s\n", __func__, skb, skb->_alloc_len, skb->len, skb->data_len, @@ -3657,11 +3690,11 @@ linuxkpi_ieee80211_rx(struct ieee80211_hw *hw, struct sk_buff *skb, shinfo, shinfo->nr_frags, m, m->m_pkthdr.len, m->m_len, is_beacon ? " beacon" : ""); - if (debug_80211 & D80211_TRACE_RX_DUMP) + if (linuxkpi_debug_80211 & D80211_TRACE_RX_DUMP) hexdump(mtod(m, const void *), m->m_len, "RX (raw) ", 0); /* Implement a dump_rxcb() !!! */ - if (debug_80211 & D80211_TRACE_RX) + if (linuxkpi_debug_80211 & D80211_TRACE_RX) printf("TRACE %s: RXCB: %ju %ju %u, %#0x, %u, %#0x, %#0x, " "%u band %u, %u %u %u %u, %u, %#x %#x %#x %#x %u %u %u\n", __func__, @@ -3738,10 +3771,12 @@ no_trace_beacons: */ vap = TAILQ_FIRST(&ic->ic_vaps); - if (debug_80211 & D80211_TRACE_RX) +#ifdef LINUXKPI_DEBUG_80211 + if (linuxkpi_debug_80211 & D80211_TRACE_RX) printf("TRACE %s: sta %p lsta %p state %d ni %p vap %p%s\n", __func__, sta, lsta, (lsta != NULL) ? lsta->state : -1, ni, vap, is_beacon ? " beacon" : ""); +#endif if (ni != NULL && vap != NULL && is_beacon && rx_status->device_timestamp > 0 && @@ -3799,15 +3834,17 @@ skip_device_ts: NET_EPOCH_ENTER(et); if (ni != NULL) { - type = ieee80211_input_mimo(ni, m); + ok = ieee80211_input_mimo(ni, m); ieee80211_free_node(ni); } else { - type = ieee80211_input_mimo_all(ic, m); + ok = ieee80211_input_mimo_all(ic, m); } NET_EPOCH_EXIT(et); - if (debug_80211 & D80211_TRACE_RX) - printf("TRACE %s: handled frame type %#0x\n", __func__, type); +#ifdef LINUXKPI_DEBUG_80211 + if (linuxkpi_debug_80211 & D80211_TRACE_RX) + printf("TRACE %s: handled frame type %#0x\n", __func__, ok); +#endif IMPROVE(); @@ -4159,8 +4196,10 @@ linuxkpi_ieee80211_connection_loss(struct ieee80211_vif *vif) nstate = IEEE80211_S_INIT; arg = 0; /* Not a valid reason. */ - if (debug_80211 & D80211_TRACE) +#ifdef LINUXKPI_DEBUG_80211 + if (linuxkpi_debug_80211 & D80211_TRACE) ic_printf(vap->iv_ic, "%s: vif %p\n", __func__, vif); +#endif ieee80211_new_state(vap, nstate, arg); } @@ -4184,9 +4223,11 @@ linuxkpi_ieee80211_beacon_loss(struct ieee80211_vif *vif) arg = 0; /* We should be in RUN. Can we assert that? */ - if (debug_80211 & D80211_TRACE || vap->iv_state != IEEE80211_S_RUN) +#ifdef LINUXKPI_DEBUG_80211 + if (linuxkpi_debug_80211 & D80211_TRACE || vap->iv_state != IEEE80211_S_RUN) ic_printf(vap->iv_ic, "%s: vif %p vap %p state %s\n", __func__, vif, vap, ieee80211_state_name[vap->iv_state]); +#endif ieee80211_new_state(vap, nstate, arg); }