Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
0597a7a1
K
Kernel
项目概览
openeuler
/
Kernel
1 年多 前同步成功
通知
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看板
提交
0597a7a1
编写于
7月 22, 2013
作者:
J
John W. Linville
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'for-john' of
git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-fixes
上级
22f64bd3
a590ad41
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
56 addition
and
9 deletion
+56
-9
drivers/net/wireless/iwlwifi/dvm/main.c
drivers/net/wireless/iwlwifi/dvm/main.c
+1
-1
drivers/net/wireless/iwlwifi/mvm/debugfs.c
drivers/net/wireless/iwlwifi/mvm/debugfs.c
+5
-1
drivers/net/wireless/iwlwifi/mvm/mac80211.c
drivers/net/wireless/iwlwifi/mvm/mac80211.c
+22
-1
drivers/net/wireless/iwlwifi/mvm/mvm.h
drivers/net/wireless/iwlwifi/mvm/mvm.h
+1
-0
drivers/net/wireless/iwlwifi/mvm/scan.c
drivers/net/wireless/iwlwifi/mvm/scan.c
+6
-4
drivers/net/wireless/iwlwifi/mvm/sta.c
drivers/net/wireless/iwlwifi/mvm/sta.c
+21
-2
未找到文件。
drivers/net/wireless/iwlwifi/dvm/main.c
浏览文件 @
0597a7a1
...
...
@@ -758,7 +758,7 @@ int iwl_alive_start(struct iwl_priv *priv)
BT_COEX_PRIO_TBL_EVT_INIT_CALIB2
);
if
(
ret
)
return
ret
;
}
else
{
}
else
if
(
priv
->
lib
->
bt_params
)
{
/*
* default is 2-wire BT coexexistence support
*/
...
...
drivers/net/wireless/iwlwifi/mvm/debugfs.c
浏览文件 @
0597a7a1
...
...
@@ -988,7 +988,11 @@ void iwl_mvm_vif_dbgfs_register(struct iwl_mvm *mvm, struct ieee80211_vif *vif)
struct
iwl_mvm_vif
*
mvmvif
=
iwl_mvm_vif_from_mac80211
(
vif
);
char
buf
[
100
];
if
(
!
dbgfs_dir
)
/*
* Check if debugfs directory already exist before creating it.
* This may happen when, for example, resetting hw or suspend-resume
*/
if
(
!
dbgfs_dir
||
mvmvif
->
dbgfs_dir
)
return
;
mvmvif
->
dbgfs_dir
=
debugfs_create_dir
(
"iwlmvm"
,
dbgfs_dir
);
...
...
drivers/net/wireless/iwlwifi/mvm/mac80211.c
浏览文件 @
0597a7a1
...
...
@@ -257,7 +257,11 @@ int iwl_mvm_mac_setup_register(struct iwl_mvm *mvm)
if
(
ret
)
return
ret
;
return
ieee80211_register_hw
(
mvm
->
hw
);
ret
=
ieee80211_register_hw
(
mvm
->
hw
);
if
(
ret
)
iwl_mvm_leds_exit
(
mvm
);
return
ret
;
}
static
void
iwl_mvm_mac_tx
(
struct
ieee80211_hw
*
hw
,
...
...
@@ -385,6 +389,7 @@ static void iwl_mvm_restart_cleanup(struct iwl_mvm *mvm)
ieee80211_wake_queues
(
mvm
->
hw
);
mvm
->
vif_count
=
0
;
mvm
->
rx_ba_sessions
=
0
;
}
static
int
iwl_mvm_mac_start
(
struct
ieee80211_hw
*
hw
)
...
...
@@ -1006,6 +1011,21 @@ static int iwl_mvm_mac_sta_state(struct ieee80211_hw *hw,
mutex_lock
(
&
mvm
->
mutex
);
if
(
old_state
==
IEEE80211_STA_NOTEXIST
&&
new_state
==
IEEE80211_STA_NONE
)
{
/*
* Firmware bug - it'll crash if the beacon interval is less
* than 16. We can't avoid connecting at all, so refuse the
* station state change, this will cause mac80211 to abandon
* attempts to connect to this AP, and eventually wpa_s will
* blacklist the AP...
*/
if
(
vif
->
type
==
NL80211_IFTYPE_STATION
&&
vif
->
bss_conf
.
beacon_int
<
16
)
{
IWL_ERR
(
mvm
,
"AP %pM beacon interval is %d, refusing due to firmware bug!
\n
"
,
sta
->
addr
,
vif
->
bss_conf
.
beacon_int
);
ret
=
-
EINVAL
;
goto
out_unlock
;
}
ret
=
iwl_mvm_add_sta
(
mvm
,
vif
,
sta
);
}
else
if
(
old_state
==
IEEE80211_STA_NONE
&&
new_state
==
IEEE80211_STA_AUTH
)
{
...
...
@@ -1038,6 +1058,7 @@ static int iwl_mvm_mac_sta_state(struct ieee80211_hw *hw,
}
else
{
ret
=
-
EIO
;
}
out_unlock:
mutex_unlock
(
&
mvm
->
mutex
);
return
ret
;
...
...
drivers/net/wireless/iwlwifi/mvm/mvm.h
浏览文件 @
0597a7a1
...
...
@@ -419,6 +419,7 @@ struct iwl_mvm {
struct
work_struct
sta_drained_wk
;
unsigned
long
sta_drained
[
BITS_TO_LONGS
(
IWL_MVM_STATION_COUNT
)];
atomic_t
pending_frames
[
IWL_MVM_STATION_COUNT
];
u8
rx_ba_sessions
;
/* configured by mac80211 */
u32
rts_threshold
;
...
...
drivers/net/wireless/iwlwifi/mvm/scan.c
浏览文件 @
0597a7a1
...
...
@@ -137,8 +137,8 @@ static void iwl_mvm_scan_fill_ssids(struct iwl_scan_cmd *cmd,
{
int
fw_idx
,
req_idx
;
f
w_idx
=
0
;
for
(
req_idx
=
req
->
n_ssids
-
1
;
req_idx
>
0
;
req_idx
--
)
{
f
or
(
req_idx
=
req
->
n_ssids
-
1
,
fw_idx
=
0
;
req_idx
>
0
;
req_idx
--
,
fw_idx
++
)
{
cmd
->
direct_scan
[
fw_idx
].
id
=
WLAN_EID_SSID
;
cmd
->
direct_scan
[
fw_idx
].
len
=
req
->
ssids
[
req_idx
].
ssid_len
;
memcpy
(
cmd
->
direct_scan
[
fw_idx
].
ssid
,
...
...
@@ -153,7 +153,9 @@ static void iwl_mvm_scan_fill_ssids(struct iwl_scan_cmd *cmd,
* just to notify that this scan is active and not passive.
* In order to notify the FW of the number of SSIDs we wish to scan (including
* the zero-length one), we need to set the corresponding bits in chan->type,
* one for each SSID, and set the active bit (first).
* one for each SSID, and set the active bit (first). The first SSID is already
* included in the probe template, so we need to set only req->n_ssids - 1 bits
* in addition to the first bit.
*/
static
u16
iwl_mvm_get_active_dwell
(
enum
ieee80211_band
band
,
int
n_ssids
)
{
...
...
@@ -179,7 +181,7 @@ static void iwl_mvm_scan_fill_channels(struct iwl_scan_cmd *cmd,
__le32
chan_type_value
;
if
(
req
->
n_ssids
>
0
)
chan_type_value
=
cpu_to_le32
(
BIT
(
req
->
n_ssids
+
1
)
-
1
);
chan_type_value
=
cpu_to_le32
(
BIT
(
req
->
n_ssids
)
-
1
);
else
chan_type_value
=
SCAN_CHANNEL_TYPE_PASSIVE
;
...
...
drivers/net/wireless/iwlwifi/mvm/sta.c
浏览文件 @
0597a7a1
...
...
@@ -608,6 +608,8 @@ int iwl_mvm_rm_bcast_sta(struct iwl_mvm *mvm, struct iwl_mvm_int_sta *bsta)
return
ret
;
}
#define IWL_MAX_RX_BA_SESSIONS 16
int
iwl_mvm_sta_rx_agg
(
struct
iwl_mvm
*
mvm
,
struct
ieee80211_sta
*
sta
,
int
tid
,
u16
ssn
,
bool
start
)
{
...
...
@@ -618,11 +620,20 @@ int iwl_mvm_sta_rx_agg(struct iwl_mvm *mvm, struct ieee80211_sta *sta,
lockdep_assert_held
(
&
mvm
->
mutex
);
if
(
start
&&
mvm
->
rx_ba_sessions
>=
IWL_MAX_RX_BA_SESSIONS
)
{
IWL_WARN
(
mvm
,
"Not enough RX BA SESSIONS
\n
"
);
return
-
ENOSPC
;
}
cmd
.
mac_id_n_color
=
cpu_to_le32
(
mvm_sta
->
mac_id_n_color
);
cmd
.
sta_id
=
mvm_sta
->
sta_id
;
cmd
.
add_modify
=
STA_MODE_MODIFY
;
cmd
.
add_immediate_ba_tid
=
(
u8
)
tid
;
cmd
.
add_immediate_ba_ssn
=
cpu_to_le16
(
ssn
);
if
(
start
)
{
cmd
.
add_immediate_ba_tid
=
(
u8
)
tid
;
cmd
.
add_immediate_ba_ssn
=
cpu_to_le16
(
ssn
);
}
else
{
cmd
.
remove_immediate_ba_tid
=
(
u8
)
tid
;
}
cmd
.
modify_mask
=
start
?
STA_MODIFY_ADD_BA_TID
:
STA_MODIFY_REMOVE_BA_TID
;
...
...
@@ -648,6 +659,14 @@ int iwl_mvm_sta_rx_agg(struct iwl_mvm *mvm, struct ieee80211_sta *sta,
break
;
}
if
(
!
ret
)
{
if
(
start
)
mvm
->
rx_ba_sessions
++
;
else
if
(
mvm
->
rx_ba_sessions
>
0
)
/* check that restart flow didn't zero the counter */
mvm
->
rx_ba_sessions
--
;
}
return
ret
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录