Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
022dc70e
Commit
022dc70e
authored
Jun 25, 2003
by
Ralf Bächle
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[netdrvr] update ioc3_eth
parent
f0e373dc
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
8 additions
and
97 deletions
+8
-97
drivers/net/Makefile.lib
drivers/net/Makefile.lib
+1
-0
drivers/net/ioc3-eth.c
drivers/net/ioc3-eth.c
+7
-97
No files found.
drivers/net/Makefile.lib
View file @
022dc70e
...
...
@@ -24,6 +24,7 @@ obj-$(CONFIG_PCMCIA_FMVJ18X) += crc32.o
obj-$(CONFIG_PCMCIA_SMC91C92)
+=
crc32.o
obj-$(CONFIG_PCMCIA_XIRTULIP)
+=
crc32.o
obj-$(CONFIG_PCNET32)
+=
crc32.o
obj-$(CONFIG_SGI_IOC3_ETH)
+=
crc32.o
obj-$(CONFIG_SIS900)
+=
crc32.o
obj-$(CONFIG_SMC9194)
+=
crc32.o
obj-$(CONFIG_ADAPTEC_STARFIRE)
+=
crc32.o
...
...
drivers/net/ioc3-eth.c
View file @
022dc70e
...
...
@@ -5,7 +5,7 @@
*
* Driver for SGI's IOC3 based Ethernet cards as found in the PCI card.
*
* Copyright (C) 1999, 2000, 2001 Ralf Baechle
* Copyright (C) 1999, 2000, 2001
, 2003
Ralf Baechle
* Copyright (C) 1995, 1999, 2000, 2001 by Silicon Graphics, Inc.
*
* References:
...
...
@@ -36,7 +36,7 @@
#include <linux/pci.h>
#include <linux/crc32.h>
#ifdef CONFIG_SERIAL
#ifdef CONFIG_SERIAL
_8250
#include <linux/serial.h>
#include <asm/serial.h>
#define IOC3_BAUD (22000000 / (3*16))
...
...
@@ -377,82 +377,6 @@ static void ioc3_get_eaddr_nic(struct ioc3_private *ip)
ip
->
dev
->
dev_addr
[
i
-
2
]
=
nic
[
i
];
}
#if defined(CONFIG_IA64_SGI_SN1) || defined(CONFIG_IA64_SGI_SN2)
/*
* Get the ether-address on SN1 nodes
*/
static
void
ioc3_get_eaddr_sn
(
struct
ioc3_private
*
ip
)
{
int
ibrick_mac_addr_get
(
nasid_t
,
char
*
);
struct
ioc3
*
ioc3
=
ip
->
regs
;
nasid_t
nasid_of_ioc3
;
char
io7eaddr
[
20
];
long
mac
;
int
err_val
;
/*
* err_val = ibrick_mac_addr_get(get_nasid(), io7eaddr );
*
* BAD!! The above call uses get_nasid() and assumes that
* the ioc3 pointed to by struct ioc3 is hooked up to the
* cbrick that we're running on. The proper way to make this call
* is to figure out which nasid the ioc3 is connected to
* and use that to call ibrick_mac_addr_get. Below is
* a hack to do just that.
*/
/*
* Get the nasid of the ioc3 from the ioc3's base addr.
* FIXME: the 8 at the end assumes we're in memory mode,
* not node mode (for that, we'd change it to a 9).
* Is there a call to extract this info from a physical
* addr somewhere in an sn header file already? If so,
* we should probably use that, or restructure this routine
* to use pci_dev and generic numa nodeid getting stuff.
*/
nasid_of_ioc3
=
(((
unsigned
long
)
ioc3
>>
33
)
&
~
(
-
1
<<
8
));
err_val
=
ibrick_mac_addr_get
(
nasid_of_ioc3
,
io7eaddr
);
if
(
err_val
)
{
/* Couldn't read the eeprom; try OSLoadOptions. */
printk
(
"WARNING: ibrick_mac_addr_get failed: %d
\n
"
,
err_val
);
/* this is where we hardwire the mac address
* 1st ibrick had 08:00:69:11:34:75
* 2nd ibrick had 08:00:69:11:35:35
*
* Eagan Machines:
* mankato1 08:00:69:11:BE:95
* warroad 08:00:69:11:bd:60
* duron 08:00:69:11:34:60
*
* an easy way to get the mac address is to hook
* up an ip35, then from L1 do 'cti serial'
* and then look for MAC line XXX THIS DOESN"T QUITE WORK!!
*/
printk
(
"ioc3_get_eaddr: setting ethernet address to:
\n
-----> "
);
ip
->
dev
->
dev_addr
[
0
]
=
0x8
;
ip
->
dev
->
dev_addr
[
1
]
=
0x0
;
ip
->
dev
->
dev_addr
[
2
]
=
0x69
;
ip
->
dev
->
dev_addr
[
3
]
=
0x11
;
ip
->
dev
->
dev_addr
[
4
]
=
0x34
;
ip
->
dev
->
dev_addr
[
5
]
=
0x60
;
}
else
{
long
simple_strtol
(
const
char
*
,
char
**
,
unsigned
int
);
mac
=
simple_strtol
(
io7eaddr
,
(
char
**
)
0
,
16
);
ip
->
dev
->
dev_addr
[
0
]
=
(
mac
>>
40
)
&
0xff
;
ip
->
dev
->
dev_addr
[
1
]
=
(
mac
>>
32
)
&
0xff
;
ip
->
dev
->
dev_addr
[
2
]
=
(
mac
>>
24
)
&
0xff
;
ip
->
dev
->
dev_addr
[
3
]
=
(
mac
>>
16
)
&
0xff
;
ip
->
dev
->
dev_addr
[
4
]
=
(
mac
>>
8
)
&
0xff
;
ip
->
dev
->
dev_addr
[
5
]
=
mac
&
0xff
;
}
}
#endif
/*
* Ok, this is hosed by design. It's necessary to know what machine the
* NIC is in in order to know how to read the NIC address. We also have
...
...
@@ -460,30 +384,15 @@ static void ioc3_get_eaddr_sn(struct ioc3_private *ip)
*/
static
void
ioc3_get_eaddr
(
struct
ioc3_private
*
ip
)
{
void
(
*
do_get_eaddr
)(
struct
ioc3_private
*
ip
)
=
NULL
;
int
i
;
/*
* We should also use this code for PCI cards, no matter what host
* machine but how to know that we're a PCI card?
*/
#ifdef CONFIG_SGI_IP27
do_get_eaddr
=
ioc3_get_eaddr_nic
;
#endif
#if defined(CONFIG_IA64_SGI_SN1) || defined(CONFIG_IA64_SGI_SN2)
do_get_eaddr
=
ioc3_get_eaddr_sn
;
#endif
if
(
!
do_get_eaddr
)
{
printk
(
KERN_ERR
"Don't know how to read MAC address of this "
"IOC3 NIC
\n
"
);
return
;
}
ioc3_get_eaddr_nic
(
ip
);
printk
(
"Ethernet address is "
);
for
(
i
=
0
;
i
<
6
;
i
++
)
{
printk
(
"%02x"
,
ip
->
dev
->
dev_addr
[
i
]);
if
(
i
<
7
)
if
(
i
<
5
)
printk
(
":"
);
}
printk
(
".
\n
"
);
...
...
@@ -588,7 +497,7 @@ ioc3_rx(struct ioc3_private *ip)
ip
->
stats
.
rx_frame_errors
++
;
next:
ip
->
rx_skbs
[
n_entry
]
=
new_skb
;
rxr
[
n_entry
]
=
cpu_to_be
32
((
0xa5UL
<<
56
)
|
rxr
[
n_entry
]
=
cpu_to_be
64
((
0xa5UL
<<
56
)
|
((
unsigned
long
)
rxb
&
TO_PHYS_MASK
));
rxb
->
w0
=
0
;
/* Clear valid flag */
n_entry
=
(
n_entry
+
1
)
&
511
;
/* Update erpir */
...
...
@@ -1550,7 +1459,7 @@ static int __devinit ioc3_probe(struct pci_dev *pdev,
}
ip
->
regs
=
ioc3
;
#ifdef CONFIG_SERIAL
#ifdef CONFIG_SERIAL
_8250
ioc3_serial_probe
(
pdev
,
ioc3
);
#endif
...
...
@@ -1613,6 +1522,7 @@ static void __devexit ioc3_remove_one (struct pci_dev *pdev)
struct
ioc3_private
*
ip
=
dev
->
priv
;
struct
ioc3
*
ioc3
=
ip
->
regs
;
unregister_netdev
(
dev
);
iounmap
(
ioc3
);
pci_release_regions
(
pdev
);
kfree
(
dev
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment