Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
429576b9
K
Kernel
项目概览
openeuler
/
Kernel
接近 2 年 前同步成功
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
429576b9
编写于
4月 26, 2011
作者:
J
John W. Linville
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of
git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
上级
9835a30e
069f40fc
变更
23
隐藏空白更改
内联
并排
Showing
23 changed file
with
86 addition
and
72 deletion
+86
-72
drivers/net/wireless/ath/ath9k/hif_usb.c
drivers/net/wireless/ath/ath9k/hif_usb.c
+2
-2
drivers/net/wireless/ath/ath9k/hw.c
drivers/net/wireless/ath/ath9k/hw.c
+0
-9
drivers/net/wireless/ath/ath9k/mac.c
drivers/net/wireless/ath/ath9k/mac.c
+22
-3
drivers/net/wireless/ath/ath9k/mac.h
drivers/net/wireless/ath/ath9k/mac.h
+1
-1
drivers/net/wireless/ath/ath9k/main.c
drivers/net/wireless/ath/ath9k/main.c
+10
-2
drivers/net/wireless/ath/ath9k/recv.c
drivers/net/wireless/ath/ath9k/recv.c
+3
-3
drivers/net/wireless/iwlegacy/Kconfig
drivers/net/wireless/iwlegacy/Kconfig
+5
-4
drivers/net/wireless/iwlegacy/iwl-3945-hw.h
drivers/net/wireless/iwlegacy/iwl-3945-hw.h
+0
-2
drivers/net/wireless/iwlegacy/iwl-4965-hw.h
drivers/net/wireless/iwlegacy/iwl-4965-hw.h
+0
-3
drivers/net/wireless/iwlegacy/iwl-4965-tx.c
drivers/net/wireless/iwlegacy/iwl-4965-tx.c
+7
-3
drivers/net/wireless/iwlegacy/iwl-core.c
drivers/net/wireless/iwlegacy/iwl-core.c
+11
-6
drivers/net/wireless/iwlegacy/iwl-eeprom.c
drivers/net/wireless/iwlegacy/iwl-eeprom.c
+0
-7
drivers/net/wireless/iwlegacy/iwl3945-base.c
drivers/net/wireless/iwlegacy/iwl3945-base.c
+0
-4
drivers/net/wireless/iwlegacy/iwl4965-base.c
drivers/net/wireless/iwlegacy/iwl4965-base.c
+0
-6
drivers/net/wireless/iwlwifi/iwl-agn-rxon.c
drivers/net/wireless/iwlwifi/iwl-agn-rxon.c
+1
-6
drivers/net/wireless/iwlwifi/iwl-agn-tx.c
drivers/net/wireless/iwlwifi/iwl-agn-tx.c
+7
-3
drivers/net/wireless/p54/txrx.c
drivers/net/wireless/p54/txrx.c
+1
-1
net/bluetooth/hci_core.c
net/bluetooth/hci_core.c
+2
-3
net/bluetooth/hci_event.c
net/bluetooth/hci_event.c
+0
-2
net/bluetooth/l2cap_core.c
net/bluetooth/l2cap_core.c
+1
-0
net/bluetooth/sco.c
net/bluetooth/sco.c
+9
-0
net/mac80211/cfg.c
net/mac80211/cfg.c
+2
-0
net/mac80211/debugfs_netdev.c
net/mac80211/debugfs_netdev.c
+2
-2
未找到文件。
drivers/net/wireless/ath/ath9k/hif_usb.c
浏览文件 @
429576b9
...
...
@@ -1178,7 +1178,7 @@ static int ath9k_hif_usb_probe(struct usb_interface *interface,
}
ret
=
ath9k_htc_hw_init
(
hif_dev
->
htc_handle
,
&
hif_dev
->
udev
->
dev
,
hif_dev
->
device_id
,
&
interface
->
dev
,
hif_dev
->
device_id
,
hif_dev
->
udev
->
product
,
id
->
driver_info
);
if
(
ret
)
{
ret
=
-
EINVAL
;
...
...
@@ -1296,7 +1296,7 @@ static int ath9k_hif_usb_resume(struct usb_interface *interface)
#endif
static
struct
usb_driver
ath9k_hif_usb_driver
=
{
.
name
=
"ath9k_hif_usb"
,
.
name
=
KBUILD_MODNAME
,
.
probe
=
ath9k_hif_usb_probe
,
.
disconnect
=
ath9k_hif_usb_disconnect
,
#ifdef CONFIG_PM
...
...
drivers/net/wireless/ath/ath9k/hw.c
浏览文件 @
429576b9
...
...
@@ -1320,15 +1320,6 @@ int ath9k_hw_reset(struct ath_hw *ah, struct ath9k_channel *chan,
ah
->
txchainmask
=
common
->
tx_chainmask
;
ah
->
rxchainmask
=
common
->
rx_chainmask
;
if
((
common
->
bus_ops
->
ath_bus_type
!=
ATH_USB
)
&&
!
ah
->
chip_fullsleep
)
{
ath9k_hw_abortpcurecv
(
ah
);
if
(
!
ath9k_hw_stopdmarecv
(
ah
))
{
ath_dbg
(
common
,
ATH_DBG_XMIT
,
"Failed to stop receive dma
\n
"
);
bChannelChange
=
false
;
}
}
if
(
!
ath9k_hw_setpower
(
ah
,
ATH9K_PM_AWAKE
))
return
-
EIO
;
...
...
drivers/net/wireless/ath/ath9k/mac.c
浏览文件 @
429576b9
...
...
@@ -710,27 +710,46 @@ void ath9k_hw_abortpcurecv(struct ath_hw *ah)
}
EXPORT_SYMBOL
(
ath9k_hw_abortpcurecv
);
bool
ath9k_hw_stopdmarecv
(
struct
ath_hw
*
ah
)
bool
ath9k_hw_stopdmarecv
(
struct
ath_hw
*
ah
,
bool
*
reset
)
{
#define AH_RX_STOP_DMA_TIMEOUT 10000
/* usec */
struct
ath_common
*
common
=
ath9k_hw_common
(
ah
);
u32
mac_status
,
last_mac_status
=
0
;
int
i
;
/* Enable access to the DMA observation bus */
REG_WRITE
(
ah
,
AR_MACMISC
,
((
AR_MACMISC_DMA_OBS_LINE_8
<<
AR_MACMISC_DMA_OBS_S
)
|
(
AR_MACMISC_MISC_OBS_BUS_1
<<
AR_MACMISC_MISC_OBS_BUS_MSB_S
)));
REG_WRITE
(
ah
,
AR_CR
,
AR_CR_RXD
);
/* Wait for rx enable bit to go low */
for
(
i
=
AH_RX_STOP_DMA_TIMEOUT
/
AH_TIME_QUANTUM
;
i
!=
0
;
i
--
)
{
if
((
REG_READ
(
ah
,
AR_CR
)
&
AR_CR_RXE
)
==
0
)
break
;
if
(
!
AR_SREV_9300_20_OR_LATER
(
ah
))
{
mac_status
=
REG_READ
(
ah
,
AR_DMADBG_7
)
&
0x7f0
;
if
(
mac_status
==
0x1c0
&&
mac_status
==
last_mac_status
)
{
*
reset
=
true
;
break
;
}
last_mac_status
=
mac_status
;
}
udelay
(
AH_TIME_QUANTUM
);
}
if
(
i
==
0
)
{
ath_err
(
common
,
"DMA failed to stop in %d ms AR_CR=0x%08x AR_DIAG_SW=0x%08x
\n
"
,
"DMA failed to stop in %d ms AR_CR=0x%08x AR_DIAG_SW=0x%08x
DMADBG_7=0x%08x
\n
"
,
AH_RX_STOP_DMA_TIMEOUT
/
1000
,
REG_READ
(
ah
,
AR_CR
),
REG_READ
(
ah
,
AR_DIAG_SW
));
REG_READ
(
ah
,
AR_DIAG_SW
),
REG_READ
(
ah
,
AR_DMADBG_7
));
return
false
;
}
else
{
return
true
;
...
...
drivers/net/wireless/ath/ath9k/mac.h
浏览文件 @
429576b9
...
...
@@ -694,7 +694,7 @@ bool ath9k_hw_setrxabort(struct ath_hw *ah, bool set);
void
ath9k_hw_putrxbuf
(
struct
ath_hw
*
ah
,
u32
rxdp
);
void
ath9k_hw_startpcureceive
(
struct
ath_hw
*
ah
,
bool
is_scanning
);
void
ath9k_hw_abortpcurecv
(
struct
ath_hw
*
ah
);
bool
ath9k_hw_stopdmarecv
(
struct
ath_hw
*
ah
);
bool
ath9k_hw_stopdmarecv
(
struct
ath_hw
*
ah
,
bool
*
reset
);
int
ath9k_hw_beaconq_setup
(
struct
ath_hw
*
ah
);
/* Interrupt Handling */
...
...
drivers/net/wireless/ath/ath9k/main.c
浏览文件 @
429576b9
...
...
@@ -1371,7 +1371,6 @@ static void ath9k_calculate_summary_state(struct ieee80211_hw *hw,
ath9k_calculate_iter_data
(
hw
,
vif
,
&
iter_data
);
ath9k_ps_wakeup
(
sc
);
/* Set BSSID mask. */
memcpy
(
common
->
bssidmask
,
iter_data
.
mask
,
ETH_ALEN
);
ath_hw_setbssidmask
(
common
);
...
...
@@ -1406,7 +1405,6 @@ static void ath9k_calculate_summary_state(struct ieee80211_hw *hw,
}
ath9k_hw_set_interrupts
(
ah
,
ah
->
imask
);
ath9k_ps_restore
(
sc
);
/* Set up ANI */
if
((
iter_data
.
naps
+
iter_data
.
nadhocs
)
>
0
)
{
...
...
@@ -1451,6 +1449,7 @@ static int ath9k_add_interface(struct ieee80211_hw *hw,
struct
ath_common
*
common
=
ath9k_hw_common
(
ah
);
int
ret
=
0
;
ath9k_ps_wakeup
(
sc
);
mutex_lock
(
&
sc
->
mutex
);
switch
(
vif
->
type
)
{
...
...
@@ -1494,6 +1493,7 @@ static int ath9k_add_interface(struct ieee80211_hw *hw,
ath9k_do_vif_add_setup
(
hw
,
vif
);
out:
mutex_unlock
(
&
sc
->
mutex
);
ath9k_ps_restore
(
sc
);
return
ret
;
}
...
...
@@ -1508,6 +1508,7 @@ static int ath9k_change_interface(struct ieee80211_hw *hw,
ath_dbg
(
common
,
ATH_DBG_CONFIG
,
"Change Interface
\n
"
);
mutex_lock
(
&
sc
->
mutex
);
ath9k_ps_wakeup
(
sc
);
/* See if new interface type is valid. */
if
((
new_type
==
NL80211_IFTYPE_ADHOC
)
&&
...
...
@@ -1537,6 +1538,7 @@ static int ath9k_change_interface(struct ieee80211_hw *hw,
ath9k_do_vif_add_setup
(
hw
,
vif
);
out:
ath9k_ps_restore
(
sc
);
mutex_unlock
(
&
sc
->
mutex
);
return
ret
;
}
...
...
@@ -1549,6 +1551,7 @@ static void ath9k_remove_interface(struct ieee80211_hw *hw,
ath_dbg
(
common
,
ATH_DBG_CONFIG
,
"Detach Interface
\n
"
);
ath9k_ps_wakeup
(
sc
);
mutex_lock
(
&
sc
->
mutex
);
sc
->
nvifs
--
;
...
...
@@ -1560,6 +1563,7 @@ static void ath9k_remove_interface(struct ieee80211_hw *hw,
ath9k_calculate_summary_state
(
hw
,
NULL
);
mutex_unlock
(
&
sc
->
mutex
);
ath9k_ps_restore
(
sc
);
}
static
void
ath9k_enable_ps
(
struct
ath_softc
*
sc
)
...
...
@@ -1840,6 +1844,7 @@ static int ath9k_conf_tx(struct ieee80211_hw *hw, u16 queue,
txq
=
sc
->
tx
.
txq_map
[
queue
];
ath9k_ps_wakeup
(
sc
);
mutex_lock
(
&
sc
->
mutex
);
memset
(
&
qi
,
0
,
sizeof
(
struct
ath9k_tx_queue_info
));
...
...
@@ -1863,6 +1868,7 @@ static int ath9k_conf_tx(struct ieee80211_hw *hw, u16 queue,
ath_beaconq_config
(
sc
);
mutex_unlock
(
&
sc
->
mutex
);
ath9k_ps_restore
(
sc
);
return
ret
;
}
...
...
@@ -2021,6 +2027,7 @@ static void ath9k_bss_info_changed(struct ieee80211_hw *hw,
int
slottime
;
int
error
;
ath9k_ps_wakeup
(
sc
);
mutex_lock
(
&
sc
->
mutex
);
if
(
changed
&
BSS_CHANGED_BSSID
)
{
...
...
@@ -2106,6 +2113,7 @@ static void ath9k_bss_info_changed(struct ieee80211_hw *hw,
}
mutex_unlock
(
&
sc
->
mutex
);
ath9k_ps_restore
(
sc
);
}
static
u64
ath9k_get_tsf
(
struct
ieee80211_hw
*
hw
)
...
...
drivers/net/wireless/ath/ath9k/recv.c
浏览文件 @
429576b9
...
...
@@ -483,12 +483,12 @@ int ath_startrecv(struct ath_softc *sc)
bool
ath_stoprecv
(
struct
ath_softc
*
sc
)
{
struct
ath_hw
*
ah
=
sc
->
sc_ah
;
bool
stopped
;
bool
stopped
,
reset
=
false
;
spin_lock_bh
(
&
sc
->
rx
.
rxbuflock
);
ath9k_hw_abortpcurecv
(
ah
);
ath9k_hw_setrxfilter
(
ah
,
0
);
stopped
=
ath9k_hw_stopdmarecv
(
ah
);
stopped
=
ath9k_hw_stopdmarecv
(
ah
,
&
reset
);
if
(
sc
->
sc_ah
->
caps
.
hw_caps
&
ATH9K_HW_CAP_EDMA
)
ath_edma_stop_recv
(
sc
);
...
...
@@ -503,7 +503,7 @@ bool ath_stoprecv(struct ath_softc *sc)
"confusing the DMA engine when we start RX up
\n
"
);
ATH_DBG_WARN_ON_ONCE
(
!
stopped
);
}
return
stopped
;
return
stopped
&&
!
reset
;
}
void
ath_flushrecv
(
struct
ath_softc
*
sc
)
...
...
drivers/net/wireless/iwlegacy/Kconfig
浏览文件 @
429576b9
config IWLWIFI_LEGACY
tristate "Intel Wireless Wifi legacy devices"
depends on PCI && MAC80211
tristate
select FW_LOADER
select NEW_LEDS
select LEDS_CLASS
...
...
@@ -65,7 +64,8 @@ endmenu
config IWL4965
tristate "Intel Wireless WiFi 4965AGN (iwl4965)"
depends on IWLWIFI_LEGACY
depends on PCI && MAC80211
select IWLWIFI_LEGACY
---help---
This option enables support for
...
...
@@ -92,7 +92,8 @@ config IWL4965
config IWL3945
tristate "Intel PRO/Wireless 3945ABG/BG Network Connection (iwl3945)"
depends on IWLWIFI_LEGACY
depends on PCI && MAC80211
select IWLWIFI_LEGACY
---help---
Select to build the driver supporting the:
...
...
drivers/net/wireless/iwlegacy/iwl-3945-hw.h
浏览文件 @
429576b9
...
...
@@ -74,8 +74,6 @@
/* RSSI to dBm */
#define IWL39_RSSI_OFFSET 95
#define IWL_DEFAULT_TX_POWER 0x0F
/*
* EEPROM related constants, enums, and structures.
*/
...
...
drivers/net/wireless/iwlegacy/iwl-4965-hw.h
浏览文件 @
429576b9
...
...
@@ -804,9 +804,6 @@ struct iwl4965_scd_bc_tbl {
#define IWL4965_DEFAULT_TX_RETRY 15
/* Limit range of txpower output target to be between these values */
#define IWL4965_TX_POWER_TARGET_POWER_MIN (0)
/* 0 dBm: 1 milliwatt */
/* EEPROM */
#define IWL4965_FIRST_AMPDU_QUEUE 10
...
...
drivers/net/wireless/iwlegacy/iwl-4965-tx.c
浏览文件 @
429576b9
...
...
@@ -1127,12 +1127,16 @@ int iwl4965_tx_queue_reclaim(struct iwl_priv *priv, int txq_id, int index)
q
->
read_ptr
=
iwl_legacy_queue_inc_wrap
(
q
->
read_ptr
,
q
->
n_bd
))
{
tx_info
=
&
txq
->
txb
[
txq
->
q
.
read_ptr
];
iwl4965_tx_status
(
priv
,
tx_info
,
txq_id
>=
IWL4965_FIRST_AMPDU_QUEUE
);
if
(
WARN_ON_ONCE
(
tx_info
->
skb
==
NULL
))
continue
;
hdr
=
(
struct
ieee80211_hdr
*
)
tx_info
->
skb
->
data
;
if
(
hdr
&&
ieee80211_is_data_qos
(
hdr
->
frame_control
))
if
(
ieee80211_is_data_qos
(
hdr
->
frame_control
))
nfreed
++
;
iwl4965_tx_status
(
priv
,
tx_info
,
txq_id
>=
IWL4965_FIRST_AMPDU_QUEUE
);
tx_info
->
skb
=
NULL
;
priv
->
cfg
->
ops
->
lib
->
txq_free_tfd
(
priv
,
txq
);
...
...
drivers/net/wireless/iwlegacy/iwl-core.c
浏览文件 @
429576b9
...
...
@@ -160,6 +160,7 @@ int iwl_legacy_init_geos(struct iwl_priv *priv)
struct
ieee80211_channel
*
geo_ch
;
struct
ieee80211_rate
*
rates
;
int
i
=
0
;
s8
max_tx_power
=
0
;
if
(
priv
->
bands
[
IEEE80211_BAND_2GHZ
].
n_bitrates
||
priv
->
bands
[
IEEE80211_BAND_5GHZ
].
n_bitrates
)
{
...
...
@@ -235,8 +236,8 @@ int iwl_legacy_init_geos(struct iwl_priv *priv)
geo_ch
->
flags
|=
ch
->
ht40_extension_channel
;
if
(
ch
->
max_power_avg
>
priv
->
tx_power_device_lmt
)
priv
->
tx_power_device_lmt
=
ch
->
max_power_avg
;
if
(
ch
->
max_power_avg
>
max_tx_power
)
max_tx_power
=
ch
->
max_power_avg
;
}
else
{
geo_ch
->
flags
|=
IEEE80211_CHAN_DISABLED
;
}
...
...
@@ -249,6 +250,10 @@ int iwl_legacy_init_geos(struct iwl_priv *priv)
geo_ch
->
flags
);
}
priv
->
tx_power_device_lmt
=
max_tx_power
;
priv
->
tx_power_user_lmt
=
max_tx_power
;
priv
->
tx_power_next
=
max_tx_power
;
if
((
priv
->
bands
[
IEEE80211_BAND_5GHZ
].
n_channels
==
0
)
&&
priv
->
cfg
->
sku
&
IWL_SKU_A
)
{
IWL_INFO
(
priv
,
"Incorrectly detected BG card as ABG. "
...
...
@@ -1124,11 +1129,11 @@ int iwl_legacy_set_tx_power(struct iwl_priv *priv, s8 tx_power, bool force)
if
(
!
priv
->
cfg
->
ops
->
lib
->
send_tx_power
)
return
-
EOPNOTSUPP
;
if
(
tx_power
<
IWL4965_TX_POWER_TARGET_POWER_MIN
)
{
/* 0 dBm mean 1 milliwatt */
if
(
tx_power
<
0
)
{
IWL_WARN
(
priv
,
"Requested user TXPOWER %d below lower limit %d.
\n
"
,
tx_power
,
IWL4965_TX_POWER_TARGET_POWER_MIN
);
"Requested user TXPOWER %d below 1 mW.
\n
"
,
tx_power
);
return
-
EINVAL
;
}
...
...
drivers/net/wireless/iwlegacy/iwl-eeprom.c
浏览文件 @
429576b9
...
...
@@ -471,13 +471,6 @@ int iwl_legacy_init_channel_map(struct iwl_priv *priv)
flags
&
EEPROM_CHANNEL_RADAR
))
?
""
:
"not "
);
/* Set the tx_power_user_lmt to the highest power
* supported by any channel */
if
(
eeprom_ch_info
[
ch
].
max_power_avg
>
priv
->
tx_power_user_lmt
)
priv
->
tx_power_user_lmt
=
eeprom_ch_info
[
ch
].
max_power_avg
;
ch_info
++
;
}
}
...
...
drivers/net/wireless/iwlegacy/iwl3945-base.c
浏览文件 @
429576b9
...
...
@@ -3825,10 +3825,6 @@ static int iwl3945_init_drv(struct iwl_priv *priv)
priv
->
force_reset
[
IWL_FW_RESET
].
reset_duration
=
IWL_DELAY_NEXT_FORCE_FW_RELOAD
;
priv
->
tx_power_user_lmt
=
IWL_DEFAULT_TX_POWER
;
priv
->
tx_power_next
=
IWL_DEFAULT_TX_POWER
;
if
(
eeprom
->
version
<
EEPROM_3945_EEPROM_VERSION
)
{
IWL_WARN
(
priv
,
"Unsupported EEPROM version: 0x%04X
\n
"
,
eeprom
->
version
);
...
...
drivers/net/wireless/iwlegacy/iwl4965-base.c
浏览文件 @
429576b9
...
...
@@ -3140,12 +3140,6 @@ static int iwl4965_init_drv(struct iwl_priv *priv)
iwl_legacy_init_scan_params
(
priv
);
/* Set the tx_power_user_lmt to the lowest power level
* this value will get overwritten by channel max power avg
* from eeprom */
priv
->
tx_power_user_lmt
=
IWL4965_TX_POWER_TARGET_POWER_MIN
;
priv
->
tx_power_next
=
IWL4965_TX_POWER_TARGET_POWER_MIN
;
ret
=
iwl_legacy_init_channel_map
(
priv
);
if
(
ret
)
{
IWL_ERR
(
priv
,
"initializing regulatory failed: %d
\n
"
,
ret
);
...
...
drivers/net/wireless/iwlwifi/iwl-agn-rxon.c
浏览文件 @
429576b9
...
...
@@ -333,7 +333,6 @@ int iwlagn_mac_config(struct ieee80211_hw *hw, u32 changed)
struct
ieee80211_channel
*
channel
=
conf
->
channel
;
const
struct
iwl_channel_info
*
ch_info
;
int
ret
=
0
;
bool
ht_changed
[
NUM_IWL_RXON_CTX
]
=
{};
IWL_DEBUG_MAC80211
(
priv
,
"changed %#x"
,
changed
);
...
...
@@ -381,10 +380,8 @@ int iwlagn_mac_config(struct ieee80211_hw *hw, u32 changed)
for_each_context
(
priv
,
ctx
)
{
/* Configure HT40 channels */
if
(
ctx
->
ht
.
enabled
!=
conf_is_ht
(
conf
))
{
if
(
ctx
->
ht
.
enabled
!=
conf_is_ht
(
conf
))
ctx
->
ht
.
enabled
=
conf_is_ht
(
conf
);
ht_changed
[
ctx
->
ctxid
]
=
true
;
}
if
(
ctx
->
ht
.
enabled
)
{
if
(
conf_is_ht40_minus
(
conf
))
{
...
...
@@ -453,8 +450,6 @@ int iwlagn_mac_config(struct ieee80211_hw *hw, u32 changed)
if
(
!
memcmp
(
&
ctx
->
staging
,
&
ctx
->
active
,
sizeof
(
ctx
->
staging
)))
continue
;
iwlagn_commit_rxon
(
priv
,
ctx
);
if
(
ht_changed
[
ctx
->
ctxid
])
iwlagn_update_qos
(
priv
,
ctx
);
}
out:
mutex_unlock
(
&
priv
->
mutex
);
...
...
drivers/net/wireless/iwlwifi/iwl-agn-tx.c
浏览文件 @
429576b9
...
...
@@ -1236,12 +1236,16 @@ int iwlagn_tx_queue_reclaim(struct iwl_priv *priv, int txq_id, int index)
q
->
read_ptr
=
iwl_queue_inc_wrap
(
q
->
read_ptr
,
q
->
n_bd
))
{
tx_info
=
&
txq
->
txb
[
txq
->
q
.
read_ptr
];
iwlagn_tx_status
(
priv
,
tx_info
,
txq_id
>=
IWLAGN_FIRST_AMPDU_QUEUE
);
if
(
WARN_ON_ONCE
(
tx_info
->
skb
==
NULL
))
continue
;
hdr
=
(
struct
ieee80211_hdr
*
)
tx_info
->
skb
->
data
;
if
(
hdr
&&
ieee80211_is_data_qos
(
hdr
->
frame_control
))
if
(
ieee80211_is_data_qos
(
hdr
->
frame_control
))
nfreed
++
;
iwlagn_tx_status
(
priv
,
tx_info
,
txq_id
>=
IWLAGN_FIRST_AMPDU_QUEUE
);
tx_info
->
skb
=
NULL
;
if
(
priv
->
cfg
->
ops
->
lib
->
txq_inval_byte_cnt_tbl
)
...
...
drivers/net/wireless/p54/txrx.c
浏览文件 @
429576b9
...
...
@@ -703,7 +703,7 @@ void p54_tx_80211(struct ieee80211_hw *dev, struct sk_buff *skb)
struct
p54_tx_info
*
p54info
;
struct
p54_hdr
*
hdr
;
struct
p54_tx_data
*
txhdr
;
unsigned
int
padding
,
len
,
extra_len
;
unsigned
int
padding
,
len
,
extra_len
=
0
;
int
i
,
j
,
ridx
;
u16
hdr_flags
=
0
,
aid
=
0
;
u8
rate
,
queue
=
0
,
crypt_offset
=
0
;
...
...
net/bluetooth/hci_core.c
浏览文件 @
429576b9
...
...
@@ -586,10 +586,8 @@ static int hci_dev_do_close(struct hci_dev *hdev)
hci_req_cancel
(
hdev
,
ENODEV
);
hci_req_lock
(
hdev
);
/* Stop timer, it might be running */
del_timer_sync
(
&
hdev
->
cmd_timer
);
if
(
!
test_and_clear_bit
(
HCI_UP
,
&
hdev
->
flags
))
{
del_timer_sync
(
&
hdev
->
cmd_timer
);
hci_req_unlock
(
hdev
);
return
0
;
}
...
...
@@ -628,6 +626,7 @@ static int hci_dev_do_close(struct hci_dev *hdev)
/* Drop last sent command */
if
(
hdev
->
sent_cmd
)
{
del_timer_sync
(
&
hdev
->
cmd_timer
);
kfree_skb
(
hdev
->
sent_cmd
);
hdev
->
sent_cmd
=
NULL
;
}
...
...
net/bluetooth/hci_event.c
浏览文件 @
429576b9
...
...
@@ -2419,8 +2419,6 @@ static inline void hci_io_capa_reply_evt(struct hci_dev *hdev, struct sk_buff *s
if
(
!
conn
)
goto
unlock
;
hci_conn_hold
(
conn
);
conn
->
remote_cap
=
ev
->
capability
;
conn
->
remote_oob
=
ev
->
oob_data
;
conn
->
remote_auth
=
ev
->
authentication
;
...
...
net/bluetooth/l2cap_core.c
浏览文件 @
429576b9
...
...
@@ -1079,6 +1079,7 @@ static void l2cap_retransmit_one_frame(struct l2cap_chan *chan, u8 tx_seq)
tx_skb
=
skb_clone
(
skb
,
GFP_ATOMIC
);
bt_cb
(
skb
)
->
retries
++
;
control
=
get_unaligned_le16
(
tx_skb
->
data
+
L2CAP_HDR_SIZE
);
control
&=
L2CAP_CTRL_SAR
;
if
(
chan
->
conn_state
&
L2CAP_CONN_SEND_FBIT
)
{
control
|=
L2CAP_CTRL_FINAL
;
...
...
net/bluetooth/sco.c
浏览文件 @
429576b9
...
...
@@ -369,6 +369,15 @@ static void __sco_sock_close(struct sock *sk)
case
BT_CONNECTED
:
case
BT_CONFIG
:
if
(
sco_pi
(
sk
)
->
conn
)
{
sk
->
sk_state
=
BT_DISCONN
;
sco_sock_set_timer
(
sk
,
SCO_DISCONN_TIMEOUT
);
hci_conn_put
(
sco_pi
(
sk
)
->
conn
->
hcon
);
sco_pi
(
sk
)
->
conn
=
NULL
;
}
else
sco_chan_del
(
sk
,
ECONNRESET
);
break
;
case
BT_CONNECT
:
case
BT_DISCONN
:
sco_chan_del
(
sk
,
ECONNRESET
);
...
...
net/mac80211/cfg.c
浏览文件 @
429576b9
...
...
@@ -1526,6 +1526,8 @@ int __ieee80211_request_smps(struct ieee80211_sub_if_data *sdata,
enum
ieee80211_smps_mode
old_req
;
int
err
;
lockdep_assert_held
(
&
sdata
->
u
.
mgd
.
mtx
);
old_req
=
sdata
->
u
.
mgd
.
req_smps
;
sdata
->
u
.
mgd
.
req_smps
=
smps_mode
;
...
...
net/mac80211/debugfs_netdev.c
浏览文件 @
429576b9
...
...
@@ -177,9 +177,9 @@ static int ieee80211_set_smps(struct ieee80211_sub_if_data *sdata,
if
(
sdata
->
vif
.
type
!=
NL80211_IFTYPE_STATION
)
return
-
EOPNOTSUPP
;
mutex_lock
(
&
local
->
iflist_
mtx
);
mutex_lock
(
&
sdata
->
u
.
mgd
.
mtx
);
err
=
__ieee80211_request_smps
(
sdata
,
smps_mode
);
mutex_unlock
(
&
local
->
iflist_
mtx
);
mutex_unlock
(
&
sdata
->
u
.
mgd
.
mtx
);
return
err
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录