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