2 * Copyright 2006, Johannes Berg <johannes@sipsolutions.net>
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
9 /* just for IFNAMSIZ */
11 #include "ieee80211_led.h"
13 void ieee80211_led_rx(struct ieee80211_local
*local
)
15 if (unlikely(!local
->rx_led
))
17 if (local
->rx_led_counter
++ % 2 == 0)
18 led_trigger_event(local
->rx_led
, LED_OFF
);
20 led_trigger_event(local
->rx_led
, LED_FULL
);
23 /* q is 1 if a packet was enqueued, 0 if it has been transmitted */
24 void ieee80211_led_tx(struct ieee80211_local
*local
, int q
)
26 if (unlikely(!local
->tx_led
))
28 /* not sure how this is supposed to work ... */
29 local
->tx_led_counter
+= 2*q
-1;
30 if (local
->tx_led_counter
% 2 == 0)
31 led_trigger_event(local
->tx_led
, LED_OFF
);
33 led_trigger_event(local
->tx_led
, LED_FULL
);
36 void ieee80211_led_init(struct ieee80211_local
*local
)
38 local
->rx_led
= kzalloc(sizeof(struct led_trigger
), GFP_KERNEL
);
41 snprintf(local
->rx_led_name
, sizeof(local
->rx_led_name
),
42 "wiphy%drx", local
->hw
.index
);
43 local
->rx_led
->name
= local
->rx_led_name
;
44 if (led_trigger_register(local
->rx_led
)) {
49 local
->tx_led
= kzalloc(sizeof(struct led_trigger
), GFP_KERNEL
);
52 snprintf(local
->tx_led_name
, sizeof(local
->tx_led_name
),
53 "wiphy%dtx", local
->hw
.index
);
54 local
->tx_led
->name
= local
->tx_led_name
;
55 if (led_trigger_register(local
->tx_led
)) {
61 void ieee80211_led_exit(struct ieee80211_local
*local
)
64 led_trigger_unregister(local
->tx_led
);
68 led_trigger_unregister(local
->rx_led
);
73 char *__ieee80211_get_tx_led_name(struct ieee80211_hw
*hw
)
75 struct ieee80211_local
*local
= hw_to_local(hw
);
78 return local
->tx_led_name
;
81 EXPORT_SYMBOL(__ieee80211_get_tx_led_name
);
83 char *__ieee80211_get_rx_led_name(struct ieee80211_hw
*hw
)
85 struct ieee80211_local
*local
= hw_to_local(hw
);
88 return local
->rx_led_name
;
91 EXPORT_SYMBOL(__ieee80211_get_rx_led_name
);