Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
235c0dc5
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看板
提交
235c0dc5
编写于
2月 04, 2014
作者:
J
John W. Linville
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'for-john' of
git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-fixes
上级
53d8ab29
c5128654
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
59 addition
and
41 deletion
+59
-41
drivers/net/wireless/iwlwifi/iwl-nvm-parse.c
drivers/net/wireless/iwlwifi/iwl-nvm-parse.c
+5
-0
drivers/net/wireless/iwlwifi/mvm/fw-api-scan.h
drivers/net/wireless/iwlwifi/mvm/fw-api-scan.h
+3
-1
drivers/net/wireless/iwlwifi/mvm/mac80211.c
drivers/net/wireless/iwlwifi/mvm/mac80211.c
+1
-1
drivers/net/wireless/iwlwifi/mvm/scan.c
drivers/net/wireless/iwlwifi/mvm/scan.c
+4
-1
drivers/net/wireless/iwlwifi/mvm/sta.c
drivers/net/wireless/iwlwifi/mvm/sta.c
+1
-1
drivers/net/wireless/iwlwifi/mvm/tx.c
drivers/net/wireless/iwlwifi/mvm/tx.c
+37
-36
drivers/net/wireless/iwlwifi/mvm/utils.c
drivers/net/wireless/iwlwifi/mvm/utils.c
+2
-0
drivers/net/wireless/iwlwifi/pcie/drv.c
drivers/net/wireless/iwlwifi/pcie/drv.c
+6
-1
未找到文件。
drivers/net/wireless/iwlwifi/iwl-nvm-parse.c
浏览文件 @
235c0dc5
...
...
@@ -182,6 +182,11 @@ static int iwl_init_channel_map(struct device *dev, const struct iwl_cfg *cfg,
for
(
ch_idx
=
0
;
ch_idx
<
IWL_NUM_CHANNELS
;
ch_idx
++
)
{
ch_flags
=
__le16_to_cpup
(
nvm_ch_flags
+
ch_idx
);
if
(
ch_idx
>=
NUM_2GHZ_CHANNELS
&&
!
data
->
sku_cap_band_52GHz_enable
)
ch_flags
&=
~
NVM_CHANNEL_VALID
;
if
(
!
(
ch_flags
&
NVM_CHANNEL_VALID
))
{
IWL_DEBUG_EEPROM
(
dev
,
"Ch. %d Flags %x [%sGHz] - No traffic
\n
"
,
...
...
drivers/net/wireless/iwlwifi/mvm/fw-api-scan.h
浏览文件 @
235c0dc5
...
...
@@ -504,6 +504,7 @@ struct iwl_scan_offload_profile {
* @match_notify: clients waiting for match found notification
* @pass_match: clients waiting for the results
* @active_clients: active clients bitmap - enum scan_framework_client
* @any_beacon_notify: clients waiting for match notification without match
*/
struct
iwl_scan_offload_profile_cfg
{
struct
iwl_scan_offload_profile
profiles
[
IWL_SCAN_MAX_PROFILES
];
...
...
@@ -512,7 +513,8 @@ struct iwl_scan_offload_profile_cfg {
u8
match_notify
;
u8
pass_match
;
u8
active_clients
;
u8
reserved
[
3
];
u8
any_beacon_notify
;
u8
reserved
[
2
];
}
__packed
;
/**
...
...
drivers/net/wireless/iwlwifi/mvm/mac80211.c
浏览文件 @
235c0dc5
...
...
@@ -246,7 +246,7 @@ int iwl_mvm_mac_setup_register(struct iwl_mvm *mvm)
else
hw
->
wiphy
->
flags
&=
~
WIPHY_FLAG_PS_ON_BY_DEFAULT
;
if
(
mvm
->
fw
->
ucode_capa
.
flags
&
IWL_UCODE_TLV_FLAGS_SCHED_SCAN
)
{
if
(
0
&&
mvm
->
fw
->
ucode_capa
.
flags
&
IWL_UCODE_TLV_FLAGS_SCHED_SCAN
)
{
hw
->
wiphy
->
flags
|=
WIPHY_FLAG_SUPPORTS_SCHED_SCAN
;
hw
->
wiphy
->
max_sched_scan_ssids
=
PROBE_OPTION_MAX
;
hw
->
wiphy
->
max_match_sets
=
IWL_SCAN_MAX_PROFILES
;
...
...
drivers/net/wireless/iwlwifi/mvm/scan.c
浏览文件 @
235c0dc5
...
...
@@ -344,7 +344,8 @@ int iwl_mvm_scan_request(struct iwl_mvm *mvm,
iwl_mvm_scan_fill_ssids
(
cmd
,
req
,
basic_ssid
?
1
:
0
);
cmd
->
tx_cmd
.
tx_flags
=
cpu_to_le32
(
TX_CMD_FLG_SEQ_CTL
);
cmd
->
tx_cmd
.
tx_flags
=
cpu_to_le32
(
TX_CMD_FLG_SEQ_CTL
|
TX_CMD_FLG_BT_DIS
);
cmd
->
tx_cmd
.
sta_id
=
mvm
->
aux_sta
.
sta_id
;
cmd
->
tx_cmd
.
life_time
=
cpu_to_le32
(
TX_CMD_LIFE_TIME_INFINITE
);
cmd
->
tx_cmd
.
rate_n_flags
=
...
...
@@ -807,6 +808,8 @@ int iwl_mvm_config_sched_scan_profiles(struct iwl_mvm *mvm,
profile_cfg
->
active_clients
=
SCAN_CLIENT_SCHED_SCAN
;
profile_cfg
->
pass_match
=
SCAN_CLIENT_SCHED_SCAN
;
profile_cfg
->
match_notify
=
SCAN_CLIENT_SCHED_SCAN
;
if
(
!
req
->
n_match_sets
||
!
req
->
match_sets
[
0
].
ssid
.
ssid_len
)
profile_cfg
->
any_beacon_notify
=
SCAN_CLIENT_SCHED_SCAN
;
for
(
i
=
0
;
i
<
req
->
n_match_sets
;
i
++
)
{
profile
=
&
profile_cfg
->
profiles
[
i
];
...
...
drivers/net/wireless/iwlwifi/mvm/sta.c
浏览文件 @
235c0dc5
...
...
@@ -652,7 +652,7 @@ int iwl_mvm_send_bcast_sta(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
{
struct
iwl_mvm_vif
*
mvmvif
=
iwl_mvm_vif_from_mac80211
(
vif
);
static
const
u8
_baddr
[]
=
{
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0xFF
};
static
const
u8
*
baddr
=
_baddr
;
const
u8
*
baddr
=
_baddr
;
lockdep_assert_held
(
&
mvm
->
mutex
);
...
...
drivers/net/wireless/iwlwifi/mvm/tx.c
浏览文件 @
235c0dc5
...
...
@@ -659,8 +659,14 @@ static void iwl_mvm_rx_tx_cmd_single(struct iwl_mvm *mvm,
rcu_read_lock
();
sta
=
rcu_dereference
(
mvm
->
fw_id_to_mac_id
[
sta_id
]);
/*
* sta can't be NULL otherwise it'd mean that the sta has been freed in
* the firmware while we still have packets for it in the Tx queues.
*/
if
(
WARN_ON_ONCE
(
!
sta
))
goto
out
;
if
(
!
IS_ERR
_OR_NULL
(
sta
))
{
if
(
!
IS_ERR
(
sta
))
{
mvmsta
=
iwl_mvm_sta_from_mac80211
(
sta
);
if
(
tid
!=
IWL_TID_NON_QOS
)
{
...
...
@@ -675,7 +681,6 @@ static void iwl_mvm_rx_tx_cmd_single(struct iwl_mvm *mvm,
spin_unlock_bh
(
&
mvmsta
->
lock
);
}
}
else
{
sta
=
NULL
;
mvmsta
=
NULL
;
}
...
...
@@ -683,42 +688,38 @@ static void iwl_mvm_rx_tx_cmd_single(struct iwl_mvm *mvm,
* If the txq is not an AMPDU queue, there is no chance we freed
* several skbs. Check that out...
*/
if
(
txq_id
<
mvm
->
first_agg_queue
&&
!
WARN_ON
(
skb_freed
>
1
)
&&
atomic_sub_and_test
(
skb_freed
,
&
mvm
->
pending_frames
[
sta_id
]))
{
if
(
mvmsta
)
{
/*
* If there are no pending frames for this STA, notify
* mac80211 that this station can go to sleep in its
* STA table.
*/
if
(
mvmsta
->
vif
->
type
==
NL80211_IFTYPE_AP
)
ieee80211_sta_block_awake
(
mvm
->
hw
,
sta
,
false
);
/*
* We might very well have taken mvmsta pointer while
* the station was being removed. The remove flow might
* have seen a pending_frame (because we didn't take
* the lock) even if now the queues are drained. So make
* really sure now that this the station is not being
* removed. If it is, run the drain worker to remove it.
*/
spin_lock_bh
(
&
mvmsta
->
lock
);
sta
=
rcu_dereference
(
mvm
->
fw_id_to_mac_id
[
sta_id
]);
if
(
!
sta
||
PTR_ERR
(
sta
)
==
-
EBUSY
)
{
/*
* Station disappeared in the meantime:
* so we are draining.
*/
set_bit
(
sta_id
,
mvm
->
sta_drained
);
schedule_work
(
&
mvm
->
sta_drained_wk
);
}
spin_unlock_bh
(
&
mvmsta
->
lock
);
}
else
if
(
!
mvmsta
&&
PTR_ERR
(
sta
)
==
-
EBUSY
)
{
/* Tx response without STA, so we are draining */
set_bit
(
sta_id
,
mvm
->
sta_drained
);
schedule_work
(
&
mvm
->
sta_drained_wk
);
}
if
(
txq_id
>=
mvm
->
first_agg_queue
)
goto
out
;
/* We can't free more than one frame at once on a shared queue */
WARN_ON
(
skb_freed
>
1
);
/* If we have still frames from this STA nothing to do here */
if
(
!
atomic_sub_and_test
(
skb_freed
,
&
mvm
->
pending_frames
[
sta_id
]))
goto
out
;
if
(
mvmsta
&&
mvmsta
->
vif
->
type
==
NL80211_IFTYPE_AP
)
{
/*
* If there are no pending frames for this STA, notify
* mac80211 that this station can go to sleep in its
* STA table.
* If mvmsta is not NULL, sta is valid.
*/
ieee80211_sta_block_awake
(
mvm
->
hw
,
sta
,
false
);
}
if
(
PTR_ERR
(
sta
)
==
-
EBUSY
||
PTR_ERR
(
sta
)
==
-
ENOENT
)
{
/*
* We are draining and this was the last packet - pre_rcu_remove
* has been called already. We might be after the
* synchronize_net already.
* Don't rely on iwl_mvm_rm_sta to see the empty Tx queues.
*/
set_bit
(
sta_id
,
mvm
->
sta_drained
);
schedule_work
(
&
mvm
->
sta_drained_wk
);
}
out:
rcu_read_unlock
();
}
...
...
drivers/net/wireless/iwlwifi/mvm/utils.c
浏览文件 @
235c0dc5
...
...
@@ -411,6 +411,8 @@ void iwl_mvm_dump_nic_error_log(struct iwl_mvm *mvm)
mvm
->
status
,
table
.
valid
);
}
IWL_ERR
(
mvm
,
"Loaded firmware version: %s
\n
"
,
mvm
->
fw
->
fw_version
);
trace_iwlwifi_dev_ucode_error
(
trans
->
dev
,
table
.
error_id
,
table
.
tsf_low
,
table
.
data1
,
table
.
data2
,
table
.
data3
,
table
.
blink1
,
table
.
blink2
,
table
.
ilink1
,
...
...
drivers/net/wireless/iwlwifi/pcie/drv.c
浏览文件 @
235c0dc5
...
...
@@ -359,20 +359,25 @@ static DEFINE_PCI_DEVICE_TABLE(iwl_hw_card_ids) = {
/* 7265 Series */
{
IWL_PCI_DEVICE
(
0x095A
,
0x5010
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x5110
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x5112
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x5100
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x510A
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095B
,
0x5310
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095B
,
0x5302
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095B
,
0x5210
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x5012
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x500A
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x5410
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x5400
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x1010
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x5000
,
iwl7265_2n_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x500A
,
iwl7265_2n_cfg
)},
{
IWL_PCI_DEVICE
(
0x095B
,
0x5200
,
iwl7265_2n_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x5002
,
iwl7265_n_cfg
)},
{
IWL_PCI_DEVICE
(
0x095B
,
0x5202
,
iwl7265_n_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x9010
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x9012
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x9110
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x9112
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x9210
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x9510
,
iwl7265_2ac_cfg
)},
{
IWL_PCI_DEVICE
(
0x095A
,
0x9310
,
iwl7265_2ac_cfg
)},
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录