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
Kirill Smelkov
linux
Commits
d15fc4f6
Commit
d15fc4f6
authored
Jul 27, 2004
by
Jeff Garzik
Browse files
Options
Browse Files
Download
Plain Diff
Merge pobox.com:/spare/repo/netdev-2.6/acenic
into pobox.com:/spare/repo/netdev-2.6/ALL
parents
ebb4efde
c34150c3
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
75 additions
and
83 deletions
+75
-83
drivers/net/acenic.c
drivers/net/acenic.c
+74
-82
drivers/net/acenic.h
drivers/net/acenic.h
+1
-1
No files found.
drivers/net/acenic.c
View file @
d15fc4f6
...
...
@@ -52,6 +52,7 @@
#include <linux/config.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/version.h>
#include <linux/types.h>
#include <linux/errno.h>
...
...
@@ -425,13 +426,15 @@ static int dis_pci_mem_inval[ACE_MAX_MOD_PARMS] = {1, 1, 1, 1, 1, 1, 1, 1};
MODULE_AUTHOR
(
"Jes Sorensen <jes@trained-monkey.org>"
);
MODULE_LICENSE
(
"GPL"
);
MODULE_DESCRIPTION
(
"AceNIC/3C985/GA620 Gigabit Ethernet driver"
);
MODULE_PARM
(
link
,
"1-"
__MODULE_STRING
(
8
)
"i"
);
MODULE_PARM
(
trace
,
"1-"
__MODULE_STRING
(
8
)
"i"
);
MODULE_PARM
(
tx_coal_tick
,
"1-"
__MODULE_STRING
(
8
)
"i"
);
MODULE_PARM
(
max_tx_desc
,
"1-"
__MODULE_STRING
(
8
)
"i"
);
MODULE_PARM
(
rx_coal_tick
,
"1-"
__MODULE_STRING
(
8
)
"i"
);
MODULE_PARM
(
max_rx_desc
,
"1-"
__MODULE_STRING
(
8
)
"i"
);
MODULE_PARM
(
tx_ratio
,
"1-"
__MODULE_STRING
(
8
)
"i"
);
static
int
num_params
;
module_param_array
(
link
,
int
,
num_params
,
0
);
module_param_array
(
trace
,
int
,
num_params
,
0
);
module_param_array
(
tx_coal_tick
,
int
,
num_params
,
0
);
module_param_array
(
max_tx_desc
,
int
,
num_params
,
0
);
module_param_array
(
rx_coal_tick
,
int
,
num_params
,
0
);
module_param_array
(
max_rx_desc
,
int
,
num_params
,
0
);
module_param_array
(
tx_ratio
,
int
,
num_params
,
0
);
MODULE_PARM_DESC
(
link
,
"AceNIC/3C985/NetGear link state"
);
MODULE_PARM_DESC
(
trace
,
"AceNIC/3C985/NetGear firmware trace level"
);
MODULE_PARM_DESC
(
tx_coal_tick
,
"AceNIC/3C985/GA620 max clock ticks to wait from first tx descriptor arrives"
);
...
...
@@ -474,6 +477,7 @@ static int __devinit acenic_probe_one(struct pci_dev *pdev,
ap
=
dev
->
priv
;
ap
->
pdev
=
pdev
;
ap
->
name
=
pci_name
(
pdev
);
dev
->
features
|=
NETIF_F_SG
|
NETIF_F_IP_CSUM
;
#if ACENIC_DO_VLAN
...
...
@@ -516,7 +520,7 @@ static int __devinit acenic_probe_one(struct pci_dev *pdev,
if
(
!
(
ap
->
pci_command
&
PCI_COMMAND_MEMORY
))
{
printk
(
KERN_INFO
"%s: Enabling PCI Memory Mapped "
"access - was not enabled by BIOS/Firmware
\n
"
,
dev
->
name
);
ap
->
name
);
ap
->
pci_command
=
ap
->
pci_command
|
PCI_COMMAND_MEMORY
;
pci_write_config_word
(
ap
->
pdev
,
PCI_COMMAND
,
ap
->
pci_command
);
...
...
@@ -539,55 +543,40 @@ static int __devinit acenic_probe_one(struct pci_dev *pdev,
if
(
!
ap
->
regs
)
{
printk
(
KERN_ERR
"%s: Unable to map I/O register, "
"AceNIC %i will be disabled.
\n
"
,
dev
->
name
,
boards_found
);
ap
->
name
,
boards_found
);
goto
fail_free_netdev
;
}
switch
(
pdev
->
vendor
)
{
case
PCI_VENDOR_ID_ALTEON
:
if
(
pdev
->
device
==
PCI_DEVICE_ID_FARALLON_PN9100T
)
{
strncpy
(
ap
->
name
,
"Farallon PN9100-T "
"Gigabit Ethernet"
,
sizeof
(
ap
->
name
));
printk
(
KERN_INFO
"%s: Farallon PN9100-T "
,
dev
->
name
);
ap
->
name
);
}
else
{
strncpy
(
ap
->
name
,
"AceNIC Gigabit Ethernet"
,
sizeof
(
ap
->
name
));
printk
(
KERN_INFO
"%s: Alteon AceNIC "
,
dev
->
name
);
ap
->
name
);
}
break
;
case
PCI_VENDOR_ID_3COM
:
strncpy
(
ap
->
name
,
"3Com 3C985 Gigabit Ethernet"
,
sizeof
(
ap
->
name
));
printk
(
KERN_INFO
"%s: 3Com 3C985 "
,
dev
->
name
);
printk
(
KERN_INFO
"%s: 3Com 3C985 "
,
ap
->
name
);
break
;
case
PCI_VENDOR_ID_NETGEAR
:
strncpy
(
ap
->
name
,
"NetGear GA620 Gigabit Ethernet"
,
sizeof
(
ap
->
name
));
printk
(
KERN_INFO
"%s: NetGear GA620 "
,
dev
->
name
);
printk
(
KERN_INFO
"%s: NetGear GA620 "
,
ap
->
name
);
break
;
case
PCI_VENDOR_ID_DEC
:
if
(
pdev
->
device
==
PCI_DEVICE_ID_FARALLON_PN9000SX
)
{
strncpy
(
ap
->
name
,
"Farallon PN9000-SX "
"Gigabit Ethernet"
,
sizeof
(
ap
->
name
));
printk
(
KERN_INFO
"%s: Farallon PN9000-SX "
,
dev
->
name
);
ap
->
name
);
break
;
}
case
PCI_VENDOR_ID_SGI
:
strncpy
(
ap
->
name
,
"SGI AceNIC Gigabit Ethernet"
,
sizeof
(
ap
->
name
));
printk
(
KERN_INFO
"%s: SGI AceNIC "
,
dev
->
name
);
printk
(
KERN_INFO
"%s: SGI AceNIC "
,
ap
->
name
);
break
;
default:
strncpy
(
ap
->
name
,
"Unknown AceNIC based Gigabit "
"Ethernet"
,
sizeof
(
ap
->
name
));
printk
(
KERN_INFO
"%s: Unknown AceNIC "
,
dev
->
name
);
printk
(
KERN_INFO
"%s: Unknown AceNIC "
,
ap
->
name
);
break
;
}
ap
->
name
[
sizeof
(
ap
->
name
)
-
1
]
=
'\0'
;
printk
(
"Gigabit Ethernet at 0x%08lx, "
,
dev
->
base_addr
);
#ifdef __sparc__
printk
(
"irq %s
\n
"
,
__irq_itoa
(
pdev
->
irq
));
...
...
@@ -622,6 +611,7 @@ static int __devinit acenic_probe_one(struct pci_dev *pdev,
printk
(
KERN_ERR
"acenic: device registration failed
\n
"
);
goto
fail_uninit
;
}
ap
->
name
=
dev
->
name
;
if
(
ap
->
pci_using_dac
)
dev
->
features
|=
NETIF_F_HIGHDMA
;
...
...
@@ -641,7 +631,7 @@ static int __devinit acenic_probe_one(struct pci_dev *pdev,
static
void
__devexit
acenic_remove_one
(
struct
pci_dev
*
pdev
)
{
struct
net_device
*
dev
=
pci_get_drvdata
(
pdev
);
struct
ace_private
*
ap
=
dev
->
priv
;
struct
ace_private
*
ap
=
netdev_priv
(
dev
)
;
struct
ace_regs
*
regs
=
ap
->
regs
;
short
i
;
...
...
@@ -752,7 +742,7 @@ module_exit(acenic_exit);
static
void
ace_free_descriptors
(
struct
net_device
*
dev
)
{
struct
ace_private
*
ap
=
dev
->
priv
;
struct
ace_private
*
ap
=
netdev_priv
(
dev
)
;
int
size
;
if
(
ap
->
rx_std_ring
!=
NULL
)
{
...
...
@@ -802,7 +792,7 @@ static void ace_free_descriptors(struct net_device *dev)
static
int
ace_allocate_descriptors
(
struct
net_device
*
dev
)
{
struct
ace_private
*
ap
=
dev
->
priv
;
struct
ace_private
*
ap
=
netdev_priv
(
dev
)
;
int
size
;
size
=
(
sizeof
(
struct
rx_desc
)
*
...
...
@@ -873,7 +863,7 @@ static void ace_init_cleanup(struct net_device *dev)
{
struct
ace_private
*
ap
;
ap
=
dev
->
priv
;
ap
=
netdev_priv
(
dev
)
;
ace_free_descriptors
(
dev
);
...
...
@@ -921,7 +911,7 @@ static int __init ace_init(struct net_device *dev)
short
i
;
unsigned
char
cache_size
;
ap
=
dev
->
priv
;
ap
=
netdev_priv
(
dev
)
;
regs
=
ap
->
regs
;
board_idx
=
ap
->
board_idx
;
...
...
@@ -1387,7 +1377,7 @@ static int __init ace_init(struct net_device *dev)
if
(
board_idx
==
BOARD_IDX_OVERFLOW
)
{
printk
(
KERN_WARNING
"%s: more than %i NICs detected, "
"ignoring module parameters!
\n
"
,
dev
->
name
,
ACE_MAX_MOD_PARMS
);
ap
->
name
,
ACE_MAX_MOD_PARMS
);
}
else
if
(
board_idx
>=
0
)
{
if
(
tx_coal_tick
[
board_idx
])
writel
(
tx_coal_tick
[
board_idx
],
...
...
@@ -1426,7 +1416,7 @@ static int __init ace_init(struct net_device *dev)
if
(
option
&
0x01
)
{
printk
(
KERN_INFO
"%s: Setting half duplex link
\n
"
,
dev
->
name
);
ap
->
name
);
tmp
&=
~
LNK_FULL_DUPLEX
;
}
if
(
option
&
0x02
)
...
...
@@ -1439,7 +1429,7 @@ static int __init ace_init(struct net_device *dev)
tmp
|=
LNK_1000MB
;
if
((
option
&
0x70
)
==
0
)
{
printk
(
KERN_WARNING
"%s: No media speed specified, "
"forcing auto negotiation
\n
"
,
dev
->
name
);
"forcing auto negotiation
\n
"
,
ap
->
name
);
tmp
|=
LNK_NEGOTIATE
|
LNK_1000MB
|
LNK_100MB
|
LNK_10MB
;
}
...
...
@@ -1447,12 +1437,12 @@ static int __init ace_init(struct net_device *dev)
tmp
|=
LNK_NEG_FCTL
;
else
printk
(
KERN_INFO
"%s: Disabling flow control "
"negotiation
\n
"
,
dev
->
name
);
"negotiation
\n
"
,
ap
->
name
);
if
(
option
&
0x200
)
tmp
|=
LNK_RX_FLOW_CTL_Y
;
if
((
option
&
0x400
)
&&
(
ap
->
version
>=
2
))
{
printk
(
KERN_INFO
"%s: Enabling TX flow control
\n
"
,
dev
->
name
);
ap
->
name
);
tmp
|=
LNK_TX_FLOW_CTL_Y
;
}
}
...
...
@@ -1509,7 +1499,7 @@ static int __init ace_init(struct net_device *dev)
cpu_relax
();
if
(
!
ap
->
fw_running
)
{
printk
(
KERN_ERR
"%s: Firmware NOT running!
\n
"
,
dev
->
name
);
printk
(
KERN_ERR
"%s: Firmware NOT running!
\n
"
,
ap
->
name
);
ace_dump_trace
(
ap
);
writel
(
readl
(
&
regs
->
CpuCtrl
)
|
CPU_HALT
,
&
regs
->
CpuCtrl
);
...
...
@@ -1542,13 +1532,13 @@ static int __init ace_init(struct net_device *dev)
ace_load_std_rx_ring
(
ap
,
RX_RING_SIZE
);
else
printk
(
KERN_ERR
"%s: Someone is busy refilling the RX ring
\n
"
,
dev
->
name
);
ap
->
name
);
if
(
ap
->
version
>=
2
)
{
if
(
!
test_and_set_bit
(
0
,
&
ap
->
mini_refill_busy
))
ace_load_mini_rx_ring
(
ap
,
RX_MINI_SIZE
);
else
printk
(
KERN_ERR
"%s: Someone is busy refilling "
"the RX mini ring
\n
"
,
dev
->
name
);
"the RX mini ring
\n
"
,
ap
->
name
);
}
return
0
;
...
...
@@ -1564,7 +1554,7 @@ static void ace_set_rxtx_parms(struct net_device *dev, int jumbo)
struct
ace_regs
*
regs
;
int
board_idx
;
ap
=
dev
->
priv
;
ap
=
netdev_priv
(
dev
)
;
regs
=
ap
->
regs
;
board_idx
=
ap
->
board_idx
;
...
...
@@ -1604,7 +1594,7 @@ static void ace_set_rxtx_parms(struct net_device *dev, int jumbo)
static
void
ace_watchdog
(
struct
net_device
*
data
)
{
struct
net_device
*
dev
=
data
;
struct
ace_private
*
ap
=
dev
->
priv
;
struct
ace_private
*
ap
=
netdev_priv
(
dev
)
;
struct
ace_regs
*
regs
=
ap
->
regs
;
/*
...
...
@@ -1878,13 +1868,13 @@ static u32 ace_handle_event(struct net_device *dev, u32 evtcsm, u32 evtprd)
{
struct
ace_private
*
ap
;
ap
=
dev
->
priv
;
ap
=
netdev_priv
(
dev
)
;
while
(
evtcsm
!=
evtprd
)
{
switch
(
ap
->
evt_ring
[
evtcsm
].
evt
)
{
case
E_FW_RUNNING
:
printk
(
KERN_INFO
"%s: Firmware up and running
\n
"
,
dev
->
name
);
ap
->
name
);
ap
->
fw_running
=
1
;
wmb
();
break
;
...
...
@@ -1899,7 +1889,7 @@ static u32 ace_handle_event(struct net_device *dev, u32 evtcsm, u32 evtprd)
u32
state
=
readl
(
&
ap
->
regs
->
GigLnkState
);
printk
(
KERN_WARNING
"%s: Optical link UP "
"(%s Duplex, Flow Control: %s%s)
\n
"
,
dev
->
name
,
ap
->
name
,
state
&
LNK_FULL_DUPLEX
?
"Full"
:
"Half"
,
state
&
LNK_TX_FLOW_CTL_Y
?
"TX "
:
""
,
state
&
LNK_RX_FLOW_CTL_Y
?
"RX"
:
""
);
...
...
@@ -1907,15 +1897,15 @@ static u32 ace_handle_event(struct net_device *dev, u32 evtcsm, u32 evtprd)
}
case
E_C_LINK_DOWN
:
printk
(
KERN_WARNING
"%s: Optical link DOWN
\n
"
,
dev
->
name
);
ap
->
name
);
break
;
case
E_C_LINK_10_100
:
printk
(
KERN_WARNING
"%s: 10/100BaseT link "
"UP
\n
"
,
dev
->
name
);
"UP
\n
"
,
ap
->
name
);
break
;
default:
printk
(
KERN_ERR
"%s: Unknown optical link "
"state %02x
\n
"
,
dev
->
name
,
code
);
"state %02x
\n
"
,
ap
->
name
,
code
);
}
break
;
}
...
...
@@ -1923,19 +1913,19 @@ static u32 ace_handle_event(struct net_device *dev, u32 evtcsm, u32 evtprd)
switch
(
ap
->
evt_ring
[
evtcsm
].
code
)
{
case
E_C_ERR_INVAL_CMD
:
printk
(
KERN_ERR
"%s: invalid command error
\n
"
,
dev
->
name
);
ap
->
name
);
break
;
case
E_C_ERR_UNIMP_CMD
:
printk
(
KERN_ERR
"%s: unimplemented command "
"error
\n
"
,
dev
->
name
);
"error
\n
"
,
ap
->
name
);
break
;
case
E_C_ERR_BAD_CFG
:
printk
(
KERN_ERR
"%s: bad config error
\n
"
,
dev
->
name
);
ap
->
name
);
break
;
default:
printk
(
KERN_ERR
"%s: unknown error %02x
\n
"
,
dev
->
name
,
ap
->
evt_ring
[
evtcsm
].
code
);
ap
->
name
,
ap
->
evt_ring
[
evtcsm
].
code
);
}
break
;
case
E_RESET_JUMBO_RNG
:
...
...
@@ -1964,13 +1954,13 @@ static u32 ace_handle_event(struct net_device *dev, u32 evtcsm, u32 evtprd)
ap
->
jumbo
=
0
;
ap
->
rx_jumbo_skbprd
=
0
;
printk
(
KERN_INFO
"%s: Jumbo ring flushed
\n
"
,
dev
->
name
);
ap
->
name
);
clear_bit
(
0
,
&
ap
->
jumbo_refill_busy
);
break
;
}
default:
printk
(
KERN_ERR
"%s: Unhandled event 0x%02x
\n
"
,
dev
->
name
,
ap
->
evt_ring
[
evtcsm
].
evt
);
ap
->
name
,
ap
->
evt_ring
[
evtcsm
].
evt
);
}
evtcsm
=
(
evtcsm
+
1
)
%
EVT_RING_ENTRIES
;
}
...
...
@@ -1981,7 +1971,7 @@ static u32 ace_handle_event(struct net_device *dev, u32 evtcsm, u32 evtprd)
static
void
ace_rx_int
(
struct
net_device
*
dev
,
u32
rxretprd
,
u32
rxretcsm
)
{
struct
ace_private
*
ap
=
dev
->
priv
;
struct
ace_private
*
ap
=
netdev_priv
(
dev
)
;
u32
idx
;
int
mini_count
=
0
,
std_count
=
0
;
...
...
@@ -2108,7 +2098,7 @@ static void ace_rx_int(struct net_device *dev, u32 rxretprd, u32 rxretcsm)
static
inline
void
ace_tx_int
(
struct
net_device
*
dev
,
u32
txcsm
,
u32
idx
)
{
struct
ace_private
*
ap
=
dev
->
priv
;
struct
ace_private
*
ap
=
netdev_priv
(
dev
)
;
do
{
struct
sk_buff
*
skb
;
...
...
@@ -2181,7 +2171,7 @@ static irqreturn_t ace_interrupt(int irq, void *dev_id, struct pt_regs *ptregs)
u32
txcsm
,
rxretcsm
,
rxretprd
;
u32
evtcsm
,
evtprd
;
ap
=
dev
->
priv
;
ap
=
netdev_priv
(
dev
)
;
regs
=
ap
->
regs
;
/*
...
...
@@ -2304,7 +2294,7 @@ static irqreturn_t ace_interrupt(int irq, void *dev_id, struct pt_regs *ptregs)
#if ACENIC_DO_VLAN
static
void
ace_vlan_rx_register
(
struct
net_device
*
dev
,
struct
vlan_group
*
grp
)
{
struct
ace_private
*
ap
=
dev
->
priv
;
struct
ace_private
*
ap
=
netdev_priv
(
dev
)
;
unsigned
long
flags
;
local_irq_save
(
flags
);
...
...
@@ -2319,7 +2309,7 @@ static void ace_vlan_rx_register(struct net_device *dev, struct vlan_group *grp)
static
void
ace_vlan_rx_kill_vid
(
struct
net_device
*
dev
,
unsigned
short
vid
)
{
struct
ace_private
*
ap
=
dev
->
priv
;
struct
ace_private
*
ap
=
netdev_priv
(
dev
)
;
unsigned
long
flags
;
local_irq_save
(
flags
);
...
...
@@ -2340,7 +2330,7 @@ static int ace_open(struct net_device *dev)
struct
ace_regs
*
regs
;
struct
cmd
cmd
;
ap
=
dev
->
priv
;
ap
=
netdev_priv
(
dev
)
;
regs
=
ap
->
regs
;
if
(
!
(
ap
->
fw_running
))
{
...
...
@@ -2407,7 +2397,7 @@ static int ace_close(struct net_device *dev)
*/
netif_stop_queue
(
dev
);
ap
=
dev
->
priv
;
ap
=
netdev_priv
(
dev
)
;
regs
=
ap
->
regs
;
if
(
ap
->
promisc
)
{
...
...
@@ -2522,7 +2512,7 @@ ace_load_tx_bd(struct ace_private *ap, struct tx_desc *desc, u64 addr,
static
int
ace_start_xmit
(
struct
sk_buff
*
skb
,
struct
net_device
*
dev
)
{
struct
ace_private
*
ap
=
dev
->
priv
;
struct
ace_private
*
ap
=
netdev_priv
(
dev
)
;
struct
ace_regs
*
regs
=
ap
->
regs
;
struct
tx_desc
*
desc
;
u32
idx
,
flagsize
;
...
...
@@ -2661,7 +2651,7 @@ static int ace_start_xmit(struct sk_buff *skb, struct net_device *dev)
static
int
ace_change_mtu
(
struct
net_device
*
dev
,
int
new_mtu
)
{
struct
ace_private
*
ap
=
dev
->
priv
;
struct
ace_private
*
ap
=
netdev_priv
(
dev
)
;
struct
ace_regs
*
regs
=
ap
->
regs
;
if
(
new_mtu
>
ACE_JUMBO_MTU
)
...
...
@@ -2698,7 +2688,7 @@ static int ace_change_mtu(struct net_device *dev, int new_mtu)
static
int
ace_get_settings
(
struct
net_device
*
dev
,
struct
ethtool_cmd
*
ecmd
)
{
struct
ace_private
*
ap
=
dev
->
priv
;
struct
ace_private
*
ap
=
netdev_priv
(
dev
)
;
struct
ace_regs
*
regs
=
ap
->
regs
;
u32
link
;
...
...
@@ -2751,7 +2741,7 @@ static int ace_get_settings(struct net_device *dev, struct ethtool_cmd *ecmd)
static
int
ace_set_settings
(
struct
net_device
*
dev
,
struct
ethtool_cmd
*
ecmd
)
{
struct
ace_private
*
ap
=
dev
->
priv
;
struct
ace_private
*
ap
=
netdev_priv
(
dev
)
;
struct
ace_regs
*
regs
=
ap
->
regs
;
u32
link
,
speed
;
...
...
@@ -2814,7 +2804,7 @@ static int ace_set_settings(struct net_device *dev, struct ethtool_cmd *ecmd)
static
void
ace_get_drvinfo
(
struct
net_device
*
dev
,
struct
ethtool_drvinfo
*
info
)
{
struct
ace_private
*
ap
=
dev
->
priv
;
struct
ace_private
*
ap
=
netdev_priv
(
dev
)
;
strlcpy
(
info
->
driver
,
"acenic"
,
sizeof
(
info
->
driver
));
snprintf
(
info
->
version
,
sizeof
(
info
->
version
),
"%i.%i.%i"
,
...
...
@@ -2844,7 +2834,7 @@ static int ace_set_mac_addr(struct net_device *dev, void *p)
da
=
(
u8
*
)
dev
->
dev_addr
;
regs
=
((
struct
ace_private
*
)
dev
->
priv
)
->
regs
;
regs
=
((
struct
ace_private
*
)
netdev_priv
(
dev
)
)
->
regs
;
writel
(
da
[
0
]
<<
8
|
da
[
1
],
&
regs
->
MacAddrHi
);
writel
((
da
[
2
]
<<
24
)
|
(
da
[
3
]
<<
16
)
|
(
da
[
4
]
<<
8
)
|
da
[
5
],
&
regs
->
MacAddrLo
);
...
...
@@ -2860,7 +2850,7 @@ static int ace_set_mac_addr(struct net_device *dev, void *p)
static
void
ace_set_multicast_list
(
struct
net_device
*
dev
)
{
struct
ace_private
*
ap
=
dev
->
priv
;
struct
ace_private
*
ap
=
netdev_priv
(
dev
)
;
struct
ace_regs
*
regs
=
ap
->
regs
;
struct
cmd
cmd
;
...
...
@@ -2914,7 +2904,7 @@ static void ace_set_multicast_list(struct net_device *dev)
static
struct
net_device_stats
*
ace_get_stats
(
struct
net_device
*
dev
)
{
struct
ace_private
*
ap
=
dev
->
priv
;
struct
ace_private
*
ap
=
netdev_priv
(
dev
)
;
struct
ace_mac_stats
*
mac_stats
=
(
struct
ace_mac_stats
*
)
ap
->
regs
->
Stats
;
...
...
@@ -2997,12 +2987,12 @@ int __init ace_load_firmware(struct net_device *dev)
struct
ace_private
*
ap
;
struct
ace_regs
*
regs
;
ap
=
dev
->
priv
;
ap
=
netdev_priv
(
dev
)
;
regs
=
ap
->
regs
;
if
(
!
(
readl
(
&
regs
->
CpuCtrl
)
&
CPU_HALTED
))
{
printk
(
KERN_ERR
"%s: trying to download firmware while the "
"CPU is running!
\n
"
,
dev
->
name
);
"CPU is running!
\n
"
,
ap
->
name
);
return
-
EFAULT
;
}
...
...
@@ -3178,6 +3168,7 @@ static void __init eeprom_stop(struct ace_regs *regs)
static
int
__init
read_eeprom_byte
(
struct
net_device
*
dev
,
unsigned
long
offset
)
{
struct
ace_private
*
ap
;
struct
ace_regs
*
regs
;
unsigned
long
flags
;
u32
local
;
...
...
@@ -3187,10 +3178,11 @@ static int __init read_eeprom_byte(struct net_device *dev,
if
(
!
dev
)
{
printk
(
KERN_ERR
"No device!
\n
"
);
result
=
-
ENODEV
;
goto
eeprom_read_error
;
goto
out
;
}
regs
=
((
struct
ace_private
*
)
dev
->
priv
)
->
regs
;
ap
=
netdev_priv
(
dev
);
regs
=
ap
->
regs
;
/*
* Don't take interrupts on this CPU will bit banging
...
...
@@ -3203,7 +3195,7 @@ static int __init read_eeprom_byte(struct net_device *dev,
eeprom_prep
(
regs
,
EEPROM_WRITE_SELECT
);
if
(
eeprom_check_ack
(
regs
))
{
local_irq_restore
(
flags
);
printk
(
KERN_ERR
"%s: Unable to sync eeprom
\n
"
,
dev
->
name
);
printk
(
KERN_ERR
"%s: Unable to sync eeprom
\n
"
,
ap
->
name
);
result
=
-
EIO
;
goto
eeprom_read_error
;
}
...
...
@@ -3212,7 +3204,7 @@ static int __init read_eeprom_byte(struct net_device *dev,
if
(
eeprom_check_ack
(
regs
))
{
local_irq_restore
(
flags
);
printk
(
KERN_ERR
"%s: Unable to set address byte 0
\n
"
,
dev
->
name
);
ap
->
name
);
result
=
-
EIO
;
goto
eeprom_read_error
;
}
...
...
@@ -3221,7 +3213,7 @@ static int __init read_eeprom_byte(struct net_device *dev,
if
(
eeprom_check_ack
(
regs
))
{
local_irq_restore
(
flags
);
printk
(
KERN_ERR
"%s: Unable to set address byte 1
\n
"
,
dev
->
name
);
ap
->
name
);
result
=
-
EIO
;
goto
eeprom_read_error
;
}
...
...
@@ -3231,7 +3223,7 @@ static int __init read_eeprom_byte(struct net_device *dev,
if
(
eeprom_check_ack
(
regs
))
{
local_irq_restore
(
flags
);
printk
(
KERN_ERR
"%s: Unable to set READ_SELECT
\n
"
,
dev
->
name
);
ap
->
name
);
result
=
-
EIO
;
goto
eeprom_read_error
;
}
...
...
@@ -3288,7 +3280,7 @@ static int __init read_eeprom_byte(struct net_device *dev,
eeprom_read_error:
printk
(
KERN_ERR
"%s: Unable to read eeprom byte 0x%02lx
\n
"
,
dev
->
name
,
offset
);
ap
->
name
,
offset
);
goto
out
;
}
...
...
drivers/net/acenic.h
View file @
d15fc4f6
...
...
@@ -693,7 +693,7 @@ struct ace_private
int
board_idx
;
u16
pci_command
;
u8
pci_latency
;
c
har
name
[
48
]
;
c
onst
char
*
name
;
#ifdef INDEX_DEBUG
spinlock_t
debug_lock
__attribute__
((
aligned
(
SMP_CACHE_BYTES
)));
...
...
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