Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci
Commits
8fc65162
Commit
8fc65162
authored
Apr 14, 2006
by
Jeff Garzik
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch '7.0.38-k2' of
git://66.93.40.222/srv/git/netdev-2.6
parents
2acab771
99a1f9e8
Changes
9
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
118 additions
and
108 deletions
+118
-108
MAINTAINERS
MAINTAINERS
+6
-0
drivers/net/e1000/Makefile
drivers/net/e1000/Makefile
+1
-0
drivers/net/e1000/e1000.h
drivers/net/e1000/e1000.h
+4
-2
drivers/net/e1000/e1000_ethtool.c
drivers/net/e1000/e1000_ethtool.c
+2
-1
drivers/net/e1000/e1000_hw.c
drivers/net/e1000/e1000_hw.c
+2
-1
drivers/net/e1000/e1000_hw.h
drivers/net/e1000/e1000_hw.h
+2
-1
drivers/net/e1000/e1000_main.c
drivers/net/e1000/e1000_main.c
+97
-101
drivers/net/e1000/e1000_osdep.h
drivers/net/e1000/e1000_osdep.h
+2
-1
drivers/net/e1000/e1000_param.c
drivers/net/e1000/e1000_param.c
+2
-1
No files found.
MAINTAINERS
View file @
8fc65162
...
@@ -1395,6 +1395,8 @@ P: Jesse Brandeburg
...
@@ -1395,6 +1395,8 @@ P: Jesse Brandeburg
M: jesse.brandeburg@intel.com
M: jesse.brandeburg@intel.com
P: Jeff Kirsher
P: Jeff Kirsher
M: jeffrey.t.kirsher@intel.com
M: jeffrey.t.kirsher@intel.com
P: Auke Kok
M: auke-jan.h.kok@intel.com
W: http://sourceforge.net/projects/e1000/
W: http://sourceforge.net/projects/e1000/
S: Supported
S: Supported
...
@@ -1407,6 +1409,8 @@ P: Jesse Brandeburg
...
@@ -1407,6 +1409,8 @@ P: Jesse Brandeburg
M: jesse.brandeburg@intel.com
M: jesse.brandeburg@intel.com
P: Jeff Kirsher
P: Jeff Kirsher
M: jeffrey.t.kirsher@intel.com
M: jeffrey.t.kirsher@intel.com
P: Auke Kok
M: auke-jan.h.kok@intel.com
W: http://sourceforge.net/projects/e1000/
W: http://sourceforge.net/projects/e1000/
S: Supported
S: Supported
...
@@ -1419,6 +1423,8 @@ P: John Ronciak
...
@@ -1419,6 +1423,8 @@ P: John Ronciak
M: john.ronciak@intel.com
M: john.ronciak@intel.com
P: Jesse Brandeburg
P: Jesse Brandeburg
M: jesse.brandeburg@intel.com
M: jesse.brandeburg@intel.com
P: Auke Kok
M: auke-jan.h.kok@intel.com
W: http://sourceforge.net/projects/e1000/
W: http://sourceforge.net/projects/e1000/
S: Supported
S: Supported
...
...
drivers/net/e1000/Makefile
View file @
8fc65162
...
@@ -22,6 +22,7 @@
...
@@ -22,6 +22,7 @@
#
#
# Contact Information:
# Contact Information:
# Linux NICS <linux.nics@intel.com>
# Linux NICS <linux.nics@intel.com>
# e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
# Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
# Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
#
#
################################################################################
################################################################################
...
...
drivers/net/e1000/e1000.h
View file @
8fc65162
/*******************************************************************************
/*******************************************************************************
Copyright(c) 1999 - 200
5
Intel Corporation. All rights reserved.
Copyright(c) 1999 - 200
6
Intel Corporation. All rights reserved.
This program is free software; you can redistribute it and/or modify it
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free
under the terms of the GNU General Public License as published by the Free
...
@@ -22,6 +22,7 @@
...
@@ -22,6 +22,7 @@
Contact Information:
Contact Information:
Linux NICS <linux.nics@intel.com>
Linux NICS <linux.nics@intel.com>
e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
*******************************************************************************/
*******************************************************************************/
...
@@ -114,6 +115,8 @@ struct e1000_adapter;
...
@@ -114,6 +115,8 @@ struct e1000_adapter;
/* Supported Rx Buffer Sizes */
/* Supported Rx Buffer Sizes */
#define E1000_RXBUFFER_128 128
/* Used for packet split */
#define E1000_RXBUFFER_128 128
/* Used for packet split */
#define E1000_RXBUFFER_256 256
/* Used for packet split */
#define E1000_RXBUFFER_256 256
/* Used for packet split */
#define E1000_RXBUFFER_512 512
#define E1000_RXBUFFER_1024 1024
#define E1000_RXBUFFER_2048 2048
#define E1000_RXBUFFER_2048 2048
#define E1000_RXBUFFER_4096 4096
#define E1000_RXBUFFER_4096 4096
#define E1000_RXBUFFER_8192 8192
#define E1000_RXBUFFER_8192 8192
...
@@ -334,7 +337,6 @@ struct e1000_adapter {
...
@@ -334,7 +337,6 @@ struct e1000_adapter {
boolean_t
have_msi
;
boolean_t
have_msi
;
#endif
#endif
/* to not mess up cache alignment, always add to the bottom */
/* to not mess up cache alignment, always add to the bottom */
boolean_t
txb2b
;
#ifdef NETIF_F_TSO
#ifdef NETIF_F_TSO
boolean_t
tso_force
;
boolean_t
tso_force
;
#endif
#endif
...
...
drivers/net/e1000/e1000_ethtool.c
View file @
8fc65162
/*******************************************************************************
/*******************************************************************************
Copyright(c) 1999 - 200
5
Intel Corporation. All rights reserved.
Copyright(c) 1999 - 200
6
Intel Corporation. All rights reserved.
This program is free software; you can redistribute it and/or modify it
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free
under the terms of the GNU General Public License as published by the Free
...
@@ -22,6 +22,7 @@
...
@@ -22,6 +22,7 @@
Contact Information:
Contact Information:
Linux NICS <linux.nics@intel.com>
Linux NICS <linux.nics@intel.com>
e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
*******************************************************************************/
*******************************************************************************/
...
...
drivers/net/e1000/e1000_hw.c
View file @
8fc65162
/*******************************************************************************
/*******************************************************************************
Copyright(c) 1999 - 200
5
Intel Corporation. All rights reserved.
Copyright(c) 1999 - 200
6
Intel Corporation. All rights reserved.
This program is free software; you can redistribute it and/or modify it
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free
under the terms of the GNU General Public License as published by the Free
...
@@ -22,6 +22,7 @@
...
@@ -22,6 +22,7 @@
Contact Information:
Contact Information:
Linux NICS <linux.nics@intel.com>
Linux NICS <linux.nics@intel.com>
e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
*******************************************************************************/
*******************************************************************************/
...
...
drivers/net/e1000/e1000_hw.h
View file @
8fc65162
/*******************************************************************************
/*******************************************************************************
Copyright(c) 1999 - 200
5
Intel Corporation. All rights reserved.
Copyright(c) 1999 - 200
6
Intel Corporation. All rights reserved.
This program is free software; you can redistribute it and/or modify it
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free
under the terms of the GNU General Public License as published by the Free
...
@@ -22,6 +22,7 @@
...
@@ -22,6 +22,7 @@
Contact Information:
Contact Information:
Linux NICS <linux.nics@intel.com>
Linux NICS <linux.nics@intel.com>
e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
*******************************************************************************/
*******************************************************************************/
...
...
drivers/net/e1000/e1000_main.c
View file @
8fc65162
/*******************************************************************************
/*******************************************************************************
Copyright(c) 1999 - 200
5
Intel Corporation. All rights reserved.
Copyright(c) 1999 - 200
6
Intel Corporation. All rights reserved.
This program is free software; you can redistribute it and/or modify it
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free
under the terms of the GNU General Public License as published by the Free
...
@@ -22,6 +22,7 @@
...
@@ -22,6 +22,7 @@
Contact Information:
Contact Information:
Linux NICS <linux.nics@intel.com>
Linux NICS <linux.nics@intel.com>
e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
*******************************************************************************/
*******************************************************************************/
...
@@ -74,9 +75,9 @@ static char e1000_driver_string[] = "Intel(R) PRO/1000 Network Driver";
...
@@ -74,9 +75,9 @@ static char e1000_driver_string[] = "Intel(R) PRO/1000 Network Driver";
#else
#else
#define DRIVERNAPI "-NAPI"
#define DRIVERNAPI "-NAPI"
#endif
#endif
#define DRV_VERSION "7.0.3
3
-k2"DRIVERNAPI
#define DRV_VERSION "7.0.3
8
-k2"DRIVERNAPI
char
e1000_driver_version
[]
=
DRV_VERSION
;
char
e1000_driver_version
[]
=
DRV_VERSION
;
static
char
e1000_copyright
[]
=
"Copyright (c) 1999-200
5
Intel Corporation."
;
static
char
e1000_copyright
[]
=
"Copyright (c) 1999-200
6
Intel Corporation."
;
/* e1000_pci_tbl - PCI Device ID Table
/* e1000_pci_tbl - PCI Device ID Table
*
*
...
@@ -208,7 +209,7 @@ static void e1000_leave_82542_rst(struct e1000_adapter *adapter);
...
@@ -208,7 +209,7 @@ static void e1000_leave_82542_rst(struct e1000_adapter *adapter);
static
void
e1000_tx_timeout
(
struct
net_device
*
dev
);
static
void
e1000_tx_timeout
(
struct
net_device
*
dev
);
static
void
e1000_reset_task
(
struct
net_device
*
dev
);
static
void
e1000_reset_task
(
struct
net_device
*
dev
);
static
void
e1000_smartspeed
(
struct
e1000_adapter
*
adapter
);
static
void
e1000_smartspeed
(
struct
e1000_adapter
*
adapter
);
static
in
line
in
t
e1000_82547_fifo_workaround
(
struct
e1000_adapter
*
adapter
,
static
int
e1000_82547_fifo_workaround
(
struct
e1000_adapter
*
adapter
,
struct
sk_buff
*
skb
);
struct
sk_buff
*
skb
);
static
void
e1000_vlan_rx_register
(
struct
net_device
*
netdev
,
struct
vlan_group
*
grp
);
static
void
e1000_vlan_rx_register
(
struct
net_device
*
netdev
,
struct
vlan_group
*
grp
);
...
@@ -291,7 +292,7 @@ module_exit(e1000_exit_module);
...
@@ -291,7 +292,7 @@ module_exit(e1000_exit_module);
* @adapter: board private structure
* @adapter: board private structure
**/
**/
static
inline
void
static
void
e1000_irq_disable
(
struct
e1000_adapter
*
adapter
)
e1000_irq_disable
(
struct
e1000_adapter
*
adapter
)
{
{
atomic_inc
(
&
adapter
->
irq_sem
);
atomic_inc
(
&
adapter
->
irq_sem
);
...
@@ -305,7 +306,7 @@ e1000_irq_disable(struct e1000_adapter *adapter)
...
@@ -305,7 +306,7 @@ e1000_irq_disable(struct e1000_adapter *adapter)
* @adapter: board private structure
* @adapter: board private structure
**/
**/
static
inline
void
static
void
e1000_irq_enable
(
struct
e1000_adapter
*
adapter
)
e1000_irq_enable
(
struct
e1000_adapter
*
adapter
)
{
{
if
(
likely
(
atomic_dec_and_test
(
&
adapter
->
irq_sem
)))
{
if
(
likely
(
atomic_dec_and_test
(
&
adapter
->
irq_sem
)))
{
...
@@ -349,7 +350,7 @@ e1000_update_mng_vlan(struct e1000_adapter *adapter)
...
@@ -349,7 +350,7 @@ e1000_update_mng_vlan(struct e1000_adapter *adapter)
*
*
**/
**/
static
inline
void
static
void
e1000_release_hw_control
(
struct
e1000_adapter
*
adapter
)
e1000_release_hw_control
(
struct
e1000_adapter
*
adapter
)
{
{
uint32_t
ctrl_ext
;
uint32_t
ctrl_ext
;
...
@@ -359,6 +360,7 @@ e1000_release_hw_control(struct e1000_adapter *adapter)
...
@@ -359,6 +360,7 @@ e1000_release_hw_control(struct e1000_adapter *adapter)
switch
(
adapter
->
hw
.
mac_type
)
{
switch
(
adapter
->
hw
.
mac_type
)
{
case
e1000_82571
:
case
e1000_82571
:
case
e1000_82572
:
case
e1000_82572
:
case
e1000_80003es2lan
:
ctrl_ext
=
E1000_READ_REG
(
&
adapter
->
hw
,
CTRL_EXT
);
ctrl_ext
=
E1000_READ_REG
(
&
adapter
->
hw
,
CTRL_EXT
);
E1000_WRITE_REG
(
&
adapter
->
hw
,
CTRL_EXT
,
E1000_WRITE_REG
(
&
adapter
->
hw
,
CTRL_EXT
,
ctrl_ext
&
~
E1000_CTRL_EXT_DRV_LOAD
);
ctrl_ext
&
~
E1000_CTRL_EXT_DRV_LOAD
);
...
@@ -383,7 +385,7 @@ e1000_release_hw_control(struct e1000_adapter *adapter)
...
@@ -383,7 +385,7 @@ e1000_release_hw_control(struct e1000_adapter *adapter)
*
*
**/
**/
static
inline
void
static
void
e1000_get_hw_control
(
struct
e1000_adapter
*
adapter
)
e1000_get_hw_control
(
struct
e1000_adapter
*
adapter
)
{
{
uint32_t
ctrl_ext
;
uint32_t
ctrl_ext
;
...
@@ -392,6 +394,7 @@ e1000_get_hw_control(struct e1000_adapter *adapter)
...
@@ -392,6 +394,7 @@ e1000_get_hw_control(struct e1000_adapter *adapter)
switch
(
adapter
->
hw
.
mac_type
)
{
switch
(
adapter
->
hw
.
mac_type
)
{
case
e1000_82571
:
case
e1000_82571
:
case
e1000_82572
:
case
e1000_82572
:
case
e1000_80003es2lan
:
ctrl_ext
=
E1000_READ_REG
(
&
adapter
->
hw
,
CTRL_EXT
);
ctrl_ext
=
E1000_READ_REG
(
&
adapter
->
hw
,
CTRL_EXT
);
E1000_WRITE_REG
(
&
adapter
->
hw
,
CTRL_EXT
,
E1000_WRITE_REG
(
&
adapter
->
hw
,
CTRL_EXT
,
ctrl_ext
|
E1000_CTRL_EXT_DRV_LOAD
);
ctrl_ext
|
E1000_CTRL_EXT_DRV_LOAD
);
...
@@ -419,7 +422,7 @@ e1000_up(struct e1000_adapter *adapter)
...
@@ -419,7 +422,7 @@ e1000_up(struct e1000_adapter *adapter)
uint16_t
mii_reg
;
uint16_t
mii_reg
;
e1000_read_phy_reg
(
&
adapter
->
hw
,
PHY_CTRL
,
&
mii_reg
);
e1000_read_phy_reg
(
&
adapter
->
hw
,
PHY_CTRL
,
&
mii_reg
);
if
(
mii_reg
&
MII_CR_POWER_DOWN
)
if
(
mii_reg
&
MII_CR_POWER_DOWN
)
e1000_phy_reset
(
&
adapter
->
hw
);
e1000_phy_
hw_
reset
(
&
adapter
->
hw
);
}
}
e1000_set_multi
(
netdev
);
e1000_set_multi
(
netdev
);
...
@@ -970,8 +973,8 @@ e1000_sw_init(struct e1000_adapter *adapter)
...
@@ -970,8 +973,8 @@ e1000_sw_init(struct e1000_adapter *adapter)
pci_read_config_word
(
pdev
,
PCI_COMMAND
,
&
hw
->
pci_cmd_word
);
pci_read_config_word
(
pdev
,
PCI_COMMAND
,
&
hw
->
pci_cmd_word
);
adapter
->
rx_buffer_len
=
E1000_RXBUFFER_2048
;
adapter
->
rx_buffer_len
=
MAXIMUM_ETHERNET_FRAME_SIZE
;
adapter
->
rx_ps_bsize0
=
E1000_RXBUFFER_
256
;
adapter
->
rx_ps_bsize0
=
E1000_RXBUFFER_
128
;
hw
->
max_frame_size
=
netdev
->
mtu
+
hw
->
max_frame_size
=
netdev
->
mtu
+
ENET_HEADER_SIZE
+
ETHERNET_FCS_SIZE
;
ENET_HEADER_SIZE
+
ETHERNET_FCS_SIZE
;
hw
->
min_frame_size
=
MINIMUM_ETHERNET_FRAME_SIZE
;
hw
->
min_frame_size
=
MINIMUM_ETHERNET_FRAME_SIZE
;
...
@@ -1179,7 +1182,7 @@ e1000_close(struct net_device *netdev)
...
@@ -1179,7 +1182,7 @@ e1000_close(struct net_device *netdev)
* @start: address of beginning of memory
* @start: address of beginning of memory
* @len: length of memory
* @len: length of memory
**/
**/
static
inline
boolean_t
static
boolean_t
e1000_check_64k_bound
(
struct
e1000_adapter
*
adapter
,
e1000_check_64k_bound
(
struct
e1000_adapter
*
adapter
,
void
*
start
,
unsigned
long
len
)
void
*
start
,
unsigned
long
len
)
{
{
...
@@ -1597,14 +1600,21 @@ e1000_setup_rctl(struct e1000_adapter *adapter)
...
@@ -1597,14 +1600,21 @@ e1000_setup_rctl(struct e1000_adapter *adapter)
rctl
|=
E1000_RCTL_LPE
;
rctl
|=
E1000_RCTL_LPE
;
/* Setup buffer sizes */
/* Setup buffer sizes */
if
(
adapter
->
hw
.
mac_type
>=
e1000_82571
)
{
/* We can now specify buffers in 1K increments.
* BSIZE and BSEX are ignored in this case. */
rctl
|=
adapter
->
rx_buffer_len
<<
0x11
;
}
else
{
rctl
&=
~
E1000_RCTL_SZ_4096
;
rctl
&=
~
E1000_RCTL_SZ_4096
;
rctl
|=
E1000_RCTL_BSEX
;
rctl
|=
E1000_RCTL_BSEX
;
switch
(
adapter
->
rx_buffer_len
)
{
switch
(
adapter
->
rx_buffer_len
)
{
case
E1000_RXBUFFER_256
:
rctl
|=
E1000_RCTL_SZ_256
;
rctl
&=
~
E1000_RCTL_BSEX
;
break
;
case
E1000_RXBUFFER_512
:
rctl
|=
E1000_RCTL_SZ_512
;
rctl
&=
~
E1000_RCTL_BSEX
;
break
;
case
E1000_RXBUFFER_1024
:
rctl
|=
E1000_RCTL_SZ_1024
;
rctl
&=
~
E1000_RCTL_BSEX
;
break
;
case
E1000_RXBUFFER_2048
:
case
E1000_RXBUFFER_2048
:
default:
default:
rctl
|=
E1000_RCTL_SZ_2048
;
rctl
|=
E1000_RCTL_SZ_2048
;
...
@@ -1620,7 +1630,6 @@ e1000_setup_rctl(struct e1000_adapter *adapter)
...
@@ -1620,7 +1630,6 @@ e1000_setup_rctl(struct e1000_adapter *adapter)
rctl
|=
E1000_RCTL_SZ_16384
;
rctl
|=
E1000_RCTL_SZ_16384
;
break
;
break
;
}
}
}
#ifndef CONFIG_E1000_DISABLE_PACKET_SPLIT
#ifndef CONFIG_E1000_DISABLE_PACKET_SPLIT
/* 82571 and greater support packet-split where the protocol
/* 82571 and greater support packet-split where the protocol
...
@@ -1713,7 +1722,7 @@ e1000_configure_rx(struct e1000_adapter *adapter)
...
@@ -1713,7 +1722,7 @@ e1000_configure_rx(struct e1000_adapter *adapter)
if
(
hw
->
mac_type
>=
e1000_82571
)
{
if
(
hw
->
mac_type
>=
e1000_82571
)
{
ctrl_ext
=
E1000_READ_REG
(
hw
,
CTRL_EXT
);
ctrl_ext
=
E1000_READ_REG
(
hw
,
CTRL_EXT
);
/* Reset delay timers after every interrupt */
/* Reset delay timers after every interrupt */
ctrl_ext
|=
E1000_CTRL_EXT_
CANC
;
ctrl_ext
|=
E1000_CTRL_EXT_
INT_TIMER_CLR
;
#ifdef CONFIG_E1000_NAPI
#ifdef CONFIG_E1000_NAPI
/* Auto-Mask interrupts upon ICR read. */
/* Auto-Mask interrupts upon ICR read. */
ctrl_ext
|=
E1000_CTRL_EXT_IAME
;
ctrl_ext
|=
E1000_CTRL_EXT_IAME
;
...
@@ -1805,7 +1814,7 @@ e1000_free_all_tx_resources(struct e1000_adapter *adapter)
...
@@ -1805,7 +1814,7 @@ e1000_free_all_tx_resources(struct e1000_adapter *adapter)
e1000_free_tx_resources
(
adapter
,
&
adapter
->
tx_ring
[
i
]);
e1000_free_tx_resources
(
adapter
,
&
adapter
->
tx_ring
[
i
]);
}
}
static
inline
void
static
void
e1000_unmap_and_free_tx_resource
(
struct
e1000_adapter
*
adapter
,
e1000_unmap_and_free_tx_resource
(
struct
e1000_adapter
*
adapter
,
struct
e1000_buffer
*
buffer_info
)
struct
e1000_buffer
*
buffer_info
)
{
{
...
@@ -2245,6 +2254,7 @@ e1000_watchdog_task(struct e1000_adapter *adapter)
...
@@ -2245,6 +2254,7 @@ e1000_watchdog_task(struct e1000_adapter *adapter)
if
(
link
)
{
if
(
link
)
{
if
(
!
netif_carrier_ok
(
netdev
))
{
if
(
!
netif_carrier_ok
(
netdev
))
{
boolean_t
txb2b
=
1
;
e1000_get_speed_and_duplex
(
&
adapter
->
hw
,
e1000_get_speed_and_duplex
(
&
adapter
->
hw
,
&
adapter
->
link_speed
,
&
adapter
->
link_speed
,
&
adapter
->
link_duplex
);
&
adapter
->
link_duplex
);
...
@@ -2258,15 +2268,14 @@ e1000_watchdog_task(struct e1000_adapter *adapter)
...
@@ -2258,15 +2268,14 @@ e1000_watchdog_task(struct e1000_adapter *adapter)
* and adjust the timeout factor */
* and adjust the timeout factor */
netdev
->
tx_queue_len
=
adapter
->
tx_queue_len
;
netdev
->
tx_queue_len
=
adapter
->
tx_queue_len
;
adapter
->
tx_timeout_factor
=
1
;
adapter
->
tx_timeout_factor
=
1
;
adapter
->
txb2b
=
1
;
switch
(
adapter
->
link_speed
)
{
switch
(
adapter
->
link_speed
)
{
case
SPEED_10
:
case
SPEED_10
:
adapter
->
txb2b
=
0
;
txb2b
=
0
;
netdev
->
tx_queue_len
=
10
;
netdev
->
tx_queue_len
=
10
;
adapter
->
tx_timeout_factor
=
8
;
adapter
->
tx_timeout_factor
=
8
;
break
;
break
;
case
SPEED_100
:
case
SPEED_100
:
adapter
->
txb2b
=
0
;
txb2b
=
0
;
netdev
->
tx_queue_len
=
100
;
netdev
->
tx_queue_len
=
100
;
/* maybe add some timeout factor ? */
/* maybe add some timeout factor ? */
break
;
break
;
...
@@ -2274,7 +2283,7 @@ e1000_watchdog_task(struct e1000_adapter *adapter)
...
@@ -2274,7 +2283,7 @@ e1000_watchdog_task(struct e1000_adapter *adapter)
if
((
adapter
->
hw
.
mac_type
==
e1000_82571
||
if
((
adapter
->
hw
.
mac_type
==
e1000_82571
||
adapter
->
hw
.
mac_type
==
e1000_82572
)
&&
adapter
->
hw
.
mac_type
==
e1000_82572
)
&&
adapter
->
txb2b
==
0
)
{
txb2b
==
0
)
{
#define SPEED_MODE_BIT (1 << 21)
#define SPEED_MODE_BIT (1 << 21)
uint32_t
tarc0
;
uint32_t
tarc0
;
tarc0
=
E1000_READ_REG
(
&
adapter
->
hw
,
TARC0
);
tarc0
=
E1000_READ_REG
(
&
adapter
->
hw
,
TARC0
);
...
@@ -2398,7 +2407,7 @@ e1000_watchdog_task(struct e1000_adapter *adapter)
...
@@ -2398,7 +2407,7 @@ e1000_watchdog_task(struct e1000_adapter *adapter)
#define E1000_TX_FLAGS_VLAN_MASK 0xffff0000
#define E1000_TX_FLAGS_VLAN_MASK 0xffff0000
#define E1000_TX_FLAGS_VLAN_SHIFT 16
#define E1000_TX_FLAGS_VLAN_SHIFT 16
static
in
line
in
t
static
int
e1000_tso
(
struct
e1000_adapter
*
adapter
,
struct
e1000_tx_ring
*
tx_ring
,
e1000_tso
(
struct
e1000_adapter
*
adapter
,
struct
e1000_tx_ring
*
tx_ring
,
struct
sk_buff
*
skb
)
struct
sk_buff
*
skb
)
{
{
...
@@ -2478,7 +2487,7 @@ e1000_tso(struct e1000_adapter *adapter, struct e1000_tx_ring *tx_ring,
...
@@ -2478,7 +2487,7 @@ e1000_tso(struct e1000_adapter *adapter, struct e1000_tx_ring *tx_ring,
return
FALSE
;
return
FALSE
;
}
}
static
inline
boolean_t
static
boolean_t
e1000_tx_csum
(
struct
e1000_adapter
*
adapter
,
struct
e1000_tx_ring
*
tx_ring
,
e1000_tx_csum
(
struct
e1000_adapter
*
adapter
,
struct
e1000_tx_ring
*
tx_ring
,
struct
sk_buff
*
skb
)
struct
sk_buff
*
skb
)
{
{
...
@@ -2514,7 +2523,7 @@ e1000_tx_csum(struct e1000_adapter *adapter, struct e1000_tx_ring *tx_ring,
...
@@ -2514,7 +2523,7 @@ e1000_tx_csum(struct e1000_adapter *adapter, struct e1000_tx_ring *tx_ring,
#define E1000_MAX_TXD_PWR 12
#define E1000_MAX_TXD_PWR 12
#define E1000_MAX_DATA_PER_TXD (1<<E1000_MAX_TXD_PWR)
#define E1000_MAX_DATA_PER_TXD (1<<E1000_MAX_TXD_PWR)
static
in
line
in
t
static
int
e1000_tx_map
(
struct
e1000_adapter
*
adapter
,
struct
e1000_tx_ring
*
tx_ring
,
e1000_tx_map
(
struct
e1000_adapter
*
adapter
,
struct
e1000_tx_ring
*
tx_ring
,
struct
sk_buff
*
skb
,
unsigned
int
first
,
unsigned
int
max_per_txd
,
struct
sk_buff
*
skb
,
unsigned
int
first
,
unsigned
int
max_per_txd
,
unsigned
int
nr_frags
,
unsigned
int
mss
)
unsigned
int
nr_frags
,
unsigned
int
mss
)
...
@@ -2623,7 +2632,7 @@ e1000_tx_map(struct e1000_adapter *adapter, struct e1000_tx_ring *tx_ring,
...
@@ -2623,7 +2632,7 @@ e1000_tx_map(struct e1000_adapter *adapter, struct e1000_tx_ring *tx_ring,
return
count
;
return
count
;
}
}
static
inline
void
static
void
e1000_tx_queue
(
struct
e1000_adapter
*
adapter
,
struct
e1000_tx_ring
*
tx_ring
,
e1000_tx_queue
(
struct
e1000_adapter
*
adapter
,
struct
e1000_tx_ring
*
tx_ring
,
int
tx_flags
,
int
count
)
int
tx_flags
,
int
count
)
{
{
...
@@ -2687,7 +2696,7 @@ e1000_tx_queue(struct e1000_adapter *adapter, struct e1000_tx_ring *tx_ring,
...
@@ -2687,7 +2696,7 @@ e1000_tx_queue(struct e1000_adapter *adapter, struct e1000_tx_ring *tx_ring,
#define E1000_FIFO_HDR 0x10
#define E1000_FIFO_HDR 0x10
#define E1000_82547_PAD_LEN 0x3E0
#define E1000_82547_PAD_LEN 0x3E0
static
in
line
in
t
static
int
e1000_82547_fifo_workaround
(
struct
e1000_adapter
*
adapter
,
struct
sk_buff
*
skb
)
e1000_82547_fifo_workaround
(
struct
e1000_adapter
*
adapter
,
struct
sk_buff
*
skb
)
{
{
uint32_t
fifo_space
=
adapter
->
tx_fifo_size
-
adapter
->
tx_fifo_head
;
uint32_t
fifo_space
=
adapter
->
tx_fifo_size
-
adapter
->
tx_fifo_head
;
...
@@ -2714,7 +2723,7 @@ no_fifo_stall_required:
...
@@ -2714,7 +2723,7 @@ no_fifo_stall_required:
}
}
#define MINIMUM_DHCP_PACKET_SIZE 282
#define MINIMUM_DHCP_PACKET_SIZE 282
static
in
line
in
t
static
int
e1000_transfer_dhcp_info
(
struct
e1000_adapter
*
adapter
,
struct
sk_buff
*
skb
)
e1000_transfer_dhcp_info
(
struct
e1000_adapter
*
adapter
,
struct
sk_buff
*
skb
)
{
{
struct
e1000_hw
*
hw
=
&
adapter
->
hw
;
struct
e1000_hw
*
hw
=
&
adapter
->
hw
;
...
@@ -2980,8 +2989,7 @@ e1000_change_mtu(struct net_device *netdev, int new_mtu)
...
@@ -2980,8 +2989,7 @@ e1000_change_mtu(struct net_device *netdev, int new_mtu)
/* Adapter-specific max frame size limits. */
/* Adapter-specific max frame size limits. */
switch
(
adapter
->
hw
.
mac_type
)
{
switch
(
adapter
->
hw
.
mac_type
)
{
case
e1000_82542_rev2_0
:
case
e1000_undefined
...
e1000_82542_rev2_1
:
case
e1000_82542_rev2_1
:
if
(
max_frame
>
MAXIMUM_ETHERNET_FRAME_SIZE
)
{
if
(
max_frame
>
MAXIMUM_ETHERNET_FRAME_SIZE
)
{
DPRINTK
(
PROBE
,
ERR
,
"Jumbo Frames not supported.
\n
"
);
DPRINTK
(
PROBE
,
ERR
,
"Jumbo Frames not supported.
\n
"
);
return
-
EINVAL
;
return
-
EINVAL
;
...
@@ -3015,27 +3023,32 @@ e1000_change_mtu(struct net_device *netdev, int new_mtu)
...
@@ -3015,27 +3023,32 @@ e1000_change_mtu(struct net_device *netdev, int new_mtu)
break
;
break
;
}
}
/* NOTE: dev_alloc_skb reserves 16 bytes, and typically NET_IP_ALIGN
* means we reserve 2 more, this pushes us to allocate from the next
* larger slab size
* i.e. RXBUFFER_2048 --> size-4096 slab */
if
(
adapter
->
hw
.
mac_type
>
e1000_82547_rev_2
)
{
if
(
max_frame
<=
E1000_RXBUFFER_256
)
adapter
->
rx_buffer_len
=
max_frame
;
adapter
->
rx_buffer_len
=
E1000_RXBUFFER_256
;
E1000_ROUNDUP
(
adapter
->
rx_buffer_len
,
1024
);
else
if
(
max_frame
<=
E1000_RXBUFFER_512
)
}
else
{
adapter
->
rx_buffer_len
=
E1000_RXBUFFER_512
;
if
(
unlikely
((
adapter
->
hw
.
mac_type
<
e1000_82543
)
&&
else
if
(
max_frame
<=
E1000_RXBUFFER_1024
)
(
max_frame
>
MAXIMUM_ETHERNET_FRAME_SIZE
)))
{
adapter
->
rx_buffer_len
=
E1000_RXBUFFER_1024
;
DPRINTK
(
PROBE
,
ERR
,
"Jumbo Frames not supported "
else
if
(
max_frame
<=
E1000_RXBUFFER_2048
)
"on 82542
\n
"
);
return
-
EINVAL
;
}
else
{
if
(
max_frame
<=
E1000_RXBUFFER_2048
)
adapter
->
rx_buffer_len
=
E1000_RXBUFFER_2048
;
adapter
->
rx_buffer_len
=
E1000_RXBUFFER_2048
;
else
if
(
max_frame
<=
E1000_RXBUFFER_4096
)
else
if
(
max_frame
<=
E1000_RXBUFFER_4096
)
adapter
->
rx_buffer_len
=
E1000_RXBUFFER_4096
;
adapter
->
rx_buffer_len
=
E1000_RXBUFFER_4096
;
else
if
(
max_frame
<=
E1000_RXBUFFER_8192
)
else
if
(
max_frame
<=
E1000_RXBUFFER_8192
)
adapter
->
rx_buffer_len
=
E1000_RXBUFFER_8192
;
adapter
->
rx_buffer_len
=
E1000_RXBUFFER_8192
;
else
if
(
max_frame
<=
E1000_RXBUFFER_16384
)
else
if
(
max_frame
<=
E1000_RXBUFFER_16384
)
adapter
->
rx_buffer_len
=
E1000_RXBUFFER_16384
;
adapter
->
rx_buffer_len
=
E1000_RXBUFFER_16384
;
}
}
/* adjust allocation if LPE protects us, and we aren't using SBP */
#define MAXIMUM_ETHERNET_VLAN_SIZE 1522
if
(
!
adapter
->
hw
.
tbi_compatibility_on
&&
((
max_frame
==
MAXIMUM_ETHERNET_FRAME_SIZE
)
||
(
max_frame
==
MAXIMUM_ETHERNET_VLAN_SIZE
)))
adapter
->
rx_buffer_len
=
MAXIMUM_ETHERNET_VLAN_SIZE
;
netdev
->
mtu
=
new_mtu
;
netdev
->
mtu
=
new_mtu
;
...
@@ -3163,7 +3176,6 @@ e1000_update_stats(struct e1000_adapter *adapter)
...
@@ -3163,7 +3176,6 @@ e1000_update_stats(struct e1000_adapter *adapter)
adapter
->
stats
.
crcerrs
+
adapter
->
stats
.
algnerrc
+
adapter
->
stats
.
crcerrs
+
adapter
->
stats
.
algnerrc
+
adapter
->
stats
.
ruc
+
adapter
->
stats
.
roc
+
adapter
->
stats
.
ruc
+
adapter
->
stats
.
roc
+
adapter
->
stats
.
cexterr
;
adapter
->
stats
.
cexterr
;
adapter
->
net_stats
.
rx_dropped
=
0
;
adapter
->
net_stats
.
rx_length_errors
=
adapter
->
stats
.
ruc
+
adapter
->
net_stats
.
rx_length_errors
=
adapter
->
stats
.
ruc
+
adapter
->
stats
.
roc
;
adapter
->
stats
.
roc
;
adapter
->
net_stats
.
rx_crc_errors
=
adapter
->
stats
.
crcerrs
;
adapter
->
net_stats
.
rx_crc_errors
=
adapter
->
stats
.
crcerrs
;
...
@@ -3389,13 +3401,15 @@ e1000_clean_tx_irq(struct e1000_adapter *adapter,
...
@@ -3389,13 +3401,15 @@ e1000_clean_tx_irq(struct e1000_adapter *adapter,
tx_ring
->
next_to_clean
=
i
;
tx_ring
->
next_to_clean
=
i
;
spin_lock
(
&
tx_ring
->
tx_lock
);
#define TX_WAKE_THRESHOLD 32
if
(
unlikely
(
cleaned
&&
netif_queue_stopped
(
netdev
)
&&
if
(
unlikely
(
cleaned
&&
netif_queue_stopped
(
netdev
)
&&
netif_carrier_ok
(
netdev
)))
netif_carrier_ok
(
netdev
)))
{
spin_lock
(
&
tx_ring
->
tx_lock
);
if
(
netif_queue_stopped
(
netdev
)
&&
(
E1000_DESC_UNUSED
(
tx_ring
)
>=
TX_WAKE_THRESHOLD
))
netif_wake_queue
(
netdev
);
netif_wake_queue
(
netdev
);
spin_unlock
(
&
tx_ring
->
tx_lock
);
spin_unlock
(
&
tx_ring
->
tx_lock
);
}
if
(
adapter
->
detect_tx_hung
)
{
if
(
adapter
->
detect_tx_hung
)
{
/* Detect a transmit hang in hardware, this serializes the
/* Detect a transmit hang in hardware, this serializes the
...
@@ -3443,7 +3457,7 @@ e1000_clean_tx_irq(struct e1000_adapter *adapter,
...
@@ -3443,7 +3457,7 @@ e1000_clean_tx_irq(struct e1000_adapter *adapter,
* @sk_buff: socket buffer with received data
* @sk_buff: socket buffer with received data
**/
**/
static
inline
void
static
void
e1000_rx_checksum
(
struct
e1000_adapter
*
adapter
,
e1000_rx_checksum
(
struct
e1000_adapter
*
adapter
,
uint32_t
status_err
,
uint32_t
csum
,
uint32_t
status_err
,
uint32_t
csum
,
struct
sk_buff
*
skb
)
struct
sk_buff
*
skb
)
...
@@ -3567,10 +3581,12 @@ e1000_clean_rx_irq(struct e1000_adapter *adapter,
...
@@ -3567,10 +3581,12 @@ e1000_clean_rx_irq(struct e1000_adapter *adapter,
flags
);
flags
);
length
--
;
length
--
;
}
else
{
}
else
{
dev_kfree_skb_irq
(
skb
);
/* recycle */
buffer_info
->
skb
=
skb
;
goto
next_desc
;
goto
next_desc
;
}
}
}
}
else
skb_put
(
skb
,
length
);
/* code added for copybreak, this should improve
/* code added for copybreak, this should improve
* performance for small packets with large amounts
* performance for small packets with large amounts
...
@@ -3675,6 +3691,7 @@ e1000_clean_rx_irq_ps(struct e1000_adapter *adapter,
...
@@ -3675,6 +3691,7 @@ e1000_clean_rx_irq_ps(struct e1000_adapter *adapter,
i
=
rx_ring
->
next_to_clean
;
i
=
rx_ring
->
next_to_clean
;
rx_desc
=
E1000_RX_DESC_PS
(
*
rx_ring
,
i
);
rx_desc
=
E1000_RX_DESC_PS
(
*
rx_ring
,
i
);
staterr
=
le32_to_cpu
(
rx_desc
->
wb
.
middle
.
status_error
);
staterr
=
le32_to_cpu
(
rx_desc
->
wb
.
middle
.
status_error
);
buffer_info
=
&
rx_ring
->
buffer_info
[
i
];
while
(
staterr
&
E1000_RXD_STAT_DD
)
{
while
(
staterr
&
E1000_RXD_STAT_DD
)
{
buffer_info
=
&
rx_ring
->
buffer_info
[
i
];
buffer_info
=
&
rx_ring
->
buffer_info
[
i
];
...
@@ -3735,7 +3752,7 @@ e1000_clean_rx_irq_ps(struct e1000_adapter *adapter,
...
@@ -3735,7 +3752,7 @@ e1000_clean_rx_irq_ps(struct e1000_adapter *adapter,
/* page alloc/put takes too long and effects small packet
/* page alloc/put takes too long and effects small packet
* throughput, so unsplit small packets and save the alloc/put*/
* throughput, so unsplit small packets and save the alloc/put*/
if
(
l1
&&
((
length
+
l1
)
<
E1000_CB_LENGTH
))
{
if
(
l1
&&
((
length
+
l1
)
<
=
adapter
->
rx_ps_bsize0
))
{
u8
*
vaddr
;
u8
*
vaddr
;
/* there is no documentation about how to call
/* there is no documentation about how to call
* kmap_atomic, so we can't hold the mapping
* kmap_atomic, so we can't hold the mapping
...
@@ -3768,6 +3785,7 @@ e1000_clean_rx_irq_ps(struct e1000_adapter *adapter,
...
@@ -3768,6 +3785,7 @@ e1000_clean_rx_irq_ps(struct e1000_adapter *adapter,
ps_page
->
ps_page
[
j
]
=
NULL
;
ps_page
->
ps_page
[
j
]
=
NULL
;
skb
->
len
+=
length
;
skb
->
len
+=
length
;
skb
->
data_len
+=
length
;
skb
->
data_len
+=
length
;
skb
->
truesize
+=
length
;
}
}
copydone:
copydone:
...
@@ -4515,21 +4533,13 @@ e1000_suspend(struct pci_dev *pdev, pm_message_t state)
...
@@ -4515,21 +4533,13 @@ e1000_suspend(struct pci_dev *pdev, pm_message_t state)
E1000_WRITE_REG
(
&
adapter
->
hw
,
WUC
,
E1000_WUC_PME_EN
);
E1000_WRITE_REG
(
&
adapter
->
hw
,
WUC
,
E1000_WUC_PME_EN
);
E1000_WRITE_REG
(
&
adapter
->
hw
,
WUFC
,
wufc
);
E1000_WRITE_REG
(
&
adapter
->
hw
,
WUFC
,
wufc
);
retval
=
pci_enable_wake
(
pdev
,
PCI_D3hot
,
1
);
pci_enable_wake
(
pdev
,
PCI_D3hot
,
1
);
if
(
retval
)
pci_enable_wake
(
pdev
,
PCI_D3cold
,
1
);
DPRINTK
(
PROBE
,
ERR
,
"Error enabling D3 wake
\n
"
);
retval
=
pci_enable_wake
(
pdev
,
PCI_D3cold
,
1
);
if
(
retval
)
DPRINTK
(
PROBE
,
ERR
,
"Error enabling D3 cold wake
\n
"
);
}
else
{
}
else
{
E1000_WRITE_REG
(
&
adapter
->
hw
,
WUC
,
0
);
E1000_WRITE_REG
(
&
adapter
->
hw
,
WUC
,
0
);
E1000_WRITE_REG
(
&
adapter
->
hw
,
WUFC
,
0
);
E1000_WRITE_REG
(
&
adapter
->
hw
,
WUFC
,
0
);
retval
=
pci_enable_wake
(
pdev
,
PCI_D3hot
,
0
);
pci_enable_wake
(
pdev
,
PCI_D3hot
,
0
);
if
(
retval
)
pci_enable_wake
(
pdev
,
PCI_D3cold
,
0
);
DPRINTK
(
PROBE
,
ERR
,
"Error enabling D3 wake
\n
"
);
retval
=
pci_enable_wake
(
pdev
,
PCI_D3cold
,
0
);
if
(
retval
)
DPRINTK
(
PROBE
,
ERR
,
"Error enabling D3 cold wake
\n
"
);
}
}
if
(
adapter
->
hw
.
mac_type
>=
e1000_82540
&&
if
(
adapter
->
hw
.
mac_type
>=
e1000_82540
&&
...
@@ -4538,13 +4548,8 @@ e1000_suspend(struct pci_dev *pdev, pm_message_t state)
...
@@ -4538,13 +4548,8 @@ e1000_suspend(struct pci_dev *pdev, pm_message_t state)
if
(
manc
&
E1000_MANC_SMBUS_EN
)
{
if
(
manc
&
E1000_MANC_SMBUS_EN
)
{
manc
|=
E1000_MANC_ARP_EN
;
manc
|=
E1000_MANC_ARP_EN
;
E1000_WRITE_REG
(
&
adapter
->
hw
,
MANC
,
manc
);
E1000_WRITE_REG
(
&
adapter
->
hw
,
MANC
,
manc
);
retval
=
pci_enable_wake
(
pdev
,
PCI_D3hot
,
1
);
pci_enable_wake
(
pdev
,
PCI_D3hot
,
1
);
if
(
retval
)
pci_enable_wake
(
pdev
,
PCI_D3cold
,
1
);
DPRINTK
(
PROBE
,
ERR
,
"Error enabling D3 wake
\n
"
);
retval
=
pci_enable_wake
(
pdev
,
PCI_D3cold
,
1
);
if
(
retval
)
DPRINTK
(
PROBE
,
ERR
,
"Error enabling D3 cold wake
\n
"
);
}
}
}
}
...
@@ -4554,9 +4559,7 @@ e1000_suspend(struct pci_dev *pdev, pm_message_t state)
...
@@ -4554,9 +4559,7 @@ e1000_suspend(struct pci_dev *pdev, pm_message_t state)
pci_disable_device
(
pdev
);
pci_disable_device
(
pdev
);
retval
=
pci_set_power_state
(
pdev
,
pci_choose_state
(
pdev
,
state
));
pci_set_power_state
(
pdev
,
pci_choose_state
(
pdev
,
state
));
if
(
retval
)
DPRINTK
(
PROBE
,
ERR
,
"Error in setting power state
\n
"
);
return
0
;
return
0
;
}
}
...
@@ -4567,22 +4570,15 @@ e1000_resume(struct pci_dev *pdev)
...
@@ -4567,22 +4570,15 @@ e1000_resume(struct pci_dev *pdev)
{
{
struct
net_device
*
netdev
=
pci_get_drvdata
(
pdev
);
struct
net_device
*
netdev
=
pci_get_drvdata
(
pdev
);
struct
e1000_adapter
*
adapter
=
netdev_priv
(
netdev
);
struct
e1000_adapter
*
adapter
=
netdev_priv
(
netdev
);
int
retval
;
uint32_t
manc
,
ret_val
;
uint32_t
manc
,
ret_val
;
retval
=
pci_set_power_state
(
pdev
,
PCI_D0
);
pci_set_power_state
(
pdev
,
PCI_D0
);
if
(
retval
)
DPRINTK
(
PROBE
,
ERR
,
"Error in setting power state
\n
"
);
e1000_pci_restore_state
(
adapter
);
e1000_pci_restore_state
(
adapter
);
ret_val
=
pci_enable_device
(
pdev
);
ret_val
=
pci_enable_device
(
pdev
);
pci_set_master
(
pdev
);
pci_set_master
(
pdev
);
retval
=
pci_enable_wake
(
pdev
,
PCI_D3hot
,
0
);
pci_enable_wake
(
pdev
,
PCI_D3hot
,
0
);
if
(
retval
)
pci_enable_wake
(
pdev
,
PCI_D3cold
,
0
);
DPRINTK
(
PROBE
,
ERR
,
"Error enabling D3 wake
\n
"
);
retval
=
pci_enable_wake
(
pdev
,
PCI_D3cold
,
0
);
if
(
retval
)
DPRINTK
(
PROBE
,
ERR
,
"Error enabling D3 cold wake
\n
"
);
e1000_reset
(
adapter
);
e1000_reset
(
adapter
);
E1000_WRITE_REG
(
&
adapter
->
hw
,
WUS
,
~
0
);
E1000_WRITE_REG
(
&
adapter
->
hw
,
WUS
,
~
0
);
...
...
drivers/net/e1000/e1000_osdep.h
View file @
8fc65162
/*******************************************************************************
/*******************************************************************************
Copyright(c) 1999 - 200
5
Intel Corporation. All rights reserved.
Copyright(c) 1999 - 200
6
Intel Corporation. All rights reserved.
This program is free software; you can redistribute it and/or modify it
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free
under the terms of the GNU General Public License as published by the Free
...
@@ -22,6 +22,7 @@
...
@@ -22,6 +22,7 @@
Contact Information:
Contact Information:
Linux NICS <linux.nics@intel.com>
Linux NICS <linux.nics@intel.com>
e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
*******************************************************************************/
*******************************************************************************/
...
...
drivers/net/e1000/e1000_param.c
View file @
8fc65162
/*******************************************************************************
/*******************************************************************************
Copyright(c) 1999 - 200
5
Intel Corporation. All rights reserved.
Copyright(c) 1999 - 200
6
Intel Corporation. All rights reserved.
This program is free software; you can redistribute it and/or modify it
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free
under the terms of the GNU General Public License as published by the Free
...
@@ -22,6 +22,7 @@
...
@@ -22,6 +22,7 @@
Contact Information:
Contact Information:
Linux NICS <linux.nics@intel.com>
Linux NICS <linux.nics@intel.com>
e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
*******************************************************************************/
*******************************************************************************/
...
...
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