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
00496936
Commit
00496936
authored
Oct 26, 2004
by
Jeff Garzik
Browse files
Options
Browse Files
Download
Plain Diff
Hand-merge upstream pci_{save,restore}_state() stuff.
parents
de8705b5
a9586d20
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
46 additions
and
49 deletions
+46
-49
drivers/net/8139too.c
drivers/net/8139too.c
+46
-49
No files found.
drivers/net/8139too.c
View file @
00496936
...
...
@@ -390,8 +390,14 @@ enum rx_mode_bits {
/* Bits in TxConfig. */
enum
tx_config_bits
{
TxIFG1
=
(
1
<<
25
),
/* Interframe Gap Time */
TxIFG0
=
(
1
<<
24
),
/* Enabling these bits violates IEEE 802.3 */
/* Interframe Gap Time. Only TxIFG96 doesn't violate IEEE 802.3 */
TxIFGShift
=
24
,
TxIFG84
=
(
0
<<
TxIFGShift
),
/* 8.4us / 840ns (10 / 100Mbps) */
TxIFG88
=
(
1
<<
TxIFGShift
),
/* 8.8us / 880ns (10 / 100Mbps) */
TxIFG92
=
(
2
<<
TxIFGShift
),
/* 9.2us / 920ns (10 / 100Mbps) */
TxIFG96
=
(
3
<<
TxIFGShift
),
/* 9.6us / 960ns (10 / 100Mbps) */
TxLoopBack
=
(
1
<<
18
)
|
(
1
<<
17
),
/* enable loopback test mode */
TxCRC
=
(
1
<<
16
),
/* DISABLE appending CRC to end of Tx packets */
TxClearAbt
=
(
1
<<
0
),
/* Clear abort (WO) */
...
...
@@ -723,17 +729,14 @@ static const unsigned int rtl8139_rx_config =
#endif
static
const
unsigned
int
rtl8139_tx_config
=
(
TX_DMA_BURST
<<
TxDMAShift
)
|
(
TX_RETRY
<<
TxRetryShift
);
TxIFG96
|
(
TX_DMA_BURST
<<
TxDMAShift
)
|
(
TX_RETRY
<<
TxRetryShift
);
static
void
__rtl8139_cleanup_dev
(
struct
net_device
*
dev
)
{
struct
rtl8139_private
*
tp
;
struct
rtl8139_private
*
tp
=
netdev_priv
(
dev
)
;
struct
pci_dev
*
pdev
;
assert
(
dev
!=
NULL
);
assert
(
dev
->
priv
!=
NULL
);
tp
=
dev
->
priv
;
assert
(
tp
->
pci_dev
!=
NULL
);
pdev
=
tp
->
pci_dev
;
...
...
@@ -785,7 +788,7 @@ static int __devinit rtl8139_init_board (struct pci_dev *pdev,
*
dev_out
=
NULL
;
/* dev and
dev->
priv zeroed in alloc_etherdev */
/* dev and priv zeroed in alloc_etherdev */
dev
=
alloc_etherdev
(
sizeof
(
*
tp
));
if
(
dev
==
NULL
)
{
printk
(
KERN_ERR
PFX
"%s: Unable to alloc new net device
\n
"
,
pci_name
(
pdev
));
...
...
@@ -794,7 +797,7 @@ static int __devinit rtl8139_init_board (struct pci_dev *pdev,
SET_MODULE_OWNER
(
dev
);
SET_NETDEV_DEV
(
dev
,
&
pdev
->
dev
);
tp
=
dev
->
priv
;
tp
=
netdev_priv
(
dev
)
;
tp
->
pci_dev
=
pdev
;
/* enable device (incl. PCI PM wakeup and hotplug setup) */
...
...
@@ -976,8 +979,8 @@ static int __devinit rtl8139_init_one (struct pci_dev *pdev,
return
i
;
assert
(
dev
!=
NULL
);
tp
=
dev
->
priv
;
assert
(
tp
!=
NULL
);
tp
=
netdev_priv
(
dev
)
;
ioaddr
=
tp
->
mmio_addr
;
assert
(
ioaddr
!=
NULL
);
...
...
@@ -1010,8 +1013,8 @@ static int __devinit rtl8139_init_one (struct pci_dev *pdev,
dev
->
irq
=
pdev
->
irq
;
/*
dev->priv/
tp zeroed and aligned in alloc_etherdev */
tp
=
dev
->
priv
;
/* tp zeroed and aligned in alloc_etherdev */
tp
=
netdev_priv
(
dev
)
;
/* note: tp->chipset set in rtl8139_init_board */
tp
->
drv_flags
=
board_info
[
ent
->
driver_data
].
hw_flags
;
...
...
@@ -1116,11 +1119,8 @@ static int __devinit rtl8139_init_one (struct pci_dev *pdev,
static
void
__devexit
rtl8139_remove_one
(
struct
pci_dev
*
pdev
)
{
struct
net_device
*
dev
=
pci_get_drvdata
(
pdev
);
struct
rtl8139_private
*
np
;
assert
(
dev
!=
NULL
);
np
=
dev
->
priv
;
assert
(
np
!=
NULL
);
unregister_netdev
(
dev
);
...
...
@@ -1234,7 +1234,7 @@ static void mdio_sync (void *mdio_addr)
static
int
mdio_read
(
struct
net_device
*
dev
,
int
phy_id
,
int
location
)
{
struct
rtl8139_private
*
tp
=
dev
->
priv
;
struct
rtl8139_private
*
tp
=
netdev_priv
(
dev
)
;
int
retval
=
0
;
#ifdef CONFIG_8139TOO_8129
void
*
mdio_addr
=
tp
->
mmio_addr
+
Config4
;
...
...
@@ -1276,7 +1276,7 @@ static int mdio_read (struct net_device *dev, int phy_id, int location)
static
void
mdio_write
(
struct
net_device
*
dev
,
int
phy_id
,
int
location
,
int
value
)
{
struct
rtl8139_private
*
tp
=
dev
->
priv
;
struct
rtl8139_private
*
tp
=
netdev_priv
(
dev
)
;
#ifdef CONFIG_8139TOO_8129
void
*
mdio_addr
=
tp
->
mmio_addr
+
Config4
;
int
mii_cmd
=
(
0x5002
<<
16
)
|
(
phy_id
<<
23
)
|
(
location
<<
18
)
|
value
;
...
...
@@ -1319,7 +1319,7 @@ static void mdio_write (struct net_device *dev, int phy_id, int location,
static
int
rtl8139_open
(
struct
net_device
*
dev
)
{
struct
rtl8139_private
*
tp
=
dev
->
priv
;
struct
rtl8139_private
*
tp
=
netdev_priv
(
dev
)
;
int
retval
;
void
*
ioaddr
=
tp
->
mmio_addr
;
...
...
@@ -1367,7 +1367,7 @@ static int rtl8139_open (struct net_device *dev)
static
void
rtl_check_media
(
struct
net_device
*
dev
,
unsigned
int
init_media
)
{
struct
rtl8139_private
*
tp
=
dev
->
priv
;
struct
rtl8139_private
*
tp
=
netdev_priv
(
dev
)
;
if
(
tp
->
phys
[
0
]
>=
0
)
{
mii_check_media
(
&
tp
->
mii
,
netif_msg_link
(
tp
),
init_media
);
...
...
@@ -1377,7 +1377,7 @@ static void rtl_check_media (struct net_device *dev, unsigned int init_media)
/* Start the hardware at open or resume. */
static
void
rtl8139_hw_start
(
struct
net_device
*
dev
)
{
struct
rtl8139_private
*
tp
=
dev
->
priv
;
struct
rtl8139_private
*
tp
=
netdev_priv
(
dev
)
;
void
*
ioaddr
=
tp
->
mmio_addr
;
u32
i
;
u8
tmp
;
...
...
@@ -1399,8 +1399,6 @@ static void rtl8139_hw_start (struct net_device *dev)
tp
->
rx_config
=
rtl8139_rx_config
|
AcceptBroadcast
|
AcceptMyPhys
;
RTL_W32
(
RxConfig
,
tp
->
rx_config
);
/* Check this value: the documentation for IFG contradicts ifself. */
RTL_W32
(
TxConfig
,
rtl8139_tx_config
);
tp
->
cur_rx
=
0
;
...
...
@@ -1446,7 +1444,7 @@ static void rtl8139_hw_start (struct net_device *dev)
/* Initialize the Rx and Tx rings, along with various 'dev' bits. */
static
void
rtl8139_init_ring
(
struct
net_device
*
dev
)
{
struct
rtl8139_private
*
tp
=
dev
->
priv
;
struct
rtl8139_private
*
tp
=
netdev_priv
(
dev
)
;
int
i
;
tp
->
cur_rx
=
0
;
...
...
@@ -1613,7 +1611,7 @@ static inline void rtl8139_thread_iter (struct net_device *dev,
static
int
rtl8139_thread
(
void
*
data
)
{
struct
net_device
*
dev
=
data
;
struct
rtl8139_private
*
tp
=
dev
->
priv
;
struct
rtl8139_private
*
tp
=
netdev_priv
(
dev
)
;
unsigned
long
timeout
;
daemonize
(
"%s"
,
dev
->
name
);
...
...
@@ -1645,7 +1643,7 @@ static int rtl8139_thread (void *data)
static
void
rtl8139_start_thread
(
struct
net_device
*
dev
)
{
struct
rtl8139_private
*
tp
=
dev
->
priv
;
struct
rtl8139_private
*
tp
=
netdev_priv
(
dev
)
;
tp
->
thr_pid
=
-
1
;
tp
->
twistie
=
0
;
...
...
@@ -1673,7 +1671,7 @@ static inline void rtl8139_tx_clear (struct rtl8139_private *tp)
static
void
rtl8139_tx_timeout
(
struct
net_device
*
dev
)
{
struct
rtl8139_private
*
tp
=
dev
->
priv
;
struct
rtl8139_private
*
tp
=
netdev_priv
(
dev
)
;
void
*
ioaddr
=
tp
->
mmio_addr
;
int
i
;
u8
tmp8
;
...
...
@@ -1718,7 +1716,7 @@ static void rtl8139_tx_timeout (struct net_device *dev)
static
int
rtl8139_start_xmit
(
struct
sk_buff
*
skb
,
struct
net_device
*
dev
)
{
struct
rtl8139_private
*
tp
=
dev
->
priv
;
struct
rtl8139_private
*
tp
=
netdev_priv
(
dev
)
;
void
*
ioaddr
=
tp
->
mmio_addr
;
unsigned
int
entry
;
unsigned
int
len
=
skb
->
len
;
...
...
@@ -1766,7 +1764,6 @@ static void rtl8139_tx_interrupt (struct net_device *dev,
unsigned
long
dirty_tx
,
tx_left
;
assert
(
dev
!=
NULL
);
assert
(
tp
!=
NULL
);
assert
(
ioaddr
!=
NULL
);
dirty_tx
=
tp
->
dirty_tx
;
...
...
@@ -2125,7 +2122,7 @@ static void rtl8139_weird_interrupt (struct net_device *dev,
static
int
rtl8139_poll
(
struct
net_device
*
dev
,
int
*
budget
)
{
struct
rtl8139_private
*
tp
=
dev
->
priv
;
struct
rtl8139_private
*
tp
=
netdev_priv
(
dev
)
;
void
*
ioaddr
=
tp
->
mmio_addr
;
int
orig_budget
=
min
(
*
budget
,
dev
->
quota
);
int
done
=
1
;
...
...
@@ -2163,7 +2160,7 @@ static irqreturn_t rtl8139_interrupt (int irq, void *dev_instance,
struct
pt_regs
*
regs
)
{
struct
net_device
*
dev
=
(
struct
net_device
*
)
dev_instance
;
struct
rtl8139_private
*
tp
=
dev
->
priv
;
struct
rtl8139_private
*
tp
=
netdev_priv
(
dev
)
;
void
*
ioaddr
=
tp
->
mmio_addr
;
u16
status
,
ackstat
;
int
link_changed
=
0
;
/* avoid bogus "uninit" warning */
...
...
@@ -2239,7 +2236,7 @@ static void rtl8139_poll_controller(struct net_device *dev)
static
int
rtl8139_close
(
struct
net_device
*
dev
)
{
struct
rtl8139_private
*
tp
=
dev
->
priv
;
struct
rtl8139_private
*
tp
=
netdev_priv
(
dev
)
;
void
*
ioaddr
=
tp
->
mmio_addr
;
int
ret
=
0
;
unsigned
long
flags
;
...
...
@@ -2302,7 +2299,7 @@ static int rtl8139_close (struct net_device *dev)
other threads or interrupts aren't messing with the 8139. */
static
void
rtl8139_get_wol
(
struct
net_device
*
dev
,
struct
ethtool_wolinfo
*
wol
)
{
struct
rtl8139_private
*
np
=
dev
->
priv
;
struct
rtl8139_private
*
np
=
netdev_priv
(
dev
)
;
void
*
ioaddr
=
np
->
mmio_addr
;
spin_lock_irq
(
&
np
->
lock
);
...
...
@@ -2336,7 +2333,7 @@ static void rtl8139_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
aren't messing with the 8139. */
static
int
rtl8139_set_wol
(
struct
net_device
*
dev
,
struct
ethtool_wolinfo
*
wol
)
{
struct
rtl8139_private
*
np
=
dev
->
priv
;
struct
rtl8139_private
*
np
=
netdev_priv
(
dev
)
;
void
*
ioaddr
=
np
->
mmio_addr
;
u32
support
;
u8
cfg3
,
cfg5
;
...
...
@@ -2376,7 +2373,7 @@ static int rtl8139_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
static
void
rtl8139_get_drvinfo
(
struct
net_device
*
dev
,
struct
ethtool_drvinfo
*
info
)
{
struct
rtl8139_private
*
np
=
dev
->
priv
;
struct
rtl8139_private
*
np
=
netdev_priv
(
dev
)
;
strcpy
(
info
->
driver
,
DRV_NAME
);
strcpy
(
info
->
version
,
DRV_VERSION
);
strcpy
(
info
->
bus_info
,
pci_name
(
np
->
pci_dev
));
...
...
@@ -2385,7 +2382,7 @@ static void rtl8139_get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *
static
int
rtl8139_get_settings
(
struct
net_device
*
dev
,
struct
ethtool_cmd
*
cmd
)
{
struct
rtl8139_private
*
np
=
dev
->
priv
;
struct
rtl8139_private
*
np
=
netdev_priv
(
dev
)
;
spin_lock_irq
(
&
np
->
lock
);
mii_ethtool_gset
(
&
np
->
mii
,
cmd
);
spin_unlock_irq
(
&
np
->
lock
);
...
...
@@ -2394,7 +2391,7 @@ static int rtl8139_get_settings(struct net_device *dev, struct ethtool_cmd *cmd)
static
int
rtl8139_set_settings
(
struct
net_device
*
dev
,
struct
ethtool_cmd
*
cmd
)
{
struct
rtl8139_private
*
np
=
dev
->
priv
;
struct
rtl8139_private
*
np
=
netdev_priv
(
dev
)
;
int
rc
;
spin_lock_irq
(
&
np
->
lock
);
rc
=
mii_ethtool_sset
(
&
np
->
mii
,
cmd
);
...
...
@@ -2404,25 +2401,25 @@ static int rtl8139_set_settings(struct net_device *dev, struct ethtool_cmd *cmd)
static
int
rtl8139_nway_reset
(
struct
net_device
*
dev
)
{
struct
rtl8139_private
*
np
=
dev
->
priv
;
struct
rtl8139_private
*
np
=
netdev_priv
(
dev
)
;
return
mii_nway_restart
(
&
np
->
mii
);
}
static
u32
rtl8139_get_link
(
struct
net_device
*
dev
)
{
struct
rtl8139_private
*
np
=
dev
->
priv
;
struct
rtl8139_private
*
np
=
netdev_priv
(
dev
)
;
return
mii_link_ok
(
&
np
->
mii
);
}
static
u32
rtl8139_get_msglevel
(
struct
net_device
*
dev
)
{
struct
rtl8139_private
*
np
=
dev
->
priv
;
struct
rtl8139_private
*
np
=
netdev_priv
(
dev
)
;
return
np
->
msg_enable
;
}
static
void
rtl8139_set_msglevel
(
struct
net_device
*
dev
,
u32
datum
)
{
struct
rtl8139_private
*
np
=
dev
->
priv
;
struct
rtl8139_private
*
np
=
netdev_priv
(
dev
)
;
np
->
msg_enable
=
datum
;
}
...
...
@@ -2433,13 +2430,13 @@ static void rtl8139_set_msglevel(struct net_device *dev, u32 datum)
#else
static
int
rtl8139_get_regs_len
(
struct
net_device
*
dev
)
{
struct
rtl8139_private
*
np
=
dev
->
priv
;
struct
rtl8139_private
*
np
=
netdev_priv
(
dev
)
;
return
np
->
regs_len
;
}
static
void
rtl8139_get_regs
(
struct
net_device
*
dev
,
struct
ethtool_regs
*
regs
,
void
*
regbuf
)
{
struct
rtl8139_private
*
np
=
dev
->
priv
;
struct
rtl8139_private
*
np
=
netdev_priv
(
dev
)
;
regs
->
version
=
RTL_REGS_VER
;
...
...
@@ -2456,7 +2453,7 @@ static int rtl8139_get_stats_count(struct net_device *dev)
static
void
rtl8139_get_ethtool_stats
(
struct
net_device
*
dev
,
struct
ethtool_stats
*
stats
,
u64
*
data
)
{
struct
rtl8139_private
*
np
=
dev
->
priv
;
struct
rtl8139_private
*
np
=
netdev_priv
(
dev
)
;
data
[
0
]
=
np
->
xstats
.
early_rx
;
data
[
1
]
=
np
->
xstats
.
tx_buf_mapped
;
...
...
@@ -2488,7 +2485,7 @@ static struct ethtool_ops rtl8139_ethtool_ops = {
static
int
netdev_ioctl
(
struct
net_device
*
dev
,
struct
ifreq
*
rq
,
int
cmd
)
{
struct
rtl8139_private
*
np
=
dev
->
priv
;
struct
rtl8139_private
*
np
=
netdev_priv
(
dev
)
;
int
rc
;
if
(
!
netif_running
(
dev
))
...
...
@@ -2504,7 +2501,7 @@ static int netdev_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
static
struct
net_device_stats
*
rtl8139_get_stats
(
struct
net_device
*
dev
)
{
struct
rtl8139_private
*
tp
=
dev
->
priv
;
struct
rtl8139_private
*
tp
=
netdev_priv
(
dev
)
;
void
*
ioaddr
=
tp
->
mmio_addr
;
unsigned
long
flags
;
...
...
@@ -2523,7 +2520,7 @@ static struct net_device_stats *rtl8139_get_stats (struct net_device *dev)
static
void
__set_rx_mode
(
struct
net_device
*
dev
)
{
struct
rtl8139_private
*
tp
=
dev
->
priv
;
struct
rtl8139_private
*
tp
=
netdev_priv
(
dev
)
;
void
*
ioaddr
=
tp
->
mmio_addr
;
u32
mc_filter
[
2
];
/* Multicast hash filter */
int
i
,
rx_mode
;
...
...
@@ -2572,7 +2569,7 @@ static void __set_rx_mode (struct net_device *dev)
static
void
rtl8139_set_rx_mode
(
struct
net_device
*
dev
)
{
unsigned
long
flags
;
struct
rtl8139_private
*
tp
=
dev
->
priv
;
struct
rtl8139_private
*
tp
=
netdev_priv
(
dev
)
;
spin_lock_irqsave
(
&
tp
->
lock
,
flags
);
__set_rx_mode
(
dev
);
...
...
@@ -2584,7 +2581,7 @@ static void rtl8139_set_rx_mode (struct net_device *dev)
static
int
rtl8139_suspend
(
struct
pci_dev
*
pdev
,
u32
state
)
{
struct
net_device
*
dev
=
pci_get_drvdata
(
pdev
);
struct
rtl8139_private
*
tp
=
dev
->
priv
;
struct
rtl8139_private
*
tp
=
netdev_priv
(
dev
)
;
void
*
ioaddr
=
tp
->
mmio_addr
;
unsigned
long
flags
;
...
...
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