Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
8245d023
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看板
提交
8245d023
编写于
10月 18, 2013
作者:
J
John W. Linville
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'for-john' of
git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-fixes
上级
9612bd1e
f6b12952
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
43 addition
and
30 deletion
+43
-30
drivers/net/wireless/iwlwifi/dvm/tx.c
drivers/net/wireless/iwlwifi/dvm/tx.c
+3
-11
drivers/net/wireless/iwlwifi/iwl-trans.h
drivers/net/wireless/iwlwifi/iwl-trans.h
+11
-11
drivers/net/wireless/iwlwifi/mvm/scan.c
drivers/net/wireless/iwlwifi/mvm/scan.c
+3
-3
drivers/net/wireless/iwlwifi/pcie/tx.c
drivers/net/wireless/iwlwifi/pcie/tx.c
+26
-5
未找到文件。
drivers/net/wireless/iwlwifi/dvm/tx.c
浏览文件 @
8245d023
...
...
@@ -433,27 +433,19 @@ int iwlagn_tx_skb(struct iwl_priv *priv,
/* Copy MAC header from skb into command buffer */
memcpy
(
tx_cmd
->
hdr
,
hdr
,
hdr_len
);
txq_id
=
info
->
hw_queue
;
if
(
is_agg
)
txq_id
=
priv
->
tid_data
[
sta_id
][
tid
].
agg
.
txq_id
;
else
if
(
info
->
flags
&
IEEE80211_TX_CTL_SEND_AFTER_DTIM
)
{
/*
* Send this frame after DTIM -- there's a special queue
* reserved for this for contexts that support AP mode.
*/
txq_id
=
ctx
->
mcast_queue
;
/*
* The microcode will clear the more data
* bit in the last frame it transmits.
*/
hdr
->
frame_control
|=
cpu_to_le16
(
IEEE80211_FCTL_MOREDATA
);
}
else
if
(
info
->
flags
&
IEEE80211_TX_CTL_TX_OFFCHAN
)
txq_id
=
IWL_AUX_QUEUE
;
else
txq_id
=
ctx
->
ac_to_queue
[
skb_get_queue_mapping
(
skb
)];
}
WARN_ON_ONCE
(
!
is_agg
&&
txq_id
!=
info
->
hw_queue
);
WARN_ON_ONCE
(
is_agg
&&
priv
->
queue_to_mac80211
[
txq_id
]
!=
info
->
hw_queue
);
...
...
drivers/net/wireless/iwlwifi/iwl-trans.h
浏览文件 @
8245d023
...
...
@@ -601,7 +601,7 @@ static inline int iwl_trans_send_cmd(struct iwl_trans *trans,
{
int
ret
;
if
(
trans
->
state
!=
IWL_TRANS_FW_ALIVE
)
{
if
(
unlikely
(
trans
->
state
!=
IWL_TRANS_FW_ALIVE
)
)
{
IWL_ERR
(
trans
,
"%s bad state = %d"
,
__func__
,
trans
->
state
);
return
-
EIO
;
}
...
...
@@ -640,8 +640,8 @@ static inline void iwl_trans_free_tx_cmd(struct iwl_trans *trans,
static
inline
int
iwl_trans_tx
(
struct
iwl_trans
*
trans
,
struct
sk_buff
*
skb
,
struct
iwl_device_cmd
*
dev_cmd
,
int
queue
)
{
WARN_ONCE
(
trans
->
state
!=
IWL_TRANS_FW_ALIVE
,
"%s bad state = %d"
,
__func__
,
trans
->
state
);
if
(
unlikely
(
trans
->
state
!=
IWL_TRANS_FW_ALIVE
))
IWL_ERR
(
trans
,
"%s bad state = %d"
,
__func__
,
trans
->
state
);
return
trans
->
ops
->
tx
(
trans
,
skb
,
dev_cmd
,
queue
);
}
...
...
@@ -649,16 +649,16 @@ static inline int iwl_trans_tx(struct iwl_trans *trans, struct sk_buff *skb,
static
inline
void
iwl_trans_reclaim
(
struct
iwl_trans
*
trans
,
int
queue
,
int
ssn
,
struct
sk_buff_head
*
skbs
)
{
WARN_ONCE
(
trans
->
state
!=
IWL_TRANS_FW_ALIVE
,
"%s bad state = %d"
,
__func__
,
trans
->
state
);
if
(
unlikely
(
trans
->
state
!=
IWL_TRANS_FW_ALIVE
))
IWL_ERR
(
trans
,
"%s bad state = %d"
,
__func__
,
trans
->
state
);
trans
->
ops
->
reclaim
(
trans
,
queue
,
ssn
,
skbs
);
}
static
inline
void
iwl_trans_txq_disable
(
struct
iwl_trans
*
trans
,
int
queue
)
{
WARN_ONCE
(
trans
->
state
!=
IWL_TRANS_FW_ALIVE
,
"%s bad state = %d"
,
__func__
,
trans
->
state
);
if
(
unlikely
(
trans
->
state
!=
IWL_TRANS_FW_ALIVE
))
IWL_ERR
(
trans
,
"%s bad state = %d"
,
__func__
,
trans
->
state
);
trans
->
ops
->
txq_disable
(
trans
,
queue
);
}
...
...
@@ -669,8 +669,8 @@ static inline void iwl_trans_txq_enable(struct iwl_trans *trans, int queue,
{
might_sleep
();
WARN_ONCE
(
trans
->
state
!=
IWL_TRANS_FW_ALIVE
,
"%s bad state = %d"
,
__func__
,
trans
->
state
);
if
(
unlikely
((
trans
->
state
!=
IWL_TRANS_FW_ALIVE
)))
IWL_ERR
(
trans
,
"%s bad state = %d"
,
__func__
,
trans
->
state
);
trans
->
ops
->
txq_enable
(
trans
,
queue
,
fifo
,
sta_id
,
tid
,
frame_limit
,
ssn
);
...
...
@@ -685,8 +685,8 @@ static inline void iwl_trans_ac_txq_enable(struct iwl_trans *trans, int queue,
static
inline
int
iwl_trans_wait_tx_queue_empty
(
struct
iwl_trans
*
trans
)
{
WARN_ONCE
(
trans
->
state
!=
IWL_TRANS_FW_ALIVE
,
"%s bad state = %d"
,
__func__
,
trans
->
state
);
if
(
unlikely
(
trans
->
state
!=
IWL_TRANS_FW_ALIVE
))
IWL_ERR
(
trans
,
"%s bad state = %d"
,
__func__
,
trans
->
state
);
return
trans
->
ops
->
wait_tx_queue_empty
(
trans
);
}
...
...
drivers/net/wireless/iwlwifi/mvm/scan.c
浏览文件 @
8245d023
...
...
@@ -93,10 +93,10 @@ static inline __le32 iwl_mvm_scan_max_out_time(struct ieee80211_vif *vif)
static
inline
__le32
iwl_mvm_scan_suspend_time
(
struct
ieee80211_vif
*
vif
)
{
if
(
vif
->
bss_conf
.
assoc
)
return
cpu_to_le32
(
vif
->
bss_conf
.
beacon_int
);
else
if
(
!
vif
->
bss_conf
.
assoc
)
return
0
;
return
cpu_to_le32
(
ieee80211_tu_to_usec
(
vif
->
bss_conf
.
beacon_int
));
}
static
inline
__le32
...
...
drivers/net/wireless/iwlwifi/pcie/tx.c
浏览文件 @
8245d023
...
...
@@ -1465,7 +1465,8 @@ void iwl_pcie_hcmd_complete(struct iwl_trans *trans,
spin_unlock_bh
(
&
txq
->
lock
);
}
#define HOST_COMPLETE_TIMEOUT (2 * HZ)
#define HOST_COMPLETE_TIMEOUT (2 * HZ)
#define COMMAND_POKE_TIMEOUT (HZ / 10)
static
int
iwl_pcie_send_hcmd_async
(
struct
iwl_trans
*
trans
,
struct
iwl_host_cmd
*
cmd
)
...
...
@@ -1493,6 +1494,7 @@ static int iwl_pcie_send_hcmd_sync(struct iwl_trans *trans,
struct
iwl_trans_pcie
*
trans_pcie
=
IWL_TRANS_GET_PCIE_TRANS
(
trans
);
int
cmd_idx
;
int
ret
;
int
timeout
=
HOST_COMPLETE_TIMEOUT
;
IWL_DEBUG_INFO
(
trans
,
"Attempting to send sync command %s
\n
"
,
get_cmd_string
(
trans_pcie
,
cmd
->
id
));
...
...
@@ -1517,10 +1519,29 @@ static int iwl_pcie_send_hcmd_sync(struct iwl_trans *trans,
return
ret
;
}
ret
=
wait_event_timeout
(
trans_pcie
->
wait_command_queue
,
!
test_bit
(
STATUS_HCMD_ACTIVE
,
&
trans_pcie
->
status
),
HOST_COMPLETE_TIMEOUT
);
while
(
timeout
>
0
)
{
unsigned
long
flags
;
timeout
-=
COMMAND_POKE_TIMEOUT
;
ret
=
wait_event_timeout
(
trans_pcie
->
wait_command_queue
,
!
test_bit
(
STATUS_HCMD_ACTIVE
,
&
trans_pcie
->
status
),
COMMAND_POKE_TIMEOUT
);
if
(
ret
)
break
;
/* poke the device - it may have lost the command */
if
(
iwl_trans_grab_nic_access
(
trans
,
true
,
&
flags
))
{
iwl_trans_release_nic_access
(
trans
,
&
flags
);
IWL_DEBUG_INFO
(
trans
,
"Tried to wake NIC for command %s
\n
"
,
get_cmd_string
(
trans_pcie
,
cmd
->
id
));
}
else
{
IWL_ERR
(
trans
,
"Failed to poke NIC for command %s
\n
"
,
get_cmd_string
(
trans_pcie
,
cmd
->
id
));
break
;
}
}
if
(
!
ret
)
{
if
(
test_bit
(
STATUS_HCMD_ACTIVE
,
&
trans_pcie
->
status
))
{
struct
iwl_txq
*
txq
=
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录