Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
d7fbeba6
cloud-kernel
项目概览
openanolis
/
cloud-kernel
大约 1 年 前同步成功
通知
158
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
d7fbeba6
编写于
5月 24, 2006
作者:
J
Jeff Garzik
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[netdrvr ibmlana, ibmveth] trim trailing whitespace
上级
860f242e
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
60 addition
and
60 deletion
+60
-60
drivers/net/ibmlana.c
drivers/net/ibmlana.c
+10
-10
drivers/net/ibmlana.h
drivers/net/ibmlana.h
+3
-3
drivers/net/ibmveth.c
drivers/net/ibmveth.c
+45
-45
drivers/net/ibmveth.h
drivers/net/ibmveth.h
+2
-2
未找到文件。
drivers/net/ibmlana.c
浏览文件 @
d7fbeba6
/*
/*
net-3-driver for the IBM LAN Adapter/A
This is an extension to the Linux operating system, and is covered by the
...
...
@@ -11,9 +11,9 @@ This driver is based both on the SK_MCA driver, which is itself based on the
SK_G16 and 3C523 driver.
paper sources:
'PC Hardware: Aufbau, Funktionsweise, Programmierung' by
'PC Hardware: Aufbau, Funktionsweise, Programmierung' by
Hans-Peter Messmer for the basic Microchannel stuff
'Linux Geraetetreiber' by Allesandro Rubini, Kalle Dalheimer
for help on Ethernet driver programming
...
...
@@ -27,14 +27,14 @@ paper sources:
special acknowledgements to:
- Bob Eager for helping me out with documentation from IBM
- Jim Shorney for his endless patience with me while I was using
- Jim Shorney for his endless patience with me while I was using
him as a beta tester to trace down the address filter bug ;-)
Missing things:
-> set debug level via ioctl instead of compile-time switches
-> I didn't follow the development of the 2.1.x kernels, so my
assumptions about which things changed with which kernel version
assumptions about which things changed with which kernel version
are probably nonsense
History:
...
...
@@ -275,7 +275,7 @@ static void InitDscrs(struct net_device *dev)
priv
->
rrastart
=
raddr
=
priv
->
txbufstart
+
(
TXBUFCNT
*
PKTSIZE
);
priv
->
rdastart
=
addr
=
priv
->
rrastart
+
(
priv
->
rxbufcnt
*
sizeof
(
rra_t
));
priv
->
rxbufstart
=
baddr
=
priv
->
rdastart
+
(
priv
->
rxbufcnt
*
sizeof
(
rda_t
));
for
(
z
=
0
;
z
<
priv
->
rxbufcnt
;
z
++
)
{
rra
.
startlo
=
baddr
;
rra
.
starthi
=
0
;
...
...
@@ -570,7 +570,7 @@ static void irqrx_handler(struct net_device *dev)
lrdaaddr
=
priv
->
rdastart
+
(
priv
->
lastrxdescr
*
sizeof
(
rda_t
));
memcpy_fromio
(
&
rda
,
priv
->
base
+
rdaaddr
,
sizeof
(
rda_t
));
/* iron out upper word halves of fields we use - SONIC will duplicate
/* iron out upper word halves of fields we use - SONIC will duplicate
bits 0..15 to 16..31 */
rda
.
status
&=
0xffff
;
...
...
@@ -836,9 +836,9 @@ static int ibmlana_tx(struct sk_buff *skb, struct net_device *dev)
baddr
=
priv
->
txbufstart
+
(
priv
->
nexttxdescr
*
PKTSIZE
);
memcpy_toio
(
priv
->
base
+
baddr
,
skb
->
data
,
skb
->
len
);
/* copy filler into RAM - in case we're filling up...
/* copy filler into RAM - in case we're filling up...
we're filling a bit more than necessary, but that doesn't harm
since the buffer is far larger...
since the buffer is far larger...
Sorry Linus for the filler string but I couldn't resist ;-) */
if
(
tmplen
>
skb
->
len
)
{
...
...
@@ -952,7 +952,7 @@ static int ibmlana_probe(struct net_device *dev)
priv
->
realirq
=
irq
;
priv
->
medium
=
medium
;
spin_lock_init
(
&
priv
->
lock
);
/* set base + irq for this device (irq not allocated so far) */
...
...
drivers/net/ibmlana.h
浏览文件 @
d7fbeba6
...
...
@@ -17,7 +17,7 @@
/* media enumeration - defined in a way that it fits onto the LAN/A's
POS registers... */
typedef
enum
{
typedef
enum
{
Media_10BaseT
,
Media_10Base5
,
Media_Unknown
,
Media_10Base2
,
Media_Count
}
ibmlana_medium
;
...
...
@@ -27,7 +27,7 @@ typedef enum {
typedef
struct
{
unsigned
int
slot
;
/* MCA-Slot-# */
struct
net_device_stats
stat
;
/* packet statistics */
int
realirq
;
/* memorizes actual IRQ, even when
int
realirq
;
/* memorizes actual IRQ, even when
currently not allocated */
ibmlana_medium
medium
;
/* physical cannector */
u32
tdastart
,
txbufstart
,
/* addresses */
...
...
@@ -41,7 +41,7 @@ typedef struct {
spinlock_t
lock
;
}
ibmlana_priv
;
/* this card uses quite a lot of I/O ports...luckily the MCA bus decodes
/* this card uses quite a lot of I/O ports...luckily the MCA bus decodes
a full 64K I/O range... */
#define IBM_LANA_IORANGE 0xa0
...
...
drivers/net/ibmveth.c
浏览文件 @
d7fbeba6
...
...
@@ -24,7 +24,7 @@
/* for use with IBM i/pSeries LPAR Linux. It utilizes the logical LAN */
/* option of the RS/6000 Platform Architechture to interface with virtual */
/* ethernet NICs that are presented to the partition by the hypervisor. */
/* */
/* */
/**************************************************************************/
/*
TODO:
...
...
@@ -79,7 +79,7 @@
#else
#define ibmveth_debug_printk_no_adapter(fmt, args...)
#define ibmveth_debug_printk(fmt, args...)
#define ibmveth_assert(expr)
#define ibmveth_assert(expr)
#endif
static
int
ibmveth_open
(
struct
net_device
*
dev
);
...
...
@@ -148,13 +148,13 @@ static int ibmveth_alloc_buffer_pool(struct ibmveth_buff_pool *pool)
{
int
i
;
pool
->
free_map
=
kmalloc
(
sizeof
(
u16
)
*
pool
->
size
,
GFP_KERNEL
);
pool
->
free_map
=
kmalloc
(
sizeof
(
u16
)
*
pool
->
size
,
GFP_KERNEL
);
if
(
!
pool
->
free_map
)
{
return
-
1
;
}
pool
->
dma_addr
=
kmalloc
(
sizeof
(
dma_addr_t
)
*
pool
->
size
,
GFP_KERNEL
);
pool
->
dma_addr
=
kmalloc
(
sizeof
(
dma_addr_t
)
*
pool
->
size
,
GFP_KERNEL
);
if
(
!
pool
->
dma_addr
)
{
kfree
(
pool
->
free_map
);
pool
->
free_map
=
NULL
;
...
...
@@ -215,7 +215,7 @@ static void ibmveth_replenish_buffer_pool(struct ibmveth_adapter *adapter, struc
free_index
=
pool
->
consumer_index
++
%
pool
->
size
;
index
=
pool
->
free_map
[
free_index
];
ibmveth_assert
(
index
!=
IBM_VETH_INVALID_MAP
);
ibmveth_assert
(
pool
->
skbuff
[
index
]
==
NULL
);
...
...
@@ -232,10 +232,10 @@ static void ibmveth_replenish_buffer_pool(struct ibmveth_adapter *adapter, struc
desc
.
desc
=
0
;
desc
.
fields
.
valid
=
1
;
desc
.
fields
.
length
=
pool
->
buff_size
;
desc
.
fields
.
address
=
dma_addr
;
desc
.
fields
.
address
=
dma_addr
;
lpar_rc
=
h_add_logical_lan_buffer
(
adapter
->
vdev
->
unit_address
,
desc
.
desc
);
if
(
lpar_rc
!=
H_SUCCESS
)
{
pool
->
free_map
[
free_index
]
=
index
;
pool
->
skbuff
[
index
]
=
NULL
;
...
...
@@ -251,13 +251,13 @@ static void ibmveth_replenish_buffer_pool(struct ibmveth_adapter *adapter, struc
adapter
->
replenish_add_buff_success
++
;
}
}
mb
();
atomic_add
(
buffers_added
,
&
(
pool
->
available
));
}
/* replenish routine */
static
void
ibmveth_replenish_task
(
struct
ibmveth_adapter
*
adapter
)
static
void
ibmveth_replenish_task
(
struct
ibmveth_adapter
*
adapter
)
{
int
i
;
...
...
@@ -265,7 +265,7 @@ static void ibmveth_replenish_task(struct ibmveth_adapter *adapter)
for
(
i
=
0
;
i
<
IbmVethNumBufferPools
;
i
++
)
if
(
adapter
->
rx_buff_pool
[
i
].
active
)
ibmveth_replenish_buffer_pool
(
adapter
,
ibmveth_replenish_buffer_pool
(
adapter
,
&
adapter
->
rx_buff_pool
[
i
]);
adapter
->
rx_no_buffer
=
*
(
u64
*
)(((
char
*
)
adapter
->
buffer_list_addr
)
+
4096
-
8
);
...
...
@@ -372,7 +372,7 @@ static void ibmveth_rxq_recycle_buffer(struct ibmveth_adapter *adapter)
desc
.
fields
.
address
=
adapter
->
rx_buff_pool
[
pool
].
dma_addr
[
index
];
lpar_rc
=
h_add_logical_lan_buffer
(
adapter
->
vdev
->
unit_address
,
desc
.
desc
);
if
(
lpar_rc
!=
H_SUCCESS
)
{
ibmveth_debug_printk
(
"h_add_logical_lan_buffer failed during recycle rc=%ld"
,
lpar_rc
);
ibmveth_remove_buffer_from_pool
(
adapter
,
adapter
->
rx_queue
.
queue_addr
[
adapter
->
rx_queue
.
index
].
correlator
);
...
...
@@ -407,7 +407,7 @@ static void ibmveth_cleanup(struct ibmveth_adapter *adapter)
}
free_page
((
unsigned
long
)
adapter
->
buffer_list_addr
);
adapter
->
buffer_list_addr
=
NULL
;
}
}
if
(
adapter
->
filter_list_addr
!=
NULL
)
{
if
(
!
dma_mapping_error
(
adapter
->
filter_list_dma
))
{
...
...
@@ -434,7 +434,7 @@ static void ibmveth_cleanup(struct ibmveth_adapter *adapter)
for
(
i
=
0
;
i
<
IbmVethNumBufferPools
;
i
++
)
if
(
adapter
->
rx_buff_pool
[
i
].
active
)
ibmveth_free_buffer_pool
(
adapter
,
ibmveth_free_buffer_pool
(
adapter
,
&
adapter
->
rx_buff_pool
[
i
]);
}
...
...
@@ -452,10 +452,10 @@ static int ibmveth_open(struct net_device *netdev)
for
(
i
=
0
;
i
<
IbmVethNumBufferPools
;
i
++
)
rxq_entries
+=
adapter
->
rx_buff_pool
[
i
].
size
;
adapter
->
buffer_list_addr
=
(
void
*
)
get_zeroed_page
(
GFP_KERNEL
);
adapter
->
filter_list_addr
=
(
void
*
)
get_zeroed_page
(
GFP_KERNEL
);
if
(
!
adapter
->
buffer_list_addr
||
!
adapter
->
filter_list_addr
)
{
ibmveth_error_printk
(
"unable to allocate filter or buffer list pages
\n
"
);
ibmveth_cleanup
(
adapter
);
...
...
@@ -503,7 +503,7 @@ static int ibmveth_open(struct net_device *netdev)
ibmveth_debug_printk
(
"filter list @ 0x%p
\n
"
,
adapter
->
filter_list_addr
);
ibmveth_debug_printk
(
"receive q @ 0x%p
\n
"
,
adapter
->
rx_queue
.
queue_addr
);
lpar_rc
=
h_register_logical_lan
(
adapter
->
vdev
->
unit_address
,
adapter
->
buffer_list_dma
,
rxq_desc
.
desc
,
...
...
@@ -518,7 +518,7 @@ static int ibmveth_open(struct net_device *netdev)
rxq_desc
.
desc
,
mac_address
);
ibmveth_cleanup
(
adapter
);
return
-
ENONET
;
return
-
ENONET
;
}
for
(
i
=
0
;
i
<
IbmVethNumBufferPools
;
i
++
)
{
...
...
@@ -557,7 +557,7 @@ static int ibmveth_close(struct net_device *netdev)
{
struct
ibmveth_adapter
*
adapter
=
netdev
->
priv
;
long
lpar_rc
;
ibmveth_debug_printk
(
"close starting
\n
"
);
if
(
!
adapter
->
pool_config
)
...
...
@@ -705,7 +705,7 @@ static int ibmveth_start_xmit(struct sk_buff *skb, struct net_device *netdev)
desc
[
5
].
desc
,
correlator
);
}
while
((
lpar_rc
==
H_BUSY
)
&&
(
retry_count
--
));
if
(
lpar_rc
!=
H_SUCCESS
&&
lpar_rc
!=
H_DROPPED
)
{
int
i
;
ibmveth_error_printk
(
"tx: h_send_logical_lan failed with rc=%ld
\n
"
,
lpar_rc
);
...
...
@@ -791,7 +791,7 @@ static int ibmveth_poll(struct net_device *netdev, int *budget)
/* more work to do - return that we are not done yet */
netdev
->
quota
-=
frames_processed
;
*
budget
-=
frames_processed
;
return
1
;
return
1
;
}
/* we think we are done - reenable interrupts, then check once more to make sure we are done */
...
...
@@ -817,7 +817,7 @@ static int ibmveth_poll(struct net_device *netdev, int *budget)
}
static
irqreturn_t
ibmveth_interrupt
(
int
irq
,
void
*
dev_instance
,
struct
pt_regs
*
regs
)
{
{
struct
net_device
*
netdev
=
dev_instance
;
struct
ibmveth_adapter
*
adapter
=
netdev
->
priv
;
unsigned
long
lpar_rc
;
...
...
@@ -873,7 +873,7 @@ static void ibmveth_set_multicast_list(struct net_device *netdev)
ibmveth_error_printk
(
"h_multicast_ctrl rc=%ld when adding an entry to the filter table
\n
"
,
lpar_rc
);
}
}
/* re-enable filtering */
lpar_rc
=
h_multicast_ctrl
(
adapter
->
vdev
->
unit_address
,
IbmVethMcastEnableFiltering
,
...
...
@@ -915,7 +915,7 @@ static int __devinit ibmveth_probe(struct vio_dev *dev, const struct vio_device_
unsigned
int
*
mcastFilterSize_p
;
ibmveth_debug_printk_no_adapter
(
"entering ibmveth_probe for UA 0x%x
\n
"
,
ibmveth_debug_printk_no_adapter
(
"entering ibmveth_probe for UA 0x%x
\n
"
,
dev
->
unit_address
);
mac_addr_p
=
(
unsigned
char
*
)
vio_get_attribute
(
dev
,
VETH_MAC_ADDR
,
0
);
...
...
@@ -924,7 +924,7 @@ static int __devinit ibmveth_probe(struct vio_dev *dev, const struct vio_device_
"attribute
\n
"
,
__FILE__
,
__LINE__
);
return
0
;
}
mcastFilterSize_p
=
(
unsigned
int
*
)
vio_get_attribute
(
dev
,
VETH_MCAST_FILTER_SIZE
,
0
);
if
(
!
mcastFilterSize_p
)
{
printk
(
KERN_ERR
"(%s:%3.3d) ERROR: Can't find "
...
...
@@ -932,7 +932,7 @@ static int __devinit ibmveth_probe(struct vio_dev *dev, const struct vio_device_
__FILE__
,
__LINE__
);
return
0
;
}
netdev
=
alloc_etherdev
(
sizeof
(
struct
ibmveth_adapter
));
if
(
!
netdev
)
...
...
@@ -948,13 +948,13 @@ static int __devinit ibmveth_probe(struct vio_dev *dev, const struct vio_device_
adapter
->
netdev
=
netdev
;
adapter
->
mcastFilterSize
=
*
mcastFilterSize_p
;
adapter
->
pool_config
=
0
;
/* Some older boxes running PHYP non-natively have an OF that
returns a 8-byte local-mac-address field (and the first
returns a 8-byte local-mac-address field (and the first
2 bytes have to be ignored) while newer boxes' OF return
a 6-byte field. Note that IEEE 1275 specifies that
a 6-byte field. Note that IEEE 1275 specifies that
local-mac-address must be a 6-byte field.
The RPA doc specifies that the first byte must be 10b, so
The RPA doc specifies that the first byte must be 10b, so
we'll just look for it to solve this 8 vs. 6 byte field issue */
if
((
*
mac_addr_p
&
0x3
)
!=
0x02
)
...
...
@@ -964,7 +964,7 @@ static int __devinit ibmveth_probe(struct vio_dev *dev, const struct vio_device_
memcpy
(
&
adapter
->
mac_addr
,
mac_addr_p
,
6
);
adapter
->
liobn
=
dev
->
iommu_table
->
it_index
;
netdev
->
irq
=
dev
->
irq
;
netdev
->
open
=
ibmveth_open
;
netdev
->
poll
=
ibmveth_poll
;
...
...
@@ -977,15 +977,15 @@ static int __devinit ibmveth_probe(struct vio_dev *dev, const struct vio_device_
netdev
->
ethtool_ops
=
&
netdev_ethtool_ops
;
netdev
->
change_mtu
=
ibmveth_change_mtu
;
SET_NETDEV_DEV
(
netdev
,
&
dev
->
dev
);
netdev
->
features
|=
NETIF_F_LLTX
;
netdev
->
features
|=
NETIF_F_LLTX
;
spin_lock_init
(
&
adapter
->
stats_lock
);
memcpy
(
&
netdev
->
dev_addr
,
&
adapter
->
mac_addr
,
netdev
->
addr_len
);
for
(
i
=
0
;
i
<
IbmVethNumBufferPools
;
i
++
)
{
struct
kobject
*
kobj
=
&
adapter
->
rx_buff_pool
[
i
].
kobj
;
ibmveth_init_buffer_pool
(
&
adapter
->
rx_buff_pool
[
i
],
i
,
pool_count
[
i
],
pool_size
[
i
],
ibmveth_init_buffer_pool
(
&
adapter
->
rx_buff_pool
[
i
],
i
,
pool_count
[
i
],
pool_size
[
i
],
pool_active
[
i
]);
kobj
->
parent
=
&
dev
->
dev
.
kobj
;
sprintf
(
kobj
->
name
,
"pool%d"
,
i
);
...
...
@@ -1047,7 +1047,7 @@ static void ibmveth_proc_unregister_driver(void)
remove_proc_entry
(
IBMVETH_PROC_DIR
,
NULL
);
}
static
void
*
ibmveth_seq_start
(
struct
seq_file
*
seq
,
loff_t
*
pos
)
static
void
*
ibmveth_seq_start
(
struct
seq_file
*
seq
,
loff_t
*
pos
)
{
if
(
*
pos
==
0
)
{
return
(
void
*
)
1
;
...
...
@@ -1062,18 +1062,18 @@ static void *ibmveth_seq_next(struct seq_file *seq, void *v, loff_t *pos)
return
NULL
;
}
static
void
ibmveth_seq_stop
(
struct
seq_file
*
seq
,
void
*
v
)
static
void
ibmveth_seq_stop
(
struct
seq_file
*
seq
,
void
*
v
)
{
}
static
int
ibmveth_seq_show
(
struct
seq_file
*
seq
,
void
*
v
)
static
int
ibmveth_seq_show
(
struct
seq_file
*
seq
,
void
*
v
)
{
struct
ibmveth_adapter
*
adapter
=
seq
->
private
;
char
*
current_mac
=
((
char
*
)
&
adapter
->
netdev
->
dev_addr
);
char
*
firmware_mac
=
((
char
*
)
&
adapter
->
mac_addr
)
;
seq_printf
(
seq
,
"%s %s
\n\n
"
,
ibmveth_driver_string
,
ibmveth_driver_version
);
seq_printf
(
seq
,
"Unit Address: 0x%x
\n
"
,
adapter
->
vdev
->
unit_address
);
seq_printf
(
seq
,
"LIOBN: 0x%lx
\n
"
,
adapter
->
liobn
);
seq_printf
(
seq
,
"Current MAC: %02X:%02X:%02X:%02X:%02X:%02X
\n
"
,
...
...
@@ -1082,7 +1082,7 @@ static int ibmveth_seq_show(struct seq_file *seq, void *v)
seq_printf
(
seq
,
"Firmware MAC: %02X:%02X:%02X:%02X:%02X:%02X
\n
"
,
firmware_mac
[
0
],
firmware_mac
[
1
],
firmware_mac
[
2
],
firmware_mac
[
3
],
firmware_mac
[
4
],
firmware_mac
[
5
]);
seq_printf
(
seq
,
"
\n
Adapter Statistics:
\n
"
);
seq_printf
(
seq
,
" TX: skbuffs linearized: %ld
\n
"
,
adapter
->
tx_linearized
);
seq_printf
(
seq
,
" multi-descriptor sends: %ld
\n
"
,
adapter
->
tx_multidesc_send
);
...
...
@@ -1094,7 +1094,7 @@ static int ibmveth_seq_show(struct seq_file *seq, void *v)
seq_printf
(
seq
,
" add buffer failures: %ld
\n
"
,
adapter
->
replenish_add_buff_failure
);
seq_printf
(
seq
,
" invalid buffers: %ld
\n
"
,
adapter
->
rx_invalid_buffer
);
seq_printf
(
seq
,
" no buffers: %ld
\n
"
,
adapter
->
rx_no_buffer
);
return
0
;
}
static
struct
seq_operations
ibmveth_seq_ops
=
{
...
...
@@ -1152,11 +1152,11 @@ static void ibmveth_proc_unregister_adapter(struct ibmveth_adapter *adapter)
}
#else
/* CONFIG_PROC_FS */
static
void
ibmveth_proc_register_adapter
(
struct
ibmveth_adapter
*
adapter
)
static
void
ibmveth_proc_register_adapter
(
struct
ibmveth_adapter
*
adapter
)
{
}
static
void
ibmveth_proc_unregister_adapter
(
struct
ibmveth_adapter
*
adapter
)
static
void
ibmveth_proc_unregister_adapter
(
struct
ibmveth_adapter
*
adapter
)
{
}
static
void
ibmveth_proc_register_driver
(
void
)
...
...
@@ -1175,7 +1175,7 @@ static struct attribute veth_size_attr;
static
ssize_t
veth_pool_show
(
struct
kobject
*
kobj
,
struct
attribute
*
attr
,
char
*
buf
)
{
struct
ibmveth_buff_pool
*
pool
=
container_of
(
kobj
,
struct
ibmveth_buff_pool
*
pool
=
container_of
(
kobj
,
struct
ibmveth_buff_pool
,
kobj
);
...
...
@@ -1191,10 +1191,10 @@ static ssize_t veth_pool_show(struct kobject * kobj,
static
ssize_t
veth_pool_store
(
struct
kobject
*
kobj
,
struct
attribute
*
attr
,
const
char
*
buf
,
size_t
count
)
{
struct
ibmveth_buff_pool
*
pool
=
container_of
(
kobj
,
struct
ibmveth_buff_pool
*
pool
=
container_of
(
kobj
,
struct
ibmveth_buff_pool
,
kobj
);
struct
net_device
*
netdev
=
struct
net_device
*
netdev
=
container_of
(
kobj
->
parent
,
struct
device
,
kobj
)
->
driver_data
;
struct
ibmveth_adapter
*
adapter
=
netdev
->
priv
;
long
value
=
simple_strtol
(
buf
,
NULL
,
10
);
...
...
@@ -1323,7 +1323,7 @@ static void __exit ibmveth_module_exit(void)
{
vio_unregister_driver
(
&
ibmveth_driver
);
ibmveth_proc_unregister_driver
();
}
}
module_init
(
ibmveth_module_init
);
module_exit
(
ibmveth_module_exit
);
drivers/net/ibmveth.h
浏览文件 @
d7fbeba6
...
...
@@ -139,7 +139,7 @@ struct ibmveth_adapter {
spinlock_t
stats_lock
;
};
struct
ibmveth_buf_desc_fields
{
struct
ibmveth_buf_desc_fields
{
u32
valid
:
1
;
u32
toggle
:
1
;
u32
reserved
:
6
;
...
...
@@ -148,7 +148,7 @@ struct ibmveth_buf_desc_fields {
};
union
ibmveth_buf_desc
{
u64
desc
;
u64
desc
;
struct
ibmveth_buf_desc_fields
fields
;
};
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录