Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
3231d65f
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
raspberrypi-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
3231d65f
编写于
5月 13, 2014
作者:
J
John W. Linville
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of
git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless
上级
0d770a82
209f6c37
变更
33
隐藏空白更改
内联
并排
Showing
33 changed file
with
132 addition
and
72 deletion
+132
-72
MAINTAINERS
MAINTAINERS
+0
-1
drivers/bluetooth/ath3k.c
drivers/bluetooth/ath3k.c
+2
-0
drivers/bluetooth/btusb.c
drivers/bluetooth/btusb.c
+2
-3
drivers/net/wireless/ath/ath9k/ahb.c
drivers/net/wireless/ath/ath9k/ahb.c
+0
-4
drivers/net/wireless/ath/ath9k/ani.c
drivers/net/wireless/ath/ath9k/ani.c
+6
-0
drivers/net/wireless/ath/ath9k/ath9k.h
drivers/net/wireless/ath/ath9k/ath9k.h
+0
-1
drivers/net/wireless/ath/ath9k/debug_sta.c
drivers/net/wireless/ath/ath9k/debug_sta.c
+2
-3
drivers/net/wireless/ath/ath9k/init.c
drivers/net/wireless/ath/ath9k/init.c
+3
-0
drivers/net/wireless/ath/ath9k/pci.c
drivers/net/wireless/ath/ath9k/pci.c
+0
-5
drivers/net/wireless/ath/ath9k/recv.c
drivers/net/wireless/ath/ath9k/recv.c
+6
-3
drivers/net/wireless/ath/ath9k/xmit.c
drivers/net/wireless/ath/ath9k/xmit.c
+1
-13
drivers/net/wireless/brcm80211/brcmfmac/chip.c
drivers/net/wireless/brcm80211/brcmfmac/chip.c
+3
-2
drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c
drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c
+1
-1
drivers/net/wireless/iwlwifi/mvm/mac80211.c
drivers/net/wireless/iwlwifi/mvm/mac80211.c
+7
-2
drivers/net/wireless/iwlwifi/mvm/mvm.h
drivers/net/wireless/iwlwifi/mvm/mvm.h
+3
-0
drivers/net/wireless/iwlwifi/mvm/scan.c
drivers/net/wireless/iwlwifi/mvm/scan.c
+1
-1
drivers/net/wireless/iwlwifi/mvm/utils.c
drivers/net/wireless/iwlwifi/mvm/utils.c
+19
-0
drivers/net/wireless/iwlwifi/pcie/trans.c
drivers/net/wireless/iwlwifi/pcie/trans.c
+6
-4
drivers/net/wireless/rt2x00/rt2x00mac.c
drivers/net/wireless/rt2x00/rt2x00mac.c
+12
-10
drivers/net/wireless/rtlwifi/rtl8188ee/trx.c
drivers/net/wireless/rtlwifi/rtl8188ee/trx.c
+1
-1
drivers/net/wireless/rtlwifi/rtl8192cu/hw.c
drivers/net/wireless/rtlwifi/rtl8192cu/hw.c
+1
-1
drivers/net/wireless/rtlwifi/rtl8192se/trx.c
drivers/net/wireless/rtlwifi/rtl8192se/trx.c
+6
-0
include/net/cfg80211.h
include/net/cfg80211.h
+12
-0
net/bluetooth/hci_conn.c
net/bluetooth/hci_conn.c
+6
-3
net/bluetooth/hci_event.c
net/bluetooth/hci_event.c
+6
-0
net/mac80211/rx.c
net/mac80211/rx.c
+2
-1
net/mac80211/sta_info.c
net/mac80211/sta_info.c
+2
-1
net/mac80211/status.c
net/mac80211/status.c
+2
-3
net/mac80211/trace.h
net/mac80211/trace.h
+2
-2
net/mac80211/util.c
net/mac80211/util.c
+1
-1
net/mac80211/vht.c
net/mac80211/vht.c
+6
-3
net/wireless/scan.c
net/wireless/scan.c
+10
-2
net/wireless/sme.c
net/wireless/sme.c
+1
-1
未找到文件。
MAINTAINERS
浏览文件 @
3231d65f
...
...
@@ -7277,7 +7277,6 @@ F: drivers/video/aty/aty128fb.c
RALINK RT2X00 WIRELESS LAN DRIVER
P: rt2x00 project
M: Ivo van Doorn <IvDoorn@gmail.com>
M: Gertjan van Wingerde <gwingerde@gmail.com>
M: Helmut Schaa <helmut.schaa@googlemail.com>
L: linux-wireless@vger.kernel.org
L: users@rt2x00.serialmonkey.com (moderated for non-subscribers)
...
...
drivers/bluetooth/ath3k.c
浏览文件 @
3231d65f
...
...
@@ -82,6 +82,7 @@ static const struct usb_device_id ath3k_table[] = {
{
USB_DEVICE
(
0x04CA
,
0x3004
)
},
{
USB_DEVICE
(
0x04CA
,
0x3005
)
},
{
USB_DEVICE
(
0x04CA
,
0x3006
)
},
{
USB_DEVICE
(
0x04CA
,
0x3007
)
},
{
USB_DEVICE
(
0x04CA
,
0x3008
)
},
{
USB_DEVICE
(
0x04CA
,
0x300b
)
},
{
USB_DEVICE
(
0x0930
,
0x0219
)
},
...
...
@@ -131,6 +132,7 @@ static const struct usb_device_id ath3k_blist_tbl[] = {
{
USB_DEVICE
(
0x04ca
,
0x3004
),
.
driver_info
=
BTUSB_ATH3012
},
{
USB_DEVICE
(
0x04ca
,
0x3005
),
.
driver_info
=
BTUSB_ATH3012
},
{
USB_DEVICE
(
0x04ca
,
0x3006
),
.
driver_info
=
BTUSB_ATH3012
},
{
USB_DEVICE
(
0x04ca
,
0x3007
),
.
driver_info
=
BTUSB_ATH3012
},
{
USB_DEVICE
(
0x04ca
,
0x3008
),
.
driver_info
=
BTUSB_ATH3012
},
{
USB_DEVICE
(
0x04ca
,
0x300b
),
.
driver_info
=
BTUSB_ATH3012
},
{
USB_DEVICE
(
0x0930
,
0x0219
),
.
driver_info
=
BTUSB_ATH3012
},
...
...
drivers/bluetooth/btusb.c
浏览文件 @
3231d65f
...
...
@@ -152,6 +152,7 @@ static const struct usb_device_id blacklist_table[] = {
{
USB_DEVICE
(
0x04ca
,
0x3004
),
.
driver_info
=
BTUSB_ATH3012
},
{
USB_DEVICE
(
0x04ca
,
0x3005
),
.
driver_info
=
BTUSB_ATH3012
},
{
USB_DEVICE
(
0x04ca
,
0x3006
),
.
driver_info
=
BTUSB_ATH3012
},
{
USB_DEVICE
(
0x04ca
,
0x3007
),
.
driver_info
=
BTUSB_ATH3012
},
{
USB_DEVICE
(
0x04ca
,
0x3008
),
.
driver_info
=
BTUSB_ATH3012
},
{
USB_DEVICE
(
0x04ca
,
0x300b
),
.
driver_info
=
BTUSB_ATH3012
},
{
USB_DEVICE
(
0x0930
,
0x0219
),
.
driver_info
=
BTUSB_ATH3012
},
...
...
@@ -1485,10 +1486,8 @@ static int btusb_probe(struct usb_interface *intf,
if
(
id
->
driver_info
&
BTUSB_BCM92035
)
hdev
->
setup
=
btusb_setup_bcm92035
;
if
(
id
->
driver_info
&
BTUSB_INTEL
)
{
usb_enable_autosuspend
(
data
->
udev
);
if
(
id
->
driver_info
&
BTUSB_INTEL
)
hdev
->
setup
=
btusb_setup_intel
;
}
/* Interface numbers are hardcoded in the specification */
data
->
isoc
=
usb_ifnum_to_if
(
data
->
udev
,
1
);
...
...
drivers/net/wireless/ath/ath9k/ahb.c
浏览文件 @
3231d65f
...
...
@@ -86,7 +86,6 @@ static int ath_ahb_probe(struct platform_device *pdev)
int
irq
;
int
ret
=
0
;
struct
ath_hw
*
ah
;
struct
ath_common
*
common
;
char
hw_name
[
64
];
if
(
!
dev_get_platdata
(
&
pdev
->
dev
))
{
...
...
@@ -146,9 +145,6 @@ static int ath_ahb_probe(struct platform_device *pdev)
wiphy_info
(
hw
->
wiphy
,
"%s mem=0x%lx, irq=%d
\n
"
,
hw_name
,
(
unsigned
long
)
mem
,
irq
);
common
=
ath9k_hw_common
(
sc
->
sc_ah
);
/* Will be cleared in ath9k_start() */
set_bit
(
ATH_OP_INVALID
,
&
common
->
op_flags
);
return
0
;
err_irq:
...
...
drivers/net/wireless/ath/ath9k/ani.c
浏览文件 @
3231d65f
...
...
@@ -155,6 +155,9 @@ static void ath9k_hw_set_ofdm_nil(struct ath_hw *ah, u8 immunityLevel,
ATH9K_ANI_RSSI_THR_LOW
,
ATH9K_ANI_RSSI_THR_HIGH
);
if
(
AR_SREV_9100
(
ah
)
&&
immunityLevel
<
ATH9K_ANI_OFDM_DEF_LEVEL
)
immunityLevel
=
ATH9K_ANI_OFDM_DEF_LEVEL
;
if
(
!
scan
)
aniState
->
ofdmNoiseImmunityLevel
=
immunityLevel
;
...
...
@@ -235,6 +238,9 @@ static void ath9k_hw_set_cck_nil(struct ath_hw *ah, u_int8_t immunityLevel,
BEACON_RSSI
(
ah
),
ATH9K_ANI_RSSI_THR_LOW
,
ATH9K_ANI_RSSI_THR_HIGH
);
if
(
AR_SREV_9100
(
ah
)
&&
immunityLevel
<
ATH9K_ANI_CCK_DEF_LEVEL
)
immunityLevel
=
ATH9K_ANI_CCK_DEF_LEVEL
;
if
(
ah
->
opmode
==
NL80211_IFTYPE_STATION
&&
BEACON_RSSI
(
ah
)
<=
ATH9K_ANI_RSSI_THR_LOW
&&
immunityLevel
>
ATH9K_ANI_CCK_MAX_LEVEL_LOW_RSSI
)
...
...
drivers/net/wireless/ath/ath9k/ath9k.h
浏览文件 @
3231d65f
...
...
@@ -254,7 +254,6 @@ struct ath_atx_tid {
s8
bar_index
;
bool
sched
;
bool
paused
;
bool
active
;
};
...
...
drivers/net/wireless/ath/ath9k/debug_sta.c
浏览文件 @
3231d65f
...
...
@@ -72,7 +72,7 @@ static ssize_t read_file_node_aggr(struct file *file, char __user *user_buf,
ath_txq_lock
(
sc
,
txq
);
if
(
tid
->
active
)
{
len
+=
scnprintf
(
buf
+
len
,
size
-
len
,
"%3d%11d%10d%10d%10d%10d%9d%6d
%8d
\n
"
,
"%3d%11d%10d%10d%10d%10d%9d%6d
\n
"
,
tid
->
tidno
,
tid
->
seq_start
,
tid
->
seq_next
,
...
...
@@ -80,8 +80,7 @@ static ssize_t read_file_node_aggr(struct file *file, char __user *user_buf,
tid
->
baw_head
,
tid
->
baw_tail
,
tid
->
bar_index
,
tid
->
sched
,
tid
->
paused
);
tid
->
sched
);
}
ath_txq_unlock
(
sc
,
txq
);
}
...
...
drivers/net/wireless/ath/ath9k/init.c
浏览文件 @
3231d65f
...
...
@@ -787,6 +787,9 @@ int ath9k_init_device(u16 devid, struct ath_softc *sc,
common
=
ath9k_hw_common
(
ah
);
ath9k_set_hw_capab
(
sc
,
hw
);
/* Will be cleared in ath9k_start() */
set_bit
(
ATH_OP_INVALID
,
&
common
->
op_flags
);
/* Initialize regulatory */
error
=
ath_regd_init
(
&
common
->
regulatory
,
sc
->
hw
->
wiphy
,
ath9k_reg_notifier
);
...
...
drivers/net/wireless/ath/ath9k/pci.c
浏览文件 @
3231d65f
...
...
@@ -784,7 +784,6 @@ static int ath_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
{
struct
ath_softc
*
sc
;
struct
ieee80211_hw
*
hw
;
struct
ath_common
*
common
;
u8
csz
;
u32
val
;
int
ret
=
0
;
...
...
@@ -877,10 +876,6 @@ static int ath_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
wiphy_info
(
hw
->
wiphy
,
"%s mem=0x%lx, irq=%d
\n
"
,
hw_name
,
(
unsigned
long
)
sc
->
mem
,
pdev
->
irq
);
/* Will be cleared in ath9k_start() */
common
=
ath9k_hw_common
(
sc
->
sc_ah
);
set_bit
(
ATH_OP_INVALID
,
&
common
->
op_flags
);
return
0
;
err_init:
...
...
drivers/net/wireless/ath/ath9k/recv.c
浏览文件 @
3231d65f
...
...
@@ -978,6 +978,7 @@ int ath_rx_tasklet(struct ath_softc *sc, int flush, bool hp)
u64
tsf
=
0
;
unsigned
long
flags
;
dma_addr_t
new_buf_addr
;
unsigned
int
budget
=
512
;
if
(
edma
)
dma_type
=
DMA_BIDIRECTIONAL
;
...
...
@@ -1116,15 +1117,17 @@ int ath_rx_tasklet(struct ath_softc *sc, int flush, bool hp)
}
requeue:
list_add_tail
(
&
bf
->
list
,
&
sc
->
rx
.
rxbuf
);
if
(
flush
)
continue
;
if
(
edma
)
{
ath_rx_edma_buf_link
(
sc
,
qtype
);
}
else
{
ath_rx_buf_relink
(
sc
,
bf
);
ath9k_hw_rxena
(
ah
);
if
(
!
flush
)
ath9k_hw_rxena
(
ah
);
}
if
(
!
budget
--
)
break
;
}
while
(
1
);
if
(
!
(
ah
->
imask
&
ATH9K_INT_RXEOL
))
{
...
...
drivers/net/wireless/ath/ath9k/xmit.c
浏览文件 @
3231d65f
...
...
@@ -107,9 +107,6 @@ static void ath_tx_queue_tid(struct ath_txq *txq, struct ath_atx_tid *tid)
{
struct
ath_atx_ac
*
ac
=
tid
->
ac
;
if
(
tid
->
paused
)
return
;
if
(
tid
->
sched
)
return
;
...
...
@@ -1407,7 +1404,6 @@ int ath_tx_aggr_start(struct ath_softc *sc, struct ieee80211_sta *sta,
ath_tx_tid_change_state
(
sc
,
txtid
);
txtid
->
active
=
true
;
txtid
->
paused
=
true
;
*
ssn
=
txtid
->
seq_start
=
txtid
->
seq_next
;
txtid
->
bar_index
=
-
1
;
...
...
@@ -1427,7 +1423,6 @@ void ath_tx_aggr_stop(struct ath_softc *sc, struct ieee80211_sta *sta, u16 tid)
ath_txq_lock
(
sc
,
txq
);
txtid
->
active
=
false
;
txtid
->
paused
=
false
;
ath_tx_flush_tid
(
sc
,
txtid
);
ath_tx_tid_change_state
(
sc
,
txtid
);
ath_txq_unlock_complete
(
sc
,
txq
);
...
...
@@ -1487,7 +1482,7 @@ void ath_tx_aggr_wakeup(struct ath_softc *sc, struct ath_node *an)
ath_txq_lock
(
sc
,
txq
);
ac
->
clear_ps_filter
=
true
;
if
(
!
tid
->
paused
&&
ath_tid_has_buffered
(
tid
))
{
if
(
ath_tid_has_buffered
(
tid
))
{
ath_tx_queue_tid
(
txq
,
tid
);
ath_txq_schedule
(
sc
,
txq
);
}
...
...
@@ -1510,7 +1505,6 @@ void ath_tx_aggr_resume(struct ath_softc *sc, struct ieee80211_sta *sta,
ath_txq_lock
(
sc
,
txq
);
tid
->
baw_size
=
IEEE80211_MIN_AMPDU_BUF
<<
sta
->
ht_cap
.
ampdu_factor
;
tid
->
paused
=
false
;
if
(
ath_tid_has_buffered
(
tid
))
{
ath_tx_queue_tid
(
txq
,
tid
);
...
...
@@ -1544,8 +1538,6 @@ void ath9k_release_buffered_frames(struct ieee80211_hw *hw,
continue
;
tid
=
ATH_AN_2_TID
(
an
,
i
);
if
(
tid
->
paused
)
continue
;
ath_txq_lock
(
sc
,
tid
->
ac
->
txq
);
while
(
nframes
>
0
)
{
...
...
@@ -1844,9 +1836,6 @@ void ath_txq_schedule(struct ath_softc *sc, struct ath_txq *txq)
list_del
(
&
tid
->
list
);
tid
->
sched
=
false
;
if
(
tid
->
paused
)
continue
;
if
(
ath_tx_sched_aggr
(
sc
,
txq
,
tid
,
&
stop
))
sent
=
true
;
...
...
@@ -2698,7 +2687,6 @@ void ath_tx_node_init(struct ath_softc *sc, struct ath_node *an)
tid
->
baw_size
=
WME_MAX_BA
;
tid
->
baw_head
=
tid
->
baw_tail
=
0
;
tid
->
sched
=
false
;
tid
->
paused
=
false
;
tid
->
active
=
false
;
__skb_queue_head_init
(
&
tid
->
buf_q
);
__skb_queue_head_init
(
&
tid
->
retry_q
);
...
...
drivers/net/wireless/brcm80211/brcmfmac/chip.c
浏览文件 @
3231d65f
...
...
@@ -303,10 +303,10 @@ static void brcmf_chip_ai_coredisable(struct brcmf_core_priv *core,
ci
=
core
->
chip
;
/* if core is already in reset,
just return
*/
/* if core is already in reset,
skip reset
*/
regdata
=
ci
->
ops
->
read32
(
ci
->
ctx
,
core
->
wrapbase
+
BCMA_RESET_CTL
);
if
((
regdata
&
BCMA_RESET_CTL_RESET
)
!=
0
)
return
;
goto
in_reset_configure
;
/* configure reset */
ci
->
ops
->
write32
(
ci
->
ctx
,
core
->
wrapbase
+
BCMA_IOCTL
,
...
...
@@ -322,6 +322,7 @@ static void brcmf_chip_ai_coredisable(struct brcmf_core_priv *core,
SPINWAIT
(
ci
->
ops
->
read32
(
ci
->
ctx
,
core
->
wrapbase
+
BCMA_RESET_CTL
)
!=
BCMA_RESET_CTL_RESET
,
300
);
in_reset_configure:
/* in-reset configure */
ci
->
ops
->
write32
(
ci
->
ctx
,
core
->
wrapbase
+
BCMA_IOCTL
,
reset
|
BCMA_IOCTL_FGC
|
BCMA_IOCTL_CLK
);
...
...
drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c
浏览文件 @
3231d65f
...
...
@@ -4948,7 +4948,7 @@ static int brcmf_enable_bw40_2g(struct brcmf_if *ifp)
if
(
!
err
)
{
/* only set 2G bandwidth using bw_cap command */
band_bwcap
.
band
=
cpu_to_le32
(
WLC_BAND_2G
);
band_bwcap
.
bw_cap
=
cpu_to_le32
(
WLC_BW_
40MHZ_BIT
);
band_bwcap
.
bw_cap
=
cpu_to_le32
(
WLC_BW_
CAP_40MHZ
);
err
=
brcmf_fil_iovar_data_set
(
ifp
,
"bw_cap"
,
&
band_bwcap
,
sizeof
(
band_bwcap
));
}
else
{
...
...
drivers/net/wireless/iwlwifi/mvm/mac80211.c
浏览文件 @
3231d65f
...
...
@@ -1020,7 +1020,7 @@ static void iwl_mvm_mc_iface_iterator(void *_data, u8 *mac,
memcpy
(
cmd
->
bssid
,
vif
->
bss_conf
.
bssid
,
ETH_ALEN
);
len
=
roundup
(
sizeof
(
*
cmd
)
+
cmd
->
count
*
ETH_ALEN
,
4
);
ret
=
iwl_mvm_send_cmd_pdu
(
mvm
,
MCAST_FILTER_CMD
,
CMD_SYNC
,
len
,
cmd
);
ret
=
iwl_mvm_send_cmd_pdu
(
mvm
,
MCAST_FILTER_CMD
,
CMD_
A
SYNC
,
len
,
cmd
);
if
(
ret
)
IWL_ERR
(
mvm
,
"mcast filter cmd error. ret=%d
\n
"
,
ret
);
}
...
...
@@ -1036,7 +1036,7 @@ static void iwl_mvm_recalc_multicast(struct iwl_mvm *mvm)
if
(
WARN_ON_ONCE
(
!
mvm
->
mcast_filter_cmd
))
return
;
ieee80211_iterate_active_interfaces
(
ieee80211_iterate_active_interfaces
_atomic
(
mvm
->
hw
,
IEEE80211_IFACE_ITER_NORMAL
,
iwl_mvm_mc_iface_iterator
,
&
iter_data
);
}
...
...
@@ -1829,6 +1829,11 @@ static int iwl_mvm_mac_sched_scan_start(struct ieee80211_hw *hw,
mutex_lock
(
&
mvm
->
mutex
);
if
(
!
iwl_mvm_is_idle
(
mvm
))
{
ret
=
-
EBUSY
;
goto
out
;
}
switch
(
mvm
->
scan_status
)
{
case
IWL_MVM_SCAN_OS
:
IWL_DEBUG_SCAN
(
mvm
,
"Stopping previous scan for sched_scan
\n
"
);
...
...
drivers/net/wireless/iwlwifi/mvm/mvm.h
浏览文件 @
3231d65f
...
...
@@ -1029,6 +1029,9 @@ static inline bool iwl_mvm_vif_low_latency(struct iwl_mvm_vif *mvmvif)
return
mvmvif
->
low_latency
;
}
/* Assoc status */
bool
iwl_mvm_is_idle
(
struct
iwl_mvm
*
mvm
);
/* Thermal management and CT-kill */
void
iwl_mvm_tt_tx_backoff
(
struct
iwl_mvm
*
mvm
,
u32
backoff
);
void
iwl_mvm_tt_handler
(
struct
iwl_mvm
*
mvm
);
...
...
drivers/net/wireless/iwlwifi/mvm/scan.c
浏览文件 @
3231d65f
...
...
@@ -741,7 +741,7 @@ int iwl_mvm_config_sched_scan(struct iwl_mvm *mvm,
int
band_2ghz
=
mvm
->
nvm_data
->
bands
[
IEEE80211_BAND_2GHZ
].
n_channels
;
int
band_5ghz
=
mvm
->
nvm_data
->
bands
[
IEEE80211_BAND_5GHZ
].
n_channels
;
int
head
=
0
;
int
tail
=
band_2ghz
+
band_5ghz
;
int
tail
=
band_2ghz
+
band_5ghz
-
1
;
u32
ssid_bitmap
;
int
cmd_len
;
int
ret
;
...
...
drivers/net/wireless/iwlwifi/mvm/utils.c
浏览文件 @
3231d65f
...
...
@@ -690,3 +690,22 @@ bool iwl_mvm_low_latency(struct iwl_mvm *mvm)
return
result
;
}
static
void
iwl_mvm_idle_iter
(
void
*
_data
,
u8
*
mac
,
struct
ieee80211_vif
*
vif
)
{
bool
*
idle
=
_data
;
if
(
!
vif
->
bss_conf
.
idle
)
*
idle
=
false
;
}
bool
iwl_mvm_is_idle
(
struct
iwl_mvm
*
mvm
)
{
bool
idle
=
true
;
ieee80211_iterate_active_interfaces_atomic
(
mvm
->
hw
,
IEEE80211_IFACE_ITER_NORMAL
,
iwl_mvm_idle_iter
,
&
idle
);
return
idle
;
}
drivers/net/wireless/iwlwifi/pcie/trans.c
浏览文件 @
3231d65f
...
...
@@ -1848,6 +1848,10 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev,
* PCI Tx retries from interfering with C3 CPU state */
pci_write_config_byte
(
pdev
,
PCI_CFG_RETRY_TIMEOUT
,
0x00
);
trans
->
dev
=
&
pdev
->
dev
;
trans_pcie
->
pci_dev
=
pdev
;
iwl_disable_interrupts
(
trans
);
err
=
pci_enable_msi
(
pdev
);
if
(
err
)
{
dev_err
(
&
pdev
->
dev
,
"pci_enable_msi failed(0X%x)
\n
"
,
err
);
...
...
@@ -1859,8 +1863,6 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev,
}
}
trans
->
dev
=
&
pdev
->
dev
;
trans_pcie
->
pci_dev
=
pdev
;
trans
->
hw_rev
=
iwl_read32
(
trans
,
CSR_HW_REV
);
trans
->
hw_id
=
(
pdev
->
device
<<
16
)
+
pdev
->
subsystem_device
;
snprintf
(
trans
->
hw_id_str
,
sizeof
(
trans
->
hw_id_str
),
...
...
@@ -1886,8 +1888,6 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev,
goto
out_pci_disable_msi
;
}
trans_pcie
->
inta_mask
=
CSR_INI_SET_MASK
;
if
(
iwl_pcie_alloc_ict
(
trans
))
goto
out_free_cmd_pool
;
...
...
@@ -1899,6 +1899,8 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev,
goto
out_free_ict
;
}
trans_pcie
->
inta_mask
=
CSR_INI_SET_MASK
;
return
trans
;
out_free_ict:
...
...
drivers/net/wireless/rt2x00/rt2x00mac.c
浏览文件 @
3231d65f
...
...
@@ -620,21 +620,19 @@ void rt2x00mac_bss_info_changed(struct ieee80211_hw *hw,
rt2x00lib_config_intf
(
rt2x00dev
,
intf
,
vif
->
type
,
NULL
,
bss_conf
->
bssid
);
/*
* Update the beacon. This is only required on USB devices. PCI
* devices fetch beacons periodically.
*/
if
(
changes
&
BSS_CHANGED_BEACON
&&
rt2x00_is_usb
(
rt2x00dev
))
rt2x00queue_update_beacon
(
rt2x00dev
,
vif
);
/*
* Start/stop beaconing.
*/
if
(
changes
&
BSS_CHANGED_BEACON_ENABLED
)
{
if
(
!
bss_conf
->
enable_beacon
&&
intf
->
enable_beacon
)
{
rt2x00queue_clear_beacon
(
rt2x00dev
,
vif
);
rt2x00dev
->
intf_beaconing
--
;
intf
->
enable_beacon
=
false
;
/*
* Clear beacon in the H/W for this vif. This is needed
* to disable beaconing on this particular interface
* and keep it running on other interfaces.
*/
rt2x00queue_clear_beacon
(
rt2x00dev
,
vif
);
if
(
rt2x00dev
->
intf_beaconing
==
0
)
{
/*
...
...
@@ -645,11 +643,15 @@ void rt2x00mac_bss_info_changed(struct ieee80211_hw *hw,
rt2x00queue_stop_queue
(
rt2x00dev
->
bcn
);
mutex_unlock
(
&
intf
->
beacon_skb_mutex
);
}
}
else
if
(
bss_conf
->
enable_beacon
&&
!
intf
->
enable_beacon
)
{
rt2x00dev
->
intf_beaconing
++
;
intf
->
enable_beacon
=
true
;
/*
* Upload beacon to the H/W. This is only required on
* USB devices. PCI devices fetch beacons periodically.
*/
if
(
rt2x00_is_usb
(
rt2x00dev
))
rt2x00queue_update_beacon
(
rt2x00dev
,
vif
);
if
(
rt2x00dev
->
intf_beaconing
==
1
)
{
/*
...
...
drivers/net/wireless/rtlwifi/rtl8188ee/trx.c
浏览文件 @
3231d65f
...
...
@@ -293,7 +293,7 @@ static void _rtl88ee_translate_rx_signal_stuff(struct ieee80211_hw *hw,
u8
*
psaddr
;
__le16
fc
;
u16
type
,
ufc
;
bool
match_bssid
,
packet_toself
,
packet_beacon
,
addr
;
bool
match_bssid
,
packet_toself
,
packet_beacon
=
false
,
addr
;
tmp_buf
=
skb
->
data
+
pstatus
->
rx_drvinfo_size
+
pstatus
->
rx_bufshift
;
...
...
drivers/net/wireless/rtlwifi/rtl8192cu/hw.c
浏览文件 @
3231d65f
...
...
@@ -1001,7 +1001,7 @@ int rtl92cu_hw_init(struct ieee80211_hw *hw)
err
=
_rtl92cu_init_mac
(
hw
);
if
(
err
)
{
RT_TRACE
(
rtlpriv
,
COMP_ERR
,
DBG_EMERG
,
"init mac failed!
\n
"
);
return
err
;
goto
exit
;
}
err
=
rtl92c_download_fw
(
hw
);
if
(
err
)
{
...
...
drivers/net/wireless/rtlwifi/rtl8192se/trx.c
浏览文件 @
3231d65f
...
...
@@ -49,6 +49,12 @@ static u8 _rtl92se_map_hwqueue_to_fwqueue(struct sk_buff *skb, u8 skb_queue)
if
(
ieee80211_is_nullfunc
(
fc
))
return
QSLT_HIGH
;
/* Kernel commit 1bf4bbb4024dcdab changed EAPOL packets to use
* queue V0 at priority 7; however, the RTL8192SE appears to have
* that queue at priority 6
*/
if
(
skb
->
priority
==
7
)
return
QSLT_VO
;
return
skb
->
priority
;
}
...
...
include/net/cfg80211.h
浏览文件 @
3231d65f
...
...
@@ -3691,6 +3691,18 @@ void cfg80211_sched_scan_results(struct wiphy *wiphy);
*/
void
cfg80211_sched_scan_stopped
(
struct
wiphy
*
wiphy
);
/**
* cfg80211_sched_scan_stopped_rtnl - notify that the scheduled scan has stopped
*
* @wiphy: the wiphy on which the scheduled scan stopped
*
* The driver can call this function to inform cfg80211 that the
* scheduled scan had to be stopped, for whatever reason. The driver
* is then called back via the sched_scan_stop operation when done.
* This function should be called with rtnl locked.
*/
void
cfg80211_sched_scan_stopped_rtnl
(
struct
wiphy
*
wiphy
);
/**
* cfg80211_inform_bss_width_frame - inform cfg80211 of a received BSS frame
*
...
...
net/bluetooth/hci_conn.c
浏览文件 @
3231d65f
...
...
@@ -884,14 +884,17 @@ static int hci_conn_auth(struct hci_conn *conn, __u8 sec_level, __u8 auth_type)
if
(
!
test_and_set_bit
(
HCI_CONN_AUTH_PEND
,
&
conn
->
flags
))
{
struct
hci_cp_auth_requested
cp
;
/* encrypt must be pending if auth is also pending */
set_bit
(
HCI_CONN_ENCRYPT_PEND
,
&
conn
->
flags
);
cp
.
handle
=
cpu_to_le16
(
conn
->
handle
);
hci_send_cmd
(
conn
->
hdev
,
HCI_OP_AUTH_REQUESTED
,
sizeof
(
cp
),
&
cp
);
/* If we're already encrypted set the REAUTH_PEND flag,
* otherwise set the ENCRYPT_PEND.
*/
if
(
conn
->
key_type
!=
0xff
)
set_bit
(
HCI_CONN_REAUTH_PEND
,
&
conn
->
flags
);
else
set_bit
(
HCI_CONN_ENCRYPT_PEND
,
&
conn
->
flags
);
}
return
0
;
...
...
net/bluetooth/hci_event.c
浏览文件 @
3231d65f
...
...
@@ -3388,6 +3388,12 @@ static void hci_key_refresh_complete_evt(struct hci_dev *hdev,
if
(
!
conn
)
goto
unlock
;
/* For BR/EDR the necessary steps are taken through the
* auth_complete event.
*/
if
(
conn
->
type
!=
LE_LINK
)
goto
unlock
;
if
(
!
ev
->
status
)
conn
->
sec_level
=
conn
->
pending_sec_level
;
...
...
net/mac80211/rx.c
浏览文件 @
3231d65f
...
...
@@ -1232,7 +1232,8 @@ ieee80211_rx_h_sta_process(struct ieee80211_rx_data *rx)
if
(
ether_addr_equal
(
bssid
,
rx
->
sdata
->
u
.
ibss
.
bssid
)
&&
test_sta_flag
(
sta
,
WLAN_STA_AUTHORIZED
))
{
sta
->
last_rx
=
jiffies
;
if
(
ieee80211_is_data
(
hdr
->
frame_control
))
{
if
(
ieee80211_is_data
(
hdr
->
frame_control
)
&&
!
is_multicast_ether_addr
(
hdr
->
addr1
))
{
sta
->
last_rx_rate_idx
=
status
->
rate_idx
;
sta
->
last_rx_rate_flag
=
status
->
flag
;
sta
->
last_rx_rate_vht_flag
=
status
->
vht_flag
;
...
...
net/mac80211/sta_info.c
浏览文件 @
3231d65f
...
...
@@ -1147,7 +1147,8 @@ void ieee80211_sta_ps_deliver_wakeup(struct sta_info *sta)
atomic_dec
(
&
ps
->
num_sta_ps
);
/* This station just woke up and isn't aware of our SMPS state */
if
(
!
ieee80211_smps_is_restrictive
(
sta
->
known_smps_mode
,
if
(
!
ieee80211_vif_is_mesh
(
&
sdata
->
vif
)
&&
!
ieee80211_smps_is_restrictive
(
sta
->
known_smps_mode
,
sdata
->
smps_mode
)
&&
sta
->
known_smps_mode
!=
sdata
->
bss
->
req_smps
&&
sta_info_tx_streams
(
sta
)
!=
1
)
{
...
...
net/mac80211/status.c
浏览文件 @
3231d65f
...
...
@@ -314,10 +314,9 @@ ieee80211_add_tx_radiotap_header(struct ieee80211_local *local,
!
is_multicast_ether_addr
(
hdr
->
addr1
))
txflags
|=
IEEE80211_RADIOTAP_F_TX_FAIL
;
if
((
info
->
status
.
rates
[
0
].
flags
&
IEEE80211_TX_RC_USE_RTS_CTS
)
||
(
info
->
status
.
rates
[
0
].
flags
&
IEEE80211_TX_RC_USE_CTS_PROTECT
))
if
(
info
->
status
.
rates
[
0
].
flags
&
IEEE80211_TX_RC_USE_CTS_PROTECT
)
txflags
|=
IEEE80211_RADIOTAP_F_TX_CTS
;
else
if
(
info
->
status
.
rates
[
0
].
flags
&
IEEE80211_TX_RC_USE_RTS_CTS
)
if
(
info
->
status
.
rates
[
0
].
flags
&
IEEE80211_TX_RC_USE_RTS_CTS
)
txflags
|=
IEEE80211_RADIOTAP_F_TX_RTS
;
put_unaligned_le16
(
txflags
,
pos
);
...
...
net/mac80211/trace.h
浏览文件 @
3231d65f
...
...
@@ -21,10 +21,10 @@
#define VIF_ENTRY __field(enum nl80211_iftype, vif_type) __field(void *, sdata) \
__field(bool, p2p) \
__string(vif_name, sdata->
dev ? sdata->dev->name : "<nodev>"
)
__string(vif_name, sdata->
name
)
#define VIF_ASSIGN __entry->vif_type = sdata->vif.type; __entry->sdata = sdata; \
__entry->p2p = sdata->vif.p2p; \
__assign_str(vif_name, sdata->
dev ? sdata->dev->name : sdata->
name)
__assign_str(vif_name, sdata->name)
#define VIF_PR_FMT " vif:%s(%d%s)"
#define VIF_PR_ARG __get_str(vif_name), __entry->vif_type, __entry->p2p ? "/p2p" : ""
...
...
net/mac80211/util.c
浏览文件 @
3231d65f
...
...
@@ -1777,7 +1777,7 @@ int ieee80211_reconfig(struct ieee80211_local *local)
mutex_unlock
(
&
local
->
mtx
);
if
(
sched_scan_stopped
)
cfg80211_sched_scan_stopped
(
local
->
hw
.
wiphy
);
cfg80211_sched_scan_stopped
_rtnl
(
local
->
hw
.
wiphy
);
/*
* If this is for hw restart things are still running.
...
...
net/mac80211/vht.c
浏览文件 @
3231d65f
...
...
@@ -129,9 +129,12 @@ ieee80211_vht_cap_ie_to_sta_vht_cap(struct ieee80211_sub_if_data *sdata,
if
(
!
vht_cap_ie
||
!
sband
->
vht_cap
.
vht_supported
)
return
;
/* A VHT STA must support 40 MHz */
if
(
!
(
sta
->
sta
.
ht_cap
.
cap
&
IEEE80211_HT_CAP_SUP_WIDTH_20_40
))
return
;
/*
* A VHT STA must support 40 MHz, but if we verify that here
* then we break a few things - some APs (e.g. Netgear R6300v2
* and others based on the BCM4360 chipset) will unset this
* capability bit when operating in 20 MHz.
*/
vht_cap
->
vht_supported
=
true
;
...
...
net/wireless/scan.c
浏览文件 @
3231d65f
...
...
@@ -284,14 +284,22 @@ void cfg80211_sched_scan_results(struct wiphy *wiphy)
}
EXPORT_SYMBOL
(
cfg80211_sched_scan_results
);
void
cfg80211_sched_scan_stopped
(
struct
wiphy
*
wiphy
)
void
cfg80211_sched_scan_stopped
_rtnl
(
struct
wiphy
*
wiphy
)
{
struct
cfg80211_registered_device
*
rdev
=
wiphy_to_rdev
(
wiphy
);
ASSERT_RTNL
();
trace_cfg80211_sched_scan_stopped
(
wiphy
);
rtnl_lock
();
__cfg80211_stop_sched_scan
(
rdev
,
true
);
}
EXPORT_SYMBOL
(
cfg80211_sched_scan_stopped_rtnl
);
void
cfg80211_sched_scan_stopped
(
struct
wiphy
*
wiphy
)
{
rtnl_lock
();
cfg80211_sched_scan_stopped_rtnl
(
wiphy
);
rtnl_unlock
();
}
EXPORT_SYMBOL
(
cfg80211_sched_scan_stopped
);
...
...
net/wireless/sme.c
浏览文件 @
3231d65f
...
...
@@ -234,7 +234,6 @@ void cfg80211_conn_work(struct work_struct *work)
NULL
,
0
,
NULL
,
0
,
WLAN_STATUS_UNSPECIFIED_FAILURE
,
false
,
NULL
);
cfg80211_sme_free
(
wdev
);
}
wdev_unlock
(
wdev
);
}
...
...
@@ -647,6 +646,7 @@ void __cfg80211_connect_result(struct net_device *dev, const u8 *bssid,
cfg80211_unhold_bss
(
bss_from_pub
(
bss
));
cfg80211_put_bss
(
wdev
->
wiphy
,
bss
);
}
cfg80211_sme_free
(
wdev
);
return
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录