blob: 0af68c30dfaab0316d1b4803cd8b8440334f994c [file] [log] [blame]
developer43a264f2024-03-26 14:09:54 +08001From ef1f8c941108eca2665a6caff0cd016c36584d76 Mon Sep 17 00:00:00 2001
developere35b8e42023-10-16 11:04:00 +08002From: Yi-Chia Hsieh <yi-chia.hsieh@mediatek.com>
3Date: Fri, 23 Jun 2023 05:53:50 +0800
developerd243af02023-12-21 14:49:33 +08004Subject: [PATCH 29/37] mtk: mac80211: export ieee80211_tpt_led_trig_tx/rx for
5 driver
developere35b8e42023-10-16 11:04:00 +08006
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
developer43a264f2024-03-26 14:09:54 +080025index 361fe92..d641b18 100644
developere35b8e42023-10-16 11:04:00 +080026--- a/include/net/mac80211.h
27+++ b/include/net/mac80211.h
developer43a264f2024-03-26 14:09:54 +080028@@ -4747,6 +4747,8 @@ __ieee80211_create_tpt_led_trigger(struct ieee80211_hw *hw,
developere35b8e42023-10-16 11:04:00 +080029 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
developer43a264f2024-03-26 14:09:54 +080037@@ -4857,6 +4859,21 @@ ieee80211_create_tpt_led_trigger(struct ieee80211_hw *hw, unsigned int flags,
developere35b8e42023-10-16 11:04:00 +080038 #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
developer43a264f2024-03-26 14:09:54 +080060index c60d070..0ecc3ea 100644
developere35b8e42023-10-16 11:04:00 +080061--- 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
developer43a264f2024-03-26 14:09:54 +0800114index fead07e..1541e9c 100644
developere35b8e42023-10-16 11:04:00 +0800115--- a/net/mac80211/rx.c
116+++ b/net/mac80211/rx.c
developerd243af02023-12-21 14:49:33 +0800117@@ -5401,7 +5401,7 @@ void ieee80211_rx_list(struct ieee80211_hw *hw, struct ieee80211_sta *pubsta,
developere35b8e42023-10-16 11:04:00 +0800118 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
developer43a264f2024-03-26 14:09:54 +0800127index 019fc77..c8fade8 100644
developere35b8e42023-10-16 11:04:00 +0800128--- a/net/mac80211/tx.c
129+++ b/net/mac80211/tx.c
developer43a264f2024-03-26 14:09:54 +0800130@@ -4323,7 +4323,7 @@ void __ieee80211_subif_start_xmit(struct sk_buff *skb,
developere35b8e42023-10-16 11:04:00 +0800131 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
developer43a264f2024-03-26 14:09:54 +0800139@@ -4649,7 +4649,7 @@ static void ieee80211_8023_xmit(struct ieee80211_sub_if_data *sdata,
developere35b8e42023-10-16 11:04:00 +0800140 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--
developerd243af02023-12-21 14:49:33 +08001492.18.0
developere35b8e42023-10-16 11:04:00 +0800150