Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
ba2dca91
K
Kernel
项目概览
openeuler
/
Kernel
1 年多 前同步成功
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
ba2dca91
编写于
12月 11, 2009
作者:
D
David S. Miller
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of
git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
上级
c557c15d
65182b9f
变更
12
隐藏空白更改
内联
并排
Showing
12 changed file
with
88 addition
and
80 deletion
+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
未找到文件。
drivers/net/wireless/ath/ath5k/eeprom.c
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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.
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录