Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
97d759d3
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看板
提交
97d759d3
编写于
3月 17, 2009
作者:
D
David Woodhouse
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
solos: Reset device on unload, free pending skbs
Signed-off-by:
N
David Woodhouse
<
David.Woodhouse@intel.com
>
上级
f87b2ed2
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
29 addition
and
1 deletion
+29
-1
drivers/atm/solos-pci.c
drivers/atm/solos-pci.c
+29
-1
未找到文件。
drivers/atm/solos-pci.c
浏览文件 @
97d759d3
...
...
@@ -1206,10 +1206,28 @@ static void atm_remove(struct solos_card *card)
for
(
i
=
0
;
i
<
card
->
nr_ports
;
i
++
)
{
if
(
card
->
atmdev
[
i
])
{
struct
sk_buff
*
skb
;
dev_info
(
&
card
->
dev
->
dev
,
"Unregistering ATM device %d
\n
"
,
card
->
atmdev
[
i
]
->
number
);
sysfs_remove_group
(
&
card
->
atmdev
[
i
]
->
class_dev
.
kobj
,
&
solos_attr_group
);
atm_dev_deregister
(
card
->
atmdev
[
i
]);
skb
=
card
->
rx_skb
[
i
];
if
(
skb
)
{
pci_unmap_single
(
card
->
dev
,
SKB_CB
(
skb
)
->
dma_addr
,
RX_DMA_SIZE
,
PCI_DMA_FROMDEVICE
);
dev_kfree_skb
(
skb
);
}
skb
=
card
->
tx_skb
[
i
];
if
(
skb
)
{
pci_unmap_single
(
card
->
dev
,
SKB_CB
(
skb
)
->
dma_addr
,
skb
->
len
,
PCI_DMA_TODEVICE
);
dev_kfree_skb
(
skb
);
}
while
((
skb
=
skb_dequeue
(
&
card
->
tx_queue
[
i
])))
dev_kfree_skb
(
skb
);
}
}
}
...
...
@@ -1217,13 +1235,23 @@ static void atm_remove(struct solos_card *card)
static
void
fpga_remove
(
struct
pci_dev
*
dev
)
{
struct
solos_card
*
card
=
pci_get_drvdata
(
dev
);
/* Disable IRQs */
iowrite32
(
0
,
card
->
config_regs
+
IRQ_EN_ADDR
);
/* Reset FPGA */
iowrite32
(
1
,
card
->
config_regs
+
FPGA_MODE
);
(
void
)
ioread32
(
card
->
config_regs
+
FPGA_MODE
);
atm_remove
(
card
);
iowrite32
(
0
,
card
->
config_regs
+
IRQ_EN_ADDR
);
free_irq
(
dev
->
irq
,
card
);
tasklet_kill
(
&
card
->
tlet
);
/* Release device from reset */
iowrite32
(
0
,
card
->
config_regs
+
FPGA_MODE
);
(
void
)
ioread32
(
card
->
config_regs
+
FPGA_MODE
);
pci_iounmap
(
dev
,
card
->
buffers
);
pci_iounmap
(
dev
,
card
->
config_regs
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录