Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
d7a066c9
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看板
提交
d7a066c9
编写于
11月 24, 2010
作者:
J
John W. Linville
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of
git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
上级
ccb14354
e476a5a4
变更
32
隐藏空白更改
内联
并排
Showing
32 changed file
with
199 addition
and
57 deletion
+199
-57
drivers/bluetooth/btusb.c
drivers/bluetooth/btusb.c
+5
-0
drivers/net/wireless/ath/ath9k/ar9002_hw.c
drivers/net/wireless/ath/ath9k/ar9002_hw.c
+3
-0
drivers/net/wireless/ath/ath9k/ath9k.h
drivers/net/wireless/ath/ath9k/ath9k.h
+1
-0
drivers/net/wireless/ath/ath9k/eeprom_9287.c
drivers/net/wireless/ath/ath9k/eeprom_9287.c
+1
-1
drivers/net/wireless/ath/ath9k/hif_usb.c
drivers/net/wireless/ath/ath9k/hif_usb.c
+24
-16
drivers/net/wireless/ath/ath9k/htc_drv_init.c
drivers/net/wireless/ath/ath9k/htc_drv_init.c
+2
-0
drivers/net/wireless/ath/ath9k/htc_drv_txrx.c
drivers/net/wireless/ath/ath9k/htc_drv_txrx.c
+1
-1
drivers/net/wireless/ath/ath9k/hw.c
drivers/net/wireless/ath/ath9k/hw.c
+13
-2
drivers/net/wireless/ath/ath9k/hw.h
drivers/net/wireless/ath/ath9k/hw.h
+1
-0
drivers/net/wireless/ath/ath9k/init.c
drivers/net/wireless/ath/ath9k/init.c
+7
-0
drivers/net/wireless/ath/ath9k/main.c
drivers/net/wireless/ath/ath9k/main.c
+21
-8
drivers/net/wireless/ath/ath9k/recv.c
drivers/net/wireless/ath/ath9k/recv.c
+3
-3
drivers/net/wireless/ath/ath9k/reg.h
drivers/net/wireless/ath/ath9k/reg.h
+8
-1
drivers/net/wireless/ath/carl9170/main.c
drivers/net/wireless/ath/carl9170/main.c
+1
-1
drivers/net/wireless/ath/carl9170/usb.c
drivers/net/wireless/ath/carl9170/usb.c
+5
-3
drivers/net/wireless/b43/sdio.c
drivers/net/wireless/b43/sdio.c
+1
-0
drivers/net/wireless/ipw2x00/libipw_module.c
drivers/net/wireless/ipw2x00/libipw_module.c
+5
-4
drivers/net/wireless/iwlwifi/iwl3945-base.c
drivers/net/wireless/iwlwifi/iwl3945-base.c
+2
-1
drivers/net/wireless/libertas/cfg.c
drivers/net/wireless/libertas/cfg.c
+3
-2
drivers/net/wireless/libertas/dev.h
drivers/net/wireless/libertas/dev.h
+1
-0
drivers/net/wireless/libertas/main.c
drivers/net/wireless/libertas/main.c
+7
-0
drivers/ssb/b43_pci_bridge.c
drivers/ssb/b43_pci_bridge.c
+1
-0
include/linux/pci_ids.h
include/linux/pci_ids.h
+1
-0
include/net/cfg80211.h
include/net/cfg80211.h
+1
-1
include/net/dst_ops.h
include/net/dst_ops.h
+1
-0
net/bluetooth/hci_event.c
net/bluetooth/hci_event.c
+6
-0
net/bluetooth/hidp/Kconfig
net/bluetooth/hidp/Kconfig
+1
-1
net/bluetooth/l2cap.c
net/bluetooth/l2cap.c
+4
-4
net/bluetooth/rfcomm/core.c
net/bluetooth/rfcomm/core.c
+10
-3
net/mac80211/iface.c
net/mac80211/iface.c
+3
-3
net/wireless/chan.c
net/wireless/chan.c
+54
-0
net/wireless/nl80211.c
net/wireless/nl80211.c
+2
-2
未找到文件。
drivers/bluetooth/btusb.c
浏览文件 @
d7a066c9
...
...
@@ -68,6 +68,9 @@ static struct usb_device_id btusb_table[] = {
/* Apple MacBookPro6,2 */
{
USB_DEVICE
(
0x05ac
,
0x8218
)
},
/* Apple MacBookAir3,1, MacBookAir3,2 */
{
USB_DEVICE
(
0x05ac
,
0x821b
)
},
/* AVM BlueFRITZ! USB v2.0 */
{
USB_DEVICE
(
0x057c
,
0x3800
)
},
...
...
@@ -1029,6 +1032,8 @@ static int btusb_probe(struct usb_interface *intf,
usb_set_intfdata
(
intf
,
data
);
usb_enable_autosuspend
(
interface_to_usbdev
(
intf
));
return
0
;
}
...
...
drivers/net/wireless/ath/ath9k/ar9002_hw.c
浏览文件 @
d7a066c9
...
...
@@ -410,6 +410,9 @@ static void ar9002_hw_configpcipowersave(struct ath_hw *ah,
val
&=
~
(
AR_WA_BIT6
|
AR_WA_BIT7
);
}
if
(
AR_SREV_9280
(
ah
))
val
|=
AR_WA_BIT22
;
if
(
AR_SREV_9285E_20
(
ah
))
val
|=
AR_WA_BIT23
;
...
...
drivers/net/wireless/ath/ath9k/ath9k.h
浏览文件 @
d7a066c9
...
...
@@ -657,6 +657,7 @@ static inline void ath_read_cachesize(struct ath_common *common, int *csz)
}
extern
struct
ieee80211_ops
ath9k_ops
;
extern
struct
pm_qos_request_list
ath9k_pm_qos_req
;
extern
int
modparam_nohwcrypt
;
extern
int
led_blink
;
...
...
drivers/net/wireless/ath/ath9k/eeprom_9287.c
浏览文件 @
d7a066c9
...
...
@@ -37,7 +37,7 @@ static bool ath9k_hw_ar9287_fill_eeprom(struct ath_hw *ah)
int
addr
,
eep_start_loc
;
eep_data
=
(
u16
*
)
eep
;
if
(
ah
->
hw_version
.
devid
==
0x7015
)
if
(
AR9287_HTC_DEVID
(
ah
)
)
eep_start_loc
=
AR9287_HTC_EEP_START_LOC
;
else
eep_start_loc
=
AR9287_EEP_START_LOC
;
...
...
drivers/net/wireless/ath/ath9k/hif_usb.c
浏览文件 @
d7a066c9
...
...
@@ -35,8 +35,14 @@ static struct usb_device_id ath9k_hif_usb_ids[] = {
{
USB_DEVICE
(
0x07D1
,
0x3A10
)
},
/* Dlink Wireless 150 */
{
USB_DEVICE
(
0x13D3
,
0x3327
)
},
/* Azurewave */
{
USB_DEVICE
(
0x13D3
,
0x3328
)
},
/* Azurewave */
{
USB_DEVICE
(
0x13D3
,
0x3346
)
},
/* IMC Networks */
{
USB_DEVICE
(
0x13D3
,
0x3348
)
},
/* Azurewave */
{
USB_DEVICE
(
0x13D3
,
0x3349
)
},
/* Azurewave */
{
USB_DEVICE
(
0x13D3
,
0x3350
)
},
/* Azurewave */
{
USB_DEVICE
(
0x04CA
,
0x4605
)
},
/* Liteon */
{
USB_DEVICE
(
0x083A
,
0xA704
)
},
/* SMC Networks */
{
USB_DEVICE
(
0x040D
,
0x3801
)
},
/* VIA */
{
USB_DEVICE
(
0x1668
,
0x1200
)
},
/* Verizon */
{
},
};
...
...
@@ -540,11 +546,11 @@ static void ath9k_hif_usb_reg_in_cb(struct urb *urb)
return
;
}
usb_fill_
int
_urb
(
urb
,
hif_dev
->
udev
,
usb_fill_
bulk
_urb
(
urb
,
hif_dev
->
udev
,
usb_rcvbulkpipe
(
hif_dev
->
udev
,
USB_REG_IN_PIPE
),
nskb
->
data
,
MAX_REG_IN_BUF_SIZE
,
ath9k_hif_usb_reg_in_cb
,
nskb
,
1
);
ath9k_hif_usb_reg_in_cb
,
nskb
);
ret
=
usb_submit_urb
(
urb
,
GFP_ATOMIC
);
if
(
ret
)
{
...
...
@@ -720,11 +726,11 @@ static int ath9k_hif_usb_alloc_reg_in_urb(struct hif_device_usb *hif_dev)
if
(
!
skb
)
goto
err
;
usb_fill_
int
_urb
(
hif_dev
->
reg_in_urb
,
hif_dev
->
udev
,
usb_fill_
bulk
_urb
(
hif_dev
->
reg_in_urb
,
hif_dev
->
udev
,
usb_rcvbulkpipe
(
hif_dev
->
udev
,
USB_REG_IN_PIPE
),
skb
->
data
,
MAX_REG_IN_BUF_SIZE
,
ath9k_hif_usb_reg_in_cb
,
skb
,
1
);
ath9k_hif_usb_reg_in_cb
,
skb
);
if
(
usb_submit_urb
(
hif_dev
->
reg_in_urb
,
GFP_KERNEL
)
!=
0
)
goto
err
;
...
...
@@ -805,6 +811,8 @@ static int ath9k_hif_usb_download_fw(struct hif_device_usb *hif_dev)
case
0x7010
:
case
0x7015
:
case
0x9018
:
case
0xA704
:
case
0x1200
:
firm_offset
=
AR7010_FIRMWARE_TEXT
;
break
;
default:
...
...
@@ -843,14 +851,6 @@ static int ath9k_hif_usb_dev_init(struct hif_device_usb *hif_dev)
goto
err_fw_req
;
}
/* Alloc URBs */
ret
=
ath9k_hif_usb_alloc_urbs
(
hif_dev
);
if
(
ret
)
{
dev_err
(
&
hif_dev
->
udev
->
dev
,
"ath9k_htc: Unable to allocate URBs
\n
"
);
goto
err_urb
;
}
/* Download firmware */
ret
=
ath9k_hif_usb_download_fw
(
hif_dev
);
if
(
ret
)
{
...
...
@@ -866,16 +866,22 @@ static int ath9k_hif_usb_dev_init(struct hif_device_usb *hif_dev)
*/
for
(
idx
=
0
;
idx
<
alt
->
desc
.
bNumEndpoints
;
idx
++
)
{
endp
=
&
alt
->
endpoint
[
idx
].
desc
;
if
(((
endp
->
bEndpointAddress
&
USB_ENDPOINT_NUMBER_MASK
)
==
0x04
)
&&
((
endp
->
bmAttributes
&
USB_ENDPOINT_XFERTYPE_MASK
)
==
USB_ENDPOINT_XFER_INT
))
{
if
((
endp
->
bmAttributes
&
USB_ENDPOINT_XFERTYPE_MASK
)
==
USB_ENDPOINT_XFER_INT
)
{
endp
->
bmAttributes
&=
~
USB_ENDPOINT_XFERTYPE_MASK
;
endp
->
bmAttributes
|=
USB_ENDPOINT_XFER_BULK
;
endp
->
bInterval
=
0
;
}
}
/* Alloc URBs */
ret
=
ath9k_hif_usb_alloc_urbs
(
hif_dev
);
if
(
ret
)
{
dev_err
(
&
hif_dev
->
udev
->
dev
,
"ath9k_htc: Unable to allocate URBs
\n
"
);
goto
err_urb
;
}
return
0
;
err_fw_download:
...
...
@@ -929,6 +935,8 @@ static int ath9k_hif_usb_probe(struct usb_interface *interface,
case
0x7010
:
case
0x7015
:
case
0x9018
:
case
0xA704
:
case
0x1200
:
if
(
le16_to_cpu
(
udev
->
descriptor
.
bcdDevice
)
==
0x0202
)
hif_dev
->
fw_name
=
FIRMWARE_AR7010_1_1
;
else
...
...
drivers/net/wireless/ath/ath9k/htc_drv_init.c
浏览文件 @
d7a066c9
...
...
@@ -249,6 +249,8 @@ static int ath9k_init_htc_services(struct ath9k_htc_priv *priv, u16 devid)
case
0x7010
:
case
0x7015
:
case
0x9018
:
case
0xA704
:
case
0x1200
:
priv
->
htc
->
credits
=
45
;
break
;
default:
...
...
drivers/net/wireless/ath/ath9k/htc_drv_txrx.c
浏览文件 @
d7a066c9
...
...
@@ -128,7 +128,7 @@ int ath9k_htc_tx_start(struct ath9k_htc_priv *priv, struct sk_buff *skb)
tx_hdr
.
data_type
=
ATH9K_HTC_NORMAL
;
}
if
(
ieee80211_is_data
(
fc
))
{
if
(
ieee80211_is_data
_qos
(
fc
))
{
qc
=
ieee80211_get_qos_ctl
(
hdr
);
tx_hdr
.
tidno
=
qc
[
0
]
&
IEEE80211_QOS_CTL_TID_MASK
;
}
...
...
drivers/net/wireless/ath/ath9k/hw.c
浏览文件 @
d7a066c9
...
...
@@ -479,6 +479,7 @@ static int ath9k_hw_post_init(struct ath_hw *ah)
ath_print
(
ath9k_hw_common
(
ah
),
ATH_DBG_FATAL
,
"Failed allocating banks for "
"external radio
\n
"
);
ath9k_hw_rf_free_ext_banks
(
ah
);
return
ecode
;
}
...
...
@@ -947,9 +948,12 @@ static void ath9k_hw_set_operating_mode(struct ath_hw *ah, int opmode)
REG_SET_BIT
(
ah
,
AR_CFG
,
AR_CFG_AP_ADHOC_INDICATION
);
break
;
case
NL80211_IFTYPE_STATION
:
case
NL80211_IFTYPE_MONITOR
:
REG_WRITE
(
ah
,
AR_STA_ID1
,
val
|
AR_STA_ID1_KSRCH_MODE
);
break
;
default:
if
(
ah
->
is_monitoring
)
REG_WRITE
(
ah
,
AR_STA_ID1
,
val
|
AR_STA_ID1_KSRCH_MODE
);
break
;
}
}
...
...
@@ -1629,7 +1633,6 @@ void ath9k_hw_beaconinit(struct ath_hw *ah, u32 next_beacon, u32 beacon_period)
switch
(
ah
->
opmode
)
{
case
NL80211_IFTYPE_STATION
:
case
NL80211_IFTYPE_MONITOR
:
REG_WRITE
(
ah
,
AR_NEXT_TBTT_TIMER
,
TU_TO_USEC
(
next_beacon
));
REG_WRITE
(
ah
,
AR_NEXT_DMA_BEACON_ALERT
,
0xffff
);
REG_WRITE
(
ah
,
AR_NEXT_SWBA
,
0x7ffff
);
...
...
@@ -1658,6 +1661,14 @@ void ath9k_hw_beaconinit(struct ath_hw *ah, u32 next_beacon, u32 beacon_period)
AR_TBTT_TIMER_EN
|
AR_DBA_TIMER_EN
|
AR_SWBA_TIMER_EN
;
break
;
default:
if
(
ah
->
is_monitoring
)
{
REG_WRITE
(
ah
,
AR_NEXT_TBTT_TIMER
,
TU_TO_USEC
(
next_beacon
));
REG_WRITE
(
ah
,
AR_NEXT_DMA_BEACON_ALERT
,
0xffff
);
REG_WRITE
(
ah
,
AR_NEXT_SWBA
,
0x7ffff
);
flags
|=
AR_TBTT_TIMER_EN
;
break
;
}
ath_print
(
ath9k_hw_common
(
ah
),
ATH_DBG_BEACON
,
"%s: unsupported opmode: %d
\n
"
,
__func__
,
ah
->
opmode
);
...
...
drivers/net/wireless/ath/ath9k/hw.h
浏览文件 @
d7a066c9
...
...
@@ -665,6 +665,7 @@ struct ath_hw {
bool
sw_mgmt_crypto
;
bool
is_pciexpress
;
bool
is_monitoring
;
bool
need_an_top2_fixup
;
u16
tx_trig_level
;
...
...
drivers/net/wireless/ath/ath9k/init.c
浏览文件 @
d7a066c9
...
...
@@ -15,6 +15,7 @@
*/
#include <linux/slab.h>
#include <linux/pm_qos_params.h>
#include "ath9k.h"
...
...
@@ -179,6 +180,8 @@ static const struct ath_ops ath9k_common_ops = {
.
write
=
ath9k_iowrite32
,
};
struct
pm_qos_request_list
ath9k_pm_qos_req
;
/**************************/
/* Initialization */
/**************************/
...
...
@@ -753,6 +756,9 @@ int ath9k_init_device(u16 devid, struct ath_softc *sc, u16 subsysid,
ath_init_leds
(
sc
);
ath_start_rfkill_poll
(
sc
);
pm_qos_add_request
(
&
ath9k_pm_qos_req
,
PM_QOS_CPU_DMA_LATENCY
,
PM_QOS_DEFAULT_VALUE
);
return
0
;
error_world:
...
...
@@ -821,6 +827,7 @@ void ath9k_deinit_device(struct ath_softc *sc)
}
ieee80211_unregister_hw
(
hw
);
pm_qos_remove_request
(
&
ath9k_pm_qos_req
);
ath_rx_cleanup
(
sc
);
ath_tx_cleanup
(
sc
);
ath9k_deinit_softc
(
sc
);
...
...
drivers/net/wireless/ath/ath9k/main.c
浏览文件 @
d7a066c9
...
...
@@ -15,6 +15,7 @@
*/
#include <linux/nl80211.h>
#include <linux/pm_qos_params.h>
#include "ath9k.h"
#include "btcoex.h"
...
...
@@ -93,11 +94,13 @@ void ath9k_ps_wakeup(struct ath_softc *sc)
{
struct
ath_common
*
common
=
ath9k_hw_common
(
sc
->
sc_ah
);
unsigned
long
flags
;
enum
ath9k_power_mode
power_mode
;
spin_lock_irqsave
(
&
sc
->
sc_pm_lock
,
flags
);
if
(
++
sc
->
ps_usecount
!=
1
)
goto
unlock
;
power_mode
=
sc
->
sc_ah
->
power_mode
;
ath9k_hw_setpower
(
sc
->
sc_ah
,
ATH9K_PM_AWAKE
);
/*
...
...
@@ -105,10 +108,12 @@ void ath9k_ps_wakeup(struct ath_softc *sc)
* useful data. Better clear them now so that they don't mess up
* survey data results.
*/
spin_lock
(
&
common
->
cc_lock
);
ath_hw_cycle_counters_update
(
common
);
memset
(
&
common
->
cc_survey
,
0
,
sizeof
(
common
->
cc_survey
));
spin_unlock
(
&
common
->
cc_lock
);
if
(
power_mode
!=
ATH9K_PM_AWAKE
)
{
spin_lock
(
&
common
->
cc_lock
);
ath_hw_cycle_counters_update
(
common
);
memset
(
&
common
->
cc_survey
,
0
,
sizeof
(
common
->
cc_survey
));
spin_unlock
(
&
common
->
cc_lock
);
}
unlock:
spin_unlock_irqrestore
(
&
sc
->
sc_pm_lock
,
flags
);
...
...
@@ -1157,6 +1162,7 @@ static int ath9k_start(struct ieee80211_hw *hw)
ah
->
imask
|=
ATH9K_INT_CST
;
sc
->
sc_flags
&=
~
SC_OP_INVALID
;
sc
->
sc_ah
->
is_monitoring
=
false
;
/* Disable BMISS interrupt when we're not associated */
ah
->
imask
&=
~
(
ATH9K_INT_SWBA
|
ATH9K_INT_BMISS
);
...
...
@@ -1178,6 +1184,8 @@ static int ath9k_start(struct ieee80211_hw *hw)
ath9k_btcoex_timer_resume
(
sc
);
}
pm_qos_update_request
(
&
ath9k_pm_qos_req
,
55
);
mutex_unlock:
mutex_unlock
(
&
sc
->
mutex
);
...
...
@@ -1331,6 +1339,8 @@ static void ath9k_stop(struct ieee80211_hw *hw)
sc
->
sc_flags
|=
SC_OP_INVALID
;
pm_qos_update_request
(
&
ath9k_pm_qos_req
,
PM_QOS_DEFAULT_VALUE
);
mutex_unlock
(
&
sc
->
mutex
);
ath_print
(
common
,
ATH_DBG_CONFIG
,
"Driver halt
\n
"
);
...
...
@@ -1409,8 +1419,7 @@ static int ath9k_add_interface(struct ieee80211_hw *hw,
ath9k_hw_set_interrupts
(
ah
,
ah
->
imask
);
if
(
vif
->
type
==
NL80211_IFTYPE_AP
||
vif
->
type
==
NL80211_IFTYPE_ADHOC
||
vif
->
type
==
NL80211_IFTYPE_MONITOR
)
{
vif
->
type
==
NL80211_IFTYPE_ADHOC
)
{
sc
->
sc_flags
|=
SC_OP_ANI_RUN
;
ath_start_ani
(
common
);
}
...
...
@@ -1560,8 +1569,12 @@ static int ath9k_config(struct ieee80211_hw *hw, u32 changed)
if
(
changed
&
IEEE80211_CONF_CHANGE_MONITOR
)
{
if
(
conf
->
flags
&
IEEE80211_CONF_MONITOR
)
{
ath_print
(
common
,
ATH_DBG_CONFIG
,
"HW opmode set to Monitor mode
\n
"
);
sc
->
sc_ah
->
opmode
=
NL80211_IFTYPE_MONITOR
;
"Monitor mode is enabled
\n
"
);
sc
->
sc_ah
->
is_monitoring
=
true
;
}
else
{
ath_print
(
common
,
ATH_DBG_CONFIG
,
"Monitor mode is disabled
\n
"
);
sc
->
sc_ah
->
is_monitoring
=
false
;
}
}
...
...
drivers/net/wireless/ath/ath9k/recv.c
浏览文件 @
d7a066c9
...
...
@@ -441,7 +441,7 @@ u32 ath_calcrxfilter(struct ath_softc *sc)
*/
if
(((
sc
->
sc_ah
->
opmode
!=
NL80211_IFTYPE_AP
)
&&
(
sc
->
rx
.
rxfilter
&
FIF_PROMISC_IN_BSS
))
||
(
sc
->
sc_ah
->
opmode
==
NL80211_IFTYPE_MONITOR
))
(
sc
->
sc_ah
->
is_monitoring
))
rfilt
|=
ATH9K_RX_FILTER_PROM
;
if
(
sc
->
rx
.
rxfilter
&
FIF_CONTROL
)
...
...
@@ -518,7 +518,7 @@ bool ath_stoprecv(struct ath_softc *sc)
bool
stopped
;
spin_lock_bh
(
&
sc
->
rx
.
rxbuflock
);
ath9k_hw_
stop
pcurecv
(
ah
);
ath9k_hw_
abort
pcurecv
(
ah
);
ath9k_hw_setrxfilter
(
ah
,
0
);
stopped
=
ath9k_hw_stopdmarecv
(
ah
);
...
...
@@ -899,7 +899,7 @@ static bool ath9k_rx_accept(struct ath_common *common,
* decryption and MIC failures. For monitor mode,
* we also ignore the CRC error.
*/
if
(
ah
->
opmode
==
NL80211_IFTYPE_MONITOR
)
{
if
(
ah
->
is_monitoring
)
{
if
(
rx_stats
->
rs_status
&
~
(
ATH9K_RXERR_DECRYPT
|
ATH9K_RXERR_MIC
|
ATH9K_RXERR_CRC
))
...
...
drivers/net/wireless/ath/ath9k/reg.h
浏览文件 @
d7a066c9
...
...
@@ -703,6 +703,7 @@
#define AR_WA_RESET_EN (1 << 18)
/* Sw Control to enable PCI-Reset to POR (bit 15) */
#define AR_WA_ANALOG_SHIFT (1 << 20)
#define AR_WA_POR_SHORT (1 << 21)
/* PCI-E Phy reset control */
#define AR_WA_BIT22 (1 << 22)
#define AR9285_WA_DEFAULT 0x004a050b
#define AR9280_WA_DEFAULT 0x0040073b
#define AR_WA_DEFAULT 0x0000073f
...
...
@@ -865,7 +866,13 @@
#define AR_DEVID_7010(_ah) \
(((_ah)->hw_version.devid == 0x7010) || \
((_ah)->hw_version.devid == 0x7015) || \
((_ah)->hw_version.devid == 0x9018))
((_ah)->hw_version.devid == 0x9018) || \
((_ah)->hw_version.devid == 0xA704) || \
((_ah)->hw_version.devid == 0x1200))
#define AR9287_HTC_DEVID(_ah) \
(((_ah)->hw_version.devid == 0x7015) || \
((_ah)->hw_version.devid == 0x1200))
#define AR_RADIO_SREV_MAJOR 0xf0
#define AR_RAD5133_SREV_MAJOR 0xc0
...
...
drivers/net/wireless/ath/carl9170/main.c
浏览文件 @
d7a066c9
...
...
@@ -663,7 +663,7 @@ static int carl9170_op_add_interface(struct ieee80211_hw *hw,
}
unlock:
if
(
err
&&
(
vif_id
!=
-
1
))
{
if
(
err
&&
(
vif_id
>=
0
))
{
vif_priv
->
active
=
false
;
bitmap_release_region
(
&
ar
->
vif_bitmap
,
vif_id
,
0
);
ar
->
vifs
--
;
...
...
drivers/net/wireless/ath/carl9170/usb.c
浏览文件 @
d7a066c9
...
...
@@ -82,9 +82,11 @@ static struct usb_device_id carl9170_usb_ids[] = {
{
USB_DEVICE
(
0x07d1
,
0x3c10
)
},
/* D-Link DWA 160 A2 */
{
USB_DEVICE
(
0x07d1
,
0x3a09
)
},
/* D-Link DWA 130 D */
{
USB_DEVICE
(
0x07d1
,
0x3a0f
)
},
/* Netgear WNA1000 */
{
USB_DEVICE
(
0x0846
,
0x9040
)
},
/* Netgear WNDA3100 */
/* Netgear WNDA3100
(v1)
*/
{
USB_DEVICE
(
0x0846
,
0x9010
)
},
/* Netgear WN111 v2 */
{
USB_DEVICE
(
0x0846
,
0x9001
),
.
driver_info
=
CARL9170_ONE_LED
},
...
...
@@ -551,12 +553,12 @@ static int carl9170_usb_flush(struct ar9170 *ar)
usb_free_urb
(
urb
);
}
ret
=
usb_wait_anchor_empty_timeout
(
&
ar
->
tx_cmd
,
HZ
);
ret
=
usb_wait_anchor_empty_timeout
(
&
ar
->
tx_cmd
,
1000
);
if
(
ret
==
0
)
err
=
-
ETIMEDOUT
;
/* lets wait a while until the tx - queues are dried out */
ret
=
usb_wait_anchor_empty_timeout
(
&
ar
->
tx_anch
,
HZ
);
ret
=
usb_wait_anchor_empty_timeout
(
&
ar
->
tx_anch
,
1000
);
if
(
ret
==
0
)
err
=
-
ETIMEDOUT
;
...
...
drivers/net/wireless/b43/sdio.c
浏览文件 @
d7a066c9
...
...
@@ -163,6 +163,7 @@ static int b43_sdio_probe(struct sdio_func *func,
err_free_ssb:
kfree
(
sdio
);
err_disable_func:
sdio_claim_host
(
func
);
sdio_disable_func
(
func
);
err_release_host:
sdio_release_host
(
func
);
...
...
drivers/net/wireless/ipw2x00/libipw_module.c
浏览文件 @
d7a066c9
...
...
@@ -54,6 +54,7 @@
#define DRV_DESCRIPTION "802.11 data/management/control stack"
#define DRV_NAME "libipw"
#define DRV_PROCNAME "ieee80211"
#define DRV_VERSION LIBIPW_VERSION
#define DRV_COPYRIGHT "Copyright (C) 2004-2005 Intel Corporation <jketreno@linux.intel.com>"
...
...
@@ -293,16 +294,16 @@ static int __init libipw_init(void)
struct
proc_dir_entry
*
e
;
libipw_debug_level
=
debug
;
libipw_proc
=
proc_mkdir
(
"ieee80211"
,
init_net
.
proc_net
);
libipw_proc
=
proc_mkdir
(
DRV_PROCNAME
,
init_net
.
proc_net
);
if
(
libipw_proc
==
NULL
)
{
LIBIPW_ERROR
(
"Unable to create "
DRV_NAME
LIBIPW_ERROR
(
"Unable to create "
DRV_
PROC
NAME
" proc directory
\n
"
);
return
-
EIO
;
}
e
=
proc_create
(
"debug_level"
,
S_IRUGO
|
S_IWUSR
,
libipw_proc
,
&
debug_level_proc_fops
);
if
(
!
e
)
{
remove_proc_entry
(
DRV_NAME
,
init_net
.
proc_net
);
remove_proc_entry
(
DRV_
PROC
NAME
,
init_net
.
proc_net
);
libipw_proc
=
NULL
;
return
-
EIO
;
}
...
...
@@ -319,7 +320,7 @@ static void __exit libipw_exit(void)
#ifdef CONFIG_LIBIPW_DEBUG
if
(
libipw_proc
)
{
remove_proc_entry
(
"debug_level"
,
libipw_proc
);
remove_proc_entry
(
DRV_NAME
,
init_net
.
proc_net
);
remove_proc_entry
(
DRV_
PROC
NAME
,
init_net
.
proc_net
);
libipw_proc
=
NULL
;
}
#endif
/* CONFIG_LIBIPW_DEBUG */
...
...
drivers/net/wireless/iwlwifi/iwl3945-base.c
浏览文件 @
d7a066c9
...
...
@@ -3997,7 +3997,8 @@ static int iwl3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *e
* "the hard way", rather than using device's scan.
*/
if
(
iwl3945_mod_params
.
disable_hw_scan
)
{
IWL_ERR
(
priv
,
"sw scan support is deprecated
\n
"
);
dev_printk
(
KERN_DEBUG
,
&
(
pdev
->
dev
),
"sw scan support is deprecated
\n
"
);
iwl3945_hw_ops
.
hw_scan
=
NULL
;
}
...
...
drivers/net/wireless/libertas/cfg.c
浏览文件 @
d7a066c9
...
...
@@ -698,8 +698,9 @@ static void lbs_scan_worker(struct work_struct *work)
if
(
priv
->
scan_channel
<
priv
->
scan_req
->
n_channels
)
{
cancel_delayed_work
(
&
priv
->
scan_work
);
queue_delayed_work
(
priv
->
work_thread
,
&
priv
->
scan_work
,
msecs_to_jiffies
(
300
));
if
(
!
priv
->
stopping
)
queue_delayed_work
(
priv
->
work_thread
,
&
priv
->
scan_work
,
msecs_to_jiffies
(
300
));
}
/* This is the final data we are about to send */
...
...
drivers/net/wireless/libertas/dev.h
浏览文件 @
d7a066c9
...
...
@@ -36,6 +36,7 @@ struct lbs_private {
/* CFG80211 */
struct
wireless_dev
*
wdev
;
bool
wiphy_registered
;
bool
stopping
;
struct
cfg80211_scan_request
*
scan_req
;
u8
assoc_bss
[
ETH_ALEN
];
u8
disassoc_reason
;
...
...
drivers/net/wireless/libertas/main.c
浏览文件 @
d7a066c9
...
...
@@ -104,6 +104,7 @@ static int lbs_dev_open(struct net_device *dev)
lbs_deb_enter
(
LBS_DEB_NET
);
spin_lock_irq
(
&
priv
->
driver_lock
);
priv
->
stopping
=
false
;
if
(
priv
->
connect_status
==
LBS_CONNECTED
)
netif_carrier_on
(
dev
);
...
...
@@ -131,10 +132,16 @@ static int lbs_eth_stop(struct net_device *dev)
lbs_deb_enter
(
LBS_DEB_NET
);
spin_lock_irq
(
&
priv
->
driver_lock
);
priv
->
stopping
=
true
;
netif_stop_queue
(
dev
);
spin_unlock_irq
(
&
priv
->
driver_lock
);
schedule_work
(
&
priv
->
mcast_work
);
cancel_delayed_work_sync
(
&
priv
->
scan_work
);
if
(
priv
->
scan_req
)
{
cfg80211_scan_done
(
priv
->
scan_req
,
false
);
priv
->
scan_req
=
NULL
;
}
lbs_deb_leave
(
LBS_DEB_NET
);
return
0
;
...
...
drivers/ssb/b43_pci_bridge.c
浏览文件 @
d7a066c9
...
...
@@ -24,6 +24,7 @@ static const struct pci_device_id b43_pci_bridge_tbl[] = {
{
PCI_DEVICE
(
PCI_VENDOR_ID_BROADCOM
,
0x4312
)
},
{
PCI_DEVICE
(
PCI_VENDOR_ID_BROADCOM
,
0x4315
)
},
{
PCI_DEVICE
(
PCI_VENDOR_ID_BROADCOM
,
0x4318
)
},
{
PCI_DEVICE
(
PCI_VENDOR_ID_BCM_GVC
,
0x4318
)
},
{
PCI_DEVICE
(
PCI_VENDOR_ID_BROADCOM
,
0x4319
)
},
{
PCI_DEVICE
(
PCI_VENDOR_ID_BROADCOM
,
0x4320
)
},
{
PCI_DEVICE
(
PCI_VENDOR_ID_BROADCOM
,
0x4321
)
},
...
...
include/linux/pci_ids.h
浏览文件 @
d7a066c9
...
...
@@ -2047,6 +2047,7 @@
#define PCI_DEVICE_ID_AFAVLAB_P030 0x2182
#define PCI_SUBDEVICE_ID_AFAVLAB_P061 0x2150
#define PCI_VENDOR_ID_BCM_GVC 0x14a4
#define PCI_VENDOR_ID_BROADCOM 0x14e4
#define PCI_DEVICE_ID_TIGON3_5752 0x1600
#define PCI_DEVICE_ID_TIGON3_5752M 0x1601
...
...
include/net/cfg80211.h
浏览文件 @
d7a066c9
...
...
@@ -1361,7 +1361,7 @@ enum wiphy_flags {
WIPHY_FLAG_4ADDR_AP
=
BIT
(
5
),
WIPHY_FLAG_4ADDR_STATION
=
BIT
(
6
),
WIPHY_FLAG_CONTROL_PORT_PROTOCOL
=
BIT
(
7
),
WIPHY_FLAG_IBSS_RSN
=
BIT
(
7
),
WIPHY_FLAG_IBSS_RSN
=
BIT
(
8
),
};
struct
mac_address
{
...
...
include/net/dst_ops.h
浏览文件 @
d7a066c9
...
...
@@ -2,6 +2,7 @@
#define _NET_DST_OPS_H
#include <linux/types.h>
#include <linux/percpu_counter.h>
#include <linux/cache.h>
struct
dst_entry
;
struct
kmem_cachep
;
...
...
net/bluetooth/hci_event.c
浏览文件 @
d7a066c9
...
...
@@ -1175,6 +1175,12 @@ static inline void hci_remote_features_evt(struct hci_dev *hdev, struct sk_buff
hci_send_cmd
(
hdev
,
HCI_OP_READ_REMOTE_EXT_FEATURES
,
sizeof
(
cp
),
&
cp
);
}
else
if
(
!
ev
->
status
&&
conn
->
out
&&
conn
->
sec_level
==
BT_SECURITY_HIGH
)
{
struct
hci_cp_auth_requested
cp
;
cp
.
handle
=
ev
->
handle
;
hci_send_cmd
(
hdev
,
HCI_OP_AUTH_REQUESTED
,
sizeof
(
cp
),
&
cp
);
}
else
{
conn
->
state
=
BT_CONNECTED
;
hci_proto_connect_cfm
(
conn
,
ev
->
status
);
...
...
net/bluetooth/hidp/Kconfig
浏览文件 @
d7a066c9
config BT_HIDP
tristate "HIDP protocol support"
depends on BT && BT_L2CAP && INPUT
depends on BT && BT_L2CAP && INPUT
&& HID_SUPPORT
select HID
help
HIDP (Human Interface Device Protocol) is a transport layer
...
...
net/bluetooth/l2cap.c
浏览文件 @
d7a066c9
...
...
@@ -2421,11 +2421,11 @@ static inline int l2cap_get_conf_opt(void **ptr, int *type, int *olen, unsigned
break
;
case
2
:
*
val
=
__le16_to_cpu
(
*
((
__le16
*
)
opt
->
val
)
);
*
val
=
get_unaligned_le16
(
opt
->
val
);
break
;
case
4
:
*
val
=
__le32_to_cpu
(
*
((
__le32
*
)
opt
->
val
)
);
*
val
=
get_unaligned_le32
(
opt
->
val
);
break
;
default:
...
...
@@ -2452,11 +2452,11 @@ static void l2cap_add_conf_opt(void **ptr, u8 type, u8 len, unsigned long val)
break
;
case
2
:
*
((
__le16
*
)
opt
->
val
)
=
cpu_to_le16
(
val
);
put_unaligned_le16
(
val
,
opt
->
val
);
break
;
case
4
:
*
((
__le32
*
)
opt
->
val
)
=
cpu_to_le32
(
val
);
put_unaligned_le32
(
val
,
opt
->
val
);
break
;
default:
...
...
net/bluetooth/rfcomm/core.c
浏览文件 @
d7a066c9
...
...
@@ -79,7 +79,10 @@ static void rfcomm_make_uih(struct sk_buff *skb, u8 addr);
static
void
rfcomm_process_connect
(
struct
rfcomm_session
*
s
);
static
struct
rfcomm_session
*
rfcomm_session_create
(
bdaddr_t
*
src
,
bdaddr_t
*
dst
,
int
*
err
);
static
struct
rfcomm_session
*
rfcomm_session_create
(
bdaddr_t
*
src
,
bdaddr_t
*
dst
,
u8
sec_level
,
int
*
err
);
static
struct
rfcomm_session
*
rfcomm_session_get
(
bdaddr_t
*
src
,
bdaddr_t
*
dst
);
static
void
rfcomm_session_del
(
struct
rfcomm_session
*
s
);
...
...
@@ -401,7 +404,7 @@ static int __rfcomm_dlc_open(struct rfcomm_dlc *d, bdaddr_t *src, bdaddr_t *dst,
s
=
rfcomm_session_get
(
src
,
dst
);
if
(
!
s
)
{
s
=
rfcomm_session_create
(
src
,
dst
,
&
err
);
s
=
rfcomm_session_create
(
src
,
dst
,
d
->
sec_level
,
&
err
);
if
(
!
s
)
return
err
;
}
...
...
@@ -679,7 +682,10 @@ static void rfcomm_session_close(struct rfcomm_session *s, int err)
rfcomm_session_put
(
s
);
}
static
struct
rfcomm_session
*
rfcomm_session_create
(
bdaddr_t
*
src
,
bdaddr_t
*
dst
,
int
*
err
)
static
struct
rfcomm_session
*
rfcomm_session_create
(
bdaddr_t
*
src
,
bdaddr_t
*
dst
,
u8
sec_level
,
int
*
err
)
{
struct
rfcomm_session
*
s
=
NULL
;
struct
sockaddr_l2
addr
;
...
...
@@ -704,6 +710,7 @@ static struct rfcomm_session *rfcomm_session_create(bdaddr_t *src, bdaddr_t *dst
sk
=
sock
->
sk
;
lock_sock
(
sk
);
l2cap_pi
(
sk
)
->
imtu
=
l2cap_mtu
;
l2cap_pi
(
sk
)
->
sec_level
=
sec_level
;
if
(
l2cap_ertm
)
l2cap_pi
(
sk
)
->
mode
=
L2CAP_MODE_ERTM
;
release_sock
(
sk
);
...
...
net/mac80211/iface.c
浏览文件 @
d7a066c9
...
...
@@ -391,6 +391,9 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
u32
hw_reconf_flags
=
0
;
int
i
;
if
(
local
->
scan_sdata
==
sdata
)
ieee80211_scan_cancel
(
local
);
clear_bit
(
SDATA_STATE_RUNNING
,
&
sdata
->
state
);
/*
...
...
@@ -523,9 +526,6 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
synchronize_rcu
();
skb_queue_purge
(
&
sdata
->
skb_queue
);
if
(
local
->
scan_sdata
==
sdata
)
ieee80211_scan_cancel
(
local
);
/*
* Disable beaconing here for mesh only, AP and IBSS
* are already taken care of.
...
...
net/wireless/chan.c
浏览文件 @
d7a066c9
...
...
@@ -44,6 +44,38 @@ rdev_freq_to_chan(struct cfg80211_registered_device *rdev,
return
chan
;
}
static
bool
can_beacon_sec_chan
(
struct
wiphy
*
wiphy
,
struct
ieee80211_channel
*
chan
,
enum
nl80211_channel_type
channel_type
)
{
struct
ieee80211_channel
*
sec_chan
;
int
diff
;
switch
(
channel_type
)
{
case
NL80211_CHAN_HT40PLUS
:
diff
=
20
;
break
;
case
NL80211_CHAN_HT40MINUS
:
diff
=
-
20
;
break
;
default:
return
false
;
}
sec_chan
=
ieee80211_get_channel
(
wiphy
,
chan
->
center_freq
+
diff
);
if
(
!
sec_chan
)
return
false
;
/* we'll need a DFS capability later */
if
(
sec_chan
->
flags
&
(
IEEE80211_CHAN_DISABLED
|
IEEE80211_CHAN_PASSIVE_SCAN
|
IEEE80211_CHAN_NO_IBSS
|
IEEE80211_CHAN_RADAR
))
return
false
;
return
true
;
}
int
cfg80211_set_freq
(
struct
cfg80211_registered_device
*
rdev
,
struct
wireless_dev
*
wdev
,
int
freq
,
enum
nl80211_channel_type
channel_type
)
...
...
@@ -68,6 +100,28 @@ int cfg80211_set_freq(struct cfg80211_registered_device *rdev,
if
(
!
chan
)
return
-
EINVAL
;
/* Both channels should be able to initiate communication */
if
(
wdev
&&
(
wdev
->
iftype
==
NL80211_IFTYPE_ADHOC
||
wdev
->
iftype
==
NL80211_IFTYPE_AP
||
wdev
->
iftype
==
NL80211_IFTYPE_AP_VLAN
||
wdev
->
iftype
==
NL80211_IFTYPE_MESH_POINT
||
wdev
->
iftype
==
NL80211_IFTYPE_P2P_GO
))
{
switch
(
channel_type
)
{
case
NL80211_CHAN_HT40PLUS
:
case
NL80211_CHAN_HT40MINUS
:
if
(
!
can_beacon_sec_chan
(
&
rdev
->
wiphy
,
chan
,
channel_type
))
{
printk
(
KERN_DEBUG
"cfg80211: Secondary channel not "
"allowed to initiate communication
\n
"
);
return
-
EINVAL
;
}
break
;
default:
break
;
}
}
result
=
rdev
->
ops
->
set_channel
(
&
rdev
->
wiphy
,
wdev
?
wdev
->
netdev
:
NULL
,
chan
,
channel_type
);
...
...
net/wireless/nl80211.c
浏览文件 @
d7a066c9
...
...
@@ -230,8 +230,8 @@ static int nl80211_prepare_netdev_dump(struct sk_buff *skb,
}
*
rdev
=
cfg80211_get_dev_from_ifindex
(
sock_net
(
skb
->
sk
),
ifidx
);
if
(
IS_ERR
(
dev
))
{
err
=
PTR_ERR
(
dev
);
if
(
IS_ERR
(
*
r
dev
))
{
err
=
PTR_ERR
(
*
r
dev
);
goto
out_rtnl
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录