Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
ba2dca91
Commit
ba2dca91
authored
Dec 11, 2009
by
David S. Miller
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
parents
c557c15d
65182b9f
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
88 additions
and
80 deletions
+88
-80
drivers/net/wireless/ath/ath5k/eeprom.c
drivers/net/wireless/ath/ath5k/eeprom.c
+1
-2
drivers/net/wireless/b43/main.c
drivers/net/wireless/b43/main.c
+4
-1
drivers/net/wireless/rtl818x/rtl8187.h
drivers/net/wireless/rtl818x/rtl8187.h
+1
-0
drivers/net/wireless/rtl818x/rtl8187_leds.c
drivers/net/wireless/rtl818x/rtl8187_leds.c
+47
-21
drivers/net/wireless/rtl818x/rtl8187_leds.h
drivers/net/wireless/rtl818x/rtl8187_leds.h
+2
-0
net/mac80211/cfg.c
net/mac80211/cfg.c
+2
-1
net/mac80211/mesh.c
net/mac80211/mesh.c
+1
-1
net/mac80211/mesh.h
net/mac80211/mesh.h
+3
-2
net/mac80211/mesh_hwmp.c
net/mac80211/mesh_hwmp.c
+1
-1
net/mac80211/rx.c
net/mac80211/rx.c
+0
-1
net/wireless/reg.c
net/wireless/reg.c
+25
-50
net/wireless/wext-compat.c
net/wireless/wext-compat.c
+1
-0
No files found.
drivers/net/wireless/ath/ath5k/eeprom.c
View file @
ba2dca91
...
...
@@ -97,6 +97,7 @@ ath5k_eeprom_init_header(struct ath5k_hw *ah)
struct
ath5k_eeprom_info
*
ee
=
&
ah
->
ah_capabilities
.
cap_eeprom
;
int
ret
;
u16
val
;
u32
cksum
,
offset
;
/*
* Read values from EEPROM and store them in the capability structure
...
...
@@ -111,7 +112,6 @@ ath5k_eeprom_init_header(struct ath5k_hw *ah)
if
(
ah
->
ah_ee_version
<
AR5K_EEPROM_VERSION_3_0
)
return
0
;
#ifdef notyet
/*
* Validate the checksum of the EEPROM date. There are some
* devices with invalid EEPROMs.
...
...
@@ -124,7 +124,6 @@ ath5k_eeprom_init_header(struct ath5k_hw *ah)
ATH5K_ERR
(
ah
->
ah_sc
,
"Invalid EEPROM checksum 0x%04x
\n
"
,
cksum
);
return
-
EIO
;
}
#endif
AR5K_EEPROM_READ_HDR
(
AR5K_EEPROM_ANT_GAIN
(
ah
->
ah_ee_version
),
ee_ant_gain
);
...
...
drivers/net/wireless/b43/main.c
View file @
ba2dca91
...
...
@@ -1784,7 +1784,10 @@ static void b43_do_interrupt_thread(struct b43_wldev *dev)
dma_reason
[
0
],
dma_reason
[
1
],
dma_reason
[
2
],
dma_reason
[
3
],
dma_reason
[
4
],
dma_reason
[
5
]);
b43_controller_restart
(
dev
,
"DMA error"
);
b43err
(
dev
->
wl
,
"This device does not support DMA "
"on your system. Please use PIO instead.
\n
"
);
b43err
(
dev
->
wl
,
"CONFIG_B43_FORCE_PIO must be set in "
"your kernel configuration.
\n
"
);
return
;
}
if
(
merged_dma_reason
&
B43_DMAIRQ_NONFATALMASK
)
{
...
...
drivers/net/wireless/rtl818x/rtl8187.h
View file @
ba2dca91
...
...
@@ -108,6 +108,7 @@ struct rtl8187_priv {
struct
delayed_work
work
;
struct
ieee80211_hw
*
dev
;
#ifdef CONFIG_RTL8187_LEDS
struct
rtl8187_led
led_radio
;
struct
rtl8187_led
led_tx
;
struct
rtl8187_led
led_rx
;
struct
delayed_work
led_on
;
...
...
drivers/net/wireless/rtl818x/rtl8187_leds.c
View file @
ba2dca91
...
...
@@ -105,19 +105,36 @@ static void rtl8187_led_brightness_set(struct led_classdev *led_dev,
struct
rtl8187_led
*
led
=
container_of
(
led_dev
,
struct
rtl8187_led
,
led_dev
);
struct
ieee80211_hw
*
hw
=
led
->
dev
;
struct
rtl8187_priv
*
priv
=
hw
->
priv
;
struct
rtl8187_priv
*
priv
;
static
bool
radio_on
;
if
(
brightness
==
LED_OFF
)
{
ieee80211_queue_delayed_work
(
hw
,
&
priv
->
led_off
,
0
);
/* The LED is off for 1/20 sec so that it just blinks. */
ieee80211_queue_delayed_work
(
hw
,
&
priv
->
led_on
,
HZ
/
20
);
}
else
ieee80211_queue_delayed_work
(
hw
,
&
priv
->
led_on
,
0
);
if
(
!
hw
)
return
;
priv
=
hw
->
priv
;
if
(
led
->
is_radio
)
{
if
(
brightness
==
LED_FULL
)
{
ieee80211_queue_delayed_work
(
hw
,
&
priv
->
led_on
,
0
);
radio_on
=
true
;
}
else
if
(
radio_on
)
{
radio_on
=
false
;
cancel_delayed_work_sync
(
&
priv
->
led_on
);
ieee80211_queue_delayed_work
(
hw
,
&
priv
->
led_off
,
0
);
}
}
else
if
(
radio_on
)
{
if
(
brightness
==
LED_OFF
)
{
ieee80211_queue_delayed_work
(
hw
,
&
priv
->
led_off
,
0
);
/* The LED is off for 1/20 sec - it just blinks. */
ieee80211_queue_delayed_work
(
hw
,
&
priv
->
led_on
,
HZ
/
20
);
}
else
ieee80211_queue_delayed_work
(
hw
,
&
priv
->
led_on
,
0
);
}
}
static
int
rtl8187_register_led
(
struct
ieee80211_hw
*
dev
,
struct
rtl8187_led
*
led
,
const
char
*
name
,
const
char
*
default_trigger
,
u8
ledpin
)
const
char
*
default_trigger
,
u8
ledpin
,
bool
is_radio
)
{
int
err
;
struct
rtl8187_priv
*
priv
=
dev
->
priv
;
...
...
@@ -128,6 +145,7 @@ static int rtl8187_register_led(struct ieee80211_hw *dev,
return
-
EINVAL
;
led
->
dev
=
dev
;
led
->
ledpin
=
ledpin
;
led
->
is_radio
=
is_radio
;
strncpy
(
led
->
name
,
name
,
sizeof
(
led
->
name
));
led
->
led_dev
.
name
=
led
->
name
;
...
...
@@ -145,7 +163,11 @@ static int rtl8187_register_led(struct ieee80211_hw *dev,
static
void
rtl8187_unregister_led
(
struct
rtl8187_led
*
led
)
{
struct
ieee80211_hw
*
hw
=
led
->
dev
;
struct
rtl8187_priv
*
priv
=
hw
->
priv
;
led_classdev_unregister
(
&
led
->
led_dev
);
flush_delayed_work
(
&
priv
->
led_off
);
led
->
dev
=
NULL
;
}
...
...
@@ -182,34 +204,38 @@ void rtl8187_leds_init(struct ieee80211_hw *dev, u16 custid)
INIT_DELAYED_WORK
(
&
priv
->
led_on
,
led_turn_on
);
INIT_DELAYED_WORK
(
&
priv
->
led_off
,
led_turn_off
);
snprintf
(
name
,
sizeof
(
name
),
"rtl8187-%s::radio"
,
wiphy_name
(
dev
->
wiphy
));
err
=
rtl8187_register_led
(
dev
,
&
priv
->
led_radio
,
name
,
ieee80211_get_radio_led_name
(
dev
),
ledpin
,
true
);
if
(
err
)
return
;
snprintf
(
name
,
sizeof
(
name
),
"rtl8187-%s::tx"
,
wiphy_name
(
dev
->
wiphy
));
err
=
rtl8187_register_led
(
dev
,
&
priv
->
led_tx
,
name
,
ieee80211_get_tx_led_name
(
dev
),
ledpin
);
ieee80211_get_tx_led_name
(
dev
),
ledpin
,
false
);
if
(
err
)
goto
error
;
goto
err_tx
;
snprintf
(
name
,
sizeof
(
name
),
"rtl8187-%s::rx"
,
wiphy_name
(
dev
->
wiphy
));
err
=
rtl8187_register_led
(
dev
,
&
priv
->
led_rx
,
name
,
ieee80211_get_rx_led_name
(
dev
),
ledpin
);
if
(
!
err
)
{
ieee80211_queue_delayed_work
(
dev
,
&
priv
->
led_on
,
0
);
ieee80211_get_rx_led_name
(
dev
),
ledpin
,
false
);
if
(
!
err
)
return
;
}
/* registration of RX LED failed - unregister
TX
*/
/* registration of RX LED failed - unregister */
rtl8187_unregister_led
(
&
priv
->
led_tx
);
error:
/* If registration of either failed, cancel delayed work */
cancel_delayed_work_sync
(
&
priv
->
led_off
);
cancel_delayed_work_sync
(
&
priv
->
led_on
);
err_tx:
rtl8187_unregister_led
(
&
priv
->
led_radio
);
}
void
rtl8187_leds_exit
(
struct
ieee80211_hw
*
dev
)
{
struct
rtl8187_priv
*
priv
=
dev
->
priv
;
/* turn the LED off before exiting */
ieee80211_queue_delayed_work
(
dev
,
&
priv
->
led_off
,
0
);
rtl8187_unregister_led
(
&
priv
->
led_radio
);
rtl8187_unregister_led
(
&
priv
->
led_rx
);
rtl8187_unregister_led
(
&
priv
->
led_tx
);
cancel_delayed_work_sync
(
&
priv
->
led_off
);
...
...
drivers/net/wireless/rtl818x/rtl8187_leds.h
View file @
ba2dca91
...
...
@@ -47,6 +47,8 @@ struct rtl8187_led {
u8
ledpin
;
/* The unique name string for this LED device. */
char
name
[
RTL8187_LED_MAX_NAME_LEN
+
1
];
/* If the LED is radio or tx/rx */
bool
is_radio
;
};
void
rtl8187_leds_init
(
struct
ieee80211_hw
*
dev
,
u16
code
);
...
...
net/mac80211/cfg.c
View file @
ba2dca91
...
...
@@ -354,7 +354,8 @@ static void sta_set_sinfo(struct sta_info *sta, struct station_info *sinfo)
sinfo
->
rx_packets
=
sta
->
rx_packets
;
sinfo
->
tx_packets
=
sta
->
tx_packets
;
if
(
sta
->
local
->
hw
.
flags
&
IEEE80211_HW_SIGNAL_DBM
)
{
if
((
sta
->
local
->
hw
.
flags
&
IEEE80211_HW_SIGNAL_DBM
)
||
(
sta
->
local
->
hw
.
flags
&
IEEE80211_HW_SIGNAL_UNSPEC
))
{
sinfo
->
filled
|=
STATION_INFO_SIGNAL
;
sinfo
->
signal
=
(
s8
)
sta
->
last_signal
;
}
...
...
net/mac80211/mesh.c
View file @
ba2dca91
...
...
@@ -427,7 +427,7 @@ int ieee80211_new_mesh_header(struct ieee80211s_hdr *meshhdr,
char
*
addr5
,
char
*
addr6
)
{
int
aelen
=
0
;
memset
(
meshhdr
,
0
,
sizeof
(
meshhdr
));
memset
(
meshhdr
,
0
,
sizeof
(
*
meshhdr
));
meshhdr
->
ttl
=
sdata
->
u
.
mesh
.
mshcfg
.
dot11MeshTTL
;
put_unaligned
(
cpu_to_le32
(
sdata
->
u
.
mesh
.
mesh_seqnum
),
&
meshhdr
->
seqnum
);
sdata
->
u
.
mesh
.
mesh_seqnum
++
;
...
...
net/mac80211/mesh.h
View file @
ba2dca91
...
...
@@ -188,8 +188,9 @@ struct mesh_rmc {
*/
#define MESH_PREQ_MIN_INT 10
#define MESH_DIAM_TRAVERSAL_TIME 50
/* Paths will be refreshed if they are closer than PATH_REFRESH_TIME to their
* expiration
/* A path will be refreshed if it is used PATH_REFRESH_TIME milliseconds before
* timing out. This way it will remain ACTIVE and no data frames will be
* unnecesarily held in the pending queue.
*/
#define MESH_PATH_REFRESH_TIME 1000
#define MESH_MIN_DISCOVERY_TIMEOUT (2 * MESH_DIAM_TRAVERSAL_TIME)
...
...
net/mac80211/mesh_hwmp.c
View file @
ba2dca91
...
...
@@ -937,7 +937,7 @@ int mesh_nexthop_lookup(struct sk_buff *skb,
if
(
mpath
->
flags
&
MESH_PATH_ACTIVE
)
{
if
(
time_after
(
jiffies
,
mpath
->
exp_time
+
mpath
->
exp_time
-
msecs_to_jiffies
(
sdata
->
u
.
mesh
.
mshcfg
.
path_refresh_time
))
&&
!
memcmp
(
sdata
->
dev
->
dev_addr
,
hdr
->
addr4
,
ETH_ALEN
)
&&
!
(
mpath
->
flags
&
MESH_PATH_RESOLVING
)
&&
...
...
net/mac80211/rx.c
View file @
ba2dca91
...
...
@@ -1712,7 +1712,6 @@ ieee80211_rx_h_mesh_fwding(struct ieee80211_rx_data *rx)
mpp_path_add
(
proxied_addr
,
mpp_addr
,
sdata
);
}
else
{
spin_lock_bh
(
&
mppath
->
state_lock
);
mppath
->
exp_time
=
jiffies
;
if
(
compare_ether_addr
(
mppath
->
mpp
,
mpp_addr
)
!=
0
)
memcpy
(
mppath
->
mpp
,
mpp_addr
,
ETH_ALEN
);
spin_unlock_bh
(
&
mppath
->
state_lock
);
...
...
net/wireless/reg.c
View file @
ba2dca91
...
...
@@ -141,62 +141,35 @@ static const struct ieee80211_regdomain us_regdom = {
.
reg_rules
=
{
/* IEEE 802.11b/g, channels 1..11 */
REG_RULE
(
2412
-
10
,
2462
+
10
,
40
,
6
,
27
,
0
),
/* IEEE 802.11a, channel 36 */
REG_RULE
(
5180
-
10
,
5180
+
10
,
40
,
6
,
23
,
0
),
/* IEEE 802.11a, channel 40 */
REG_RULE
(
5200
-
10
,
5200
+
10
,
40
,
6
,
23
,
0
),
/* IEEE 802.11a, channel 44 */
REG_RULE
(
5220
-
10
,
5220
+
10
,
40
,
6
,
23
,
0
),
/* IEEE 802.11a, channel 36..48 */
REG_RULE
(
5180
-
10
,
5240
+
10
,
40
,
6
,
17
,
0
),
/* IEEE 802.11a, channels 48..64 */
REG_RULE
(
5240
-
10
,
5320
+
10
,
40
,
6
,
23
,
0
),
REG_RULE
(
5260
-
10
,
5320
+
10
,
40
,
6
,
20
,
NL80211_RRF_DFS
),
/* IEEE 802.11a, channels 100..124 */
REG_RULE
(
5500
-
10
,
5590
+
10
,
40
,
6
,
20
,
NL80211_RRF_DFS
),
/* IEEE 802.11a, channels 132..144 */
REG_RULE
(
5660
-
10
,
5700
+
10
,
40
,
6
,
20
,
NL80211_RRF_DFS
),
/* IEEE 802.11a, channels 149..165, outdoor */
REG_RULE
(
5745
-
10
,
5825
+
10
,
40
,
6
,
30
,
0
),
}
};
static
const
struct
ieee80211_regdomain
jp_regdom
=
{
.
n_reg_rules
=
3
,
.
n_reg_rules
=
6
,
.
alpha2
=
"JP"
,
.
reg_rules
=
{
/* IEEE 802.11b/g, channels 1..14 */
REG_RULE
(
2412
-
10
,
2484
+
10
,
40
,
6
,
20
,
0
),
/* IEEE 802.11a, channels 34..48 */
REG_RULE
(
5170
-
10
,
5240
+
10
,
40
,
6
,
20
,
NL80211_RRF_PASSIVE_SCAN
),
/* IEEE 802.11b/g, channels 1..11 */
REG_RULE
(
2412
-
10
,
2462
+
10
,
40
,
6
,
20
,
0
),
/* IEEE 802.11b/g, channels 12..13 */
REG_RULE
(
2467
-
10
,
2472
+
10
,
20
,
6
,
20
,
0
),
/* IEEE 802.11b/g, channel 14 */
REG_RULE
(
2484
-
10
,
2484
+
10
,
20
,
6
,
20
,
NL80211_RRF_NO_OFDM
),
/* IEEE 802.11a, channels 36..48 */
REG_RULE
(
5180
-
10
,
5240
+
10
,
40
,
6
,
20
,
0
),
/* IEEE 802.11a, channels 52..64 */
REG_RULE
(
5260
-
10
,
5320
+
10
,
40
,
6
,
20
,
NL80211_RRF_NO_IBSS
|
NL80211_RRF_DFS
),
}
};
static
const
struct
ieee80211_regdomain
eu_regdom
=
{
.
n_reg_rules
=
6
,
/*
* This alpha2 is bogus, we leave it here just for stupid
* backward compatibility
*/
.
alpha2
=
"EU"
,
.
reg_rules
=
{
/* IEEE 802.11b/g, channels 1..13 */
REG_RULE
(
2412
-
10
,
2472
+
10
,
40
,
6
,
20
,
0
),
/* IEEE 802.11a, channel 36 */
REG_RULE
(
5180
-
10
,
5180
+
10
,
40
,
6
,
23
,
NL80211_RRF_PASSIVE_SCAN
),
/* IEEE 802.11a, channel 40 */
REG_RULE
(
5200
-
10
,
5200
+
10
,
40
,
6
,
23
,
NL80211_RRF_PASSIVE_SCAN
),
/* IEEE 802.11a, channel 44 */
REG_RULE
(
5220
-
10
,
5220
+
10
,
40
,
6
,
23
,
NL80211_RRF_PASSIVE_SCAN
),
/* IEEE 802.11a, channels 48..64 */
REG_RULE
(
5240
-
10
,
5320
+
10
,
40
,
6
,
20
,
NL80211_RRF_NO_IBSS
|
NL80211_RRF_DFS
),
/* IEEE 802.11a, channels 100..140 */
REG_RULE
(
5500
-
10
,
5700
+
10
,
40
,
6
,
30
,
NL80211_RRF_NO_IBSS
|
NL80211_RRF_DFS
),
REG_RULE
(
5260
-
10
,
5320
+
10
,
40
,
6
,
20
,
NL80211_RRF_DFS
),
/* IEEE 802.11a, channels 100..144 */
REG_RULE
(
5500
-
10
,
5700
+
10
,
40
,
6
,
23
,
NL80211_RRF_DFS
),
}
};
...
...
@@ -206,15 +179,17 @@ static const struct ieee80211_regdomain *static_regdom(char *alpha2)
return
&
us_regdom
;
if
(
alpha2
[
0
]
==
'J'
&&
alpha2
[
1
]
==
'P'
)
return
&
jp_regdom
;
/* Use world roaming rules for "EU", since it was a pseudo
domain anyway... */
if
(
alpha2
[
0
]
==
'E'
&&
alpha2
[
1
]
==
'U'
)
return
&
eu
_regdom
;
/* Default,
as per the old
rules */
return
&
us
_regdom
;
return
&
world
_regdom
;
/* Default,
world roaming
rules */
return
&
world
_regdom
;
}
static
bool
is_old_static_regdom
(
const
struct
ieee80211_regdomain
*
rd
)
{
if
(
rd
==
&
us_regdom
||
rd
==
&
jp_regdom
||
rd
==
&
eu
_regdom
)
if
(
rd
==
&
us_regdom
||
rd
==
&
jp_regdom
||
rd
==
&
world
_regdom
)
return
true
;
return
false
;
}
...
...
net/wireless/wext-compat.c
View file @
ba2dca91
...
...
@@ -479,6 +479,7 @@ static int __cfg80211_set_encryption(struct cfg80211_registered_device *rdev,
}
err
=
rdev
->
ops
->
del_key
(
&
rdev
->
wiphy
,
dev
,
idx
,
addr
);
}
wdev
->
wext
.
connect
.
privacy
=
false
;
/*
* Applications using wireless extensions expect to be
* able to delete keys that don't exist, so allow that.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment