blob: f070841cdb18569bd6fd67d553a892bb129fc3b1 [file] [log] [blame]
developer617abbd2024-04-23 14:50:01 +08001From 2a5c863cc42d21d20a25496426696c95cea45312 Mon Sep 17 00:00:00 2001
2From: Yi-Chia Hsieh <yi-chia.hsieh@mediatek.com>
3Date: Fri, 23 Jun 2023 05:53:50 +0800
4Subject: [PATCH 31/61] mtk: mac80211: export ieee80211_tpt_led_trig_tx/rx for
5 driver
6
7Whenever the H/W path is enabled and traffic is in the binding state,
8mac80211 is not aware of the traffic. Consequently, the LED does not
9blink for that reason.
10
11The ieee80211_tpt_led_trig_tx/rx functions are exported for the driver
12so that we can report the tx and rx bytes from the driver when
13the H/W path is being used.
14
15Signed-off-by: Yi-Chia Hsieh <yi-chia.hsieh@mediatek.com>
16---
17 include/net/mac80211.h | 17 +++++++++++++++++
18 net/mac80211/led.c | 16 ++++++++++++++++
19 net/mac80211/led.h | 17 -----------------
20 net/mac80211/rx.c | 2 +-
21 net/mac80211/tx.c | 4 ++--
22 5 files changed, 36 insertions(+), 20 deletions(-)
23
24diff --git a/include/net/mac80211.h b/include/net/mac80211.h
25index 965a026..860ad6e 100644
26--- a/include/net/mac80211.h
27+++ b/include/net/mac80211.h
28@@ -4893,6 +4893,8 @@ __ieee80211_create_tpt_led_trigger(struct ieee80211_hw *hw,
29 unsigned int flags,
30 const struct ieee80211_tpt_blink *blink_table,
31 unsigned int blink_table_len);
32+void __ieee80211_tpt_led_trig_tx(struct ieee80211_hw *hw, int bytes);
33+void __ieee80211_tpt_led_trig_rx(struct ieee80211_hw *hw, int bytes);
34 #endif
35 /**
36 * ieee80211_get_tx_led_name - get name of TX LED
37@@ -5003,6 +5005,21 @@ ieee80211_create_tpt_led_trigger(struct ieee80211_hw *hw, unsigned int flags,
38 #endif
39 }
40
41+static inline void
42+ieee80211_tpt_led_trig_tx(struct ieee80211_hw *hw, int bytes)
43+{
44+#ifdef CPTCFG_MAC80211_LEDS
45+ __ieee80211_tpt_led_trig_tx(hw, bytes);
46+#endif
47+}
48+
49+static inline void
50+ieee80211_tpt_led_trig_rx(struct ieee80211_hw *hw, int bytes)
51+{
52+#ifdef CPTCFG_MAC80211_LEDS
53+ __ieee80211_tpt_led_trig_rx(hw, bytes);
54+#endif
55+}
56 /**
57 * ieee80211_unregister_hw - Unregister a hardware device
58 *
59diff --git a/net/mac80211/led.c b/net/mac80211/led.c
60index b992430..3109501 100644
61--- a/net/mac80211/led.c
62+++ b/net/mac80211/led.c
63@@ -364,6 +364,22 @@ __ieee80211_create_tpt_led_trigger(struct ieee80211_hw *hw,
64 }
65 EXPORT_SYMBOL(__ieee80211_create_tpt_led_trigger);
66
67+void __ieee80211_tpt_led_trig_tx(struct ieee80211_hw *hw, int bytes)
68+{
69+ struct ieee80211_local *local = hw_to_local(hw);
70+ if (atomic_read(&local->tpt_led_active))
71+ local->tpt_led_trigger->tx_bytes += bytes;
72+}
73+EXPORT_SYMBOL(__ieee80211_tpt_led_trig_tx);
74+
75+void __ieee80211_tpt_led_trig_rx(struct ieee80211_hw *hw, int bytes)
76+{
77+ struct ieee80211_local *local = hw_to_local(hw);
78+ if (atomic_read(&local->tpt_led_active))
79+ local->tpt_led_trigger->rx_bytes += bytes;
80+}
81+EXPORT_SYMBOL(__ieee80211_tpt_led_trig_rx);
82+
83 static void ieee80211_start_tpt_led_trig(struct ieee80211_local *local)
84 {
85 struct tpt_led_trigger *tpt_trig = local->tpt_led_trigger;
86diff --git a/net/mac80211/led.h b/net/mac80211/led.h
87index 59f5a83..f381790 100644
88--- a/net/mac80211/led.h
89+++ b/net/mac80211/led.h
90@@ -65,22 +65,5 @@ static inline void ieee80211_mod_tpt_led_trig(struct ieee80211_local *local,
91 unsigned int types_off)
92 {
93 }
94-#endif
95
96-static inline void
97-ieee80211_tpt_led_trig_tx(struct ieee80211_local *local, int bytes)
98-{
99-#ifdef CPTCFG_MAC80211_LEDS
100- if (atomic_read(&local->tpt_led_active))
101- local->tpt_led_trigger->tx_bytes += bytes;
102 #endif
103-}
104-
105-static inline void
106-ieee80211_tpt_led_trig_rx(struct ieee80211_local *local, int bytes)
107-{
108-#ifdef CPTCFG_MAC80211_LEDS
109- if (atomic_read(&local->tpt_led_active))
110- local->tpt_led_trigger->rx_bytes += bytes;
111-#endif
112-}
113diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
114index 65982a6..fe3d9fb 100644
115--- a/net/mac80211/rx.c
116+++ b/net/mac80211/rx.c
117@@ -5469,7 +5469,7 @@ void ieee80211_rx_list(struct ieee80211_hw *hw, struct ieee80211_sta *pubsta,
118 if (skb) {
119 if ((status->flag & RX_FLAG_8023) ||
120 ieee80211_is_data_present(hdr->frame_control))
121- ieee80211_tpt_led_trig_rx(local, skb->len);
122+ ieee80211_tpt_led_trig_rx(&local->hw, skb->len);
123
124 if (status->flag & RX_FLAG_8023)
125 __ieee80211_rx_handle_8023(hw, pubsta, skb, list);
126diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
127index f479d87..344f4bf 100644
128--- a/net/mac80211/tx.c
129+++ b/net/mac80211/tx.c
130@@ -4340,7 +4340,7 @@ void __ieee80211_subif_start_xmit(struct sk_buff *skb,
131 len = 0;
132 out:
133 if (len)
134- ieee80211_tpt_led_trig_tx(local, len);
135+ ieee80211_tpt_led_trig_tx(&local->hw, len);
136 rcu_read_unlock();
137 }
138
139@@ -4671,7 +4671,7 @@ static void ieee80211_8023_xmit(struct ieee80211_sub_if_data *sdata,
140 sta->deflink.tx_stats.packets[queue] += skbs;
141 sta->deflink.tx_stats.bytes[queue] += len;
142
143- ieee80211_tpt_led_trig_tx(local, len);
144+ ieee80211_tpt_led_trig_tx(&local->hw, len);
145
146 ieee80211_tx_8023(sdata, skb, sta, false);
147
148--
1492.39.2
150