Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
eebb6fb4
cloud-kernel
项目概览
openanolis
/
cloud-kernel
1 年多 前同步成功
通知
161
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
eebb6fb4
编写于
9月 20, 2011
作者:
J
John W. Linville
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of
ssh://infradead/~/public_git/wireless
into for-davem
上级
9d037a77
8c23516f
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
98 addition
and
59 deletion
+98
-59
drivers/bluetooth/btusb.c
drivers/bluetooth/btusb.c
+6
-0
drivers/bluetooth/btwilink.c
drivers/bluetooth/btwilink.c
+8
-8
drivers/net/wireless/b43/main.c
drivers/net/wireless/b43/main.c
+2
-1
drivers/net/wireless/ipw2x00/ipw2100.c
drivers/net/wireless/ipw2x00/ipw2100.c
+14
-7
drivers/net/wireless/ipw2x00/ipw2200.c
drivers/net/wireless/ipw2x00/ipw2200.c
+26
-13
drivers/net/wireless/iwlwifi/iwl-agn.c
drivers/net/wireless/iwlwifi/iwl-agn.c
+5
-0
drivers/net/wireless/rt2x00/rt2800lib.c
drivers/net/wireless/rt2x00/rt2800lib.c
+26
-21
net/bluetooth/hci_event.c
net/bluetooth/hci_event.c
+8
-9
net/wireless/reg.c
net/wireless/reg.c
+1
-0
net/wireless/sme.c
net/wireless/sme.c
+2
-0
未找到文件。
drivers/bluetooth/btusb.c
浏览文件 @
eebb6fb4
...
...
@@ -72,9 +72,15 @@ static struct usb_device_id btusb_table[] = {
/* Apple MacBookAir3,1, MacBookAir3,2 */
{
USB_DEVICE
(
0x05ac
,
0x821b
)
},
/* Apple MacBookAir4,1 */
{
USB_DEVICE
(
0x05ac
,
0x821f
)
},
/* Apple MacBookPro8,2 */
{
USB_DEVICE
(
0x05ac
,
0x821a
)
},
/* Apple MacMini5,1 */
{
USB_DEVICE
(
0x05ac
,
0x8281
)
},
/* AVM BlueFRITZ! USB v2.0 */
{
USB_DEVICE
(
0x057c
,
0x3800
)
},
...
...
drivers/bluetooth/btwilink.c
浏览文件 @
eebb6fb4
...
...
@@ -124,6 +124,13 @@ static long st_receive(void *priv_data, struct sk_buff *skb)
/* ------- Interfaces to HCI layer ------ */
/* protocol structure registered with shared transport */
static
struct
st_proto_s
ti_st_proto
[
MAX_BT_CHNL_IDS
]
=
{
{
.
chnl_id
=
HCI_EVENT_PKT
,
/* HCI Events */
.
hdr_len
=
sizeof
(
struct
hci_event_hdr
),
.
offset_len_in_hdr
=
offsetof
(
struct
hci_event_hdr
,
plen
),
.
len_size
=
1
,
/* sizeof(plen) in struct hci_event_hdr */
.
reserve
=
8
,
},
{
.
chnl_id
=
HCI_ACLDATA_PKT
,
/* ACL */
.
hdr_len
=
sizeof
(
struct
hci_acl_hdr
),
...
...
@@ -138,13 +145,6 @@ static struct st_proto_s ti_st_proto[MAX_BT_CHNL_IDS] = {
.
len_size
=
1
,
/* sizeof(dlen) in struct hci_sco_hdr */
.
reserve
=
8
,
},
{
.
chnl_id
=
HCI_EVENT_PKT
,
/* HCI Events */
.
hdr_len
=
sizeof
(
struct
hci_event_hdr
),
.
offset_len_in_hdr
=
offsetof
(
struct
hci_event_hdr
,
plen
),
.
len_size
=
1
,
/* sizeof(plen) in struct hci_event_hdr */
.
reserve
=
8
,
},
};
/* Called from HCI core to initialize the device */
...
...
@@ -240,7 +240,7 @@ static int ti_st_close(struct hci_dev *hdev)
if
(
!
test_and_clear_bit
(
HCI_RUNNING
,
&
hdev
->
flags
))
return
0
;
for
(
i
=
0
;
i
<
MAX_BT_CHNL_IDS
;
i
++
)
{
for
(
i
=
MAX_BT_CHNL_IDS
-
1
;
i
>=
0
;
i
--
)
{
err
=
st_unregister
(
&
ti_st_proto
[
i
]);
if
(
err
)
BT_ERR
(
"st_unregister(%d) failed with error %d"
,
...
...
drivers/net/wireless/b43/main.c
浏览文件 @
eebb6fb4
...
...
@@ -1632,7 +1632,8 @@ static void handle_irq_beacon(struct b43_wldev *dev)
u32
cmd
,
beacon0_valid
,
beacon1_valid
;
if
(
!
b43_is_mode
(
wl
,
NL80211_IFTYPE_AP
)
&&
!
b43_is_mode
(
wl
,
NL80211_IFTYPE_MESH_POINT
))
!
b43_is_mode
(
wl
,
NL80211_IFTYPE_MESH_POINT
)
&&
!
b43_is_mode
(
wl
,
NL80211_IFTYPE_ADHOC
))
return
;
/* This is the bottom half of the asynchronous beacon update. */
...
...
drivers/net/wireless/ipw2x00/ipw2100.c
浏览文件 @
eebb6fb4
...
...
@@ -1901,17 +1901,19 @@ static void ipw2100_down(struct ipw2100_priv *priv)
/* Called by register_netdev() */
static
int
ipw2100_net_init
(
struct
net_device
*
dev
)
{
struct
ipw2100_priv
*
priv
=
libipw_priv
(
dev
);
return
ipw2100_up
(
priv
,
1
);
}
static
int
ipw2100_wdev_init
(
struct
net_device
*
dev
)
{
struct
ipw2100_priv
*
priv
=
libipw_priv
(
dev
);
const
struct
libipw_geo
*
geo
=
libipw_get_geo
(
priv
->
ieee
);
struct
wireless_dev
*
wdev
=
&
priv
->
ieee
->
wdev
;
int
ret
;
int
i
;
ret
=
ipw2100_up
(
priv
,
1
);
if
(
ret
)
return
ret
;
memcpy
(
wdev
->
wiphy
->
perm_addr
,
priv
->
mac_addr
,
ETH_ALEN
);
/* fill-out priv->ieee->bg_band */
...
...
@@ -6350,9 +6352,13 @@ static int ipw2100_pci_init_one(struct pci_dev *pci_dev,
"Error calling register_netdev.
\n
"
);
goto
fail
;
}
registered
=
1
;
err
=
ipw2100_wdev_init
(
dev
);
if
(
err
)
goto
fail
;
mutex_lock
(
&
priv
->
action_mutex
);
registered
=
1
;
IPW_DEBUG_INFO
(
"%s: Bound to %s
\n
"
,
dev
->
name
,
pci_name
(
pci_dev
));
...
...
@@ -6389,7 +6395,8 @@ static int ipw2100_pci_init_one(struct pci_dev *pci_dev,
fail_unlock:
mutex_unlock
(
&
priv
->
action_mutex
);
wiphy_unregister
(
priv
->
ieee
->
wdev
.
wiphy
);
kfree
(
priv
->
ieee
->
bg_band
.
channels
);
fail:
if
(
dev
)
{
if
(
registered
)
...
...
drivers/net/wireless/ipw2x00/ipw2200.c
浏览文件 @
eebb6fb4
...
...
@@ -11424,17 +11424,24 @@ static void ipw_bg_down(struct work_struct *work)
/* Called by register_netdev() */
static
int
ipw_net_init
(
struct
net_device
*
dev
)
{
int
rc
=
0
;
struct
ipw_priv
*
priv
=
libipw_priv
(
dev
);
mutex_lock
(
&
priv
->
mutex
);
if
(
ipw_up
(
priv
))
rc
=
-
EIO
;
mutex_unlock
(
&
priv
->
mutex
);
return
rc
;
}
static
int
ipw_wdev_init
(
struct
net_device
*
dev
)
{
int
i
,
rc
=
0
;
struct
ipw_priv
*
priv
=
libipw_priv
(
dev
);
const
struct
libipw_geo
*
geo
=
libipw_get_geo
(
priv
->
ieee
);
struct
wireless_dev
*
wdev
=
&
priv
->
ieee
->
wdev
;
mutex_lock
(
&
priv
->
mutex
);
if
(
ipw_up
(
priv
))
{
rc
=
-
EIO
;
goto
out
;
}
memcpy
(
wdev
->
wiphy
->
perm_addr
,
priv
->
mac_addr
,
ETH_ALEN
);
...
...
@@ -11519,13 +11526,9 @@ static int ipw_net_init(struct net_device *dev)
set_wiphy_dev
(
wdev
->
wiphy
,
&
priv
->
pci_dev
->
dev
);
/* With that information in place, we can now register the wiphy... */
if
(
wiphy_register
(
wdev
->
wiphy
))
{
if
(
wiphy_register
(
wdev
->
wiphy
))
rc
=
-
EIO
;
goto
out
;
}
out:
mutex_unlock
(
&
priv
->
mutex
);
return
rc
;
}
...
...
@@ -11832,14 +11835,22 @@ static int __devinit ipw_pci_probe(struct pci_dev *pdev,
goto
out_remove_sysfs
;
}
err
=
ipw_wdev_init
(
net_dev
);
if
(
err
)
{
IPW_ERROR
(
"failed to register wireless device
\n
"
);
goto
out_unregister_netdev
;
}
#ifdef CONFIG_IPW2200_PROMISCUOUS
if
(
rtap_iface
)
{
err
=
ipw_prom_alloc
(
priv
);
if
(
err
)
{
IPW_ERROR
(
"Failed to register promiscuous network "
"device (error %d).
\n
"
,
err
);
unregister_netdev
(
priv
->
net_dev
);
goto
out_remove_sysfs
;
wiphy_unregister
(
priv
->
ieee
->
wdev
.
wiphy
);
kfree
(
priv
->
ieee
->
a_band
.
channels
);
kfree
(
priv
->
ieee
->
bg_band
.
channels
);
goto
out_unregister_netdev
;
}
}
#endif
...
...
@@ -11851,6 +11862,8 @@ static int __devinit ipw_pci_probe(struct pci_dev *pdev,
return
0
;
out_unregister_netdev:
unregister_netdev
(
priv
->
net_dev
);
out_remove_sysfs:
sysfs_remove_group
(
&
pdev
->
dev
.
kobj
,
&
ipw_attribute_group
);
out_release_irq:
...
...
drivers/net/wireless/iwlwifi/iwl-agn.c
浏览文件 @
eebb6fb4
...
...
@@ -2140,7 +2140,12 @@ static int iwl_mac_setup_register(struct iwl_priv *priv,
IEEE80211_HW_SPECTRUM_MGMT
|
IEEE80211_HW_REPORTS_TX_ACK_STATUS
;
/*
* Including the following line will crash some AP's. This
* workaround removes the stimulus which causes the crash until
* the AP software can be fixed.
hw->max_tx_aggregation_subframes = LINK_QUAL_AGG_FRAME_LIMIT_DEF;
*/
hw
->
flags
|=
IEEE80211_HW_SUPPORTS_PS
|
IEEE80211_HW_SUPPORTS_DYNAMIC_PS
;
...
...
drivers/net/wireless/rt2x00/rt2800lib.c
浏览文件 @
eebb6fb4
...
...
@@ -3697,14 +3697,15 @@ static void rt2800_efuse_read(struct rt2x00_dev *rt2x00dev, unsigned int i)
rt2800_regbusy_read
(
rt2x00dev
,
EFUSE_CTRL
,
EFUSE_CTRL_KICK
,
&
reg
);
/* Apparently the data is read from end to start */
rt2800_register_read_lock
(
rt2x00dev
,
EFUSE_DATA3
,
(
u32
*
)
&
rt2x00dev
->
eeprom
[
i
]);
rt2800_register_read_lock
(
rt2x00dev
,
EFUSE_DATA2
,
(
u32
*
)
&
rt2x00dev
->
eeprom
[
i
+
2
]);
rt2800_register_read_lock
(
rt2x00dev
,
EFUSE_DATA1
,
(
u32
*
)
&
rt2x00dev
->
eeprom
[
i
+
4
]);
rt2800_register_read_lock
(
rt2x00dev
,
EFUSE_DATA0
,
(
u32
*
)
&
rt2x00dev
->
eeprom
[
i
+
6
]);
rt2800_register_read_lock
(
rt2x00dev
,
EFUSE_DATA3
,
&
reg
);
/* The returned value is in CPU order, but eeprom is le */
rt2x00dev
->
eeprom
[
i
]
=
cpu_to_le32
(
reg
);
rt2800_register_read_lock
(
rt2x00dev
,
EFUSE_DATA2
,
&
reg
);
*
(
u32
*
)
&
rt2x00dev
->
eeprom
[
i
+
2
]
=
cpu_to_le32
(
reg
);
rt2800_register_read_lock
(
rt2x00dev
,
EFUSE_DATA1
,
&
reg
);
*
(
u32
*
)
&
rt2x00dev
->
eeprom
[
i
+
4
]
=
cpu_to_le32
(
reg
);
rt2800_register_read_lock
(
rt2x00dev
,
EFUSE_DATA0
,
&
reg
);
*
(
u32
*
)
&
rt2x00dev
->
eeprom
[
i
+
6
]
=
cpu_to_le32
(
reg
);
mutex_unlock
(
&
rt2x00dev
->
csr_mutex
);
}
...
...
@@ -3870,19 +3871,23 @@ int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev)
return
-
ENODEV
;
}
if
(
!
rt2x00_rf
(
rt2x00dev
,
RF2820
)
&&
!
rt2x00_rf
(
rt2x00dev
,
RF2850
)
&&
!
rt2x00_rf
(
rt2x00dev
,
RF2720
)
&&
!
rt2x00_rf
(
rt2x00dev
,
RF2750
)
&&
!
rt2x00_rf
(
rt2x00dev
,
RF3020
)
&&
!
rt2x00_rf
(
rt2x00dev
,
RF2020
)
&&
!
rt2x00_rf
(
rt2x00dev
,
RF3021
)
&&
!
rt2x00_rf
(
rt2x00dev
,
RF3022
)
&&
!
rt2x00_rf
(
rt2x00dev
,
RF3052
)
&&
!
rt2x00_rf
(
rt2x00dev
,
RF3320
)
&&
!
rt2x00_rf
(
rt2x00dev
,
RF5370
)
&&
!
rt2x00_rf
(
rt2x00dev
,
RF5390
))
{
ERROR
(
rt2x00dev
,
"Invalid RF chipset detected.
\n
"
);
switch
(
rt2x00dev
->
chip
.
rf
)
{
case
RF2820
:
case
RF2850
:
case
RF2720
:
case
RF2750
:
case
RF3020
:
case
RF2020
:
case
RF3021
:
case
RF3022
:
case
RF3052
:
case
RF3320
:
case
RF5370
:
case
RF5390
:
break
;
default:
ERROR
(
rt2x00dev
,
"Invalid RF chipset 0x%x detected.
\n
"
,
rt2x00dev
->
chip
.
rf
);
return
-
ENODEV
;
}
...
...
net/bluetooth/hci_event.c
浏览文件 @
eebb6fb4
...
...
@@ -58,8 +58,8 @@ static void hci_cc_inquiry_cancel(struct hci_dev *hdev, struct sk_buff *skb)
if
(
status
)
return
;
if
(
test_
bit
(
HCI_MGMT
,
&
hdev
->
flags
)
&&
test_and_clear_bit
(
HCI_INQUIRY
,
&
hdev
->
flags
))
if
(
test_
and_clear_bit
(
HCI_INQUIRY
,
&
hdev
->
flags
)
&&
test_bit
(
HCI_MGMT
,
&
hdev
->
flags
))
mgmt_discovering
(
hdev
->
id
,
0
);
hci_req_complete
(
hdev
,
HCI_OP_INQUIRY_CANCEL
,
status
);
...
...
@@ -76,8 +76,8 @@ static void hci_cc_exit_periodic_inq(struct hci_dev *hdev, struct sk_buff *skb)
if
(
status
)
return
;
if
(
test_
bit
(
HCI_MGMT
,
&
hdev
->
flags
)
&&
test_
and_clear_bit
(
HCI_INQUIRY
,
&
hdev
->
flags
))
if
(
test_
and_clear_bit
(
HCI_INQUIRY
,
&
hdev
->
flags
)
&&
test_
bit
(
HCI_MGMT
,
&
hdev
->
flags
))
mgmt_discovering
(
hdev
->
id
,
0
);
hci_conn_check_pending
(
hdev
);
...
...
@@ -959,9 +959,8 @@ static inline void hci_cs_inquiry(struct hci_dev *hdev, __u8 status)
return
;
}
if
(
test_bit
(
HCI_MGMT
,
&
hdev
->
flags
)
&&
!
test_and_set_bit
(
HCI_INQUIRY
,
&
hdev
->
flags
))
if
(
!
test_and_set_bit
(
HCI_INQUIRY
,
&
hdev
->
flags
)
&&
test_bit
(
HCI_MGMT
,
&
hdev
->
flags
))
mgmt_discovering
(
hdev
->
id
,
1
);
}
...
...
@@ -1340,8 +1339,8 @@ static inline void hci_inquiry_complete_evt(struct hci_dev *hdev, struct sk_buff
BT_DBG
(
"%s status %d"
,
hdev
->
name
,
status
);
if
(
test_
bit
(
HCI_MGMT
,
&
hdev
->
flags
)
&&
test_
and_clear_bit
(
HCI_INQUIRY
,
&
hdev
->
flags
))
if
(
test_
and_clear_bit
(
HCI_INQUIRY
,
&
hdev
->
flags
)
&&
test_
bit
(
HCI_MGMT
,
&
hdev
->
flags
))
mgmt_discovering
(
hdev
->
id
,
0
);
hci_req_complete
(
hdev
,
HCI_OP_INQUIRY
,
status
);
...
...
net/wireless/reg.c
浏览文件 @
eebb6fb4
...
...
@@ -852,6 +852,7 @@ static void handle_channel(struct wiphy *wiphy,
return
;
}
chan
->
beacon_found
=
false
;
chan
->
flags
=
flags
|
bw_flags
|
map_regdom_flags
(
reg_rule
->
flags
);
chan
->
max_antenna_gain
=
min
(
chan
->
orig_mag
,
(
int
)
MBI_TO_DBI
(
power_rule
->
max_antenna_gain
));
...
...
net/wireless/sme.c
浏览文件 @
eebb6fb4
...
...
@@ -118,6 +118,8 @@ static int cfg80211_conn_scan(struct wireless_dev *wdev)
i
++
,
j
++
)
request
->
channels
[
i
]
=
&
wdev
->
wiphy
->
bands
[
band
]
->
channels
[
j
];
request
->
rates
[
band
]
=
(
1
<<
wdev
->
wiphy
->
bands
[
band
]
->
n_bitrates
)
-
1
;
}
}
request
->
n_channels
=
n_channels
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录