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
e36a9e24
Commit
e36a9e24
authored
Dec 29, 2003
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://gkernel.bkbits.net/net-drivers-2.5
into home.osdl.org:/home/torvalds/v2.5/linux
parents
e56b865f
e40cca9e
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
98 additions
and
34 deletions
+98
-34
drivers/net/8139too.c
drivers/net/8139too.c
+2
-1
drivers/net/e100/e100_config.c
drivers/net/e100/e100_config.c
+4
-4
drivers/net/e100/e100_main.c
drivers/net/e100/e100_main.c
+16
-16
drivers/net/e100/e100_phy.c
drivers/net/e100/e100_phy.c
+7
-7
drivers/net/sis900.c
drivers/net/sis900.c
+69
-6
No files found.
drivers/net/8139too.c
View file @
e36a9e24
...
@@ -2475,10 +2475,11 @@ static int rtl8139_suspend (struct pci_dev *pdev, u32 state)
...
@@ -2475,10 +2475,11 @@ static int rtl8139_suspend (struct pci_dev *pdev, u32 state)
tp
->
stats
.
rx_missed_errors
+=
RTL_R32
(
RxMissed
);
tp
->
stats
.
rx_missed_errors
+=
RTL_R32
(
RxMissed
);
RTL_W32
(
RxMissed
,
0
);
RTL_W32
(
RxMissed
,
0
);
spin_unlock_irqrestore
(
&
tp
->
lock
,
flags
);
pci_set_power_state
(
pdev
,
3
);
pci_set_power_state
(
pdev
,
3
);
pci_save_state
(
pdev
,
tp
->
pci_state
);
pci_save_state
(
pdev
,
tp
->
pci_state
);
spin_unlock_irqrestore
(
&
tp
->
lock
,
flags
);
return
0
;
return
0
;
}
}
...
...
drivers/net/e100/e100_config.c
View file @
e36a9e24
...
@@ -60,7 +60,7 @@ static const u8 def_config[] = {
...
@@ -60,7 +60,7 @@ static const u8 def_config[] = {
* All other init functions will only set values that are
* All other init functions will only set values that are
* different from the 82557 default.
* different from the 82557 default.
*/
*/
void
__devinit
void
e100_config_init_82557
(
struct
e100_private
*
bdp
)
e100_config_init_82557
(
struct
e100_private
*
bdp
)
{
{
/* initialize config block */
/* initialize config block */
...
@@ -104,7 +104,7 @@ e100_config_init_82557(struct e100_private *bdp)
...
@@ -104,7 +104,7 @@ e100_config_init_82557(struct e100_private *bdp)
e100_config_mulcast_enbl
(
bdp
,
false
);
e100_config_mulcast_enbl
(
bdp
,
false
);
}
}
static
void
__devinit
static
void
e100_config_init_82558
(
struct
e100_private
*
bdp
)
e100_config_init_82558
(
struct
e100_private
*
bdp
)
{
{
/* MWI enable. This should be turned on only if the adapter is a 82558/9
/* MWI enable. This should be turned on only if the adapter is a 82558/9
...
@@ -136,7 +136,7 @@ e100_config_init_82558(struct e100_private *bdp)
...
@@ -136,7 +136,7 @@ e100_config_init_82558(struct e100_private *bdp)
e100_config_long_rx
(
bdp
,
true
);
e100_config_long_rx
(
bdp
,
true
);
}
}
static
void
__devinit
static
void
e100_config_init_82550
(
struct
e100_private
*
bdp
)
e100_config_init_82550
(
struct
e100_private
*
bdp
)
{
{
/* The D102 chip allows for 32 config bytes. This value is
/* The D102 chip allows for 32 config bytes. This value is
...
@@ -160,7 +160,7 @@ e100_config_init_82550(struct e100_private *bdp)
...
@@ -160,7 +160,7 @@ e100_config_init_82550(struct e100_private *bdp)
}
}
/* Initialize the adapter's configure block */
/* Initialize the adapter's configure block */
void
__devinit
void
e100_config_init
(
struct
e100_private
*
bdp
)
e100_config_init
(
struct
e100_private
*
bdp
)
{
{
e100_config_init_82557
(
bdp
);
e100_config_init_82557
(
bdp
);
...
...
drivers/net/e100/e100_main.c
View file @
e36a9e24
...
@@ -124,7 +124,7 @@ static void e100_free_nontx_list(struct e100_private *);
...
@@ -124,7 +124,7 @@ static void e100_free_nontx_list(struct e100_private *);
static
void
e100_non_tx_background
(
unsigned
long
);
static
void
e100_non_tx_background
(
unsigned
long
);
static
inline
void
e100_tx_skb_free
(
struct
e100_private
*
bdp
,
tcb_t
*
tcb
);
static
inline
void
e100_tx_skb_free
(
struct
e100_private
*
bdp
,
tcb_t
*
tcb
);
/* Global Data structures and variables */
/* Global Data structures and variables */
char
e100_copyright
[]
__devinitdata
=
"Copyright (c) 2003 Intel Corporation"
;
char
e100_copyright
[]
=
"Copyright (c) 2003 Intel Corporation"
;
char
e100_driver_version
[]
=
"2.3.30-k1"
;
char
e100_driver_version
[]
=
"2.3.30-k1"
;
const
char
*
e100_full_driver_name
=
"Intel(R) PRO/100 Network Driver"
;
const
char
*
e100_full_driver_name
=
"Intel(R) PRO/100 Network Driver"
;
char
e100_short_driver_name
[]
=
"e100"
;
char
e100_short_driver_name
[]
=
"e100"
;
...
@@ -539,7 +539,7 @@ e100_trigger_SWI(struct e100_private *bdp)
...
@@ -539,7 +539,7 @@ e100_trigger_SWI(struct e100_private *bdp)
readw
(
&
(
bdp
->
scb
->
scb_status
));
/* flushes last write, read-safe */
readw
(
&
(
bdp
->
scb
->
scb_status
));
/* flushes last write, read-safe */
}
}
static
int
__devinit
static
int
e100_found1
(
struct
pci_dev
*
pcid
,
const
struct
pci_device_id
*
ent
)
e100_found1
(
struct
pci_dev
*
pcid
,
const
struct
pci_device_id
*
ent
)
{
{
static
int
first_time
=
true
;
static
int
first_time
=
true
;
...
@@ -823,7 +823,7 @@ module_exit(e100_cleanup_module);
...
@@ -823,7 +823,7 @@ module_exit(e100_cleanup_module);
*
*
* This routine does range checking on command-line options
* This routine does range checking on command-line options
*/
*/
void
__devinit
void
e100_check_options
(
int
board
,
struct
e100_private
*
bdp
)
e100_check_options
(
int
board
,
struct
e100_private
*
bdp
)
{
{
if
(
board
>=
E100_MAX_NIC
)
{
if
(
board
>=
E100_MAX_NIC
)
{
...
@@ -894,7 +894,7 @@ e100_check_options(int board, struct e100_private *bdp)
...
@@ -894,7 +894,7 @@ e100_check_options(int board, struct e100_private *bdp)
* If the option's value is '-1' use the specified default.
* If the option's value is '-1' use the specified default.
* Otherwise, if the value is invalid, change it to the default.
* Otherwise, if the value is invalid, change it to the default.
*/
*/
void
__devinit
void
e100_set_int_option
(
int
*
option
,
int
val
,
int
min
,
int
max
,
int
default_val
,
e100_set_int_option
(
int
*
option
,
int
val
,
int
min
,
int
max
,
int
default_val
,
char
*
name
)
char
*
name
)
{
{
...
@@ -928,7 +928,7 @@ e100_set_int_option(int *option, int val, int min, int max, int default_val,
...
@@ -928,7 +928,7 @@ e100_set_int_option(int *option, int val, int min, int max, int default_val,
* Otherwise, if the value is invalid (not 0 or 1),
* Otherwise, if the value is invalid (not 0 or 1),
* change it to the default.
* change it to the default.
*/
*/
void
__devinit
void
e100_set_bool_option
(
struct
e100_private
*
bdp
,
int
val
,
u32
mask
,
e100_set_bool_option
(
struct
e100_private
*
bdp
,
int
val
,
u32
mask
,
int
default_val
,
char
*
name
)
int
default_val
,
char
*
name
)
{
{
...
@@ -1241,7 +1241,7 @@ e100_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
...
@@ -1241,7 +1241,7 @@ e100_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
* true: if successful
* true: if successful
* false: otherwise
* false: otherwise
*/
*/
static
unsigned
char
__devinit
static
unsigned
char
e100_init
(
struct
e100_private
*
bdp
)
e100_init
(
struct
e100_private
*
bdp
)
{
{
u32
st_timeout
=
0
;
u32
st_timeout
=
0
;
...
@@ -1290,7 +1290,7 @@ e100_init(struct e100_private *bdp)
...
@@ -1290,7 +1290,7 @@ e100_init(struct e100_private *bdp)
* true: if S/W was successfully initialized
* true: if S/W was successfully initialized
* false: otherwise
* false: otherwise
*/
*/
static
unsigned
char
__devinit
static
unsigned
char
e100_sw_init
(
struct
e100_private
*
bdp
)
e100_sw_init
(
struct
e100_private
*
bdp
)
{
{
bdp
->
next_cu_cmd
=
START_WAIT
;
// init the next cu state
bdp
->
next_cu_cmd
=
START_WAIT
;
// init the next cu state
...
@@ -1318,7 +1318,7 @@ e100_sw_init(struct e100_private *bdp)
...
@@ -1318,7 +1318,7 @@ e100_sw_init(struct e100_private *bdp)
return
1
;
return
1
;
}
}
static
void
__devinit
static
void
e100_tco_workaround
(
struct
e100_private
*
bdp
)
e100_tco_workaround
(
struct
e100_private
*
bdp
)
{
{
int
i
;
int
i
;
...
@@ -1519,7 +1519,7 @@ e100_setup_tcb_pool(tcb_t *head, unsigned int qlen, struct e100_private *bdp)
...
@@ -1519,7 +1519,7 @@ e100_setup_tcb_pool(tcb_t *head, unsigned int qlen, struct e100_private *bdp)
* 0: if the operation was successful
* 0: if the operation was successful
* %-ENOMEM: if memory allocation failed
* %-ENOMEM: if memory allocation failed
*/
*/
unsigned
char
__devinit
unsigned
char
e100_alloc_space
(
struct
e100_private
*
bdp
)
e100_alloc_space
(
struct
e100_private
*
bdp
)
{
{
unsigned
long
off
;
unsigned
long
off
;
...
@@ -2508,7 +2508,7 @@ e100_cmd_complete_location(struct e100_private *bdp)
...
@@ -2508,7 +2508,7 @@ e100_cmd_complete_location(struct e100_private *bdp)
* true: if successfully cleared stat counters
* true: if successfully cleared stat counters
* false: otherwise
* false: otherwise
*/
*/
static
unsigned
char
__devinit
static
unsigned
char
e100_clr_cntrs
(
struct
e100_private
*
bdp
)
e100_clr_cntrs
(
struct
e100_private
*
bdp
)
{
{
volatile
u32
*
pcmd_complete
;
volatile
u32
*
pcmd_complete
;
...
@@ -2873,7 +2873,7 @@ e100_load_microcode(struct e100_private *bdp)
...
@@ -2873,7 +2873,7 @@ e100_load_microcode(struct e100_private *bdp)
/***************************************************************************/
/***************************************************************************/
/* Read PWA (printed wired assembly) number */
/* Read PWA (printed wired assembly) number */
void
__devinit
void
e100_rd_pwa_no
(
struct
e100_private
*
bdp
)
e100_rd_pwa_no
(
struct
e100_private
*
bdp
)
{
{
bdp
->
pwa_no
=
e100_eeprom_read
(
bdp
,
EEPROM_PWA_NO
);
bdp
->
pwa_no
=
e100_eeprom_read
(
bdp
,
EEPROM_PWA_NO
);
...
@@ -2882,7 +2882,7 @@ e100_rd_pwa_no(struct e100_private *bdp)
...
@@ -2882,7 +2882,7 @@ e100_rd_pwa_no(struct e100_private *bdp)
}
}
/* Read the permanent ethernet address from the eprom. */
/* Read the permanent ethernet address from the eprom. */
void
__devinit
void
e100_rd_eaddr
(
struct
e100_private
*
bdp
)
e100_rd_eaddr
(
struct
e100_private
*
bdp
)
{
{
int
i
;
int
i
;
...
@@ -2947,7 +2947,7 @@ e100_D101M_checksum(struct e100_private *bdp, struct sk_buff *skb)
...
@@ -2947,7 +2947,7 @@ e100_D101M_checksum(struct e100_private *bdp, struct sk_buff *skb)
/***************************************************************************/
/***************************************************************************/
/* Print the board's configuration */
/* Print the board's configuration */
void
__devinit
void
e100_print_brd_conf
(
struct
e100_private
*
bdp
)
e100_print_brd_conf
(
struct
e100_private
*
bdp
)
{
{
/* Print the string if checksum Offloading was enabled */
/* Print the string if checksum Offloading was enabled */
...
@@ -2975,7 +2975,7 @@ e100_print_brd_conf(struct e100_private *bdp)
...
@@ -2975,7 +2975,7 @@ e100_print_brd_conf(struct e100_private *bdp)
* true: if successfull
* true: if successfull
* false: otherwise
* false: otherwise
*/
*/
static
unsigned
char
__devinit
static
unsigned
char
e100_pci_setup
(
struct
pci_dev
*
pcid
,
struct
e100_private
*
bdp
)
e100_pci_setup
(
struct
pci_dev
*
pcid
,
struct
e100_private
*
bdp
)
{
{
struct
net_device
*
dev
=
bdp
->
device
;
struct
net_device
*
dev
=
bdp
->
device
;
...
@@ -3754,7 +3754,7 @@ e100_ethtool_led_blink(struct net_device *dev, struct ifreq *ifr)
...
@@ -3754,7 +3754,7 @@ e100_ethtool_led_blink(struct net_device *dev, struct ifreq *ifr)
return
0
;
return
0
;
}
}
static
inline
int
__devinit
static
inline
int
e100_10BaseT_adapter
(
struct
e100_private
*
bdp
)
e100_10BaseT_adapter
(
struct
e100_private
*
bdp
)
{
{
return
((
bdp
->
pdev
->
device
==
0x1229
)
&&
return
((
bdp
->
pdev
->
device
==
0x1229
)
&&
...
@@ -3762,7 +3762,7 @@ e100_10BaseT_adapter(struct e100_private *bdp)
...
@@ -3762,7 +3762,7 @@ e100_10BaseT_adapter(struct e100_private *bdp)
(
bdp
->
pdev
->
subsystem_device
==
0x0003
));
(
bdp
->
pdev
->
subsystem_device
==
0x0003
));
}
}
static
void
__devinit
static
void
e100_get_speed_duplex_caps
(
struct
e100_private
*
bdp
)
e100_get_speed_duplex_caps
(
struct
e100_private
*
bdp
)
{
{
u16
status
;
u16
status
;
...
...
drivers/net/e100/e100_phy.c
View file @
e36a9e24
...
@@ -132,7 +132,7 @@ e100_mdi_read(struct e100_private *bdp, u32 reg_addr, u32 phy_addr, u16 *data)
...
@@ -132,7 +132,7 @@ e100_mdi_read(struct e100_private *bdp, u32 reg_addr, u32 phy_addr, u16 *data)
}
}
}
}
static
unsigned
char
__devinit
static
unsigned
char
e100_phy_valid
(
struct
e100_private
*
bdp
,
unsigned
int
phy_address
)
e100_phy_valid
(
struct
e100_private
*
bdp
,
unsigned
int
phy_address
)
{
{
u16
ctrl_reg
,
stat_reg
;
u16
ctrl_reg
,
stat_reg
;
...
@@ -150,7 +150,7 @@ e100_phy_valid(struct e100_private *bdp, unsigned int phy_address)
...
@@ -150,7 +150,7 @@ e100_phy_valid(struct e100_private *bdp, unsigned int phy_address)
return
true
;
return
true
;
}
}
static
void
__devinit
static
void
e100_phy_address_detect
(
struct
e100_private
*
bdp
)
e100_phy_address_detect
(
struct
e100_private
*
bdp
)
{
{
unsigned
int
addr
;
unsigned
int
addr
;
...
@@ -180,7 +180,7 @@ e100_phy_address_detect(struct e100_private *bdp)
...
@@ -180,7 +180,7 @@ e100_phy_address_detect(struct e100_private *bdp)
}
}
}
}
static
void
__devinit
static
void
e100_phy_id_detect
(
struct
e100_private
*
bdp
)
e100_phy_id_detect
(
struct
e100_private
*
bdp
)
{
{
u16
low_id_reg
,
high_id_reg
;
u16
low_id_reg
,
high_id_reg
;
...
@@ -204,7 +204,7 @@ e100_phy_id_detect(struct e100_private *bdp)
...
@@ -204,7 +204,7 @@ e100_phy_id_detect(struct e100_private *bdp)
((
unsigned
int
)
high_id_reg
<<
16
));
((
unsigned
int
)
high_id_reg
<<
16
));
}
}
static
void
__devinit
static
void
e100_phy_isolate
(
struct
e100_private
*
bdp
)
e100_phy_isolate
(
struct
e100_private
*
bdp
)
{
{
unsigned
int
phy_address
;
unsigned
int
phy_address
;
...
@@ -227,7 +227,7 @@ e100_phy_isolate(struct e100_private *bdp)
...
@@ -227,7 +227,7 @@ e100_phy_isolate(struct e100_private *bdp)
}
}
}
}
static
unsigned
char
__devinit
static
unsigned
char
e100_phy_specific_setup
(
struct
e100_private
*
bdp
)
e100_phy_specific_setup
(
struct
e100_private
*
bdp
)
{
{
u16
misc_reg
;
u16
misc_reg
;
...
@@ -380,7 +380,7 @@ e100_phy_fix_squelch(struct e100_private *bdp)
...
@@ -380,7 +380,7 @@ e100_phy_fix_squelch(struct e100_private *bdp)
* Returns:
* Returns:
* NOTHING
* NOTHING
*/
*/
static
void
__devinit
static
void
e100_fix_polarity
(
struct
e100_private
*
bdp
)
e100_fix_polarity
(
struct
e100_private
*
bdp
)
{
{
u16
status
;
u16
status
;
...
@@ -916,7 +916,7 @@ e100_phy_reset(struct e100_private *bdp)
...
@@ -916,7 +916,7 @@ e100_phy_reset(struct e100_private *bdp)
schedule_timeout
(
HZ
/
2
);
schedule_timeout
(
HZ
/
2
);
}
}
unsigned
char
__devinit
unsigned
char
e100_phy_init
(
struct
e100_private
*
bdp
)
e100_phy_init
(
struct
e100_private
*
bdp
)
{
{
e100_phy_reset
(
bdp
);
e100_phy_reset
(
bdp
);
...
...
drivers/net/sis900.c
View file @
e36a9e24
...
@@ -18,10 +18,11 @@
...
@@ -18,10 +18,11 @@
preliminary Rev. 1.0 Jan. 18, 1998
preliminary Rev. 1.0 Jan. 18, 1998
http://www.sis.com.tw/support/databook.htm
http://www.sis.com.tw/support/databook.htm
Rev 1.08.07 Nov. 2 2003 Daniele Venzano <webvenza@libero.it> add suspend/resume support
Rev 1.08.06 Sep. 24 2002 Mufasa Yang bug fix for Tx timeout & add SiS963 support
Rev 1.08.06 Sep. 24 2002 Mufasa Yang bug fix for Tx timeout & add SiS963 support
Rev 1.08.05 Jun.
6 2002 Mufasa Yang bug fix for read_eeprom & Tx descriptor over-boundary
Rev 1.08.05 Jun.
6 2002 Mufasa Yang bug fix for read_eeprom & Tx descriptor over-boundary
Rev 1.08.04 Apr. 25 2002 Mufasa Yang <mufasa@sis.com.tw> added SiS962 support
Rev 1.08.04 Apr. 25 2002 Mufasa Yang <mufasa@sis.com.tw> added SiS962 support
Rev 1.08.03 Feb. 1 2002 Matt Domsch <Matt_Domsch@dell.com> update to use library crc32 function
Rev 1.08.03 Feb.
1 2002 Matt Domsch <Matt_Domsch@dell.com> update to use library crc32 function
Rev 1.08.02 Nov. 30 2001 Hui-Fen Hsu workaround for EDB & bug fix for dhcp problem
Rev 1.08.02 Nov. 30 2001 Hui-Fen Hsu workaround for EDB & bug fix for dhcp problem
Rev 1.08.01 Aug. 25 2001 Hui-Fen Hsu update for 630ET & workaround for ICS1893 PHY
Rev 1.08.01 Aug. 25 2001 Hui-Fen Hsu update for 630ET & workaround for ICS1893 PHY
Rev 1.08.00 Jun. 11 2001 Hui-Fen Hsu workaround for RTL8201 PHY and some bug fix
Rev 1.08.00 Jun. 11 2001 Hui-Fen Hsu workaround for RTL8201 PHY and some bug fix
...
@@ -72,7 +73,7 @@
...
@@ -72,7 +73,7 @@
#include "sis900.h"
#include "sis900.h"
#define SIS900_MODULE_NAME "sis900"
#define SIS900_MODULE_NAME "sis900"
#define SIS900_DRV_VERSION "v1.08.0
6 9/24/2002
"
#define SIS900_DRV_VERSION "v1.08.0
7 11/02/2003
"
static
char
version
[]
__devinitdata
=
static
char
version
[]
__devinitdata
=
KERN_INFO
"sis900.c: "
SIS900_DRV_VERSION
"
\n
"
;
KERN_INFO
"sis900.c: "
SIS900_DRV_VERSION
"
\n
"
;
...
@@ -169,6 +170,7 @@ struct sis900_private {
...
@@ -169,6 +170,7 @@ struct sis900_private {
unsigned
int
tx_full
;
/* The Tx queue is full. */
unsigned
int
tx_full
;
/* The Tx queue is full. */
u8
host_bridge_rev
;
u8
host_bridge_rev
;
u32
pci_state
[
16
];
};
};
MODULE_AUTHOR
(
"Jim Huang <cmhuang@sis.com.tw>, Ollie Lho <ollie@sis.com.tw>"
);
MODULE_AUTHOR
(
"Jim Huang <cmhuang@sis.com.tw>, Ollie Lho <ollie@sis.com.tw>"
);
...
@@ -305,7 +307,7 @@ static int __devinit sis635_get_mac_addr(struct pci_dev * pci_dev, struct net_de
...
@@ -305,7 +307,7 @@ static int __devinit sis635_get_mac_addr(struct pci_dev * pci_dev, struct net_de
*
(
((
u16
*
)
net_dev
->
dev_addr
)
+
i
)
=
inw
(
ioaddr
+
rfdr
);
*
(
((
u16
*
)
net_dev
->
dev_addr
)
+
i
)
=
inw
(
ioaddr
+
rfdr
);
}
}
/* enable packet fil
i
tering */
/* enable packet filtering */
outl
(
rfcrSave
|
RFEN
,
rfcr
+
ioaddr
);
outl
(
rfcrSave
|
RFEN
,
rfcr
+
ioaddr
);
return
1
;
return
1
;
...
@@ -994,7 +996,7 @@ sis900_init_rxfilter (struct net_device * net_dev)
...
@@ -994,7 +996,7 @@ sis900_init_rxfilter (struct net_device * net_dev)
}
}
}
}
/* enable packet fil
i
tering */
/* enable packet filtering */
outl
(
rfcrSave
|
RFEN
,
rfcr
+
ioaddr
);
outl
(
rfcrSave
|
RFEN
,
rfcr
+
ioaddr
);
}
}
...
@@ -1466,7 +1468,7 @@ static void sis900_tx_timeout(struct net_device *net_dev)
...
@@ -1466,7 +1468,7 @@ static void sis900_tx_timeout(struct net_device *net_dev)
* @net_dev: the net device to transmit with
* @net_dev: the net device to transmit with
*
*
* Set the transmit buffer descriptor,
* Set the transmit buffer descriptor,
* and write TxENA to enable trans
im
t state machine.
* and write TxENA to enable trans
mi
t state machine.
* tell upper layer if the buffer is full
* tell upper layer if the buffer is full
*/
*/
...
@@ -2184,11 +2186,72 @@ static void __devexit sis900_remove(struct pci_dev *pci_dev)
...
@@ -2184,11 +2186,72 @@ static void __devexit sis900_remove(struct pci_dev *pci_dev)
pci_set_drvdata
(
pci_dev
,
NULL
);
pci_set_drvdata
(
pci_dev
,
NULL
);
}
}
#ifdef CONFIG_PM
static
int
sis900_suspend
(
struct
pci_dev
*
pci_dev
,
u32
state
)
{
struct
net_device
*
net_dev
=
pci_get_drvdata
(
pci_dev
);
struct
sis900_private
*
sis_priv
=
net_dev
->
priv
;
long
ioaddr
=
net_dev
->
base_addr
;
if
(
!
netif_running
(
net_dev
))
return
0
;
netif_stop_queue
(
net_dev
);
/* Stop the chip's Tx and Rx Status Machine */
outl
(
RxDIS
|
TxDIS
|
inl
(
ioaddr
+
cr
),
ioaddr
+
cr
);
pci_set_power_state
(
pci_dev
,
3
);
pci_save_state
(
pci_dev
,
sis_priv
->
pci_state
);
return
0
;
}
static
int
sis900_resume
(
struct
pci_dev
*
pci_dev
)
{
struct
net_device
*
net_dev
=
pci_get_drvdata
(
pci_dev
);
struct
sis900_private
*
sis_priv
=
net_dev
->
priv
;
long
ioaddr
=
net_dev
->
base_addr
;
if
(
!
netif_running
(
net_dev
))
return
0
;
pci_restore_state
(
pci_dev
,
sis_priv
->
pci_state
);
pci_set_power_state
(
pci_dev
,
0
);
sis900_init_rxfilter
(
net_dev
);
sis900_init_tx_ring
(
net_dev
);
sis900_init_rx_ring
(
net_dev
);
set_rx_mode
(
net_dev
);
netif_device_attach
(
net_dev
);
netif_start_queue
(
net_dev
);
/* Workaround for EDB */
sis900_set_mode
(
ioaddr
,
HW_SPEED_10_MBPS
,
FDX_CAPABLE_HALF_SELECTED
);
/* Enable all known interrupts by setting the interrupt mask. */
outl
((
RxSOVR
|
RxORN
|
RxERR
|
RxOK
|
TxURN
|
TxERR
|
TxIDLE
),
ioaddr
+
imr
);
outl
(
RxENA
|
inl
(
ioaddr
+
cr
),
ioaddr
+
cr
);
outl
(
IE
,
ioaddr
+
ier
);
sis900_check_mode
(
net_dev
,
sis_priv
->
mii
);
return
0
;
}
#endif
/* CONFIG_PM */
static
struct
pci_driver
sis900_pci_driver
=
{
static
struct
pci_driver
sis900_pci_driver
=
{
.
name
=
SIS900_MODULE_NAME
,
.
name
=
SIS900_MODULE_NAME
,
.
id_table
=
sis900_pci_tbl
,
.
id_table
=
sis900_pci_tbl
,
.
probe
=
sis900_probe
,
.
probe
=
sis900_probe
,
.
remove
=
__devexit_p
(
sis900_remove
),
.
remove
=
__devexit_p
(
sis900_remove
),
#ifdef CONFIG_PM
.
suspend
=
sis900_suspend
,
.
resume
=
sis900_resume
,
#endif
/* CONFIG_PM */
};
};
static
int
__init
sis900_init_module
(
void
)
static
int
__init
sis900_init_module
(
void
)
...
...
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