Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
38b492a2
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
raspberrypi-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
38b492a2
编写于
11月 04, 2005
作者:
J
Jeff Garzik
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[netdrvr 8139too] use cancel_rearming_delayed_work() to cancel thread
Noted by Herbert Xu.
上级
a15e0384
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
9 addition
and
16 deletion
+9
-16
drivers/net/8139too.c
drivers/net/8139too.c
+9
-16
未找到文件。
drivers/net/8139too.c
浏览文件 @
38b492a2
...
...
@@ -586,7 +586,8 @@ struct rtl8139_private {
dma_addr_t
tx_bufs_dma
;
signed
char
phys
[
4
];
/* MII device addresses. */
char
twistie
,
twist_row
,
twist_col
;
/* Twister tune state. */
unsigned
int
default_port
:
4
;
/* Last dev->if_port value. */
unsigned
int
default_port
:
4
;
/* Last dev->if_port value. */
unsigned
int
have_thread
:
1
;
spinlock_t
lock
;
spinlock_t
rx_lock
;
chip_t
chipset
;
...
...
@@ -594,7 +595,6 @@ struct rtl8139_private {
struct
rtl_extra_stats
xstats
;
struct
work_struct
thread
;
long
time_to_die
;
/* -1 no thr, 0 thr active, 1 thr cancel */
struct
mii_if_info
mii
;
unsigned
int
regs_len
;
...
...
@@ -1599,40 +1599,33 @@ static void rtl8139_thread (void *_data)
struct
net_device
*
dev
=
_data
;
struct
rtl8139_private
*
tp
=
netdev_priv
(
dev
);
if
((
tp
->
time_to_die
==
0
)
&&
(
rtnl_lock_interruptible
()
==
0
))
{
if
(
rtnl_lock_interruptible
()
==
0
)
{
rtl8139_thread_iter
(
dev
,
tp
,
tp
->
mmio_addr
);
rtnl_unlock
();
}
if
(
tp
->
time_to_die
==
0
)
schedule_delayed_work
(
&
tp
->
thread
,
next_tick
);
schedule_delayed_work
(
&
tp
->
thread
,
next_tick
);
}
static
void
rtl8139_start_thread
(
struct
rtl8139_private
*
tp
)
{
tp
->
twistie
=
0
;
tp
->
time_to_die
=
-
1
;
if
(
tp
->
chipset
==
CH_8139_K
)
tp
->
twistie
=
1
;
else
if
(
tp
->
drv_flags
&
HAS_LNK_CHNG
)
return
;
tp
->
time_to_die
=
0
;
tp
->
have_thread
=
1
;
schedule_delayed_work
(
&
tp
->
thread
,
next_tick
);
}
static
void
rtl8139_stop_thread
(
struct
rtl8139_private
*
tp
)
{
if
(
tp
->
time_to_die
<
0
)
return
;
tp
->
time_to_die
=
1
;
wmb
();
if
(
cancel_delayed_work
(
&
tp
->
thread
)
==
0
)
flush_scheduled_work
();
if
(
tp
->
have_thread
)
{
cancel_rearming_delayed_work
(
&
tp
->
thread
);
tp
->
have_thread
=
0
;
}
}
static
inline
void
rtl8139_tx_clear
(
struct
rtl8139_private
*
tp
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录