Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
2ad657c8
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看板
提交
2ad657c8
编写于
12月 04, 2006
作者:
J
Jeff Garzik
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'netdev-2.6.20' of master.kernel.org:/pub/scm/linux/kernel/git/viro/bird into tmp
上级
ff51a987
c69fda4e
变更
41
隐藏空白更改
内联
并排
Showing
41 changed file
with
139 addition
and
131 deletion
+139
-131
drivers/net/3c501.c
drivers/net/3c501.c
+1
-1
drivers/net/3c503.c
drivers/net/3c503.c
+1
-1
drivers/net/3c505.c
drivers/net/3c505.c
+1
-1
drivers/net/3c507.c
drivers/net/3c507.c
+1
-1
drivers/net/3c523.c
drivers/net/3c523.c
+1
-1
drivers/net/3c527.c
drivers/net/3c527.c
+1
-1
drivers/net/ac3200.c
drivers/net/ac3200.c
+1
-1
drivers/net/apne.c
drivers/net/apne.c
+2
-2
drivers/net/appletalk/cops.c
drivers/net/appletalk/cops.c
+1
-1
drivers/net/arm/ether1.c
drivers/net/arm/ether1.c
+3
-3
drivers/net/arm/ether3.c
drivers/net/arm/ether3.c
+4
-4
drivers/net/at1700.c
drivers/net/at1700.c
+1
-1
drivers/net/atarilance.c
drivers/net/atarilance.c
+2
-2
drivers/net/cs89x0.c
drivers/net/cs89x0.c
+1
-1
drivers/net/e2100.c
drivers/net/e2100.c
+1
-1
drivers/net/eepro.c
drivers/net/eepro.c
+1
-1
drivers/net/eexpress.c
drivers/net/eexpress.c
+1
-1
drivers/net/es3210.c
drivers/net/es3210.c
+1
-1
drivers/net/eth16i.c
drivers/net/eth16i.c
+1
-1
drivers/net/hp-plus.c
drivers/net/hp-plus.c
+1
-1
drivers/net/hp.c
drivers/net/hp.c
+1
-1
drivers/net/lance.c
drivers/net/lance.c
+1
-1
drivers/net/lne390.c
drivers/net/lne390.c
+1
-1
drivers/net/mv643xx_eth.c
drivers/net/mv643xx_eth.c
+2
-2
drivers/net/mvme147.c
drivers/net/mvme147.c
+2
-2
drivers/net/myri10ge/myri10ge.c
drivers/net/myri10ge/myri10ge.c
+48
-43
drivers/net/myri10ge/myri10ge_mcp.h
drivers/net/myri10ge/myri10ge_mcp.h
+28
-28
drivers/net/myri10ge/myri10ge_mcp_gen_header.h
drivers/net/myri10ge/myri10ge_mcp_gen_header.h
+1
-1
drivers/net/ne.c
drivers/net/ne.c
+1
-1
drivers/net/ne2.c
drivers/net/ne2.c
+1
-1
drivers/net/ni52.c
drivers/net/ni52.c
+1
-1
drivers/net/ni65.c
drivers/net/ni65.c
+1
-1
drivers/net/ns83820.c
drivers/net/ns83820.c
+14
-11
drivers/net/seeq8005.c
drivers/net/seeq8005.c
+1
-1
drivers/net/smc-ultra.c
drivers/net/smc-ultra.c
+1
-1
drivers/net/smc-ultra32.c
drivers/net/smc-ultra32.c
+1
-1
drivers/net/smc9194.c
drivers/net/smc9194.c
+1
-1
drivers/net/smc91x.h
drivers/net/smc91x.h
+2
-2
drivers/net/sun3lance.c
drivers/net/sun3lance.c
+2
-2
drivers/net/tokenring/smctr.c
drivers/net/tokenring/smctr.c
+1
-1
drivers/net/wd.c
drivers/net/wd.c
+1
-1
未找到文件。
drivers/net/3c501.c
浏览文件 @
2ad657c8
...
...
@@ -922,7 +922,7 @@ int __init init_module(void)
* and then free up the resources we took when the card was found.
*/
void
cleanup_module
(
void
)
void
__exit
cleanup_module
(
void
)
{
struct
net_device
*
dev
=
dev_3c501
;
unregister_netdev
(
dev
);
...
...
drivers/net/3c503.c
浏览文件 @
2ad657c8
...
...
@@ -726,7 +726,7 @@ static void cleanup_card(struct net_device *dev)
iounmap
(
ei_status
.
mem
);
}
void
void
__exit
cleanup_module
(
void
)
{
int
this_dev
;
...
...
drivers/net/3c505.c
浏览文件 @
2ad657c8
...
...
@@ -1670,7 +1670,7 @@ int __init init_module(void)
return
0
;
}
void
cleanup_module
(
void
)
void
__exit
cleanup_module
(
void
)
{
int
this_dev
;
...
...
drivers/net/3c507.c
浏览文件 @
2ad657c8
...
...
@@ -940,7 +940,7 @@ int __init init_module(void)
return
IS_ERR
(
dev_3c507
)
?
PTR_ERR
(
dev_3c507
)
:
0
;
}
void
void
__exit
cleanup_module
(
void
)
{
struct
net_device
*
dev
=
dev_3c507
;
...
...
drivers/net/3c523.c
浏览文件 @
2ad657c8
...
...
@@ -1302,7 +1302,7 @@ int __init init_module(void)
}
else
return
0
;
}
void
cleanup_module
(
void
)
void
__exit
cleanup_module
(
void
)
{
int
this_dev
;
for
(
this_dev
=
0
;
this_dev
<
MAX_3C523_CARDS
;
this_dev
++
)
{
...
...
drivers/net/3c527.c
浏览文件 @
2ad657c8
...
...
@@ -1659,7 +1659,7 @@ int __init init_module(void)
* transmit operations are allowed to start scribbling into memory.
*/
void
cleanup_module
(
void
)
void
__exit
cleanup_module
(
void
)
{
unregister_netdev
(
this_device
);
cleanup_card
(
this_device
);
...
...
drivers/net/ac3200.c
浏览文件 @
2ad657c8
...
...
@@ -405,7 +405,7 @@ static void cleanup_card(struct net_device *dev)
iounmap
(
ei_status
.
mem
);
}
void
void
__exit
cleanup_module
(
void
)
{
int
this_dev
;
...
...
drivers/net/apne.c
浏览文件 @
2ad657c8
...
...
@@ -568,7 +568,7 @@ static irqreturn_t apne_interrupt(int irq, void *dev_id)
#ifdef MODULE
static
struct
net_device
*
apne_dev
;
int
init_module
(
void
)
int
__init
init_module
(
void
)
{
apne_dev
=
apne_probe
(
-
1
);
if
(
IS_ERR
(
apne_dev
))
...
...
@@ -576,7 +576,7 @@ int init_module(void)
return
0
;
}
void
cleanup_module
(
void
)
void
__exit
cleanup_module
(
void
)
{
unregister_netdev
(
apne_dev
);
...
...
drivers/net/appletalk/cops.c
浏览文件 @
2ad657c8
...
...
@@ -1041,7 +1041,7 @@ int __init init_module(void)
return
0
;
}
void
cleanup_module
(
void
)
void
__exit
cleanup_module
(
void
)
{
unregister_netdev
(
cops_dev
);
cleanup_card
(
cops_dev
);
...
...
drivers/net/arm/ether1.c
浏览文件 @
2ad657c8
...
...
@@ -254,7 +254,7 @@ ether1_readbuffer (struct net_device *dev, void *data, unsigned int start, unsig
}
while
(
thislen
);
}
static
int
__init
static
int
__
dev
init
ether1_ramtest
(
struct
net_device
*
dev
,
unsigned
char
byte
)
{
unsigned
char
*
buffer
=
kmalloc
(
BUFFER_SIZE
,
GFP_KERNEL
);
...
...
@@ -308,7 +308,7 @@ ether1_reset (struct net_device *dev)
return
BUS_16
;
}
static
int
__init
static
int
__
dev
init
ether1_init_2
(
struct
net_device
*
dev
)
{
int
i
;
...
...
@@ -986,7 +986,7 @@ ether1_setmulticastlist (struct net_device *dev)
/* ------------------------------------------------------------------------- */
static
void
__init
ether1_banner
(
void
)
static
void
__
dev
init
ether1_banner
(
void
)
{
static
unsigned
int
version_printed
=
0
;
...
...
drivers/net/arm/ether3.c
浏览文件 @
2ad657c8
...
...
@@ -198,7 +198,7 @@ static inline void ether3_ledon(struct net_device *dev)
* Read the ethernet address string from the on board rom.
* This is an ascii string!!!
*/
static
int
__init
static
int
__
dev
init
ether3_addr
(
char
*
addr
,
struct
expansion_card
*
ec
)
{
struct
in_chunk_dir
cd
;
...
...
@@ -223,7 +223,7 @@ ether3_addr(char *addr, struct expansion_card *ec)
/* --------------------------------------------------------------------------- */
static
int
__init
static
int
__
dev
init
ether3_ramtest
(
struct
net_device
*
dev
,
unsigned
char
byte
)
{
unsigned
char
*
buffer
=
kmalloc
(
RX_END
,
GFP_KERNEL
);
...
...
@@ -272,7 +272,7 @@ ether3_ramtest(struct net_device *dev, unsigned char byte)
/* ------------------------------------------------------------------------------- */
static
int
__init
ether3_init_2
(
struct
net_device
*
dev
)
static
int
__
dev
init
ether3_init_2
(
struct
net_device
*
dev
)
{
int
i
;
...
...
@@ -765,7 +765,7 @@ static void ether3_tx(struct net_device *dev)
}
}
static
void
__init
ether3_banner
(
void
)
static
void
__
dev
init
ether3_banner
(
void
)
{
static
unsigned
version_printed
=
0
;
...
...
drivers/net/at1700.c
浏览文件 @
2ad657c8
...
...
@@ -908,7 +908,7 @@ int __init init_module(void)
return
0
;
}
void
void
__exit
cleanup_module
(
void
)
{
unregister_netdev
(
dev_at1700
);
...
...
drivers/net/atarilance.c
浏览文件 @
2ad657c8
...
...
@@ -1179,7 +1179,7 @@ static int lance_set_mac_address( struct net_device *dev, void *addr )
#ifdef MODULE
static
struct
net_device
*
atarilance_dev
;
int
init_module
(
void
)
int
__init
init_module
(
void
)
{
atarilance_dev
=
atarilance_probe
(
-
1
);
if
(
IS_ERR
(
atarilance_dev
))
...
...
@@ -1187,7 +1187,7 @@ int init_module(void)
return
0
;
}
void
cleanup_module
(
void
)
void
__exit
cleanup_module
(
void
)
{
unregister_netdev
(
atarilance_dev
);
free_irq
(
atarilance_dev
->
irq
,
atarilance_dev
);
...
...
drivers/net/cs89x0.c
浏览文件 @
2ad657c8
...
...
@@ -1974,7 +1974,7 @@ int __init init_module(void)
return
ret
;
}
void
void
__exit
cleanup_module
(
void
)
{
unregister_netdev
(
dev_cs89x0
);
...
...
drivers/net/e2100.c
浏览文件 @
2ad657c8
...
...
@@ -463,7 +463,7 @@ static void cleanup_card(struct net_device *dev)
release_region
(
dev
->
base_addr
,
E21_IO_EXTENT
);
}
void
void
__exit
cleanup_module
(
void
)
{
int
this_dev
;
...
...
drivers/net/eepro.c
浏览文件 @
2ad657c8
...
...
@@ -1827,7 +1827,7 @@ int __init init_module(void)
return
n_eepro
?
0
:
-
ENODEV
;
}
void
void
__exit
cleanup_module
(
void
)
{
int
i
;
...
...
drivers/net/eexpress.c
浏览文件 @
2ad657c8
...
...
@@ -1719,7 +1719,7 @@ int __init init_module(void)
return
-
ENXIO
;
}
void
cleanup_module
(
void
)
void
__exit
cleanup_module
(
void
)
{
int
this_dev
;
...
...
drivers/net/es3210.c
浏览文件 @
2ad657c8
...
...
@@ -455,7 +455,7 @@ static void cleanup_card(struct net_device *dev)
iounmap
(
ei_status
.
mem
);
}
void
void
__exit
cleanup_module
(
void
)
{
int
this_dev
;
...
...
drivers/net/eth16i.c
浏览文件 @
2ad657c8
...
...
@@ -1475,7 +1475,7 @@ int __init init_module(void)
return
-
ENXIO
;
}
void
cleanup_module
(
void
)
void
__exit
cleanup_module
(
void
)
{
int
this_dev
;
...
...
drivers/net/hp-plus.c
浏览文件 @
2ad657c8
...
...
@@ -482,7 +482,7 @@ static void cleanup_card(struct net_device *dev)
release_region
(
dev
->
base_addr
-
NIC_OFFSET
,
HP_IO_EXTENT
);
}
void
void
__exit
cleanup_module
(
void
)
{
int
this_dev
;
...
...
drivers/net/hp.c
浏览文件 @
2ad657c8
...
...
@@ -444,7 +444,7 @@ static void cleanup_card(struct net_device *dev)
release_region
(
dev
->
base_addr
-
NIC_OFFSET
,
HP_IO_EXTENT
);
}
void
void
__exit
cleanup_module
(
void
)
{
int
this_dev
;
...
...
drivers/net/lance.c
浏览文件 @
2ad657c8
...
...
@@ -368,7 +368,7 @@ static void cleanup_card(struct net_device *dev)
kfree
(
lp
);
}
void
cleanup_module
(
void
)
void
__exit
cleanup_module
(
void
)
{
int
this_dev
;
...
...
drivers/net/lne390.c
浏览文件 @
2ad657c8
...
...
@@ -440,7 +440,7 @@ static void cleanup_card(struct net_device *dev)
iounmap
(
ei_status
.
mem
);
}
void
cleanup_module
(
void
)
void
__exit
cleanup_module
(
void
)
{
int
this_dev
;
...
...
drivers/net/mv643xx_eth.c
浏览文件 @
2ad657c8
...
...
@@ -1098,7 +1098,7 @@ static void eth_tx_fill_frag_descs(struct mv643xx_private *mp,
ETH_TX_ENABLE_INTERRUPT
;
mp
->
tx_skb
[
tx_index
]
=
skb
;
}
else
mp
->
tx_skb
[
tx_index
]
=
0
;
mp
->
tx_skb
[
tx_index
]
=
NULL
;
desc
=
&
mp
->
p_tx_desc_area
[
tx_index
];
desc
->
l4i_chk
=
0
;
...
...
@@ -1134,7 +1134,7 @@ static void eth_tx_submit_descs_for_skb(struct mv643xx_private *mp,
eth_tx_fill_frag_descs
(
mp
,
skb
);
length
=
skb_headlen
(
skb
);
mp
->
tx_skb
[
tx_index
]
=
0
;
mp
->
tx_skb
[
tx_index
]
=
NULL
;
}
else
{
cmd_sts
|=
ETH_ZERO_PADDING
|
ETH_TX_LAST_DESC
|
...
...
drivers/net/mvme147.c
浏览文件 @
2ad657c8
...
...
@@ -184,7 +184,7 @@ static int m147lance_close(struct net_device *dev)
MODULE_LICENSE
(
"GPL"
);
static
struct
net_device
*
dev_mvme147_lance
;
int
init_module
(
void
)
int
__init
init_module
(
void
)
{
dev_mvme147_lance
=
mvme147lance_probe
(
-
1
);
if
(
IS_ERR
(
dev_mvme147_lance
))
...
...
@@ -192,7 +192,7 @@ int init_module(void)
return
0
;
}
void
cleanup_module
(
void
)
void
__exit
cleanup_module
(
void
)
{
struct
m147lance_private
*
lp
=
dev_mvme147_lance
->
priv
;
unregister_netdev
(
dev_mvme147_lance
);
...
...
drivers/net/myri10ge/myri10ge.c
浏览文件 @
2ad657c8
...
...
@@ -89,7 +89,7 @@ MODULE_LICENSE("Dual BSD/GPL");
#define MYRI10GE_EEPROM_STRINGS_SIZE 256
#define MYRI10GE_MAX_SEND_DESC_TSO ((65536 / 2048) * 2)
#define MYRI10GE_NO_CONFIRM_DATA
0xffffffff
#define MYRI10GE_NO_CONFIRM_DATA
htonl(0xffffffff)
#define MYRI10GE_NO_RESPONSE_RESULT 0xffffffff
struct
myri10ge_rx_buffer_state
{
...
...
@@ -156,8 +156,8 @@ struct myri10ge_priv {
int
sram_size
;
unsigned
long
board_span
;
unsigned
long
iomem_base
;
u
32
__iomem
*
irq_claim
;
u
32
__iomem
*
irq_deassert
;
__be
32
__iomem
*
irq_claim
;
__be
32
__iomem
*
irq_deassert
;
char
*
mac_addr_string
;
struct
mcp_cmd_response
*
cmd
;
dma_addr_t
cmd_bus
;
...
...
@@ -165,10 +165,10 @@ struct myri10ge_priv {
dma_addr_t
fw_stats_bus
;
struct
pci_dev
*
pdev
;
int
msi_enabled
;
unsigned
int
link_state
;
__be32
link_state
;
unsigned
int
rdma_tags_available
;
int
intr_coal_delay
;
u
32
__iomem
*
intr_coal_delay_ptr
;
__be
32
__iomem
*
intr_coal_delay_ptr
;
int
mtrr
;
int
wake_queue
;
int
stop_queue
;
...
...
@@ -273,6 +273,11 @@ MODULE_PARM_DESC(myri10ge_debug, "Debug level (0=none,...,16=all)");
#define myri10ge_pio_copy(to,from,size) __iowrite64_copy(to,from,size/8)
static
inline
void
put_be32
(
__be32
val
,
__be32
__iomem
*
p
)
{
__raw_writel
((
__force
__u32
)
val
,
(
__force
void
__iomem
*
)
p
);
}
static
int
myri10ge_send_cmd
(
struct
myri10ge_priv
*
mgp
,
u32
cmd
,
struct
myri10ge_cmd
*
data
,
int
atomic
)
...
...
@@ -296,7 +301,7 @@ myri10ge_send_cmd(struct myri10ge_priv *mgp, u32 cmd,
buf
->
response_addr
.
low
=
htonl
(
dma_low
);
buf
->
response_addr
.
high
=
htonl
(
dma_high
);
response
->
result
=
MYRI10GE_NO_RESPONSE_RESULT
;
response
->
result
=
htonl
(
MYRI10GE_NO_RESPONSE_RESULT
)
;
mb
();
myri10ge_pio_copy
(
cmd_addr
,
buf
,
sizeof
(
*
buf
));
...
...
@@ -311,14 +316,14 @@ myri10ge_send_cmd(struct myri10ge_priv *mgp, u32 cmd,
* (1ms will be enough for those commands) */
for
(
sleep_total
=
0
;
sleep_total
<
1000
&&
response
->
result
==
MYRI10GE_NO_RESPONSE_RESULT
;
&&
response
->
result
==
htonl
(
MYRI10GE_NO_RESPONSE_RESULT
)
;
sleep_total
+=
10
)
udelay
(
10
);
}
else
{
/* use msleep for most command */
for
(
sleep_total
=
0
;
sleep_total
<
15
&&
response
->
result
==
MYRI10GE_NO_RESPONSE_RESULT
;
&&
response
->
result
==
htonl
(
MYRI10GE_NO_RESPONSE_RESULT
)
;
sleep_total
++
)
msleep
(
1
);
}
...
...
@@ -393,7 +398,7 @@ static int myri10ge_read_mac_addr(struct myri10ge_priv *mgp)
static
void
myri10ge_dummy_rdma
(
struct
myri10ge_priv
*
mgp
,
int
enable
)
{
char
__iomem
*
submit
;
u
32
buf
[
16
];
__be
32
buf
[
16
];
u32
dma_low
,
dma_high
;
int
i
;
...
...
@@ -410,7 +415,7 @@ static void myri10ge_dummy_rdma(struct myri10ge_priv *mgp, int enable)
buf
[
0
]
=
htonl
(
dma_high
);
/* confirm addr MSW */
buf
[
1
]
=
htonl
(
dma_low
);
/* confirm addr LSW */
buf
[
2
]
=
htonl
(
MYRI10GE_NO_CONFIRM_DATA
)
;
/* confirm data */
buf
[
2
]
=
MYRI10GE_NO_CONFIRM_DATA
;
/* confirm data */
buf
[
3
]
=
htonl
(
dma_high
);
/* dummy addr MSW */
buf
[
4
]
=
htonl
(
dma_low
);
/* dummy addr LSW */
buf
[
5
]
=
htonl
(
enable
);
/* enable? */
...
...
@@ -479,7 +484,7 @@ static int myri10ge_load_hotplug_firmware(struct myri10ge_priv *mgp, u32 * size)
}
/* check id */
hdr_offset
=
ntohl
(
*
(
u
32
*
)
(
fw
->
data
+
MCP_HEADER_PTR_OFFSET
));
hdr_offset
=
ntohl
(
*
(
__be
32
*
)
(
fw
->
data
+
MCP_HEADER_PTR_OFFSET
));
if
((
hdr_offset
&
3
)
||
hdr_offset
+
sizeof
(
*
hdr
)
>
fw
->
size
)
{
dev_err
(
dev
,
"Bad firmware file
\n
"
);
status
=
-
EINVAL
;
...
...
@@ -550,7 +555,7 @@ static int myri10ge_adopt_running_firmware(struct myri10ge_priv *mgp)
static
int
myri10ge_load_firmware
(
struct
myri10ge_priv
*
mgp
)
{
char
__iomem
*
submit
;
u
32
buf
[
16
];
__be
32
buf
[
16
];
u32
dma_low
,
dma_high
,
size
;
int
status
,
i
;
...
...
@@ -600,7 +605,7 @@ static int myri10ge_load_firmware(struct myri10ge_priv *mgp)
buf
[
0
]
=
htonl
(
dma_high
);
/* confirm addr MSW */
buf
[
1
]
=
htonl
(
dma_low
);
/* confirm addr LSW */
buf
[
2
]
=
htonl
(
MYRI10GE_NO_CONFIRM_DATA
)
;
/* confirm data */
buf
[
2
]
=
MYRI10GE_NO_CONFIRM_DATA
;
/* confirm data */
/* FIX: All newest firmware should un-protect the bottom of
* the sram before handoff. However, the very first interfaces
...
...
@@ -705,21 +710,21 @@ static int myri10ge_reset(struct myri10ge_priv *mgp)
status
|=
myri10ge_send_cmd
(
mgp
,
MXGEFW_CMD_GET_IRQ_ACK_OFFSET
,
&
cmd
,
0
);
mgp
->
irq_claim
=
(
__iomem
u
32
*
)
(
mgp
->
sram
+
cmd
.
data0
);
mgp
->
irq_claim
=
(
__iomem
__be
32
*
)
(
mgp
->
sram
+
cmd
.
data0
);
if
(
!
mgp
->
msi_enabled
)
{
status
|=
myri10ge_send_cmd
(
mgp
,
MXGEFW_CMD_GET_IRQ_DEASSERT_OFFSET
,
&
cmd
,
0
);
mgp
->
irq_deassert
=
(
__iomem
u
32
*
)
(
mgp
->
sram
+
cmd
.
data0
);
mgp
->
irq_deassert
=
(
__iomem
__be
32
*
)
(
mgp
->
sram
+
cmd
.
data0
);
}
status
|=
myri10ge_send_cmd
(
mgp
,
MXGEFW_CMD_GET_INTR_COAL_DELAY_OFFSET
,
&
cmd
,
0
);
mgp
->
intr_coal_delay_ptr
=
(
__iomem
u
32
*
)
(
mgp
->
sram
+
cmd
.
data0
);
mgp
->
intr_coal_delay_ptr
=
(
__iomem
__be
32
*
)
(
mgp
->
sram
+
cmd
.
data0
);
if
(
status
!=
0
)
{
dev_err
(
&
mgp
->
pdev
->
dev
,
"failed set interrupt parameters
\n
"
);
return
status
;
}
__raw_writel
(
htonl
(
mgp
->
intr_coal_delay
),
mgp
->
intr_coal_delay_ptr
);
put_be32
(
htonl
(
mgp
->
intr_coal_delay
),
mgp
->
intr_coal_delay_ptr
);
/* Run a small DMA test.
* The magic multipliers to the length tell the firmware
...
...
@@ -786,14 +791,14 @@ static inline void
myri10ge_submit_8rx
(
struct
mcp_kreq_ether_recv
__iomem
*
dst
,
struct
mcp_kreq_ether_recv
*
src
)
{
u
32
low
;
__be
32
low
;
low
=
src
->
addr_low
;
src
->
addr_low
=
DMA_32BIT_MASK
;
src
->
addr_low
=
htonl
(
DMA_32BIT_MASK
)
;
myri10ge_pio_copy
(
dst
,
src
,
8
*
sizeof
(
*
src
));
mb
();
src
->
addr_low
=
low
;
__raw_writel
(
low
,
&
dst
->
addr_low
);
put_be32
(
low
,
&
dst
->
addr_low
);
mb
();
}
...
...
@@ -939,11 +944,11 @@ myri10ge_getbuf(struct myri10ge_rx_buf *rx, struct myri10ge_priv *mgp,
return
retval
;
}
static
inline
void
myri10ge_vlan_ip_csum
(
struct
sk_buff
*
skb
,
u16
hw_csum
)
static
inline
void
myri10ge_vlan_ip_csum
(
struct
sk_buff
*
skb
,
__wsum
hw_csum
)
{
struct
vlan_hdr
*
vh
=
(
struct
vlan_hdr
*
)(
skb
->
data
);
if
((
skb
->
protocol
==
ntoh
s
(
ETH_P_8021Q
))
&&
if
((
skb
->
protocol
==
hton
s
(
ETH_P_8021Q
))
&&
(
vh
->
h_vlan_encapsulated_proto
==
htons
(
ETH_P_IP
)
||
vh
->
h_vlan_encapsulated_proto
==
htons
(
ETH_P_IPV6
)))
{
skb
->
csum
=
hw_csum
;
...
...
@@ -953,7 +958,7 @@ static inline void myri10ge_vlan_ip_csum(struct sk_buff *skb, u16 hw_csum)
static
inline
unsigned
long
myri10ge_rx_done
(
struct
myri10ge_priv
*
mgp
,
struct
myri10ge_rx_buf
*
rx
,
int
bytes
,
int
len
,
int
csum
)
int
bytes
,
int
len
,
__wsum
csum
)
{
dma_addr_t
bus
;
struct
sk_buff
*
skb
;
...
...
@@ -986,12 +991,12 @@ myri10ge_rx_done(struct myri10ge_priv *mgp, struct myri10ge_rx_buf *rx,
skb
->
protocol
=
eth_type_trans
(
skb
,
mgp
->
dev
);
if
(
mgp
->
csum_flag
)
{
if
((
skb
->
protocol
==
ntoh
s
(
ETH_P_IP
))
||
(
skb
->
protocol
==
ntoh
s
(
ETH_P_IPV6
)))
{
skb
->
csum
=
ntohs
((
u16
)
csum
)
;
if
((
skb
->
protocol
==
hton
s
(
ETH_P_IP
))
||
(
skb
->
protocol
==
hton
s
(
ETH_P_IPV6
)))
{
skb
->
csum
=
csum
;
skb
->
ip_summed
=
CHECKSUM_COMPLETE
;
}
else
myri10ge_vlan_ip_csum
(
skb
,
ntohs
((
u16
)
csum
)
);
myri10ge_vlan_ip_csum
(
skb
,
csum
);
}
netif_receive_skb
(
skb
);
...
...
@@ -1060,12 +1065,12 @@ static inline void myri10ge_clean_rx_done(struct myri10ge_priv *mgp, int *limit)
int
idx
=
rx_done
->
idx
;
int
cnt
=
rx_done
->
cnt
;
u16
length
;
u16
checksum
;
__wsum
checksum
;
while
(
rx_done
->
entry
[
idx
].
length
!=
0
&&
*
limit
!=
0
)
{
length
=
ntohs
(
rx_done
->
entry
[
idx
].
length
);
rx_done
->
entry
[
idx
].
length
=
0
;
checksum
=
ntohs
(
rx_done
->
entry
[
idx
].
checksum
);
checksum
=
csum_unfold
(
rx_done
->
entry
[
idx
].
checksum
);
if
(
length
<=
mgp
->
small_bytes
)
rx_ok
=
myri10ge_rx_done
(
mgp
,
&
mgp
->
rx_small
,
mgp
->
small_bytes
,
...
...
@@ -1142,7 +1147,7 @@ static int myri10ge_poll(struct net_device *netdev, int *budget)
if
(
rx_done
->
entry
[
rx_done
->
idx
].
length
==
0
||
!
netif_running
(
netdev
))
{
netif_rx_complete
(
netdev
);
__raw_writel
(
htonl
(
3
),
mgp
->
irq_claim
);
put_be32
(
htonl
(
3
),
mgp
->
irq_claim
);
return
0
;
}
return
1
;
...
...
@@ -1166,7 +1171,7 @@ static irqreturn_t myri10ge_intr(int irq, void *arg)
netif_rx_schedule
(
mgp
->
dev
);
if
(
!
mgp
->
msi_enabled
)
{
__raw_writel
(
0
,
mgp
->
irq_deassert
);
put_be32
(
0
,
mgp
->
irq_deassert
);
if
(
!
myri10ge_deassert_wait
)
stats
->
valid
=
0
;
mb
();
...
...
@@ -1195,7 +1200,7 @@ static irqreturn_t myri10ge_intr(int irq, void *arg)
myri10ge_check_statblock
(
mgp
);
__raw_writel
(
htonl
(
3
),
mgp
->
irq_claim
+
1
);
put_be32
(
htonl
(
3
),
mgp
->
irq_claim
+
1
);
return
(
IRQ_HANDLED
);
}
...
...
@@ -1233,7 +1238,7 @@ myri10ge_set_coalesce(struct net_device *netdev, struct ethtool_coalesce *coal)
struct
myri10ge_priv
*
mgp
=
netdev_priv
(
netdev
);
mgp
->
intr_coal_delay
=
coal
->
rx_coalesce_usecs
;
__raw_writel
(
htonl
(
mgp
->
intr_coal_delay
),
mgp
->
intr_coal_delay_ptr
);
put_be32
(
htonl
(
mgp
->
intr_coal_delay
),
mgp
->
intr_coal_delay_ptr
);
return
0
;
}
...
...
@@ -1748,7 +1753,7 @@ static int myri10ge_open(struct net_device *dev)
goto
abort_with_rings
;
}
mgp
->
link_state
=
-
1
;
mgp
->
link_state
=
htonl
(
~
0U
)
;
mgp
->
rdma_tags_available
=
15
;
netif_poll_enable
(
mgp
->
dev
);
/* must happen prior to any irq */
...
...
@@ -1876,7 +1881,7 @@ myri10ge_submit_req(struct myri10ge_tx_buf *tx, struct mcp_kreq_ether_send *src,
/* re-write the last 32-bits with the valid flags */
src
->
flags
=
last_flags
;
__raw_writel
(
*
((
u32
*
)
src
+
3
),
(
u
32
__iomem
*
)
dst
+
3
);
put_be32
(
*
((
__be32
*
)
src
+
3
),
(
__be
32
__iomem
*
)
dst
+
3
);
tx
->
req
+=
cnt
;
mb
();
}
...
...
@@ -1919,7 +1924,8 @@ static int myri10ge_xmit(struct sk_buff *skb, struct net_device *dev)
struct
myri10ge_tx_buf
*
tx
=
&
mgp
->
tx
;
struct
skb_frag_struct
*
frag
;
dma_addr_t
bus
;
u32
low
,
high_swapped
;
u32
low
;
__be32
high_swapped
;
unsigned
int
len
;
int
idx
,
last_idx
,
avail
,
frag_cnt
,
frag_idx
,
count
,
mss
,
max_segments
;
u16
pseudo_hdr_offset
,
cksum_offset
;
...
...
@@ -1964,7 +1970,6 @@ static int myri10ge_xmit(struct sk_buff *skb, struct net_device *dev)
cksum_offset
=
0
;
pseudo_hdr_offset
=
0
;
}
else
{
pseudo_hdr_offset
=
htons
(
pseudo_hdr_offset
);
odd_flag
=
MXGEFW_FLAGS_ALIGN_ODD
;
flags
|=
MXGEFW_FLAGS_CKSUM
;
}
...
...
@@ -1986,7 +1991,7 @@ static int myri10ge_xmit(struct sk_buff *skb, struct net_device *dev)
/* for TSO, pseudo_hdr_offset holds mss.
* The firmware figures out where to put
* the checksum by parsing the header. */
pseudo_hdr_offset
=
htons
(
mss
)
;
pseudo_hdr_offset
=
mss
;
}
else
#endif
/*NETIF_F_TSO */
/* Mark small packets, and pad out tiny packets */
...
...
@@ -2086,7 +2091,7 @@ static int myri10ge_xmit(struct sk_buff *skb, struct net_device *dev)
#endif
/* NETIF_F_TSO */
req
->
addr_high
=
high_swapped
;
req
->
addr_low
=
htonl
(
low
);
req
->
pseudo_hdr_offset
=
pseudo_hdr_offset
;
req
->
pseudo_hdr_offset
=
htons
(
pseudo_hdr_offset
)
;
req
->
pad
=
0
;
/* complete solid 16-byte block; does this matter? */
req
->
rdma_count
=
1
;
req
->
length
=
htons
(
seglen
);
...
...
@@ -2199,6 +2204,7 @@ static void myri10ge_set_multicast_list(struct net_device *dev)
struct
myri10ge_cmd
cmd
;
struct
myri10ge_priv
*
mgp
;
struct
dev_mc_list
*
mc_list
;
__be32
data
[
2
]
=
{
0
,
0
};
int
err
;
mgp
=
netdev_priv
(
dev
);
...
...
@@ -2237,10 +2243,9 @@ static void myri10ge_set_multicast_list(struct net_device *dev)
/* Walk the multicast list, and add each address */
for
(
mc_list
=
dev
->
mc_list
;
mc_list
!=
NULL
;
mc_list
=
mc_list
->
next
)
{
memcpy
(
&
cmd
.
data0
,
&
mc_list
->
dmi_addr
,
4
);
memcpy
(
&
cmd
.
data1
,
((
char
*
)
&
mc_list
->
dmi_addr
)
+
4
,
2
);
cmd
.
data0
=
htonl
(
cmd
.
data0
);
cmd
.
data1
=
htonl
(
cmd
.
data1
);
memcpy
(
data
,
&
mc_list
->
dmi_addr
,
6
);
cmd
.
data0
=
ntohl
(
data
[
0
]);
cmd
.
data1
=
ntohl
(
data
[
1
]);
err
=
myri10ge_send_cmd
(
mgp
,
MXGEFW_JOIN_MULTICAST_GROUP
,
&
cmd
,
1
);
...
...
drivers/net/myri10ge/myri10ge_mcp.h
浏览文件 @
2ad657c8
...
...
@@ -6,23 +6,23 @@
/* 8 Bytes */
struct
mcp_dma_addr
{
u
32
high
;
u
32
low
;
__be
32
high
;
__be
32
low
;
};
/* 4 Bytes */
struct
mcp_slot
{
u
16
checksum
;
u
16
length
;
__sum
16
checksum
;
__be
16
length
;
};
/* 64 Bytes */
struct
mcp_cmd
{
u
32
cmd
;
u
32
data0
;
/* will be low portion if data > 32 bits */
__be
32
cmd
;
__be
32
data0
;
/* will be low portion if data > 32 bits */
/* 8 */
u
32
data1
;
/* will be high portion if data > 32 bits */
u
32
data2
;
/* currently unused.. */
__be
32
data1
;
/* will be high portion if data > 32 bits */
__be
32
data2
;
/* currently unused.. */
/* 16 */
struct
mcp_dma_addr
response_addr
;
/* 24 */
...
...
@@ -31,8 +31,8 @@ struct mcp_cmd {
/* 8 Bytes */
struct
mcp_cmd_response
{
u
32
data
;
u
32
result
;
__be
32
data
;
__be
32
result
;
};
/*
...
...
@@ -73,10 +73,10 @@ union mcp_pso_or_cumlen {
/* 16 Bytes */
struct
mcp_kreq_ether_send
{
u
32
addr_high
;
u
32
addr_low
;
u
16
pseudo_hdr_offset
;
u
16
length
;
__be
32
addr_high
;
__be
32
addr_low
;
__be
16
pseudo_hdr_offset
;
__be
16
length
;
u8
pad
;
u8
rdma_count
;
u8
cksum_offset
;
/* where to start computing cksum */
...
...
@@ -85,8 +85,8 @@ struct mcp_kreq_ether_send {
/* 8 Bytes */
struct
mcp_kreq_ether_recv
{
u
32
addr_high
;
u
32
addr_low
;
__be
32
addr_high
;
__be
32
addr_low
;
};
/* Commands */
...
...
@@ -219,19 +219,19 @@ enum myri10ge_mcp_cmd_status {
struct
mcp_irq_data
{
/* add new counters at the beginning */
u
32
future_use
[
5
];
u
32
dropped_multicast_filtered
;
__be
32
future_use
[
5
];
__be
32
dropped_multicast_filtered
;
/* 40 Bytes */
u
32
send_done_count
;
u
32
link_up
;
u
32
dropped_link_overflow
;
u
32
dropped_link_error_or_filtered
;
u
32
dropped_runt
;
u
32
dropped_overrun
;
u
32
dropped_no_small_buffer
;
u
32
dropped_no_big_buffer
;
u
32
rdma_tags_available
;
__be
32
send_done_count
;
__be
32
link_up
;
__be
32
dropped_link_overflow
;
__be
32
dropped_link_error_or_filtered
;
__be
32
dropped_runt
;
__be
32
dropped_overrun
;
__be
32
dropped_no_small_buffer
;
__be
32
dropped_no_big_buffer
;
__be
32
rdma_tags_available
;
u8
tx_stopped
;
u8
link_down
;
...
...
drivers/net/myri10ge/myri10ge_mcp_gen_header.h
浏览文件 @
2ad657c8
...
...
@@ -36,7 +36,7 @@
struct
mcp_gen_header
{
/* the first 4 fields are filled at compile time */
unsigned
header_length
;
unsigned
mcp_type
;
__be32
mcp_type
;
char
version
[
128
];
unsigned
mcp_globals
;
/* pointer to mcp-type specific structure */
...
...
drivers/net/ne.c
浏览文件 @
2ad657c8
...
...
@@ -867,7 +867,7 @@ static void cleanup_card(struct net_device *dev)
release_region
(
dev
->
base_addr
,
NE_IO_EXTENT
);
}
void
cleanup_module
(
void
)
void
__exit
cleanup_module
(
void
)
{
int
this_dev
;
...
...
drivers/net/ne2.c
浏览文件 @
2ad657c8
...
...
@@ -813,7 +813,7 @@ static void cleanup_card(struct net_device *dev)
release_region
(
dev
->
base_addr
,
NE_IO_EXTENT
);
}
void
cleanup_module
(
void
)
void
__exit
cleanup_module
(
void
)
{
int
this_dev
;
...
...
drivers/net/ni52.c
浏览文件 @
2ad657c8
...
...
@@ -1335,7 +1335,7 @@ int __init init_module(void)
return
0
;
}
void
cleanup_module
(
void
)
void
__exit
cleanup_module
(
void
)
{
unregister_netdev
(
dev_ni52
);
release_region
(
dev_ni52
->
base_addr
,
NI52_TOTAL_SIZE
);
...
...
drivers/net/ni65.c
浏览文件 @
2ad657c8
...
...
@@ -1259,7 +1259,7 @@ int __init init_module(void)
return
IS_ERR
(
dev_ni65
)
?
PTR_ERR
(
dev_ni65
)
:
0
;
}
void
cleanup_module
(
void
)
void
__exit
cleanup_module
(
void
)
{
unregister_netdev
(
dev_ni65
);
cleanup_card
(
dev_ni65
);
...
...
drivers/net/ns83820.c
浏览文件 @
2ad657c8
...
...
@@ -414,10 +414,10 @@ struct rx_info {
struct
sk_buff
*
skbs
[
NR_RX_DESC
];
u
32
*
next_rx_desc
;
__le
32
*
next_rx_desc
;
u16
next_rx
,
next_empty
;
u
32
*
descs
;
__le
32
*
descs
;
dma_addr_t
phy_descs
;
};
...
...
@@ -459,7 +459,7 @@ struct ns83820 {
struct
sk_buff
*
tx_skbs
[
NR_TX_DESC
];
char
pad
[
16
]
__attribute__
((
aligned
(
16
)));
u
32
*
tx_descs
;
__le
32
*
tx_descs
;
dma_addr_t
tx_phy_descs
;
struct
timer_list
tx_watchdog
;
...
...
@@ -533,7 +533,7 @@ static void ns83820_vlan_rx_kill_vid(struct net_device *ndev, unsigned short vid
* conditions, still route realtime traffic with as low jitter as
* possible.
*/
static
inline
void
build_rx_desc
(
struct
ns83820
*
dev
,
u
32
*
desc
,
dma_addr_t
link
,
dma_addr_t
buf
,
u32
cmdsts
,
u32
extsts
)
static
inline
void
build_rx_desc
(
struct
ns83820
*
dev
,
__le
32
*
desc
,
dma_addr_t
link
,
dma_addr_t
buf
,
u32
cmdsts
,
u32
extsts
)
{
desc_addr_set
(
desc
+
DESC_LINK
,
link
);
desc_addr_set
(
desc
+
DESC_BUFPTR
,
buf
);
...
...
@@ -547,7 +547,7 @@ static inline int ns83820_add_rx_skb(struct ns83820 *dev, struct sk_buff *skb)
{
unsigned
next_empty
;
u32
cmdsts
;
u
32
*
sg
;
__le
32
*
sg
;
dma_addr_t
buf
;
next_empty
=
dev
->
rx_info
.
next_empty
;
...
...
@@ -874,7 +874,8 @@ static void fastcall rx_irq(struct net_device *ndev)
struct
rx_info
*
info
=
&
dev
->
rx_info
;
unsigned
next_rx
;
int
rx_rc
,
len
;
u32
cmdsts
,
*
desc
;
u32
cmdsts
;
__le32
*
desc
;
unsigned
long
flags
;
int
nr
=
0
;
...
...
@@ -1010,7 +1011,8 @@ static inline void kick_tx(struct ns83820 *dev)
static
void
do_tx_done
(
struct
net_device
*
ndev
)
{
struct
ns83820
*
dev
=
PRIV
(
ndev
);
u32
cmdsts
,
tx_done_idx
,
*
desc
;
u32
cmdsts
,
tx_done_idx
;
__le32
*
desc
;
dprintk
(
"do_tx_done(%p)
\n
"
,
ndev
);
tx_done_idx
=
dev
->
tx_done_idx
;
...
...
@@ -1077,7 +1079,7 @@ static void ns83820_cleanup_tx(struct ns83820 *dev)
struct
sk_buff
*
skb
=
dev
->
tx_skbs
[
i
];
dev
->
tx_skbs
[
i
]
=
NULL
;
if
(
skb
)
{
u
32
*
desc
=
dev
->
tx_descs
+
(
i
*
DESC_SIZE
);
__le
32
*
desc
=
dev
->
tx_descs
+
(
i
*
DESC_SIZE
);
pci_unmap_single
(
dev
->
pci_dev
,
desc_addr_get
(
desc
+
DESC_BUFPTR
),
le32_to_cpu
(
desc
[
DESC_CMDSTS
])
&
CMDSTS_LEN_MASK
,
...
...
@@ -1107,7 +1109,7 @@ static int ns83820_hard_start_xmit(struct sk_buff *skb, struct net_device *ndev)
skb_frag_t
*
frag
;
int
stopped
=
0
;
int
do_intr
=
0
;
volatile
u
32
*
first_desc
;
volatile
__le
32
*
first_desc
;
dprintk
(
"ns83820_hard_start_xmit
\n
"
);
...
...
@@ -1180,7 +1182,7 @@ static int ns83820_hard_start_xmit(struct sk_buff *skb, struct net_device *ndev)
first_desc
=
dev
->
tx_descs
+
(
free_idx
*
DESC_SIZE
);
for
(;;)
{
volatile
u
32
*
desc
=
dev
->
tx_descs
+
(
free_idx
*
DESC_SIZE
);
volatile
__le
32
*
desc
=
dev
->
tx_descs
+
(
free_idx
*
DESC_SIZE
);
dprintk
(
"frag[%3u]: %4u @ 0x%08Lx
\n
"
,
free_idx
,
len
,
(
unsigned
long
long
)
buf
);
...
...
@@ -1455,7 +1457,8 @@ static int ns83820_stop(struct net_device *ndev)
static
void
ns83820_tx_timeout
(
struct
net_device
*
ndev
)
{
struct
ns83820
*
dev
=
PRIV
(
ndev
);
u32
tx_done_idx
,
*
desc
;
u32
tx_done_idx
;
__le32
*
desc
;
unsigned
long
flags
;
spin_lock_irqsave
(
&
dev
->
tx_lock
,
flags
);
...
...
drivers/net/seeq8005.c
浏览文件 @
2ad657c8
...
...
@@ -750,7 +750,7 @@ int __init init_module(void)
return
0
;
}
void
cleanup_module
(
void
)
void
__exit
cleanup_module
(
void
)
{
unregister_netdev
(
dev_seeq
);
release_region
(
dev_seeq
->
base_addr
,
SEEQ8005_IO_EXTENT
);
...
...
drivers/net/smc-ultra.c
浏览文件 @
2ad657c8
...
...
@@ -593,7 +593,7 @@ static void cleanup_card(struct net_device *dev)
iounmap
(
ei_status
.
mem
);
}
void
void
__exit
cleanup_module
(
void
)
{
int
this_dev
;
...
...
drivers/net/smc-ultra32.c
浏览文件 @
2ad657c8
...
...
@@ -437,7 +437,7 @@ int __init init_module(void)
return
-
ENXIO
;
}
void
cleanup_module
(
void
)
void
__exit
cleanup_module
(
void
)
{
int
this_dev
;
...
...
drivers/net/smc9194.c
浏览文件 @
2ad657c8
...
...
@@ -1616,7 +1616,7 @@ int __init init_module(void)
return
0
;
}
void
cleanup_module
(
void
)
void
__exit
cleanup_module
(
void
)
{
unregister_netdev
(
devSMC9194
);
free_irq
(
devSMC9194
->
irq
,
devSMC9194
);
...
...
drivers/net/smc91x.h
浏览文件 @
2ad657c8
...
...
@@ -1216,7 +1216,7 @@ static const char * chip_ids[ 16 ] = {
if (SMC_CAN_USE_32BIT) { \
void *__ptr = (p); \
int __len = (l); \
void
*__ioaddr = ioaddr;
\
void
__iomem *__ioaddr = ioaddr;
\
if (__len >= 2 && (unsigned long)__ptr & 2) { \
__len -= 2; \
SMC_outw(*(u16 *)__ptr, ioaddr, DATA_REG); \
...
...
@@ -1240,7 +1240,7 @@ static const char * chip_ids[ 16 ] = {
if (SMC_CAN_USE_32BIT) { \
void *__ptr = (p); \
int __len = (l); \
void
*__ioaddr = ioaddr;
\
void
__iomem *__ioaddr = ioaddr;
\
if ((unsigned long)__ptr & 2) { \
/* \
* We want 32bit alignment here. \
...
...
drivers/net/sun3lance.c
浏览文件 @
2ad657c8
...
...
@@ -945,7 +945,7 @@ static void set_multicast_list( struct net_device *dev )
static
struct
net_device
*
sun3lance_dev
;
int
init_module
(
void
)
int
__init
init_module
(
void
)
{
sun3lance_dev
=
sun3lance_probe
(
-
1
);
if
(
IS_ERR
(
sun3lance_dev
))
...
...
@@ -953,7 +953,7 @@ int init_module(void)
return
0
;
}
void
cleanup_module
(
void
)
void
__exit
cleanup_module
(
void
)
{
unregister_netdev
(
sun3lance_dev
);
#ifdef CONFIG_SUN3
...
...
drivers/net/tokenring/smctr.c
浏览文件 @
2ad657c8
...
...
@@ -5706,7 +5706,7 @@ int __init init_module(void)
return
found
?
0
:
-
ENODEV
;
}
void
cleanup_module
(
void
)
void
__exit
cleanup_module
(
void
)
{
int
i
;
...
...
drivers/net/wd.c
浏览文件 @
2ad657c8
...
...
@@ -538,7 +538,7 @@ static void cleanup_card(struct net_device *dev)
iounmap
(
ei_status
.
mem
);
}
void
void
__exit
cleanup_module
(
void
)
{
int
this_dev
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录