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
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