Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
kernel_linux
提交
3e33545b
K
kernel_linux
项目概览
OpenHarmony
/
kernel_linux
上一次同步 4 年多
通知
15
Star
8
Fork
2
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kernel_linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
3e33545b
编写于
8月 23, 2007
作者:
A
Al Viro
提交者:
David S. Miller
10月 10, 2007
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
pcnet32: endianness
Signed-off-by:
N
Al Viro
<
viro@zeniv.linux.org.uk
>
Signed-off-by:
N
Jeff Garzik
<
jeff@garzik.org
>
上级
03a710ff
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
48 addition
and
50 deletion
+48
-50
drivers/net/pcnet32.c
drivers/net/pcnet32.c
+48
-50
未找到文件。
drivers/net/pcnet32.c
浏览文件 @
3e33545b
...
@@ -210,31 +210,31 @@ static int homepna[MAX_UNITS];
...
@@ -210,31 +210,31 @@ static int homepna[MAX_UNITS];
/* The PCNET32 Rx and Tx ring descriptors. */
/* The PCNET32 Rx and Tx ring descriptors. */
struct
pcnet32_rx_head
{
struct
pcnet32_rx_head
{
u
32
base
;
__le
32
base
;
s
16
buf_length
;
/* two`s complement of length */
__le
16
buf_length
;
/* two`s complement of length */
s
16
status
;
__le
16
status
;
u
32
msg_length
;
__le
32
msg_length
;
u
32
reserved
;
__le
32
reserved
;
};
};
struct
pcnet32_tx_head
{
struct
pcnet32_tx_head
{
u
32
base
;
__le
32
base
;
s
16
length
;
/* two`s complement of length */
__le
16
length
;
/* two`s complement of length */
s
16
status
;
__le
16
status
;
u
32
misc
;
__le
32
misc
;
u
32
reserved
;
__le
32
reserved
;
};
};
/* The PCNET32 32-Bit initialization block, described in databook. */
/* The PCNET32 32-Bit initialization block, described in databook. */
struct
pcnet32_init_block
{
struct
pcnet32_init_block
{
u
16
mode
;
__le
16
mode
;
u
16
tlen_rlen
;
__le
16
tlen_rlen
;
u8
phys_addr
[
6
];
u8
phys_addr
[
6
];
u
16
reserved
;
__le
16
reserved
;
u
32
filter
[
2
];
__le
32
filter
[
2
];
/* Receive and transmit ring base, along with extra bits. */
/* Receive and transmit ring base, along with extra bits. */
u
32
rx_ring
;
__le
32
rx_ring
;
u
32
tx_ring
;
__le
32
tx_ring
;
};
};
/* PCnet32 access functions */
/* PCnet32 access functions */
...
@@ -610,9 +610,9 @@ static void pcnet32_realloc_rx_ring(struct net_device *dev,
...
@@ -610,9 +610,9 @@ static void pcnet32_realloc_rx_ring(struct net_device *dev,
new_dma_addr_list
[
new
]
=
new_dma_addr_list
[
new
]
=
pci_map_single
(
lp
->
pci_dev
,
rx_skbuff
->
data
,
pci_map_single
(
lp
->
pci_dev
,
rx_skbuff
->
data
,
PKT_BUF_SZ
-
2
,
PCI_DMA_FROMDEVICE
);
PKT_BUF_SZ
-
2
,
PCI_DMA_FROMDEVICE
);
new_rx_ring
[
new
].
base
=
(
u32
)
le32_to_cpu
(
new_dma_addr_list
[
new
]);
new_rx_ring
[
new
].
base
=
cpu_to_le32
(
new_dma_addr_list
[
new
]);
new_rx_ring
[
new
].
buf_length
=
le16_to_cpu
(
2
-
PKT_BUF_SZ
);
new_rx_ring
[
new
].
buf_length
=
cpu_to_le16
(
2
-
PKT_BUF_SZ
);
new_rx_ring
[
new
].
status
=
le16_to_cpu
(
0x8000
);
new_rx_ring
[
new
].
status
=
cpu_to_le16
(
0x8000
);
}
}
/* and free any unneeded buffers */
/* and free any unneeded buffers */
for
(;
new
<
lp
->
rx_ring_size
;
new
++
)
{
for
(;
new
<
lp
->
rx_ring_size
;
new
++
)
{
...
@@ -888,7 +888,7 @@ static int pcnet32_loopback_test(struct net_device *dev, uint64_t * data1)
...
@@ -888,7 +888,7 @@ static int pcnet32_loopback_test(struct net_device *dev, uint64_t * data1)
int
x
,
i
;
/* counters */
int
x
,
i
;
/* counters */
int
numbuffs
=
4
;
/* number of TX/RX buffers and descs */
int
numbuffs
=
4
;
/* number of TX/RX buffers and descs */
u16
status
=
0x8300
;
/* TX ring status */
u16
status
=
0x8300
;
/* TX ring status */
u16
teststatus
;
/* test of ring status */
__le16
teststatus
;
/* test of ring status */
int
rc
;
/* return code */
int
rc
;
/* return code */
int
size
;
/* size of packets */
int
size
;
/* size of packets */
unsigned
char
*
packet
;
/* source packet data */
unsigned
char
*
packet
;
/* source packet data */
...
@@ -935,7 +935,7 @@ static int pcnet32_loopback_test(struct net_device *dev, uint64_t * data1)
...
@@ -935,7 +935,7 @@ static int pcnet32_loopback_test(struct net_device *dev, uint64_t * data1)
packet
=
skb
->
data
;
packet
=
skb
->
data
;
skb_put
(
skb
,
size
);
/* create space for data */
skb_put
(
skb
,
size
);
/* create space for data */
lp
->
tx_skbuff
[
x
]
=
skb
;
lp
->
tx_skbuff
[
x
]
=
skb
;
lp
->
tx_ring
[
x
].
length
=
le16_to_cpu
(
-
skb
->
len
);
lp
->
tx_ring
[
x
].
length
=
cpu_to_le16
(
-
skb
->
len
);
lp
->
tx_ring
[
x
].
misc
=
0
;
lp
->
tx_ring
[
x
].
misc
=
0
;
/* put DA and SA into the skb */
/* put DA and SA into the skb */
...
@@ -955,10 +955,9 @@ static int pcnet32_loopback_test(struct net_device *dev, uint64_t * data1)
...
@@ -955,10 +955,9 @@ static int pcnet32_loopback_test(struct net_device *dev, uint64_t * data1)
lp
->
tx_dma_addr
[
x
]
=
lp
->
tx_dma_addr
[
x
]
=
pci_map_single
(
lp
->
pci_dev
,
skb
->
data
,
skb
->
len
,
pci_map_single
(
lp
->
pci_dev
,
skb
->
data
,
skb
->
len
,
PCI_DMA_TODEVICE
);
PCI_DMA_TODEVICE
);
lp
->
tx_ring
[
x
].
base
=
lp
->
tx_ring
[
x
].
base
=
cpu_to_le32
(
lp
->
tx_dma_addr
[
x
]);
(
u32
)
le32_to_cpu
(
lp
->
tx_dma_addr
[
x
]);
wmb
();
/* Make sure owner changes after all others are visible */
wmb
();
/* Make sure owner changes after all others are visible */
lp
->
tx_ring
[
x
].
status
=
le16_to_cpu
(
status
);
lp
->
tx_ring
[
x
].
status
=
cpu_to_le16
(
status
);
}
}
}
}
...
@@ -969,7 +968,7 @@ static int pcnet32_loopback_test(struct net_device *dev, uint64_t * data1)
...
@@ -969,7 +968,7 @@ static int pcnet32_loopback_test(struct net_device *dev, uint64_t * data1)
x
=
a
->
read_csr
(
ioaddr
,
CSR15
)
&
0xfffc
;
x
=
a
->
read_csr
(
ioaddr
,
CSR15
)
&
0xfffc
;
lp
->
a
.
write_csr
(
ioaddr
,
CSR15
,
x
|
0x0044
);
lp
->
a
.
write_csr
(
ioaddr
,
CSR15
,
x
|
0x0044
);
teststatus
=
le16_to_cpu
(
0x8000
);
teststatus
=
cpu_to_le16
(
0x8000
);
lp
->
a
.
write_csr
(
ioaddr
,
CSR0
,
CSR0_START
);
/* Set STRT bit */
lp
->
a
.
write_csr
(
ioaddr
,
CSR0
,
CSR0_START
);
/* Set STRT bit */
/* Check status of descriptors */
/* Check status of descriptors */
...
@@ -1099,6 +1098,7 @@ static int pcnet32_phys_id(struct net_device *dev, u32 data)
...
@@ -1099,6 +1098,7 @@ static int pcnet32_phys_id(struct net_device *dev, u32 data)
mod_timer
(
&
lp
->
blink_timer
,
jiffies
);
mod_timer
(
&
lp
->
blink_timer
,
jiffies
);
set_current_state
(
TASK_INTERRUPTIBLE
);
set_current_state
(
TASK_INTERRUPTIBLE
);
/* AV: the limit here makes no sense whatsoever */
if
((
!
data
)
||
(
data
>
(
u32
)
(
MAX_SCHEDULE_TIMEOUT
/
HZ
)))
if
((
!
data
)
||
(
data
>
(
u32
)
(
MAX_SCHEDULE_TIMEOUT
/
HZ
)))
data
=
(
u32
)
(
MAX_SCHEDULE_TIMEOUT
/
HZ
);
data
=
(
u32
)
(
MAX_SCHEDULE_TIMEOUT
/
HZ
);
...
@@ -1224,7 +1224,7 @@ static void pcnet32_rx_entry(struct net_device *dev,
...
@@ -1224,7 +1224,7 @@ static void pcnet32_rx_entry(struct net_device *dev,
newskb
->
data
,
newskb
->
data
,
PKT_BUF_SZ
-
2
,
PKT_BUF_SZ
-
2
,
PCI_DMA_FROMDEVICE
);
PCI_DMA_FROMDEVICE
);
rxp
->
base
=
le32_to_cpu
(
lp
->
rx_dma_addr
[
entry
]);
rxp
->
base
=
cpu_to_le32
(
lp
->
rx_dma_addr
[
entry
]);
rx_in_place
=
1
;
rx_in_place
=
1
;
}
else
}
else
skb
=
NULL
;
skb
=
NULL
;
...
@@ -1283,9 +1283,9 @@ static int pcnet32_rx(struct net_device *dev, int budget)
...
@@ -1283,9 +1283,9 @@ static int pcnet32_rx(struct net_device *dev, int budget)
* The docs say that the buffer length isn't touched, but Andrew
* The docs say that the buffer length isn't touched, but Andrew
* Boyd of QNX reports that some revs of the 79C965 clear it.
* Boyd of QNX reports that some revs of the 79C965 clear it.
*/
*/
rxp
->
buf_length
=
le16_to_cpu
(
2
-
PKT_BUF_SZ
);
rxp
->
buf_length
=
cpu_to_le16
(
2
-
PKT_BUF_SZ
);
wmb
();
/* Make sure owner changes after others are visible */
wmb
();
/* Make sure owner changes after others are visible */
rxp
->
status
=
le16_to_cpu
(
0x8000
);
rxp
->
status
=
cpu_to_le16
(
0x8000
);
entry
=
(
++
lp
->
cur_rx
)
&
lp
->
rx_mod_mask
;
entry
=
(
++
lp
->
cur_rx
)
&
lp
->
rx_mod_mask
;
rxp
=
&
lp
->
rx_ring
[
entry
];
rxp
=
&
lp
->
rx_ring
[
entry
];
}
}
...
@@ -1875,15 +1875,15 @@ pcnet32_probe1(unsigned long ioaddr, int shared, struct pci_dev *pdev)
...
@@ -1875,15 +1875,15 @@ pcnet32_probe1(unsigned long ioaddr, int shared, struct pci_dev *pdev)
&&
dev
->
dev_addr
[
2
]
==
0x75
)
&&
dev
->
dev_addr
[
2
]
==
0x75
)
lp
->
options
=
PCNET32_PORT_FD
|
PCNET32_PORT_GPSI
;
lp
->
options
=
PCNET32_PORT_FD
|
PCNET32_PORT_GPSI
;
lp
->
init_block
->
mode
=
le16_to_cpu
(
0x0003
);
/* Disable Rx and Tx. */
lp
->
init_block
->
mode
=
cpu_to_le16
(
0x0003
);
/* Disable Rx and Tx. */
lp
->
init_block
->
tlen_rlen
=
lp
->
init_block
->
tlen_rlen
=
le16_to_cpu
(
lp
->
tx_len_bits
|
lp
->
rx_len_bits
);
cpu_to_le16
(
lp
->
tx_len_bits
|
lp
->
rx_len_bits
);
for
(
i
=
0
;
i
<
6
;
i
++
)
for
(
i
=
0
;
i
<
6
;
i
++
)
lp
->
init_block
->
phys_addr
[
i
]
=
dev
->
dev_addr
[
i
];
lp
->
init_block
->
phys_addr
[
i
]
=
dev
->
dev_addr
[
i
];
lp
->
init_block
->
filter
[
0
]
=
0x00000000
;
lp
->
init_block
->
filter
[
0
]
=
0x00000000
;
lp
->
init_block
->
filter
[
1
]
=
0x00000000
;
lp
->
init_block
->
filter
[
1
]
=
0x00000000
;
lp
->
init_block
->
rx_ring
=
(
u32
)
le32_to_cpu
(
lp
->
rx_ring_dma_addr
);
lp
->
init_block
->
rx_ring
=
cpu_to_le32
(
lp
->
rx_ring_dma_addr
);
lp
->
init_block
->
tx_ring
=
(
u32
)
le32_to_cpu
(
lp
->
tx_ring_dma_addr
);
lp
->
init_block
->
tx_ring
=
cpu_to_le32
(
lp
->
tx_ring_dma_addr
);
/* switch pcnet32 to 32bit mode */
/* switch pcnet32 to 32bit mode */
a
->
write_bcr
(
ioaddr
,
20
,
2
);
a
->
write_bcr
(
ioaddr
,
20
,
2
);
...
@@ -2274,7 +2274,7 @@ static int pcnet32_open(struct net_device *dev)
...
@@ -2274,7 +2274,7 @@ static int pcnet32_open(struct net_device *dev)
#endif
#endif
lp
->
init_block
->
mode
=
lp
->
init_block
->
mode
=
le16_to_cpu
((
lp
->
options
&
PCNET32_PORT_PORTSEL
)
<<
7
);
cpu_to_le16
((
lp
->
options
&
PCNET32_PORT_PORTSEL
)
<<
7
);
pcnet32_load_multicast
(
dev
);
pcnet32_load_multicast
(
dev
);
if
(
pcnet32_init_ring
(
dev
))
{
if
(
pcnet32_init_ring
(
dev
))
{
...
@@ -2401,10 +2401,10 @@ static int pcnet32_init_ring(struct net_device *dev)
...
@@ -2401,10 +2401,10 @@ static int pcnet32_init_ring(struct net_device *dev)
lp
->
rx_dma_addr
[
i
]
=
lp
->
rx_dma_addr
[
i
]
=
pci_map_single
(
lp
->
pci_dev
,
rx_skbuff
->
data
,
pci_map_single
(
lp
->
pci_dev
,
rx_skbuff
->
data
,
PKT_BUF_SZ
-
2
,
PCI_DMA_FROMDEVICE
);
PKT_BUF_SZ
-
2
,
PCI_DMA_FROMDEVICE
);
lp
->
rx_ring
[
i
].
base
=
(
u32
)
le32_to_cpu
(
lp
->
rx_dma_addr
[
i
]);
lp
->
rx_ring
[
i
].
base
=
cpu_to_le32
(
lp
->
rx_dma_addr
[
i
]);
lp
->
rx_ring
[
i
].
buf_length
=
le16_to_cpu
(
2
-
PKT_BUF_SZ
);
lp
->
rx_ring
[
i
].
buf_length
=
cpu_to_le16
(
2
-
PKT_BUF_SZ
);
wmb
();
/* Make sure owner changes after all others are visible */
wmb
();
/* Make sure owner changes after all others are visible */
lp
->
rx_ring
[
i
].
status
=
le16_to_cpu
(
0x8000
);
lp
->
rx_ring
[
i
].
status
=
cpu_to_le16
(
0x8000
);
}
}
/* The Tx buffer address is filled in as needed, but we do need to clear
/* The Tx buffer address is filled in as needed, but we do need to clear
* the upper ownership bit. */
* the upper ownership bit. */
...
@@ -2416,11 +2416,11 @@ static int pcnet32_init_ring(struct net_device *dev)
...
@@ -2416,11 +2416,11 @@ static int pcnet32_init_ring(struct net_device *dev)
}
}
lp
->
init_block
->
tlen_rlen
=
lp
->
init_block
->
tlen_rlen
=
le16_to_cpu
(
lp
->
tx_len_bits
|
lp
->
rx_len_bits
);
cpu_to_le16
(
lp
->
tx_len_bits
|
lp
->
rx_len_bits
);
for
(
i
=
0
;
i
<
6
;
i
++
)
for
(
i
=
0
;
i
<
6
;
i
++
)
lp
->
init_block
->
phys_addr
[
i
]
=
dev
->
dev_addr
[
i
];
lp
->
init_block
->
phys_addr
[
i
]
=
dev
->
dev_addr
[
i
];
lp
->
init_block
->
rx_ring
=
(
u32
)
le32_to_cpu
(
lp
->
rx_ring_dma_addr
);
lp
->
init_block
->
rx_ring
=
cpu_to_le32
(
lp
->
rx_ring_dma_addr
);
lp
->
init_block
->
tx_ring
=
(
u32
)
le32_to_cpu
(
lp
->
tx_ring_dma_addr
);
lp
->
init_block
->
tx_ring
=
cpu_to_le32
(
lp
->
tx_ring_dma_addr
);
wmb
();
/* Make sure all changes are visible */
wmb
();
/* Make sure all changes are visible */
return
0
;
return
0
;
}
}
...
@@ -2529,16 +2529,16 @@ static int pcnet32_start_xmit(struct sk_buff *skb, struct net_device *dev)
...
@@ -2529,16 +2529,16 @@ static int pcnet32_start_xmit(struct sk_buff *skb, struct net_device *dev)
/* Caution: the write order is important here, set the status
/* Caution: the write order is important here, set the status
* with the "ownership" bits last. */
* with the "ownership" bits last. */
lp
->
tx_ring
[
entry
].
length
=
le16_to_cpu
(
-
skb
->
len
);
lp
->
tx_ring
[
entry
].
length
=
cpu_to_le16
(
-
skb
->
len
);
lp
->
tx_ring
[
entry
].
misc
=
0x00000000
;
lp
->
tx_ring
[
entry
].
misc
=
0x00000000
;
lp
->
tx_skbuff
[
entry
]
=
skb
;
lp
->
tx_skbuff
[
entry
]
=
skb
;
lp
->
tx_dma_addr
[
entry
]
=
lp
->
tx_dma_addr
[
entry
]
=
pci_map_single
(
lp
->
pci_dev
,
skb
->
data
,
skb
->
len
,
PCI_DMA_TODEVICE
);
pci_map_single
(
lp
->
pci_dev
,
skb
->
data
,
skb
->
len
,
PCI_DMA_TODEVICE
);
lp
->
tx_ring
[
entry
].
base
=
(
u32
)
le32_to_cpu
(
lp
->
tx_dma_addr
[
entry
]);
lp
->
tx_ring
[
entry
].
base
=
cpu_to_le32
(
lp
->
tx_dma_addr
[
entry
]);
wmb
();
/* Make sure owner changes after all others are visible */
wmb
();
/* Make sure owner changes after all others are visible */
lp
->
tx_ring
[
entry
].
status
=
le16_to_cpu
(
status
);
lp
->
tx_ring
[
entry
].
status
=
cpu_to_le16
(
status
);
lp
->
cur_tx
++
;
lp
->
cur_tx
++
;
lp
->
stats
.
tx_bytes
+=
skb
->
len
;
lp
->
stats
.
tx_bytes
+=
skb
->
len
;
...
@@ -2709,7 +2709,7 @@ static void pcnet32_load_multicast(struct net_device *dev)
...
@@ -2709,7 +2709,7 @@ static void pcnet32_load_multicast(struct net_device *dev)
{
{
struct
pcnet32_private
*
lp
=
netdev_priv
(
dev
);
struct
pcnet32_private
*
lp
=
netdev_priv
(
dev
);
volatile
struct
pcnet32_init_block
*
ib
=
lp
->
init_block
;
volatile
struct
pcnet32_init_block
*
ib
=
lp
->
init_block
;
volatile
u16
*
mcast_table
=
(
u16
*
)
&
ib
->
filter
;
volatile
__le16
*
mcast_table
=
(
__le16
*
)
ib
->
filter
;
struct
dev_mc_list
*
dmi
=
dev
->
mc_list
;
struct
dev_mc_list
*
dmi
=
dev
->
mc_list
;
unsigned
long
ioaddr
=
dev
->
base_addr
;
unsigned
long
ioaddr
=
dev
->
base_addr
;
char
*
addrs
;
char
*
addrs
;
...
@@ -2718,8 +2718,8 @@ static void pcnet32_load_multicast(struct net_device *dev)
...
@@ -2718,8 +2718,8 @@ static void pcnet32_load_multicast(struct net_device *dev)
/* set all multicast bits */
/* set all multicast bits */
if
(
dev
->
flags
&
IFF_ALLMULTI
)
{
if
(
dev
->
flags
&
IFF_ALLMULTI
)
{
ib
->
filter
[
0
]
=
0xffffffff
;
ib
->
filter
[
0
]
=
cpu_to_le32
(
~
0U
)
;
ib
->
filter
[
1
]
=
0xffffffff
;
ib
->
filter
[
1
]
=
cpu_to_le32
(
~
0U
)
;
lp
->
a
.
write_csr
(
ioaddr
,
PCNET32_MC_FILTER
,
0xffff
);
lp
->
a
.
write_csr
(
ioaddr
,
PCNET32_MC_FILTER
,
0xffff
);
lp
->
a
.
write_csr
(
ioaddr
,
PCNET32_MC_FILTER
+
1
,
0xffff
);
lp
->
a
.
write_csr
(
ioaddr
,
PCNET32_MC_FILTER
+
1
,
0xffff
);
lp
->
a
.
write_csr
(
ioaddr
,
PCNET32_MC_FILTER
+
2
,
0xffff
);
lp
->
a
.
write_csr
(
ioaddr
,
PCNET32_MC_FILTER
+
2
,
0xffff
);
...
@@ -2741,9 +2741,7 @@ static void pcnet32_load_multicast(struct net_device *dev)
...
@@ -2741,9 +2741,7 @@ static void pcnet32_load_multicast(struct net_device *dev)
crc
=
ether_crc_le
(
6
,
addrs
);
crc
=
ether_crc_le
(
6
,
addrs
);
crc
=
crc
>>
26
;
crc
=
crc
>>
26
;
mcast_table
[
crc
>>
4
]
=
mcast_table
[
crc
>>
4
]
|=
cpu_to_le16
(
1
<<
(
crc
&
0xf
));
le16_to_cpu
(
le16_to_cpu
(
mcast_table
[
crc
>>
4
])
|
(
1
<<
(
crc
&
0xf
)));
}
}
for
(
i
=
0
;
i
<
4
;
i
++
)
for
(
i
=
0
;
i
<
4
;
i
++
)
lp
->
a
.
write_csr
(
ioaddr
,
PCNET32_MC_FILTER
+
i
,
lp
->
a
.
write_csr
(
ioaddr
,
PCNET32_MC_FILTER
+
i
,
...
@@ -2769,12 +2767,12 @@ static void pcnet32_set_multicast_list(struct net_device *dev)
...
@@ -2769,12 +2767,12 @@ static void pcnet32_set_multicast_list(struct net_device *dev)
printk
(
KERN_INFO
"%s: Promiscuous mode enabled.
\n
"
,
printk
(
KERN_INFO
"%s: Promiscuous mode enabled.
\n
"
,
dev
->
name
);
dev
->
name
);
lp
->
init_block
->
mode
=
lp
->
init_block
->
mode
=
le16_to_cpu
(
0x8000
|
(
lp
->
options
&
PCNET32_PORT_PORTSEL
)
<<
cpu_to_le16
(
0x8000
|
(
lp
->
options
&
PCNET32_PORT_PORTSEL
)
<<
7
);
7
);
lp
->
a
.
write_csr
(
ioaddr
,
CSR15
,
csr15
|
0x8000
);
lp
->
a
.
write_csr
(
ioaddr
,
CSR15
,
csr15
|
0x8000
);
}
else
{
}
else
{
lp
->
init_block
->
mode
=
lp
->
init_block
->
mode
=
le16_to_cpu
((
lp
->
options
&
PCNET32_PORT_PORTSEL
)
<<
7
);
cpu_to_le16
((
lp
->
options
&
PCNET32_PORT_PORTSEL
)
<<
7
);
lp
->
a
.
write_csr
(
ioaddr
,
CSR15
,
csr15
&
0x7fff
);
lp
->
a
.
write_csr
(
ioaddr
,
CSR15
,
csr15
&
0x7fff
);
pcnet32_load_multicast
(
dev
);
pcnet32_load_multicast
(
dev
);
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录