blob: 18d8aab43def553373c28c7a24e7df18988b2426 [file] [log] [blame]
developer983d9492023-02-17 07:31:03 +08001From 40ceb2dcc486ddefb5e4cb69e4cd86906242872c Mon Sep 17 00:00:00 2001
2From: Yi-Chia Hsieh <yi-chia.hsieh@mediatek.com>
3Date: Tue, 15 Nov 2022 06:35:48 +0800
4Subject: [PATCH] mac80211: mtk: track obss color bitmap
5
6Track OBSS BSS color when receive their beacon.
7
8Adding 2 tracepoint for debug, usage:
9echo 1 > /sys/kernel/debug/tracing/events/mac80211/bss_color_bitmap/enable
10echo 1 > /sys/kernel/debug/tracing/events/mac80211/bss_color_collision/enable
11---
12 include/net/cfg80211.h | 1 +
13 net/mac80211/rx.c | 14 ++++++++++++--
14 net/mac80211/trace.h | 35 +++++++++++++++++++++++++++++++++++
15 3 files changed, 48 insertions(+), 2 deletions(-)
16
17diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
18index c4c0926..e5175c2 100644
19--- a/include/net/cfg80211.h
20+++ b/include/net/cfg80211.h
21@@ -307,6 +307,7 @@ struct cfg80211_he_bss_color {
22 u8 color;
23 bool enabled;
24 bool partial;
25+ u64 used_color_bitmap;
26 };
27
28 /**
29diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
30index eb16838..4a6491c 100644
31--- a/net/mac80211/rx.c
32+++ b/net/mac80211/rx.c
33@@ -3219,9 +3219,18 @@ ieee80211_rx_check_bss_color_collision(struct ieee80211_rx_data *rx)
34
35 color = le32_get_bits(he_oper->he_oper_params,
36 IEEE80211_HE_OPERATION_BSS_COLOR_MASK);
37- if (color == bss_conf->he_bss_color.color)
38+
39+ bss_conf->he_bss_color.used_color_bitmap |= BIT_ULL(color);
40+
41+ trace_bss_color_bitmap(color,
42+ bss_conf->he_bss_color.used_color_bitmap);
43+
44+ if (color == bss_conf->he_bss_color.color) {
45+ trace_bss_color_collision(color);
46+
47 ieeee80211_obss_color_collision_notify(&rx->sdata->vif,
48- BIT_ULL(color));
49+ bss_conf->he_bss_color.used_color_bitmap);
50+ }
51 }
52 }
53
54diff --git a/net/mac80211/trace.h b/net/mac80211/trace.h
55index d91498f..013f5e4 100644
56--- a/net/mac80211/trace.h
57+++ b/net/mac80211/trace.h
58@@ -2899,6 +2899,41 @@ DEFINE_EVENT(sta_event, drv_net_fill_forward_path,
59 TP_ARGS(local, sdata, sta)
60 );
61
62+TRACE_EVENT(bss_color_bitmap,
63+ TP_PROTO(u8 color,
64+ u64 color_bitmap),
65+
66+ TP_ARGS(color, color_bitmap),
67+
68+ TP_STRUCT__entry(
69+ __field(u8, color)
70+ __field(u64, color_bitmap)
71+ ),
72+
73+ TP_fast_assign(
74+ __entry->color = color;
75+ __entry->color_bitmap = color_bitmap;
76+ ),
77+
78+ TP_printk(
79+ "color=%u color_bitmap=0x%llx", __entry->color, __entry->color_bitmap
80+ )
81+);
82+
83+TRACE_EVENT(bss_color_collision,
84+ TP_PROTO(u8 color),
85+
86+ TP_ARGS(color),
87+
88+ TP_STRUCT__entry(__field(u8, color)),
89+
90+ TP_fast_assign(
91+ __entry->color = color;
92+ ),
93+
94+ TP_printk("collision detected on color %u", __entry->color)
95+);
96+
97 #endif /* !__MAC80211_DRIVER_TRACE || TRACE_HEADER_MULTI_READ */
98
99 #undef TRACE_INCLUDE_PATH
100--
1012.36.1
102