Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
42fb0b02
cloud-kernel
项目概览
openanolis
/
cloud-kernel
1 年多 前同步成功
通知
160
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看板
提交
42fb0b02
编写于
6月 29, 2012
作者:
J
John W. Linville
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of
git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless
上级
34202e28
c9015b24
变更
36
隐藏空白更改
内联
并排
Showing
36 changed file
with
181 addition
and
95 deletion
+181
-95
drivers/bluetooth/ath3k.c
drivers/bluetooth/ath3k.c
+3
-0
drivers/bluetooth/btmrvl_drv.h
drivers/bluetooth/btmrvl_drv.h
+1
-1
drivers/bluetooth/btmrvl_main.c
drivers/bluetooth/btmrvl_main.c
+12
-2
drivers/bluetooth/btmrvl_sdio.c
drivers/bluetooth/btmrvl_sdio.c
+5
-3
drivers/bluetooth/btusb.c
drivers/bluetooth/btusb.c
+2
-0
drivers/net/wireless/airo.c
drivers/net/wireless/airo.c
+2
-2
drivers/net/wireless/ath/ath.h
drivers/net/wireless/ath/ath.h
+1
-0
drivers/net/wireless/ath/ath5k/base.c
drivers/net/wireless/ath/ath5k/base.c
+2
-2
drivers/net/wireless/ath/ath9k/ath9k.h
drivers/net/wireless/ath/ath9k/ath9k.h
+1
-0
drivers/net/wireless/ath/ath9k/htc_drv_main.c
drivers/net/wireless/ath/ath9k/htc_drv_main.c
+2
-3
drivers/net/wireless/ath/ath9k/hw.c
drivers/net/wireless/ath/ath9k/hw.c
+14
-2
drivers/net/wireless/ath/ath9k/recv.c
drivers/net/wireless/ath/ath9k/recv.c
+4
-3
drivers/net/wireless/ath/ath9k/xmit.c
drivers/net/wireless/ath/ath9k/xmit.c
+18
-13
drivers/net/wireless/ath/key.c
drivers/net/wireless/ath/key.c
+4
-0
drivers/net/wireless/iwlwifi/dvm/debugfs.c
drivers/net/wireless/iwlwifi/dvm/debugfs.c
+6
-0
drivers/net/wireless/iwlwifi/dvm/mac80211.c
drivers/net/wireless/iwlwifi/dvm/mac80211.c
+12
-0
drivers/net/wireless/mwifiex/11n_rxreorder.c
drivers/net/wireless/mwifiex/11n_rxreorder.c
+3
-2
drivers/net/wireless/mwifiex/11n_rxreorder.h
drivers/net/wireless/mwifiex/11n_rxreorder.h
+7
-0
drivers/net/wireless/mwifiex/cfg80211.c
drivers/net/wireless/mwifiex/cfg80211.c
+11
-14
drivers/net/wireless/mwifiex/ie.c
drivers/net/wireless/mwifiex/ie.c
+1
-0
drivers/net/wireless/mwifiex/sdio.c
drivers/net/wireless/mwifiex/sdio.c
+3
-3
drivers/net/wireless/mwifiex/sta_event.c
drivers/net/wireless/mwifiex/sta_event.c
+4
-5
drivers/net/wireless/mwifiex/txrx.c
drivers/net/wireless/mwifiex/txrx.c
+3
-7
drivers/net/wireless/mwifiex/usb.c
drivers/net/wireless/mwifiex/usb.c
+20
-8
drivers/net/wireless/mwifiex/wmm.c
drivers/net/wireless/mwifiex/wmm.c
+3
-0
drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
+3
-0
drivers/net/wireless/ti/wl1251/acx.c
drivers/net/wireless/ti/wl1251/acx.c
+1
-1
drivers/net/wireless/ti/wl1251/event.c
drivers/net/wireless/ti/wl1251/event.c
+1
-2
drivers/net/wireless/ti/wl1251/spi.c
drivers/net/wireless/ti/wl1251/spi.c
+4
-0
drivers/net/wireless/ti/wlcore/Kconfig
drivers/net/wireless/ti/wlcore/Kconfig
+0
-1
net/bluetooth/l2cap_core.c
net/bluetooth/l2cap_core.c
+8
-6
net/bluetooth/mgmt.c
net/bluetooth/mgmt.c
+1
-1
net/mac80211/mlme.c
net/mac80211/mlme.c
+6
-7
net/mac80211/rx.c
net/mac80211/rx.c
+4
-1
net/nfc/nci/ntf.c
net/nfc/nci/ntf.c
+5
-5
net/nfc/rawsock.c
net/nfc/rawsock.c
+4
-1
未找到文件。
drivers/bluetooth/ath3k.c
浏览文件 @
42fb0b02
...
...
@@ -63,6 +63,7 @@ static struct usb_device_id ath3k_table[] = {
/* Atheros AR3011 with sflash firmware*/
{
USB_DEVICE
(
0x0CF3
,
0x3002
)
},
{
USB_DEVICE
(
0x0CF3
,
0xE019
)
},
{
USB_DEVICE
(
0x13d3
,
0x3304
)
},
{
USB_DEVICE
(
0x0930
,
0x0215
)
},
{
USB_DEVICE
(
0x0489
,
0xE03D
)
},
...
...
@@ -77,6 +78,7 @@ static struct usb_device_id ath3k_table[] = {
{
USB_DEVICE
(
0x04CA
,
0x3005
)
},
{
USB_DEVICE
(
0x13d3
,
0x3362
)
},
{
USB_DEVICE
(
0x0CF3
,
0xE004
)
},
{
USB_DEVICE
(
0x0930
,
0x0219
)
},
/* Atheros AR5BBU12 with sflash firmware */
{
USB_DEVICE
(
0x0489
,
0xE02C
)
},
...
...
@@ -101,6 +103,7 @@ static struct usb_device_id ath3k_blist_tbl[] = {
{
USB_DEVICE
(
0x04ca
,
0x3005
),
.
driver_info
=
BTUSB_ATH3012
},
{
USB_DEVICE
(
0x13d3
,
0x3362
),
.
driver_info
=
BTUSB_ATH3012
},
{
USB_DEVICE
(
0x0cf3
,
0xe004
),
.
driver_info
=
BTUSB_ATH3012
},
{
USB_DEVICE
(
0x0930
,
0x0219
),
.
driver_info
=
BTUSB_ATH3012
},
/* Atheros AR5BBU22 with sflash firmware */
{
USB_DEVICE
(
0x0489
,
0xE03C
),
.
driver_info
=
BTUSB_ATH3012
},
...
...
drivers/bluetooth/btmrvl_drv.h
浏览文件 @
42fb0b02
...
...
@@ -136,7 +136,7 @@ int btmrvl_remove_card(struct btmrvl_private *priv);
void
btmrvl_interrupt
(
struct
btmrvl_private
*
priv
);
void
btmrvl_check_evtpkt
(
struct
btmrvl_private
*
priv
,
struct
sk_buff
*
skb
);
bool
btmrvl_check_evtpkt
(
struct
btmrvl_private
*
priv
,
struct
sk_buff
*
skb
);
int
btmrvl_process_event
(
struct
btmrvl_private
*
priv
,
struct
sk_buff
*
skb
);
int
btmrvl_send_module_cfg_cmd
(
struct
btmrvl_private
*
priv
,
int
subcmd
);
...
...
drivers/bluetooth/btmrvl_main.c
浏览文件 @
42fb0b02
...
...
@@ -44,23 +44,33 @@ void btmrvl_interrupt(struct btmrvl_private *priv)
}
EXPORT_SYMBOL_GPL
(
btmrvl_interrupt
);
void
btmrvl_check_evtpkt
(
struct
btmrvl_private
*
priv
,
struct
sk_buff
*
skb
)
bool
btmrvl_check_evtpkt
(
struct
btmrvl_private
*
priv
,
struct
sk_buff
*
skb
)
{
struct
hci_event_hdr
*
hdr
=
(
void
*
)
skb
->
data
;
struct
hci_ev_cmd_complete
*
ec
;
u16
opcode
,
ocf
;
u16
opcode
,
ocf
,
ogf
;
if
(
hdr
->
evt
==
HCI_EV_CMD_COMPLETE
)
{
ec
=
(
void
*
)
(
skb
->
data
+
HCI_EVENT_HDR_SIZE
);
opcode
=
__le16_to_cpu
(
ec
->
opcode
);
ocf
=
hci_opcode_ocf
(
opcode
);
ogf
=
hci_opcode_ogf
(
opcode
);
if
(
ocf
==
BT_CMD_MODULE_CFG_REQ
&&
priv
->
btmrvl_dev
.
sendcmdflag
)
{
priv
->
btmrvl_dev
.
sendcmdflag
=
false
;
priv
->
adapter
->
cmd_complete
=
true
;
wake_up_interruptible
(
&
priv
->
adapter
->
cmd_wait_q
);
}
if
(
ogf
==
OGF
)
{
BT_DBG
(
"vendor event skipped: ogf 0x%4.4x"
,
ogf
);
kfree_skb
(
skb
);
return
false
;
}
}
return
true
;
}
EXPORT_SYMBOL_GPL
(
btmrvl_check_evtpkt
);
...
...
drivers/bluetooth/btmrvl_sdio.c
浏览文件 @
42fb0b02
...
...
@@ -565,10 +565,12 @@ static int btmrvl_sdio_card_to_host(struct btmrvl_private *priv)
skb_put
(
skb
,
buf_len
);
skb_pull
(
skb
,
SDIO_HEADER_LEN
);
if
(
type
==
HCI_EVENT_PKT
)
btmrvl_check_evtpkt
(
priv
,
skb
);
if
(
type
==
HCI_EVENT_PKT
)
{
if
(
btmrvl_check_evtpkt
(
priv
,
skb
))
hci_recv_frame
(
skb
);
}
else
hci_recv_frame
(
skb
);
hci_recv_frame
(
skb
);
hdev
->
stat
.
byte_rx
+=
buf_len
;
break
;
...
...
drivers/bluetooth/btusb.c
浏览文件 @
42fb0b02
...
...
@@ -117,6 +117,7 @@ static struct usb_device_id blacklist_table[] = {
/* Atheros 3011 with sflash firmware */
{
USB_DEVICE
(
0x0cf3
,
0x3002
),
.
driver_info
=
BTUSB_IGNORE
},
{
USB_DEVICE
(
0x0cf3
,
0xe019
),
.
driver_info
=
BTUSB_IGNORE
},
{
USB_DEVICE
(
0x13d3
,
0x3304
),
.
driver_info
=
BTUSB_IGNORE
},
{
USB_DEVICE
(
0x0930
,
0x0215
),
.
driver_info
=
BTUSB_IGNORE
},
{
USB_DEVICE
(
0x0489
,
0xe03d
),
.
driver_info
=
BTUSB_IGNORE
},
...
...
@@ -131,6 +132,7 @@ static struct usb_device_id blacklist_table[] = {
{
USB_DEVICE
(
0x04ca
,
0x3005
),
.
driver_info
=
BTUSB_ATH3012
},
{
USB_DEVICE
(
0x13d3
,
0x3362
),
.
driver_info
=
BTUSB_ATH3012
},
{
USB_DEVICE
(
0x0cf3
,
0xe004
),
.
driver_info
=
BTUSB_ATH3012
},
{
USB_DEVICE
(
0x0930
,
0x0219
),
.
driver_info
=
BTUSB_ATH3012
},
/* Atheros AR5BBU12 with sflash firmware */
{
USB_DEVICE
(
0x0489
,
0xe02c
),
.
driver_info
=
BTUSB_IGNORE
},
...
...
drivers/net/wireless/airo.c
浏览文件 @
42fb0b02
...
...
@@ -7233,8 +7233,8 @@ static int airo_get_aplist(struct net_device *dev,
}
}
else
{
dwrq
->
flags
=
1
;
/* Should be define'd */
memcpy
(
extra
+
sizeof
(
struct
sockaddr
)
*
i
,
&
qual
,
sizeof
(
struct
iw_quality
)
*
i
);
memcpy
(
extra
+
sizeof
(
struct
sockaddr
)
*
i
,
qual
,
sizeof
(
struct
iw_quality
)
*
i
);
}
dwrq
->
length
=
i
;
...
...
drivers/net/wireless/ath/ath.h
浏览文件 @
42fb0b02
...
...
@@ -143,6 +143,7 @@ struct ath_common {
u32
keymax
;
DECLARE_BITMAP
(
keymap
,
ATH_KEYMAX
);
DECLARE_BITMAP
(
tkip_keymap
,
ATH_KEYMAX
);
DECLARE_BITMAP
(
ccmp_keymap
,
ATH_KEYMAX
);
enum
ath_crypt_caps
crypt_caps
;
unsigned
int
clockrate
;
...
...
drivers/net/wireless/ath/ath5k/base.c
浏览文件 @
42fb0b02
...
...
@@ -1045,11 +1045,11 @@ ath5k_drain_tx_buffs(struct ath5k_hw *ah)
ath5k_txbuf_free_skb
(
ah
,
bf
);
spin_lock
_bh
(
&
ah
->
txbuflock
);
spin_lock
(
&
ah
->
txbuflock
);
list_move_tail
(
&
bf
->
list
,
&
ah
->
txbuf
);
ah
->
txbuf_len
++
;
txq
->
txq_len
--
;
spin_unlock
_bh
(
&
ah
->
txbuflock
);
spin_unlock
(
&
ah
->
txbuflock
);
}
txq
->
link
=
NULL
;
txq
->
txq_poll_mark
=
false
;
...
...
drivers/net/wireless/ath/ath9k/ath9k.h
浏览文件 @
42fb0b02
...
...
@@ -214,6 +214,7 @@ struct ath_frame_info {
enum
ath9k_key_type
keytype
;
u8
keyix
;
u8
retries
;
u8
rtscts_rate
;
};
struct
ath_buf_state
{
...
...
drivers/net/wireless/ath/ath9k/htc_drv_main.c
浏览文件 @
42fb0b02
...
...
@@ -1486,6 +1486,7 @@ static void ath9k_htc_bss_info_changed(struct ieee80211_hw *hw,
priv
->
num_sta_assoc_vif
++
:
priv
->
num_sta_assoc_vif
--
;
if
(
priv
->
ah
->
opmode
==
NL80211_IFTYPE_STATION
)
{
ath9k_htc_choose_set_bssid
(
priv
);
if
(
bss_conf
->
assoc
&&
(
priv
->
num_sta_assoc_vif
==
1
))
ath9k_htc_start_ani
(
priv
);
else
if
(
priv
->
num_sta_assoc_vif
==
0
)
...
...
@@ -1493,13 +1494,11 @@ static void ath9k_htc_bss_info_changed(struct ieee80211_hw *hw,
}
}
if
(
changed
&
BSS_CHANGED_
BSSID
)
{
if
(
changed
&
BSS_CHANGED_
IBSS
)
{
if
(
priv
->
ah
->
opmode
==
NL80211_IFTYPE_ADHOC
)
{
common
->
curaid
=
bss_conf
->
aid
;
memcpy
(
common
->
curbssid
,
bss_conf
->
bssid
,
ETH_ALEN
);
ath9k_htc_set_bssid
(
priv
);
}
else
if
(
priv
->
ah
->
opmode
==
NL80211_IFTYPE_STATION
)
{
ath9k_htc_choose_set_bssid
(
priv
);
}
}
...
...
drivers/net/wireless/ath/ath9k/hw.c
浏览文件 @
42fb0b02
...
...
@@ -614,7 +614,7 @@ static int __ath9k_hw_init(struct ath_hw *ah)
if
(
NR_CPUS
>
1
&&
ah
->
config
.
serialize_regmode
==
SER_REG_MODE_AUTO
)
{
if
(
ah
->
hw_version
.
macVersion
==
AR_SREV_VERSION_5416_PCI
||
((
AR_SREV_9160
(
ah
)
||
AR_SREV_9280
(
ah
))
&&
((
AR_SREV_9160
(
ah
)
||
AR_SREV_9280
(
ah
)
||
AR_SREV_9287
(
ah
)
)
&&
!
ah
->
is_pciexpress
))
{
ah
->
config
.
serialize_regmode
=
SER_REG_MODE_ON
;
...
...
@@ -773,13 +773,25 @@ static void ath9k_hw_init_qos(struct ath_hw *ah)
u32
ar9003_get_pll_sqsum_dvc
(
struct
ath_hw
*
ah
)
{
struct
ath_common
*
common
=
ath9k_hw_common
(
ah
);
int
i
=
0
;
REG_CLR_BIT
(
ah
,
PLL3
,
PLL3_DO_MEAS_MASK
);
udelay
(
100
);
REG_SET_BIT
(
ah
,
PLL3
,
PLL3_DO_MEAS_MASK
);
while
((
REG_READ
(
ah
,
PLL4
)
&
PLL4_MEAS_DONE
)
==
0
)
while
((
REG_READ
(
ah
,
PLL4
)
&
PLL4_MEAS_DONE
)
==
0
)
{
udelay
(
100
);
if
(
WARN_ON_ONCE
(
i
>=
100
))
{
ath_err
(
common
,
"PLL4 meaurement not done
\n
"
);
break
;
}
i
++
;
}
return
(
REG_READ
(
ah
,
PLL3
)
&
SQSUM_DVC_MASK
)
>>
3
;
}
EXPORT_SYMBOL
(
ar9003_get_pll_sqsum_dvc
);
...
...
drivers/net/wireless/ath/ath9k/recv.c
浏览文件 @
42fb0b02
...
...
@@ -658,9 +658,9 @@ static bool ath_edma_get_buffers(struct ath_softc *sc,
__skb_unlink
(
skb
,
&
rx_edma
->
rx_fifo
);
list_add_tail
(
&
bf
->
list
,
&
sc
->
rx
.
rxbuf
);
ath_rx_edma_buf_link
(
sc
,
qtype
);
}
else
{
bf
=
NULL
;
}
bf
=
NULL
;
}
*
dest
=
bf
;
...
...
@@ -785,7 +785,8 @@ static bool ath9k_rx_accept(struct ath_common *common,
* descriptor does contain a valid key index. This has been observed
* mostly with CCMP encryption.
*/
if
(
rx_stats
->
rs_keyix
==
ATH9K_RXKEYIX_INVALID
)
if
(
rx_stats
->
rs_keyix
==
ATH9K_RXKEYIX_INVALID
||
!
test_bit
(
rx_stats
->
rs_keyix
,
common
->
ccmp_keymap
))
rx_stats
->
rs_status
&=
~
ATH9K_RXERR_KEYMISS
;
if
(
!
rx_stats
->
rs_datalen
)
{
...
...
drivers/net/wireless/ath/ath9k/xmit.c
浏览文件 @
42fb0b02
...
...
@@ -938,6 +938,7 @@ static void ath_buf_set_rate(struct ath_softc *sc, struct ath_buf *bf,
struct
ieee80211_tx_rate
*
rates
;
const
struct
ieee80211_rate
*
rate
;
struct
ieee80211_hdr
*
hdr
;
struct
ath_frame_info
*
fi
=
get_frame_info
(
bf
->
bf_mpdu
);
int
i
;
u8
rix
=
0
;
...
...
@@ -948,18 +949,7 @@ static void ath_buf_set_rate(struct ath_softc *sc, struct ath_buf *bf,
/* set dur_update_en for l-sig computation except for PS-Poll frames */
info
->
dur_update
=
!
ieee80211_is_pspoll
(
hdr
->
frame_control
);
/*
* We check if Short Preamble is needed for the CTS rate by
* checking the BSS's global flag.
* But for the rate series, IEEE80211_TX_RC_USE_SHORT_PREAMBLE is used.
*/
rate
=
ieee80211_get_rts_cts_rate
(
sc
->
hw
,
tx_info
);
info
->
rtscts_rate
=
rate
->
hw_value
;
if
(
tx_info
->
control
.
vif
&&
tx_info
->
control
.
vif
->
bss_conf
.
use_short_preamble
)
info
->
rtscts_rate
|=
rate
->
hw_value_short
;
info
->
rtscts_rate
=
fi
->
rtscts_rate
;
for
(
i
=
0
;
i
<
4
;
i
++
)
{
bool
is_40
,
is_sgi
,
is_sp
;
...
...
@@ -1001,13 +991,13 @@ static void ath_buf_set_rate(struct ath_softc *sc, struct ath_buf *bf,
}
/* legacy rates */
rate
=
&
sc
->
sbands
[
tx_info
->
band
].
bitrates
[
rates
[
i
].
idx
];
if
((
tx_info
->
band
==
IEEE80211_BAND_2GHZ
)
&&
!
(
rate
->
flags
&
IEEE80211_RATE_ERP_G
))
phy
=
WLAN_RC_PHY_CCK
;
else
phy
=
WLAN_RC_PHY_OFDM
;
rate
=
&
sc
->
sbands
[
tx_info
->
band
].
bitrates
[
rates
[
i
].
idx
];
info
->
rates
[
i
].
Rate
=
rate
->
hw_value
;
if
(
rate
->
hw_value_short
)
{
if
(
rates
[
i
].
flags
&
IEEE80211_TX_RC_USE_SHORT_PREAMBLE
)
...
...
@@ -1788,10 +1778,22 @@ static void setup_frame_info(struct ieee80211_hw *hw, struct sk_buff *skb,
struct
ieee80211_sta
*
sta
=
tx_info
->
control
.
sta
;
struct
ieee80211_key_conf
*
hw_key
=
tx_info
->
control
.
hw_key
;
struct
ieee80211_hdr
*
hdr
=
(
struct
ieee80211_hdr
*
)
skb
->
data
;
const
struct
ieee80211_rate
*
rate
;
struct
ath_frame_info
*
fi
=
get_frame_info
(
skb
);
struct
ath_node
*
an
=
NULL
;
enum
ath9k_key_type
keytype
;
bool
short_preamble
=
false
;
/*
* We check if Short Preamble is needed for the CTS rate by
* checking the BSS's global flag.
* But for the rate series, IEEE80211_TX_RC_USE_SHORT_PREAMBLE is used.
*/
if
(
tx_info
->
control
.
vif
&&
tx_info
->
control
.
vif
->
bss_conf
.
use_short_preamble
)
short_preamble
=
true
;
rate
=
ieee80211_get_rts_cts_rate
(
hw
,
tx_info
);
keytype
=
ath9k_cmn_get_hw_crypto_keytype
(
skb
);
if
(
sta
)
...
...
@@ -1806,6 +1808,9 @@ static void setup_frame_info(struct ieee80211_hw *hw, struct sk_buff *skb,
fi
->
keyix
=
ATH9K_TXKEYIX_INVALID
;
fi
->
keytype
=
keytype
;
fi
->
framelen
=
framelen
;
fi
->
rtscts_rate
=
rate
->
hw_value
;
if
(
short_preamble
)
fi
->
rtscts_rate
|=
rate
->
hw_value_short
;
}
u8
ath_txchainmask_reduction
(
struct
ath_softc
*
sc
,
u8
chainmask
,
u32
rate
)
...
...
drivers/net/wireless/ath/key.c
浏览文件 @
42fb0b02
...
...
@@ -556,6 +556,9 @@ int ath_key_config(struct ath_common *common,
return
-
EIO
;
set_bit
(
idx
,
common
->
keymap
);
if
(
key
->
cipher
==
WLAN_CIPHER_SUITE_CCMP
)
set_bit
(
idx
,
common
->
ccmp_keymap
);
if
(
key
->
cipher
==
WLAN_CIPHER_SUITE_TKIP
)
{
set_bit
(
idx
+
64
,
common
->
keymap
);
set_bit
(
idx
,
common
->
tkip_keymap
);
...
...
@@ -582,6 +585,7 @@ void ath_key_delete(struct ath_common *common, struct ieee80211_key_conf *key)
return
;
clear_bit
(
key
->
hw_key_idx
,
common
->
keymap
);
clear_bit
(
key
->
hw_key_idx
,
common
->
ccmp_keymap
);
if
(
key
->
cipher
!=
WLAN_CIPHER_SUITE_TKIP
)
return
;
...
...
drivers/net/wireless/iwlwifi/dvm/debugfs.c
浏览文件 @
42fb0b02
...
...
@@ -2228,6 +2228,7 @@ static ssize_t iwl_dbgfs_echo_test_write(struct file *file,
return
count
;
}
#ifdef CONFIG_IWLWIFI_DEBUG
static
ssize_t
iwl_dbgfs_log_event_read
(
struct
file
*
file
,
char
__user
*
user_buf
,
size_t
count
,
loff_t
*
ppos
)
...
...
@@ -2265,6 +2266,7 @@ static ssize_t iwl_dbgfs_log_event_write(struct file *file,
return
count
;
}
#endif
static
ssize_t
iwl_dbgfs_calib_disabled_read
(
struct
file
*
file
,
char
__user
*
user_buf
,
...
...
@@ -2334,7 +2336,9 @@ DEBUGFS_READ_FILE_OPS(bt_traffic);
DEBUGFS_READ_WRITE_FILE_OPS
(
protection_mode
);
DEBUGFS_READ_FILE_OPS
(
reply_tx_error
);
DEBUGFS_WRITE_FILE_OPS
(
echo_test
);
#ifdef CONFIG_IWLWIFI_DEBUG
DEBUGFS_READ_WRITE_FILE_OPS
(
log_event
);
#endif
DEBUGFS_READ_WRITE_FILE_OPS
(
calib_disabled
);
/*
...
...
@@ -2394,7 +2398,9 @@ int iwl_dbgfs_register(struct iwl_priv *priv, const char *name)
DEBUGFS_ADD_FILE
(
rxon_flags
,
dir_debug
,
S_IWUSR
);
DEBUGFS_ADD_FILE
(
rxon_filter_flags
,
dir_debug
,
S_IWUSR
);
DEBUGFS_ADD_FILE
(
echo_test
,
dir_debug
,
S_IWUSR
);
#ifdef CONFIG_IWLWIFI_DEBUG
DEBUGFS_ADD_FILE
(
log_event
,
dir_debug
,
S_IWUSR
|
S_IRUSR
);
#endif
if
(
iwl_advanced_bt_coexist
(
priv
))
DEBUGFS_ADD_FILE
(
bt_traffic
,
dir_debug
,
S_IRUSR
);
...
...
drivers/net/wireless/iwlwifi/dvm/mac80211.c
浏览文件 @
42fb0b02
...
...
@@ -801,6 +801,18 @@ static int iwlagn_mac_sta_state(struct ieee80211_hw *hw,
switch
(
op
)
{
case
ADD
:
ret
=
iwlagn_mac_sta_add
(
hw
,
vif
,
sta
);
if
(
ret
)
break
;
/*
* Clear the in-progress flag, the AP station entry was added
* but we'll initialize LQ only when we've associated (which
* would also clear the in-progress flag). This is necessary
* in case we never initialize LQ because association fails.
*/
spin_lock_bh
(
&
priv
->
sta_lock
);
priv
->
stations
[
iwl_sta_id
(
sta
)].
used
&=
~
IWL_STA_UCODE_INPROGRESS
;
spin_unlock_bh
(
&
priv
->
sta_lock
);
break
;
case
REMOVE
:
ret
=
iwlagn_mac_sta_remove
(
hw
,
vif
,
sta
);
...
...
drivers/net/wireless/mwifiex/11n_rxreorder.c
浏览文件 @
42fb0b02
...
...
@@ -256,7 +256,8 @@ mwifiex_11n_create_rx_reorder_tbl(struct mwifiex_private *priv, u8 *ta,
else
last_seq
=
priv
->
rx_seq
[
tid
];
if
(
last_seq
>=
new_node
->
start_win
)
if
(
last_seq
!=
MWIFIEX_DEF_11N_RX_SEQ_NUM
&&
last_seq
>=
new_node
->
start_win
)
new_node
->
start_win
=
last_seq
+
1
;
new_node
->
win_size
=
win_size
;
...
...
@@ -596,5 +597,5 @@ void mwifiex_11n_cleanup_reorder_tbl(struct mwifiex_private *priv)
spin_unlock_irqrestore
(
&
priv
->
rx_reorder_tbl_lock
,
flags
);
INIT_LIST_HEAD
(
&
priv
->
rx_reorder_tbl_ptr
);
m
emset
(
priv
->
rx_seq
,
0
,
sizeof
(
priv
->
rx_seq
)
);
m
wifiex_reset_11n_rx_seq_num
(
priv
);
}
drivers/net/wireless/mwifiex/11n_rxreorder.h
浏览文件 @
42fb0b02
...
...
@@ -37,6 +37,13 @@
#define ADDBA_RSP_STATUS_ACCEPT 0
#define MWIFIEX_DEF_11N_RX_SEQ_NUM 0xffff
static
inline
void
mwifiex_reset_11n_rx_seq_num
(
struct
mwifiex_private
*
priv
)
{
memset
(
priv
->
rx_seq
,
0xff
,
sizeof
(
priv
->
rx_seq
));
}
int
mwifiex_11n_rx_reorder_pkt
(
struct
mwifiex_private
*
,
u16
seqNum
,
u16
tid
,
u8
*
ta
,
...
...
drivers/net/wireless/mwifiex/cfg80211.c
浏览文件 @
42fb0b02
...
...
@@ -1525,7 +1525,7 @@ struct net_device *mwifiex_add_virtual_intf(struct wiphy *wiphy,
struct
wireless_dev
*
wdev
;
if
(
!
adapter
)
return
NULL
;
return
ERR_PTR
(
-
EFAULT
)
;
switch
(
type
)
{
case
NL80211_IFTYPE_UNSPECIFIED
:
...
...
@@ -1535,12 +1535,12 @@ struct net_device *mwifiex_add_virtual_intf(struct wiphy *wiphy,
if
(
priv
->
bss_mode
)
{
wiphy_err
(
wiphy
,
"cannot create multiple sta/adhoc ifaces
\n
"
);
return
NULL
;
return
ERR_PTR
(
-
EINVAL
)
;
}
wdev
=
kzalloc
(
sizeof
(
struct
wireless_dev
),
GFP_KERNEL
);
if
(
!
wdev
)
return
NULL
;
return
ERR_PTR
(
-
ENOMEM
)
;
wdev
->
wiphy
=
wiphy
;
priv
->
wdev
=
wdev
;
...
...
@@ -1563,12 +1563,12 @@ struct net_device *mwifiex_add_virtual_intf(struct wiphy *wiphy,
if
(
priv
->
bss_mode
)
{
wiphy_err
(
wiphy
,
"Can't create multiple AP interfaces"
);
return
NULL
;
return
ERR_PTR
(
-
EINVAL
)
;
}
wdev
=
kzalloc
(
sizeof
(
struct
wireless_dev
),
GFP_KERNEL
);
if
(
!
wdev
)
return
NULL
;
return
ERR_PTR
(
-
ENOMEM
)
;
priv
->
wdev
=
wdev
;
wdev
->
wiphy
=
wiphy
;
...
...
@@ -1585,14 +1585,15 @@ struct net_device *mwifiex_add_virtual_intf(struct wiphy *wiphy,
break
;
default:
wiphy_err
(
wiphy
,
"type not supported
\n
"
);
return
NULL
;
return
ERR_PTR
(
-
EINVAL
)
;
}
dev
=
alloc_netdev_mq
(
sizeof
(
struct
mwifiex_private
*
),
name
,
ether_setup
,
1
);
if
(
!
dev
)
{
wiphy_err
(
wiphy
,
"no memory available for netdevice
\n
"
);
goto
error
;
priv
->
bss_mode
=
NL80211_IFTYPE_UNSPECIFIED
;
return
ERR_PTR
(
-
ENOMEM
);
}
mwifiex_init_priv_params
(
priv
,
dev
);
...
...
@@ -1623,7 +1624,9 @@ struct net_device *mwifiex_add_virtual_intf(struct wiphy *wiphy,
/* Register network device */
if
(
register_netdevice
(
dev
))
{
wiphy_err
(
wiphy
,
"cannot register virtual network device
\n
"
);
goto
error
;
free_netdev
(
dev
);
priv
->
bss_mode
=
NL80211_IFTYPE_UNSPECIFIED
;
return
ERR_PTR
(
-
EFAULT
);
}
sema_init
(
&
priv
->
async_sem
,
1
);
...
...
@@ -1635,12 +1638,6 @@ struct net_device *mwifiex_add_virtual_intf(struct wiphy *wiphy,
mwifiex_dev_debugfs_init
(
priv
);
#endif
return
dev
;
error:
if
(
dev
&&
(
dev
->
reg_state
==
NETREG_UNREGISTERED
))
free_netdev
(
dev
);
priv
->
bss_mode
=
NL80211_IFTYPE_UNSPECIFIED
;
return
NULL
;
}
EXPORT_SYMBOL_GPL
(
mwifiex_add_virtual_intf
);
...
...
drivers/net/wireless/mwifiex/ie.c
浏览文件 @
42fb0b02
...
...
@@ -213,6 +213,7 @@ mwifiex_update_uap_custom_ie(struct mwifiex_private *priv,
/* save assoc resp ie index after auto-indexing */
*
assoc_idx
=
*
((
u16
*
)
pos
);
kfree
(
ap_custom_ie
);
return
ret
;
}
...
...
drivers/net/wireless/mwifiex/sdio.c
浏览文件 @
42fb0b02
...
...
@@ -978,10 +978,10 @@ static int mwifiex_decode_rx_packet(struct mwifiex_adapter *adapter,
dev_dbg
(
adapter
->
dev
,
"info: --- Rx: Event ---
\n
"
);
adapter
->
event_cause
=
*
(
u32
*
)
skb
->
data
;
skb_pull
(
skb
,
MWIFIEX_EVENT_HEADER_LEN
);
if
((
skb
->
len
>
0
)
&&
(
skb
->
len
<
MAX_EVENT_SIZE
))
memcpy
(
adapter
->
event_body
,
skb
->
data
,
skb
->
len
);
memcpy
(
adapter
->
event_body
,
skb
->
data
+
MWIFIEX_EVENT_HEADER_LEN
,
skb
->
len
);
/* event cause has been saved to adapter->event_cause */
adapter
->
event_received
=
true
;
...
...
drivers/net/wireless/mwifiex/sta_event.c
浏览文件 @
42fb0b02
...
...
@@ -406,9 +406,9 @@ int mwifiex_process_sta_event(struct mwifiex_private *priv)
break
;
case
EVENT_UAP_STA_ASSOC
:
skb_pull
(
adapter
->
event_skb
,
MWIFIEX_UAP_EVENT_EXTRA_HEADER
);
memset
(
&
sinfo
,
0
,
sizeof
(
sinfo
));
event
=
(
struct
mwifiex_assoc_event
*
)
adapter
->
event_skb
->
data
;
event
=
(
struct
mwifiex_assoc_event
*
)
(
adapter
->
event_body
+
MWIFIEX_UAP_EVENT_EXTRA_HEADER
);
if
(
le16_to_cpu
(
event
->
type
)
==
TLV_TYPE_UAP_MGMT_FRAME
)
{
len
=
-
1
;
...
...
@@ -433,9 +433,8 @@ int mwifiex_process_sta_event(struct mwifiex_private *priv)
GFP_KERNEL
);
break
;
case
EVENT_UAP_STA_DEAUTH
:
skb_pull
(
adapter
->
event_skb
,
MWIFIEX_UAP_EVENT_EXTRA_HEADER
);
cfg80211_del_sta
(
priv
->
netdev
,
adapter
->
event_skb
->
data
,
GFP_KERNEL
);
cfg80211_del_sta
(
priv
->
netdev
,
adapter
->
event_body
+
MWIFIEX_UAP_EVENT_EXTRA_HEADER
,
GFP_KERNEL
);
break
;
case
EVENT_UAP_BSS_IDLE
:
priv
->
media_connected
=
false
;
...
...
drivers/net/wireless/mwifiex/txrx.c
浏览文件 @
42fb0b02
...
...
@@ -161,15 +161,11 @@ int mwifiex_write_data_complete(struct mwifiex_adapter *adapter,
goto
done
;
for
(
i
=
0
;
i
<
adapter
->
priv_num
;
i
++
)
{
tpriv
=
adapter
->
priv
[
i
];
if
((
GET_BSS_ROLE
(
tpriv
)
==
MWIFIEX_BSS_ROLE_STA
)
&&
(
tpriv
->
media_connected
))
{
if
(
netif_queue_stopped
(
tpriv
->
netdev
))
mwifiex_wake_up_net_dev_queue
(
tpriv
->
netdev
,
adapter
);
}
if
(
tpriv
->
media_connected
&&
netif_queue_stopped
(
tpriv
->
netdev
))
mwifiex_wake_up_net_dev_queue
(
tpriv
->
netdev
,
adapter
);
}
done:
dev_kfree_skb_any
(
skb
);
...
...
drivers/net/wireless/mwifiex/usb.c
浏览文件 @
42fb0b02
...
...
@@ -49,6 +49,7 @@ static int mwifiex_usb_recv(struct mwifiex_adapter *adapter,
struct
device
*
dev
=
adapter
->
dev
;
u32
recv_type
;
__le32
tmp
;
int
ret
;
if
(
adapter
->
hs_activated
)
mwifiex_process_hs_config
(
adapter
);
...
...
@@ -69,16 +70,19 @@ static int mwifiex_usb_recv(struct mwifiex_adapter *adapter,
case
MWIFIEX_USB_TYPE_CMD
:
if
(
skb
->
len
>
MWIFIEX_SIZE_OF_CMD_BUFFER
)
{
dev_err
(
dev
,
"CMD: skb->len too large
\n
"
);
return
-
1
;
ret
=
-
1
;
goto
exit_restore_skb
;
}
else
if
(
!
adapter
->
curr_cmd
)
{
dev_dbg
(
dev
,
"CMD: no curr_cmd
\n
"
);
if
(
adapter
->
ps_state
==
PS_STATE_SLEEP_CFM
)
{
mwifiex_process_sleep_confirm_resp
(
adapter
,
skb
->
data
,
skb
->
len
);
return
0
;
ret
=
0
;
goto
exit_restore_skb
;
}
return
-
1
;
ret
=
-
1
;
goto
exit_restore_skb
;
}
adapter
->
curr_cmd
->
resp_skb
=
skb
;
...
...
@@ -87,20 +91,22 @@ static int mwifiex_usb_recv(struct mwifiex_adapter *adapter,
case
MWIFIEX_USB_TYPE_EVENT
:
if
(
skb
->
len
<
sizeof
(
u32
))
{
dev_err
(
dev
,
"EVENT: skb->len too small
\n
"
);
return
-
1
;
ret
=
-
1
;
goto
exit_restore_skb
;
}
skb_copy_from_linear_data
(
skb
,
&
tmp
,
sizeof
(
u32
));
adapter
->
event_cause
=
le32_to_cpu
(
tmp
);
skb_pull
(
skb
,
sizeof
(
u32
));
dev_dbg
(
dev
,
"event_cause %#x
\n
"
,
adapter
->
event_cause
);
if
(
skb
->
len
>
MAX_EVENT_SIZE
)
{
dev_err
(
dev
,
"EVENT: event body too large
\n
"
);
return
-
1
;
ret
=
-
1
;
goto
exit_restore_skb
;
}
skb_copy_from_linear_data
(
skb
,
adapter
->
event_body
,
skb
->
len
);
memcpy
(
adapter
->
event_body
,
skb
->
data
+
MWIFIEX_EVENT_HEADER_LEN
,
skb
->
len
);
adapter
->
event_received
=
true
;
adapter
->
event_skb
=
skb
;
break
;
...
...
@@ -124,6 +130,12 @@ static int mwifiex_usb_recv(struct mwifiex_adapter *adapter,
}
return
-
EINPROGRESS
;
exit_restore_skb:
/* The buffer will be reused for further cmds/events */
skb_push
(
skb
,
INTF_HEADER_LEN
);
return
ret
;
}
static
void
mwifiex_usb_rx_complete
(
struct
urb
*
urb
)
...
...
drivers/net/wireless/mwifiex/wmm.c
浏览文件 @
42fb0b02
...
...
@@ -404,6 +404,8 @@ mwifiex_wmm_init(struct mwifiex_adapter *adapter)
priv
->
add_ba_param
.
tx_win_size
=
MWIFIEX_AMPDU_DEF_TXWINSIZE
;
priv
->
add_ba_param
.
rx_win_size
=
MWIFIEX_AMPDU_DEF_RXWINSIZE
;
mwifiex_reset_11n_rx_seq_num
(
priv
);
atomic_set
(
&
priv
->
wmm
.
tx_pkts_queued
,
0
);
atomic_set
(
&
priv
->
wmm
.
highest_queued_prio
,
HIGH_PRIO_TID
);
}
...
...
@@ -1221,6 +1223,7 @@ mwifiex_dequeue_tx_packet(struct mwifiex_adapter *adapter)
if
(
!
ptr
->
is_11n_enabled
||
mwifiex_is_ba_stream_setup
(
priv
,
ptr
,
tid
)
||
priv
->
wps
.
session_enable
||
((
priv
->
sec_info
.
wpa_enabled
||
priv
->
sec_info
.
wpa2_enabled
)
&&
!
priv
->
wpa_is_gtk_set
))
{
...
...
drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
浏览文件 @
42fb0b02
...
...
@@ -301,9 +301,11 @@ static struct usb_device_id rtl8192c_usb_ids[] = {
{
RTL_USB_DEVICE
(
0x07b8
,
0x8188
,
rtl92cu_hal_cfg
)},
/*Abocom - Abocom*/
{
RTL_USB_DEVICE
(
0x07b8
,
0x8189
,
rtl92cu_hal_cfg
)},
/*Funai - Abocom*/
{
RTL_USB_DEVICE
(
0x0846
,
0x9041
,
rtl92cu_hal_cfg
)},
/*NetGear WNA1000M*/
{
RTL_USB_DEVICE
(
0x0bda
,
0x5088
,
rtl92cu_hal_cfg
)},
/*Thinkware-CC&C*/
{
RTL_USB_DEVICE
(
0x0df6
,
0x0052
,
rtl92cu_hal_cfg
)},
/*Sitecom - Edimax*/
{
RTL_USB_DEVICE
(
0x0df6
,
0x005c
,
rtl92cu_hal_cfg
)},
/*Sitecom - Edimax*/
{
RTL_USB_DEVICE
(
0x0eb0
,
0x9071
,
rtl92cu_hal_cfg
)},
/*NO Brand - Etop*/
{
RTL_USB_DEVICE
(
0x4856
,
0x0091
,
rtl92cu_hal_cfg
)},
/*NetweeN - Feixun*/
/* HP - Lite-On ,8188CUS Slim Combo */
{
RTL_USB_DEVICE
(
0x103c
,
0x1629
,
rtl92cu_hal_cfg
)},
{
RTL_USB_DEVICE
(
0x13d3
,
0x3357
,
rtl92cu_hal_cfg
)},
/* AzureWave */
...
...
@@ -346,6 +348,7 @@ static struct usb_device_id rtl8192c_usb_ids[] = {
{
RTL_USB_DEVICE
(
0x07b8
,
0x8178
,
rtl92cu_hal_cfg
)},
/*Funai -Abocom*/
{
RTL_USB_DEVICE
(
0x0846
,
0x9021
,
rtl92cu_hal_cfg
)},
/*Netgear-Sercomm*/
{
RTL_USB_DEVICE
(
0x0b05
,
0x17ab
,
rtl92cu_hal_cfg
)},
/*ASUS-Edimax*/
{
RTL_USB_DEVICE
(
0x0bda
,
0x8186
,
rtl92cu_hal_cfg
)},
/*Realtek 92CE-VAU*/
{
RTL_USB_DEVICE
(
0x0df6
,
0x0061
,
rtl92cu_hal_cfg
)},
/*Sitecom-Edimax*/
{
RTL_USB_DEVICE
(
0x0e66
,
0x0019
,
rtl92cu_hal_cfg
)},
/*Hawking-Edimax*/
{
RTL_USB_DEVICE
(
0x2001
,
0x3307
,
rtl92cu_hal_cfg
)},
/*D-Link-Cameo*/
...
...
drivers/net/wireless/ti/wl1251/acx.c
浏览文件 @
42fb0b02
...
...
@@ -869,7 +869,7 @@ int wl1251_acx_tsf_info(struct wl1251 *wl, u64 *mactime)
}
*
mactime
=
tsf_info
->
current_tsf_lsb
|
(
tsf_info
->
current_tsf_msb
<<
31
);
(
(
u64
)
tsf_info
->
current_tsf_msb
<<
32
);
out:
kfree
(
tsf_info
);
...
...
drivers/net/wireless/ti/wl1251/event.c
浏览文件 @
42fb0b02
...
...
@@ -76,8 +76,7 @@ static int wl1251_event_process(struct wl1251 *wl, struct event_mailbox *mbox)
}
}
if
(
vector
&
SYNCHRONIZATION_TIMEOUT_EVENT_ID
&&
wl
->
station_mode
!=
STATION_ACTIVE_MODE
)
{
if
(
vector
&
SYNCHRONIZATION_TIMEOUT_EVENT_ID
)
{
wl1251_debug
(
DEBUG_EVENT
,
"SYNCHRONIZATION_TIMEOUT_EVENT"
);
/* indicate to the stack, that beacons have been lost */
...
...
drivers/net/wireless/ti/wl1251/spi.c
浏览文件 @
42fb0b02
...
...
@@ -73,6 +73,8 @@ static void wl1251_spi_reset(struct wl1251 *wl)
spi_sync
(
wl_to_spi
(
wl
),
&
m
);
wl1251_dump
(
DEBUG_SPI
,
"spi reset -> "
,
cmd
,
WSPI_INIT_CMD_LEN
);
kfree
(
cmd
);
}
static
void
wl1251_spi_wake
(
struct
wl1251
*
wl
)
...
...
@@ -127,6 +129,8 @@ static void wl1251_spi_wake(struct wl1251 *wl)
spi_sync
(
wl_to_spi
(
wl
),
&
m
);
wl1251_dump
(
DEBUG_SPI
,
"spi init -> "
,
cmd
,
WSPI_INIT_CMD_LEN
);
kfree
(
cmd
);
}
static
void
wl1251_spi_reset_wake
(
struct
wl1251
*
wl
)
...
...
drivers/net/wireless/ti/wlcore/Kconfig
浏览文件 @
42fb0b02
config WLCORE
tristate "TI wlcore support"
depends on WL_TI && GENERIC_HARDIRQS && MAC80211
depends on INET
select FW_LOADER
---help---
This module contains the main code for TI WLAN chips. It abstracts
...
...
net/bluetooth/l2cap_core.c
浏览文件 @
42fb0b02
...
...
@@ -3278,12 +3278,14 @@ static void l2cap_conf_rfc_get(struct l2cap_chan *chan, void *rsp, int len)
while
(
len
>=
L2CAP_CONF_OPT_SIZE
)
{
len
-=
l2cap_get_conf_opt
(
&
rsp
,
&
type
,
&
olen
,
&
val
);
switch
(
type
)
{
case
L2CAP_CONF_RFC
:
if
(
olen
==
sizeof
(
rfc
))
memcpy
(
&
rfc
,
(
void
*
)
val
,
olen
);
goto
done
;
}
if
(
type
!=
L2CAP_CONF_RFC
)
continue
;
if
(
olen
!=
sizeof
(
rfc
))
break
;
memcpy
(
&
rfc
,
(
void
*
)
val
,
olen
);
goto
done
;
}
/* Use sane default values in case a misbehaving remote device
...
...
net/bluetooth/mgmt.c
浏览文件 @
42fb0b02
...
...
@@ -1598,7 +1598,7 @@ static int disconnect(struct sock *sk, struct hci_dev *hdev, void *data,
else
conn
=
hci_conn_hash_lookup_ba
(
hdev
,
LE_LINK
,
&
cp
->
addr
.
bdaddr
);
if
(
!
conn
)
{
if
(
!
conn
||
conn
->
state
==
BT_OPEN
||
conn
->
state
==
BT_CLOSED
)
{
err
=
cmd_status
(
sk
,
hdev
->
id
,
MGMT_OP_DISCONNECT
,
MGMT_STATUS_NOT_CONNECTED
);
goto
failed
;
...
...
net/mac80211/mlme.c
浏览文件 @
42fb0b02
...
...
@@ -1324,7 +1324,6 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata,
struct
ieee80211_local
*
local
=
sdata
->
local
;
struct
sta_info
*
sta
;
u32
changed
=
0
;
u8
bssid
[
ETH_ALEN
];
ASSERT_MGD_MTX
(
ifmgd
);
...
...
@@ -1336,10 +1335,7 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata,
ieee80211_stop_poll
(
sdata
);
memcpy
(
bssid
,
ifmgd
->
associated
->
bssid
,
ETH_ALEN
);
ifmgd
->
associated
=
NULL
;
memset
(
ifmgd
->
bssid
,
0
,
ETH_ALEN
);
/*
* we need to commit the associated = NULL change because the
...
...
@@ -1359,7 +1355,7 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata,
netif_carrier_off
(
sdata
->
dev
);
mutex_lock
(
&
local
->
sta_mtx
);
sta
=
sta_info_get
(
sdata
,
bssid
);
sta
=
sta_info_get
(
sdata
,
ifmgd
->
bssid
);
if
(
sta
)
{
set_sta_flag
(
sta
,
WLAN_STA_BLOCK_BA
);
ieee80211_sta_tear_down_BA_sessions
(
sta
,
tx
);
...
...
@@ -1368,13 +1364,16 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata,
/* deauthenticate/disassociate now */
if
(
tx
||
frame_buf
)
ieee80211_send_deauth_disassoc
(
sdata
,
bssid
,
stype
,
reason
,
tx
,
frame_buf
);
ieee80211_send_deauth_disassoc
(
sdata
,
ifmgd
->
bssid
,
stype
,
reason
,
tx
,
frame_buf
);
/* flush out frame */
if
(
tx
)
drv_flush
(
local
,
false
);
/* clear bssid only after building the needed mgmt frames */
memset
(
ifmgd
->
bssid
,
0
,
ETH_ALEN
);
/* remove AP and TDLS peers */
sta_info_flush
(
local
,
sdata
);
...
...
net/mac80211/rx.c
浏览文件 @
42fb0b02
...
...
@@ -2434,7 +2434,7 @@ ieee80211_rx_h_action_return(struct ieee80211_rx_data *rx)
* frames that we didn't handle, including returning unknown
* ones. For all other modes we will return them to the sender,
* setting the 0x80 bit in the action category, as required by
* 802.11-20
07 7.3.1.11
.
* 802.11-20
12 9.24.4
.
* Newer versions of hostapd shall also use the management frame
* registration mechanisms, but older ones still use cooked
* monitor interfaces so push all frames there.
...
...
@@ -2444,6 +2444,9 @@ ieee80211_rx_h_action_return(struct ieee80211_rx_data *rx)
sdata
->
vif
.
type
==
NL80211_IFTYPE_AP_VLAN
))
return
RX_DROP_MONITOR
;
if
(
is_multicast_ether_addr
(
mgmt
->
da
))
return
RX_DROP_MONITOR
;
/* do not return rejected action frames */
if
(
mgmt
->
u
.
action
.
category
&
0x80
)
return
RX_DROP_UNUSABLE
;
...
...
net/nfc/nci/ntf.c
浏览文件 @
42fb0b02
...
...
@@ -106,7 +106,7 @@ static __u8 *nci_extract_rf_params_nfca_passive_poll(struct nci_dev *ndev,
nfca_poll
->
sens_res
=
__le16_to_cpu
(
*
((
__u16
*
)
data
));
data
+=
2
;
nfca_poll
->
nfcid1_len
=
*
data
++
;
nfca_poll
->
nfcid1_len
=
min_t
(
__u8
,
*
data
++
,
NFC_NFCID1_MAXSIZE
)
;
pr_debug
(
"sens_res 0x%x, nfcid1_len %d
\n
"
,
nfca_poll
->
sens_res
,
nfca_poll
->
nfcid1_len
);
...
...
@@ -130,7 +130,7 @@ static __u8 *nci_extract_rf_params_nfcb_passive_poll(struct nci_dev *ndev,
struct
rf_tech_specific_params_nfcb_poll
*
nfcb_poll
,
__u8
*
data
)
{
nfcb_poll
->
sensb_res_len
=
*
data
++
;
nfcb_poll
->
sensb_res_len
=
min_t
(
__u8
,
*
data
++
,
NFC_SENSB_RES_MAXSIZE
)
;
pr_debug
(
"sensb_res_len %d
\n
"
,
nfcb_poll
->
sensb_res_len
);
...
...
@@ -145,7 +145,7 @@ static __u8 *nci_extract_rf_params_nfcf_passive_poll(struct nci_dev *ndev,
__u8
*
data
)
{
nfcf_poll
->
bit_rate
=
*
data
++
;
nfcf_poll
->
sensf_res_len
=
*
data
++
;
nfcf_poll
->
sensf_res_len
=
min_t
(
__u8
,
*
data
++
,
NFC_SENSF_RES_MAXSIZE
)
;
pr_debug
(
"bit_rate %d, sensf_res_len %d
\n
"
,
nfcf_poll
->
bit_rate
,
nfcf_poll
->
sensf_res_len
);
...
...
@@ -331,7 +331,7 @@ static int nci_extract_activation_params_iso_dep(struct nci_dev *ndev,
switch
(
ntf
->
activation_rf_tech_and_mode
)
{
case
NCI_NFC_A_PASSIVE_POLL_MODE
:
nfca_poll
=
&
ntf
->
activation_params
.
nfca_poll_iso_dep
;
nfca_poll
->
rats_res_len
=
*
data
++
;
nfca_poll
->
rats_res_len
=
min_t
(
__u8
,
*
data
++
,
20
)
;
pr_debug
(
"rats_res_len %d
\n
"
,
nfca_poll
->
rats_res_len
);
if
(
nfca_poll
->
rats_res_len
>
0
)
{
memcpy
(
nfca_poll
->
rats_res
,
...
...
@@ -341,7 +341,7 @@ static int nci_extract_activation_params_iso_dep(struct nci_dev *ndev,
case
NCI_NFC_B_PASSIVE_POLL_MODE
:
nfcb_poll
=
&
ntf
->
activation_params
.
nfcb_poll_iso_dep
;
nfcb_poll
->
attrib_res_len
=
*
data
++
;
nfcb_poll
->
attrib_res_len
=
min_t
(
__u8
,
*
data
++
,
50
)
;
pr_debug
(
"attrib_res_len %d
\n
"
,
nfcb_poll
->
attrib_res_len
);
if
(
nfcb_poll
->
attrib_res_len
>
0
)
{
memcpy
(
nfcb_poll
->
attrib_res
,
...
...
net/nfc/rawsock.c
浏览文件 @
42fb0b02
...
...
@@ -54,7 +54,10 @@ static int rawsock_release(struct socket *sock)
{
struct
sock
*
sk
=
sock
->
sk
;
pr_debug
(
"sock=%p
\n
"
,
sock
);
pr_debug
(
"sock=%p sk=%p
\n
"
,
sock
,
sk
);
if
(
!
sk
)
return
0
;
sock_orphan
(
sk
);
sock_put
(
sk
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录