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
61a5978a
Commit
61a5978a
authored
Aug 27, 2002
by
Scott Feldman
Committed by
Jeff Garzik
Aug 27, 2002
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
e1000 net driver update 3/6:
o Feature: added new interrupt mitigation knobs.
parent
7ba8c2a7
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
147 additions
and
31 deletions
+147
-31
Documentation/networking/e1000.txt
Documentation/networking/e1000.txt
+55
-23
drivers/net/e1000/e1000.h
drivers/net/e1000/e1000.h
+3
-0
drivers/net/e1000/e1000_main.c
drivers/net/e1000/e1000_main.c
+5
-3
drivers/net/e1000/e1000_param.c
drivers/net/e1000/e1000_param.c
+84
-5
No files found.
Documentation/networking/e1000.txt
View file @
61a5978a
Linux* Base Driver for the Intel(R) PRO/1000 Family of Adapters
===============================================================
June 11
, 2002
August 6
, 2002
Contents
...
...
@@ -20,12 +20,12 @@ In This Release
===============
This file describes the Linux* Base Driver for the Intel(R) PRO/1000 Family
of Adapters, version 4.
2
.x. This driver includes support for
of Adapters, version 4.
3
.x. This driver includes support for
Itanium(TM)-based systems.
This release version includes the following:
- Support for the ethtool 1.
5
interface. A third-party application can use
- Support for the ethtool 1.
6
interface. A third-party application can use
the ethtool interface to get and set driver parameters.
- Zero copy. This feature provides faster data throughput. Enabled by
...
...
@@ -139,6 +139,9 @@ Default Value: 80
descriptor and can be either 2048, 4096, 8192, or 16384 bytes, depending
on the MTU setting. The maximum MTU size is 16110.
NOTE: MTU designates the frame size. It only needs to be set for Jumbo
Frames.
RxIntDelay
Valid Range: 0-65535 (0=off)
Default Value: 0 (82542, 82543, and 82544-based adapters)
...
...
@@ -159,6 +162,16 @@ Default Value: 0 (82542, 82543, and 82544-based adapters)
connection. To eliminate the potential for the hang ensure that
RxIntDelay is set to 0.
RxAbsIntDelay (82540, 82545, and 82546-based adapters only)
Valid Range: 0-65535 (0=off)
Default Value: 128
This value, in units of 1.024 microseconds, limits the delay in which a
transmit interrupt is generated. Useful only if RxIntDelay is non-zero,
this value ensures that an interrupt is generated after the initial
packet is received within the set amount of time. Proper tuning,
along with RxIntDelay, may improve traffic throughput in specific network
conditions.
Speed (adapters using copper connections only)
Valid Settings: 0, 10, 100, 1000
Default Value: 0 (auto-negotiate at all supported speeds)
...
...
@@ -175,6 +188,25 @@ Default Value: 256
Increasing this value allows the driver to queue more transmits. Each
descriptor is 16 bytes.
TxIntDelay
Valid Range: 0-65535 (0=off)
Default Value: 64
This value delays the generation of transmit interrupts in units of
1.024 microseconds. Transmit interrupt reduction can improve CPU
efficiency if properly tuned for specific network traffic. If the
system is reporting dropped transmits, this value may be set too high
causing the driver to run out of available transmit descriptors.
TxAbsIntDelay (82540, 82545, and 82546-based adapters only)
Valid Range: 0-65535 (0=off)
Default Value: 64
This value, in units of 1.024 microseconds, limits the delay in which a
transmit interrupt is generated. Useful only if TxIntDelay is non-zero,
this value ensures that an interrupt is generated after the initial
packet is sent on the wire within the set amount of time. Proper tuning,
along with TxIntDelay, may improve traffic throughput in specific
network conditions.
XsumRX (not available on the PRO/1000 Gigabit Server Adapter)
Valid Range: 0-1
Default Value: 1
...
...
drivers/net/e1000/e1000.h
View file @
61a5978a
...
...
@@ -169,6 +169,8 @@ struct e1000_adapter {
/* TX */
struct
e1000_desc_ring
tx_ring
;
uint32_t
txd_cmd
;
uint32_t
tx_int_delay
;
uint32_t
tx_abs_int_delay
;
int
max_data_per_txd
;
/* RX */
...
...
@@ -176,6 +178,7 @@ struct e1000_adapter {
uint64_t
hw_csum_err
;
uint64_t
hw_csum_good
;
uint32_t
rx_int_delay
;
uint32_t
rx_abs_int_delay
;
boolean_t
rx_csum
;
/* OS defined structs */
...
...
drivers/net/e1000/e1000_main.c
View file @
61a5978a
...
...
@@ -777,7 +777,9 @@ e1000_configure_tx(struct e1000_adapter *adapter)
/* Set the Tx Interrupt Delay register */
E1000_WRITE_REG
(
&
adapter
->
hw
,
TIDV
,
64
);
E1000_WRITE_REG
(
&
adapter
->
hw
,
TIDV
,
adapter
->
tx_int_delay
);
if
(
adapter
->
hw
.
mac_type
>=
e1000_82540
)
E1000_WRITE_REG
(
&
adapter
->
hw
,
TADV
,
adapter
->
tx_abs_int_delay
);
/* Program the Transmit Control Register */
...
...
@@ -907,8 +909,8 @@ e1000_configure_rx(struct e1000_adapter *adapter)
/* set the Receive Delay Timer Register */
if
(
adapter
->
hw
.
mac_type
>=
e1000_82540
)
{
E1000_WRITE_REG
(
&
adapter
->
hw
,
R
ADV
,
adapter
->
rx_int_delay
);
E1000_WRITE_REG
(
&
adapter
->
hw
,
R
DTR
,
64
);
E1000_WRITE_REG
(
&
adapter
->
hw
,
R
DTR
,
adapter
->
rx_int_delay
);
E1000_WRITE_REG
(
&
adapter
->
hw
,
R
ADV
,
adapter
->
rx_abs_int_delay
);
/* Set the interrupt throttling rate. Value is calculated
* as DEFAULT_ITR = 1/(MAX_INTS_PER_SEC * 256ns) */
...
...
drivers/net/e1000/e1000_param.c
View file @
61a5978a
...
...
@@ -147,6 +147,24 @@ E1000_PARAM(FlowControl, "Flow Control setting");
E1000_PARAM
(
XsumRX
,
"Disable or enable Receive Checksum offload"
);
/* Transmit Interrupt Delay in units of 1.024 microseconds
*
* Valid Range: 0-65535
*
* Default Value: 64
*/
E1000_PARAM
(
TxIntDelay
,
"Transmit Interrupt Delay"
);
/* Transmit Absolute Interrupt Delay in units of 1.024 microseconds
*
* Valid Range: 0-65535
*
* Default Value: 0
*/
E1000_PARAM
(
TxAbsIntDelay
,
"Transmit Absolute Interrupt Delay"
);
/* Receive Interrupt Delay in units of 1.024 microseconds
*
* Valid Range: 0-65535
...
...
@@ -156,6 +174,15 @@ E1000_PARAM(XsumRX, "Disable or enable Receive Checksum offload");
E1000_PARAM
(
RxIntDelay
,
"Receive Interrupt Delay"
);
/* Receive Absolute Interrupt Delay in units of 1.024 microseconds
*
* Valid Range: 0-65535
*
* Default Value: 128
*/
E1000_PARAM
(
RxAbsIntDelay
,
"Receive Absolute Interrupt Delay"
);
#define AUTONEG_ADV_DEFAULT 0x2F
#define AUTONEG_ADV_MASK 0x2F
#define FLOW_CONTROL_DEFAULT FLOW_CONTROL_FULL
...
...
@@ -170,11 +197,23 @@ E1000_PARAM(RxIntDelay, "Receive Interrupt Delay");
#define MIN_RXD 80
#define MAX_82544_RXD 4096
#define DEFAULT_RDTR
0
#define DEFAULT_R
ADV 128
#define DEFAULT_RDTR
128
#define DEFAULT_R
DTR_82544 0
#define MAX_RXDELAY 0xFFFF
#define MIN_RXDELAY 0
#define DEFAULT_RADV 128
#define MAX_RXABSDELAY 0xFFFF
#define MIN_RXABSDELAY 0
#define DEFAULT_TIDV 64
#define MAX_TXDELAY 0xFFFF
#define MIN_TXDELAY 0
#define DEFAULT_TADV 64
#define MAX_TXABSDELAY 0xFFFF
#define MIN_TXABSDELAY 0
struct
e1000_option
{
enum
{
enable_option
,
range_option
,
list_option
}
type
;
char
*
name
;
...
...
@@ -331,21 +370,61 @@ e1000_check_options(struct e1000_adapter *adapter)
e1000_validate_option
(
&
fc
,
&
opt
);
adapter
->
hw
.
fc
=
adapter
->
hw
.
original_fc
=
fc
;
}
{
/* Transmit Interrupt Delay */
char
*
tidv
=
"using default of "
__MODULE_STRING
(
DEFAULT_TIDV
);
struct
e1000_option
opt
=
{
.
type
=
range_option
,
.
name
=
"Transmit Interrupt Delay"
,
.
arg
=
{
r
:
{
min
:
MIN_TXDELAY
,
max
:
MAX_TXDELAY
}}
};
opt
.
def
=
DEFAULT_TIDV
;
opt
.
err
=
tidv
;
adapter
->
tx_int_delay
=
TxIntDelay
[
bd
];
e1000_validate_option
(
&
adapter
->
tx_int_delay
,
&
opt
);
}
{
/* Transmit Absolute Interrupt Delay */
char
*
tadv
=
"using default of "
__MODULE_STRING
(
DEFAULT_TADV
);
struct
e1000_option
opt
=
{
.
type
=
range_option
,
.
name
=
"Transmit Absolute Interrupt Delay"
,
.
arg
=
{
r
:
{
min
:
MIN_TXABSDELAY
,
max
:
MAX_TXABSDELAY
}}
};
opt
.
def
=
DEFAULT_TADV
;
opt
.
err
=
tadv
;
adapter
->
tx_abs_int_delay
=
TxAbsIntDelay
[
bd
];
e1000_validate_option
(
&
adapter
->
tx_abs_int_delay
,
&
opt
);
}
{
/* Receive Interrupt Delay */
char
*
rdtr
=
"using default of "
__MODULE_STRING
(
DEFAULT_RDTR
);
char
*
radv
=
"using default of "
__MODULE_STRING
(
DEFAULT_RADV
);
char
*
rdtr_82544
=
"using default of "
__MODULE_STRING
(
DEFAULT_RDTR_82544
);
struct
e1000_option
opt
=
{
.
type
=
range_option
,
.
name
=
"Receive Interrupt Delay"
,
.
arg
=
{
r
:
{
min
:
MIN_RXDELAY
,
max
:
MAX_RXDELAY
}}
};
e1000_mac_type
mac_type
=
adapter
->
hw
.
mac_type
;
opt
.
def
=
mac_type
<
e1000_82540
?
DEFAULT_RDTR
:
DEFAULT_RADV
;
opt
.
err
=
mac_type
<
e1000_82540
?
rdtr
:
radv
;
opt
.
def
=
mac_type
>
e1000_82544
?
DEFAULT_RDTR
:
0
;
opt
.
err
=
mac_type
>
e1000_82544
?
rdtr
:
rdtr_82544
;
adapter
->
rx_int_delay
=
RxIntDelay
[
bd
];
e1000_validate_option
(
&
adapter
->
rx_int_delay
,
&
opt
);
}
{
/* Receive Absolute Interrupt Delay */
char
*
radv
=
"using default of "
__MODULE_STRING
(
DEFAULT_RADV
);
struct
e1000_option
opt
=
{
.
type
=
range_option
,
.
name
=
"Receive Absolute Interrupt Delay"
,
.
arg
=
{
r
:
{
min
:
MIN_RXABSDELAY
,
max
:
MAX_RXABSDELAY
}}
};
opt
.
def
=
DEFAULT_RADV
;
opt
.
err
=
radv
;
adapter
->
rx_abs_int_delay
=
RxAbsIntDelay
[
bd
];
e1000_validate_option
(
&
adapter
->
rx_abs_int_delay
,
&
opt
);
}
switch
(
adapter
->
hw
.
media_type
)
{
case
e1000_media_type_fiber
:
...
...
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