developer | c2cfe0f | 2023-09-22 04:11:09 +0800 | [diff] [blame] | 1 | From 8fb30028bd630b37840d023029aa6aa4791f7697 Mon Sep 17 00:00:00 2001 |
| 2 | From: Yi-Chia Hsieh <yi-chia.hsieh@mediatek.com> |
| 3 | Date: Fri, 23 Jun 2023 05:53:50 +0800 |
| 4 | Subject: [PATCH 1006/1006] mac80211: mtk: export ieee80211_tpt_led_trig_tx/rx |
| 5 | for driver |
| 6 | |
| 7 | Whenever the H/W path is enabled and traffic is in the binding state, |
| 8 | mac80211 is not aware of the traffic. Consequently, the LED does not |
| 9 | blink for that reason. |
| 10 | |
| 11 | The ieee80211_tpt_led_trig_tx/rx functions are exported for the driver |
| 12 | so that we can report the tx and rx bytes from the driver when |
| 13 | the H/W path is being used. |
| 14 | |
| 15 | Signed-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 | |
| 24 | diff --git a/include/net/mac80211.h b/include/net/mac80211.h |
| 25 | index 6ff6d3a..345c323 100644 |
| 26 | --- a/include/net/mac80211.h |
| 27 | +++ b/include/net/mac80211.h |
| 28 | @@ -4744,6 +4744,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 | @@ -4854,6 +4856,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 | * |
| 59 | diff --git a/net/mac80211/led.c b/net/mac80211/led.c |
| 60 | index 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; |
| 86 | diff --git a/net/mac80211/led.h b/net/mac80211/led.h |
| 87 | index 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 | -} |
| 113 | diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c |
| 114 | index e245f31..a44381b 100644 |
| 115 | --- a/net/mac80211/rx.c |
| 116 | +++ b/net/mac80211/rx.c |
| 117 | @@ -5394,7 +5394,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); |
| 126 | diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c |
| 127 | index d816c36..4925fab 100644 |
| 128 | --- a/net/mac80211/tx.c |
| 129 | +++ b/net/mac80211/tx.c |
| 130 | @@ -4320,7 +4320,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 | @@ -4646,7 +4646,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 | -- |
| 149 | 2.39.2 |
| 150 | |