~ubuntu-branches/ubuntu/natty/linux-backports-modules-2.6.38/natty-proposed

« back to all changes in this revision

Viewing changes to updates/compat-wireless-2.6.36/net/mac80211/led.c

  • Committer: Bazaar Package Importer
  • Author(s): Tim Gardner, Tim Gardner
  • Date: 2011-06-08 10:44:09 UTC
  • Revision ID: james.westby@ubuntu.com-20110608104409-fnl8carkdo15bwsz
Tags: 2.6.38-10.6
[ Tim Gardner ]

Shorten compat-wireless package name to cw to accomodate
CDROM file name length restrictions.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * Copyright 2006, Johannes Berg <johannes@sipsolutions.net>
3
 
 *
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.
7
 
 */
8
 
 
9
 
/* just for IFNAMSIZ */
10
 
#include <linux/if.h>
11
 
#include <linux/slab.h>
12
 
#include "led.h"
13
 
 
14
 
void ieee80211_led_rx(struct ieee80211_local *local)
15
 
{
16
 
        if (unlikely(!local->rx_led))
17
 
                return;
18
 
        if (local->rx_led_counter++ % 2 == 0)
19
 
                led_trigger_event(local->rx_led, LED_OFF);
20
 
        else
21
 
                led_trigger_event(local->rx_led, LED_FULL);
22
 
}
23
 
 
24
 
/* q is 1 if a packet was enqueued, 0 if it has been transmitted */
25
 
void ieee80211_led_tx(struct ieee80211_local *local, int q)
26
 
{
27
 
        if (unlikely(!local->tx_led))
28
 
                return;
29
 
        /* not sure how this is supposed to work ... */
30
 
        local->tx_led_counter += 2*q-1;
31
 
        if (local->tx_led_counter % 2 == 0)
32
 
                led_trigger_event(local->tx_led, LED_OFF);
33
 
        else
34
 
                led_trigger_event(local->tx_led, LED_FULL);
35
 
}
36
 
 
37
 
void ieee80211_led_assoc(struct ieee80211_local *local, bool associated)
38
 
{
39
 
        if (unlikely(!local->assoc_led))
40
 
                return;
41
 
        if (associated)
42
 
                led_trigger_event(local->assoc_led, LED_FULL);
43
 
        else
44
 
                led_trigger_event(local->assoc_led, LED_OFF);
45
 
}
46
 
 
47
 
void ieee80211_led_radio(struct ieee80211_local *local, bool enabled)
48
 
{
49
 
        if (unlikely(!local->radio_led))
50
 
                return;
51
 
        if (enabled)
52
 
                led_trigger_event(local->radio_led, LED_FULL);
53
 
        else
54
 
                led_trigger_event(local->radio_led, LED_OFF);
55
 
}
56
 
 
57
 
void ieee80211_led_init(struct ieee80211_local *local)
58
 
{
59
 
        local->rx_led = kzalloc(sizeof(struct led_trigger), GFP_KERNEL);
60
 
        if (local->rx_led) {
61
 
                snprintf(local->rx_led_name, sizeof(local->rx_led_name),
62
 
                         "%srx", wiphy_name(local->hw.wiphy));
63
 
                local->rx_led->name = local->rx_led_name;
64
 
                if (led_trigger_register(local->rx_led)) {
65
 
                        kfree(local->rx_led);
66
 
                        local->rx_led = NULL;
67
 
                }
68
 
        }
69
 
 
70
 
        local->tx_led = kzalloc(sizeof(struct led_trigger), GFP_KERNEL);
71
 
        if (local->tx_led) {
72
 
                snprintf(local->tx_led_name, sizeof(local->tx_led_name),
73
 
                         "%stx", wiphy_name(local->hw.wiphy));
74
 
                local->tx_led->name = local->tx_led_name;
75
 
                if (led_trigger_register(local->tx_led)) {
76
 
                        kfree(local->tx_led);
77
 
                        local->tx_led = NULL;
78
 
                }
79
 
        }
80
 
 
81
 
        local->assoc_led = kzalloc(sizeof(struct led_trigger), GFP_KERNEL);
82
 
        if (local->assoc_led) {
83
 
                snprintf(local->assoc_led_name, sizeof(local->assoc_led_name),
84
 
                         "%sassoc", wiphy_name(local->hw.wiphy));
85
 
                local->assoc_led->name = local->assoc_led_name;
86
 
                if (led_trigger_register(local->assoc_led)) {
87
 
                        kfree(local->assoc_led);
88
 
                        local->assoc_led = NULL;
89
 
                }
90
 
        }
91
 
 
92
 
        local->radio_led = kzalloc(sizeof(struct led_trigger), GFP_KERNEL);
93
 
        if (local->radio_led) {
94
 
                snprintf(local->radio_led_name, sizeof(local->radio_led_name),
95
 
                         "%sradio", wiphy_name(local->hw.wiphy));
96
 
                local->radio_led->name = local->radio_led_name;
97
 
                if (led_trigger_register(local->radio_led)) {
98
 
                        kfree(local->radio_led);
99
 
                        local->radio_led = NULL;
100
 
                }
101
 
        }
102
 
}
103
 
 
104
 
void ieee80211_led_exit(struct ieee80211_local *local)
105
 
{
106
 
        if (local->radio_led) {
107
 
                led_trigger_unregister(local->radio_led);
108
 
                kfree(local->radio_led);
109
 
        }
110
 
        if (local->assoc_led) {
111
 
                led_trigger_unregister(local->assoc_led);
112
 
                kfree(local->assoc_led);
113
 
        }
114
 
        if (local->tx_led) {
115
 
                led_trigger_unregister(local->tx_led);
116
 
                kfree(local->tx_led);
117
 
        }
118
 
        if (local->rx_led) {
119
 
                led_trigger_unregister(local->rx_led);
120
 
                kfree(local->rx_led);
121
 
        }
122
 
}
123
 
 
124
 
char *__ieee80211_get_radio_led_name(struct ieee80211_hw *hw)
125
 
{
126
 
        struct ieee80211_local *local = hw_to_local(hw);
127
 
 
128
 
        if (local->radio_led)
129
 
                return local->radio_led_name;
130
 
        return NULL;
131
 
}
132
 
EXPORT_SYMBOL(__ieee80211_get_radio_led_name);
133
 
 
134
 
char *__ieee80211_get_assoc_led_name(struct ieee80211_hw *hw)
135
 
{
136
 
        struct ieee80211_local *local = hw_to_local(hw);
137
 
 
138
 
        if (local->assoc_led)
139
 
                return local->assoc_led_name;
140
 
        return NULL;
141
 
}
142
 
EXPORT_SYMBOL(__ieee80211_get_assoc_led_name);
143
 
 
144
 
char *__ieee80211_get_tx_led_name(struct ieee80211_hw *hw)
145
 
{
146
 
        struct ieee80211_local *local = hw_to_local(hw);
147
 
 
148
 
        if (local->tx_led)
149
 
                return local->tx_led_name;
150
 
        return NULL;
151
 
}
152
 
EXPORT_SYMBOL(__ieee80211_get_tx_led_name);
153
 
 
154
 
char *__ieee80211_get_rx_led_name(struct ieee80211_hw *hw)
155
 
{
156
 
        struct ieee80211_local *local = hw_to_local(hw);
157
 
 
158
 
        if (local->rx_led)
159
 
                return local->rx_led_name;
160
 
        return NULL;
161
 
}
162
 
EXPORT_SYMBOL(__ieee80211_get_rx_led_name);