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
b1106618
Commit
b1106618
authored
Jul 29, 2004
by
Jeff Garzik
Browse files
Options
Browse Files
Download
Plain Diff
Merge pobox.com:/spare/repo/netdev-2.6/e1000
into pobox.com:/spare/repo/netdev-2.6/ALL
parents
edf609bc
fa88c854
Changes
6
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
369 additions
and
352 deletions
+369
-352
drivers/net/e1000/e1000.h
drivers/net/e1000/e1000.h
+13
-11
drivers/net/e1000/e1000_ethtool.c
drivers/net/e1000/e1000_ethtool.c
+81
-65
drivers/net/e1000/e1000_hw.c
drivers/net/e1000/e1000_hw.c
+4
-12
drivers/net/e1000/e1000_hw.h
drivers/net/e1000/e1000_hw.h
+1
-2
drivers/net/e1000/e1000_main.c
drivers/net/e1000/e1000_main.c
+246
-240
drivers/net/e1000/e1000_param.c
drivers/net/e1000/e1000_param.c
+24
-22
No files found.
drivers/net/e1000/e1000.h
View file @
b1106618
...
...
@@ -49,6 +49,7 @@
#include <linux/delay.h>
#include <linux/timer.h>
#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/interrupt.h>
#include <linux/string.h>
#include <linux/pagemap.h>
...
...
@@ -63,6 +64,7 @@
#include <linux/udp.h>
#include <net/pkt_sched.h>
#include <linux/list.h>
#include <linux/rtnetlink.h>
#include <linux/reboot.h>
#ifdef NETIF_F_TSO
#include <net/checksum.h>
...
...
@@ -77,6 +79,8 @@
#define BAR_1 1
#define BAR_5 5
#define INTEL_E1000_ETHERNET_DEVICE(device_id) {\
PCI_DEVICE(PCI_VENDOR_ID_INTEL, device_id)}
struct
e1000_adapter
;
...
...
@@ -98,11 +102,12 @@ struct e1000_adapter;
#define E1000_MAX_INTR 10
/*
How many descriptors for TX and RX ?
*/
/*
TX/RX descriptor defines
*/
#define E1000_DEFAULT_TXD 256
#define E1000_MAX_TXD 256
#define E1000_MIN_TXD 80
#define E1000_MAX_82544_TXD 4096
#define E1000_DEFAULT_RXD 256
#define E1000_MAX_RXD 256
#define E1000_MIN_RXD 80
...
...
@@ -123,14 +128,11 @@ struct e1000_adapter;
#define E1000_TX_HEAD_ADDR_SHIFT 7
#define E1000_PBA_TX_MASK 0xFFFF0000
/* Flow Control High-Watermark: 5688 bytes below Rx FIFO size */
#define E1000_FC_HIGH_DIFF 0x1638
/* Flow Control Low-Watermark: 5696 bytes below Rx FIFO size */
#define E1000_FC_LOW_DIFF 0x1640
/* Flow Control Watermarks */
#define E1000_FC_HIGH_DIFF 0x1638
/* High: 5688 bytes below Rx FIFO size */
#define E1000_FC_LOW_DIFF 0x1640
/* Low: 5696 bytes below Rx FIFO size */
/* Flow Control Pause Time: 858 usec */
#define E1000_FC_PAUSE_TIME 0x0680
#define E1000_FC_PAUSE_TIME 0x0680
/* 858 usec */
/* How many Tx Descriptors do we need to call netif_wake_queue ? */
#define E1000_TX_QUEUE_WAKE 16
...
...
@@ -153,9 +155,9 @@ struct e1000_adapter;
struct
e1000_buffer
{
struct
sk_buff
*
skb
;
uint64_t
dma
;
unsigned
long
length
;
unsigned
long
time_stamp
;
unsigned
int
next_to_watch
;
uint16_t
length
;
uint16_t
next_to_watch
;
};
struct
e1000_desc_ring
{
...
...
drivers/net/e1000/e1000_ethtool.c
View file @
b1106618
...
...
@@ -88,9 +88,9 @@ static const struct e1000_stats e1000_gstrings_stats[] = {
{
"rx_flow_control_xoff"
,
E1000_STAT
(
stats
.
xoffrxc
)
},
{
"tx_flow_control_xon"
,
E1000_STAT
(
stats
.
xontxc
)
},
{
"tx_flow_control_xoff"
,
E1000_STAT
(
stats
.
xofftxc
)
},
{
"rx_long_byte_count"
,
E1000_STAT
(
stats
.
gorcl
)
},
{
"rx_csum_offload_good"
,
E1000_STAT
(
hw_csum_good
)
},
{
"rx_csum_offload_errors"
,
E1000_STAT
(
hw_csum_err
)
},
{
"rx_long_byte_count"
,
E1000_STAT
(
stats
.
gorcl
)
}
{
"rx_csum_offload_errors"
,
E1000_STAT
(
hw_csum_err
)
}
};
#define E1000_STATS_LEN \
sizeof(e1000_gstrings_stats) / sizeof(struct e1000_stats)
...
...
@@ -170,7 +170,8 @@ e1000_get_settings(struct net_device *netdev, struct ethtool_cmd *ecmd)
ecmd
->
duplex
=
-
1
;
}
ecmd
->
autoneg
=
(
hw
->
autoneg
?
AUTONEG_ENABLE
:
AUTONEG_DISABLE
);
ecmd
->
autoneg
=
((
hw
->
media_type
==
e1000_media_type_fiber
)
||
hw
->
autoneg
)
?
AUTONEG_ENABLE
:
AUTONEG_DISABLE
;
return
0
;
}
...
...
@@ -192,6 +193,7 @@ e1000_set_settings(struct net_device *netdev, struct ethtool_cmd *ecmd)
if
(
netif_running
(
adapter
->
netdev
))
{
e1000_down
(
adapter
);
e1000_reset
(
adapter
);
e1000_up
(
adapter
);
}
else
e1000_reset
(
adapter
);
...
...
@@ -205,6 +207,7 @@ e1000_get_pauseparam(struct net_device *netdev,
{
struct
e1000_adapter
*
adapter
=
netdev
->
priv
;
struct
e1000_hw
*
hw
=
&
adapter
->
hw
;
pause
->
autoneg
=
(
adapter
->
fc_autoneg
?
AUTONEG_ENABLE
:
AUTONEG_DISABLE
);
...
...
@@ -418,6 +421,10 @@ e1000_get_regs(struct net_device *netdev,
e1000_read_phy_reg
(
hw
,
PHY_1000T_STATUS
,
&
phy_data
);
regs_buff
[
24
]
=
(
uint32_t
)
phy_data
;
/* phy local receiver status */
regs_buff
[
25
]
=
regs_buff
[
24
];
/* phy remote receiver status */
if
(
hw
->
mac_type
>=
e1000_82540
&&
hw
->
media_type
==
e1000_media_type_copper
)
{
regs_buff
[
26
]
=
E1000_READ_REG
(
hw
,
MANC
);
}
}
static
int
...
...
@@ -448,7 +455,7 @@ e1000_get_eeprom(struct net_device *netdev,
eeprom_buff
=
kmalloc
(
sizeof
(
uint16_t
)
*
(
last_word
-
first_word
+
1
),
GFP_KERNEL
);
if
(
!
eeprom_buff
)
if
(
!
eeprom_buff
)
return
-
ENOMEM
;
if
(
hw
->
eeprom
.
type
==
e1000_eeprom_spi
)
...
...
@@ -466,8 +473,7 @@ e1000_get_eeprom(struct net_device *netdev,
for
(
i
=
0
;
i
<
last_word
-
first_word
+
1
;
i
++
)
le16_to_cpus
(
&
eeprom_buff
[
i
]);
memcpy
(
bytes
,
(
uint8_t
*
)
eeprom_buff
+
(
eeprom
->
offset
%
2
),
memcpy
(
bytes
,
(
uint8_t
*
)
eeprom_buff
+
(
eeprom
->
offset
&
1
),
eeprom
->
len
);
kfree
(
eeprom_buff
);
...
...
@@ -520,6 +526,7 @@ e1000_set_eeprom(struct net_device *netdev,
le16_to_cpus
(
&
eeprom_buff
[
i
]);
memcpy
(
ptr
,
bytes
,
eeprom
->
len
);
for
(
i
=
0
;
i
<
last_word
-
first_word
+
1
;
i
++
)
eeprom_buff
[
i
]
=
cpu_to_le16
(
eeprom_buff
[
i
]);
...
...
@@ -575,13 +582,12 @@ static int
e1000_set_ringparam
(
struct
net_device
*
netdev
,
struct
ethtool_ringparam
*
ring
)
{
int
err
;
struct
e1000_adapter
*
adapter
=
netdev
->
priv
;
e1000_mac_type
mac_type
=
adapter
->
hw
.
mac_type
;
struct
e1000_desc_ring
*
txdr
=
&
adapter
->
tx_ring
;
struct
e1000_desc_ring
*
rxdr
=
&
adapter
->
rx_ring
;
struct
e1000_desc_ring
tx_old
,
tx_new
;
struct
e1000_desc_ring
rx_old
,
rx_new
;
struct
e1000_desc_ring
tx_old
,
tx_new
,
rx_old
,
rx_new
;
int
err
;
tx_old
=
adapter
->
tx_ring
;
rx_old
=
adapter
->
rx_ring
;
...
...
@@ -600,7 +606,7 @@ e1000_set_ringparam(struct net_device *netdev,
E1000_ROUNDUP
(
txdr
->
count
,
REQ_TX_DESCRIPTOR_MULTIPLE
);
if
(
netif_running
(
adapter
->
netdev
))
{
/*
t
ry to get new resources before deleting old */
/*
T
ry to get new resources before deleting old */
if
((
err
=
e1000_setup_rx_resources
(
adapter
)))
goto
err_setup_rx
;
if
((
err
=
e1000_setup_tx_resources
(
adapter
)))
...
...
@@ -620,6 +626,7 @@ e1000_set_ringparam(struct net_device *netdev,
if
((
err
=
e1000_up
(
adapter
)))
return
err
;
}
return
0
;
err_setup_tx:
e1000_free_rx_resources
(
adapter
);
...
...
@@ -766,13 +773,15 @@ static int
e1000_intr_test
(
struct
e1000_adapter
*
adapter
,
uint64_t
*
data
)
{
struct
net_device
*
netdev
=
adapter
->
netdev
;
uint32_t
icr
,
mask
,
i
=
0
;
uint32_t
icr
,
mask
,
i
=
0
,
shared_int
=
TRUE
;
uint32_t
irq
=
adapter
->
pdev
->
irq
;
*
data
=
0
;
/* Hook up test interrupt handler just for this test */
if
(
request_irq
(
adapter
->
pdev
->
irq
,
&
e1000_test_intr
,
SA_SHIRQ
,
netdev
->
name
,
netdev
))
{
if
(
!
request_irq
(
irq
,
&
e1000_test_intr
,
0
,
netdev
->
name
,
netdev
))
{
shared_int
=
FALSE
;
}
else
if
(
request_irq
(
irq
,
&
e1000_test_intr
,
SA_SHIRQ
,
netdev
->
name
,
netdev
)){
*
data
=
1
;
return
-
1
;
}
...
...
@@ -802,6 +811,7 @@ e1000_intr_test(struct e1000_adapter *adapter, uint64_t *data)
/* Interrupt to test */
mask
=
1
<<
i
;
if
(
!
shared_int
)
{
/* Disable the interrupt to be reported in
* the cause register and then force the same
* interrupt and see if one gets posted. If
...
...
@@ -817,6 +827,7 @@ e1000_intr_test(struct e1000_adapter *adapter, uint64_t *data)
*
data
=
3
;
break
;
}
}
/* Enable the interrupt to be reported in
* the cause register and then force the same
...
...
@@ -834,6 +845,7 @@ e1000_intr_test(struct e1000_adapter *adapter, uint64_t *data)
break
;
}
if
(
!
shared_int
)
{
/* Disable the other interrupts to be reported in
* the cause register and then force the other
* interrupts and see if any get posted. If
...
...
@@ -850,13 +862,14 @@ e1000_intr_test(struct e1000_adapter *adapter, uint64_t *data)
break
;
}
}
}
/* Disable all the interrupts */
E1000_WRITE_REG
(
&
adapter
->
hw
,
IMC
,
0xFFFFFFFF
);
msec_delay
(
10
);
/* Unhook test interrupt handler */
free_irq
(
adapter
->
pdev
->
irq
,
netdev
);
free_irq
(
irq
,
netdev
);
return
*
data
;
}
...
...
@@ -1021,7 +1034,7 @@ e1000_setup_desc_rings(struct e1000_adapter *adapter)
return
0
;
err_nomem:
err_nomem:
e1000_free_desc_rings
(
adapter
);
return
ret_val
;
}
...
...
@@ -1312,7 +1325,7 @@ e1000_run_loopback_test(struct e1000_adapter *adapter)
for
(
i
=
0
;
i
<
64
;
i
++
)
{
e1000_create_lbtest_frame
(
txdr
->
buffer_info
[
i
].
skb
,
1024
);
pci_dma_sync_single
(
pdev
,
txdr
->
buffer_info
[
i
].
dma
,
pci_dma_sync_single
_for_device
(
pdev
,
txdr
->
buffer_info
[
i
].
dma
,
txdr
->
buffer_info
[
i
].
length
,
PCI_DMA_TODEVICE
);
}
...
...
@@ -1320,7 +1333,7 @@ e1000_run_loopback_test(struct e1000_adapter *adapter)
msec_delay
(
200
);
pci_dma_sync_single
(
pdev
,
rxdr
->
buffer_info
[
0
].
dma
,
pci_dma_sync_single
_for_cpu
(
pdev
,
rxdr
->
buffer_info
[
0
].
dma
,
rxdr
->
buffer_info
[
0
].
length
,
PCI_DMA_FROMDEVICE
);
return
e1000_check_lbtest_frame
(
rxdr
->
buffer_info
[
0
].
skb
,
1024
);
...
...
@@ -1396,10 +1409,11 @@ e1000_diag_test(struct net_device *netdev,
if
(
e1000_loopback_test
(
adapter
,
&
data
[
3
]))
eth_test
->
flags
|=
ETH_TEST_FL_FAILED
;
/* restore
Autoneg/speed/duplex
settings */
/* restore
speed, duplex, autoneg
settings */
adapter
->
hw
.
autoneg_advertised
=
autoneg_advertised
;
adapter
->
hw
.
forced_speed_duplex
=
forced_speed_duplex
;
adapter
->
hw
.
autoneg
=
autoneg
;
e1000_reset
(
adapter
);
if
(
if_running
)
e1000_up
(
adapter
);
...
...
@@ -1427,6 +1441,7 @@ e1000_get_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
case
E1000_DEV_ID_82543GC_FIBER
:
case
E1000_DEV_ID_82543GC_COPPER
:
case
E1000_DEV_ID_82544EI_FIBER
:
case
E1000_DEV_ID_82546EB_QUAD_COPPER
:
wol
->
supported
=
0
;
wol
->
wolopts
=
0
;
return
;
...
...
@@ -1469,6 +1484,7 @@ e1000_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
case
E1000_DEV_ID_82543GC_FIBER
:
case
E1000_DEV_ID_82543GC_COPPER
:
case
E1000_DEV_ID_82544EI_FIBER
:
case
E1000_DEV_ID_82546EB_QUAD_COPPER
:
return
wol
->
wolopts
?
-
EOPNOTSUPP
:
0
;
case
E1000_DEV_ID_82546EB_FIBER
:
...
...
@@ -1571,8 +1587,8 @@ e1000_get_ethtool_stats(struct net_device *netdev,
e1000_update_stats
(
adapter
);
for
(
i
=
0
;
i
<
E1000_STATS_LEN
;
i
++
)
{
char
*
p
=
(
char
*
)
adapter
+
e1000_gstrings_stats
[
i
].
stat_offset
;
data
[
i
]
=
(
e1000_gstrings_stats
[
i
].
sizeof_stat
==
sizeof
(
uint64_t
))
?
*
(
uint64_t
*
)
p
:
*
(
uint32_t
*
)
p
;
data
[
i
]
=
(
e1000_gstrings_stats
[
i
].
sizeof_stat
==
sizeof
(
uint64_t
))
?
*
(
uint64_t
*
)
p
:
*
(
uint32_t
*
)
p
;
}
}
...
...
drivers/net/e1000/e1000_hw.c
View file @
b1106618
...
...
@@ -251,6 +251,7 @@ e1000_set_mac_type(struct e1000_hw *hw)
break
;
case
E1000_DEV_ID_82541ER
:
case
E1000_DEV_ID_82541GI
:
case
E1000_DEV_ID_82541GI_LF
:
case
E1000_DEV_ID_82541GI_MOBILE
:
hw
->
mac_type
=
e1000_82541_rev_2
;
break
;
...
...
@@ -920,7 +921,8 @@ e1000_setup_copper_link(struct e1000_hw *hw)
if
(
ret_val
)
return
ret_val
;
if
(
hw
->
mac_type
==
e1000_82545_rev_3
)
{
if
((
hw
->
mac_type
==
e1000_82545_rev_3
)
||
(
hw
->
mac_type
==
e1000_82546_rev_3
))
{
ret_val
=
e1000_read_phy_reg
(
hw
,
M88E1000_PHY_SPEC_CTRL
,
&
phy_data
);
phy_data
|=
0x00000008
;
ret_val
=
e1000_write_phy_reg
(
hw
,
M88E1000_PHY_SPEC_CTRL
,
phy_data
);
...
...
@@ -3057,16 +3059,6 @@ e1000_init_eeprom_params(struct e1000_hw *hw)
}
break
;
default:
eeprom
->
type
=
e1000_eeprom_spi
;
eeprom
->
opcode_bits
=
8
;
eeprom
->
delay_usec
=
1
;
if
(
eecd
&
E1000_EECD_ADDR_BITS
)
{
eeprom
->
page_size
=
32
;
eeprom
->
address_bits
=
16
;
}
else
{
eeprom
->
page_size
=
8
;
eeprom
->
address_bits
=
8
;
}
break
;
}
...
...
@@ -3453,7 +3445,6 @@ e1000_read_eeprom(struct e1000_hw *hw,
uint32_t
i
=
0
;
DEBUGFUNC
(
"e1000_read_eeprom"
);
/* A check for invalid values: offset too large, too many words, and not
* enough words.
*/
...
...
@@ -5224,3 +5215,4 @@ e1000_enable_mng_pass_thru(struct e1000_hw *hw)
}
return
FALSE
;
}
drivers/net/e1000/e1000_hw.h
View file @
b1106618
...
...
@@ -357,11 +357,11 @@ int32_t e1000_set_d3_lplu_state(struct e1000_hw *hw, boolean_t active);
#define E1000_DEV_ID_82547GI 0x1075
#define E1000_DEV_ID_82541GI 0x1076
#define E1000_DEV_ID_82541GI_MOBILE 0x1077
#define E1000_DEV_ID_82541GI_LF 0x107C
#define E1000_DEV_ID_82546GB_COPPER 0x1079
#define E1000_DEV_ID_82546GB_FIBER 0x107A
#define E1000_DEV_ID_82546GB_SERDES 0x107B
#define E1000_DEV_ID_82547EI 0x1019
#define NODE_ADDRESS_SIZE 6
#define ETH_LENGTH_OF_ADDRESS 6
...
...
@@ -1043,7 +1043,6 @@ struct e1000_hw {
#define E1000_EEPROM_SWDPIN0 0x0001
/* SWDPIN 0 EEPROM Value */
#define E1000_EEPROM_LED_LOGIC 0x0020
/* Led Logic Word */
/* Register Bit Masks */
/* Device Control */
#define E1000_CTRL_FD 0x00000001
/* Full duplex.0=half; 1=full */
...
...
drivers/net/e1000/e1000_main.c
View file @
b1106618
This diff is collapsed.
Click to expand it.
drivers/net/e1000/e1000_param.c
View file @
b1106618
...
...
@@ -449,8 +449,7 @@ e1000_check_options(struct e1000_adapter *adapter)
DPRINTK
(
PROBE
,
INFO
,
"%s turned off
\n
"
,
opt
.
name
);
break
;
case
1
:
DPRINTK
(
PROBE
,
INFO
,
"%s set to dynamic mode
\n
"
,
opt
.
name
);
DPRINTK
(
PROBE
,
INFO
,
"%s set to dynamic mode
\n
"
,
opt
.
name
);
break
;
default:
e1000_validate_option
(
&
adapter
->
itr
,
&
opt
,
adapter
);
...
...
@@ -493,8 +492,9 @@ e1000_check_fiber_options(struct e1000_adapter *adapter)
"parameter ignored
\n
"
);
}
if
((
AutoNeg
[
bd
]
!=
OPTION_UNSET
)
&&
(
AutoNeg
[
bd
]
!=
0x20
))
{
DPRINTK
(
PROBE
,
INFO
,
"AutoNeg other than Full/1000 is "
"not valid for fiber adapters, parameter ignored
\n
"
);
DPRINTK
(
PROBE
,
INFO
,
"AutoNeg other than 1000/Full is "
"not valid for fiber adapters, "
"parameter ignored
\n
"
);
}
}
...
...
@@ -611,24 +611,24 @@ e1000_check_copper_options(struct e1000_adapter *adapter)
break
;
case
HALF_DUPLEX
:
DPRINTK
(
PROBE
,
INFO
,
"Half Duplex specified without Speed
\n
"
);
DPRINTK
(
PROBE
,
INFO
,
"
Using Autonegotiation at
Half Duplex only
\n
"
);
DPRINTK
(
PROBE
,
INFO
,
"Using Autonegotiation at "
"Half Duplex only
\n
"
);
adapter
->
hw
.
autoneg
=
adapter
->
fc_autoneg
=
1
;
adapter
->
hw
.
autoneg_advertised
=
ADVERTISE_10_HALF
|
ADVERTISE_100_HALF
;
break
;
case
FULL_DUPLEX
:
DPRINTK
(
PROBE
,
INFO
,
"Full Duplex specified without Speed
\n
"
);
DPRINTK
(
PROBE
,
INFO
,
"
Using Autonegotiation at
Full Duplex only
\n
"
);
DPRINTK
(
PROBE
,
INFO
,
"Using Autonegotiation at "
"Full Duplex only
\n
"
);
adapter
->
hw
.
autoneg
=
adapter
->
fc_autoneg
=
1
;
adapter
->
hw
.
autoneg_advertised
=
ADVERTISE_10_FULL
|
ADVERTISE_100_FULL
|
ADVERTISE_1000_FULL
;
break
;
case
SPEED_10
:
DPRINTK
(
PROBE
,
INFO
,
"
10 Mbps Speed specified
without Duplex
\n
"
);
DPRINTK
(
PROBE
,
INFO
,
"10 Mbps Speed specified "
"without Duplex
\n
"
);
DPRINTK
(
PROBE
,
INFO
,
"Using Autonegotiation at 10 Mbps only
\n
"
);
adapter
->
hw
.
autoneg
=
adapter
->
fc_autoneg
=
1
;
adapter
->
hw
.
autoneg_advertised
=
ADVERTISE_10_HALF
|
...
...
@@ -647,10 +647,10 @@ e1000_check_copper_options(struct e1000_adapter *adapter)
adapter
->
hw
.
autoneg_advertised
=
0
;
break
;
case
SPEED_100
:
DPRINTK
(
PROBE
,
INFO
,
"
100 Mbps Speed specified
without Duplex
\n
"
);
DPRINTK
(
PROBE
,
INFO
,
"
Using Autonegotiation at
100 Mbps only
\n
"
);
DPRINTK
(
PROBE
,
INFO
,
"100 Mbps Speed specified "
"without Duplex
\n
"
);
DPRINTK
(
PROBE
,
INFO
,
"Using Autonegotiation at "
"100 Mbps only
\n
"
);
adapter
->
hw
.
autoneg
=
adapter
->
fc_autoneg
=
1
;
adapter
->
hw
.
autoneg_advertised
=
ADVERTISE_100_HALF
|
ADVERTISE_100_FULL
;
...
...
@@ -668,10 +668,11 @@ e1000_check_copper_options(struct e1000_adapter *adapter)
adapter
->
hw
.
autoneg_advertised
=
0
;
break
;
case
SPEED_1000
:
DPRINTK
(
PROBE
,
INFO
,
"1000 Mbps Speed specified without "
"Duplex
\n
"
);
DPRINTK
(
PROBE
,
INFO
,
"1000 Mbps Speed specified without Duplex
\n
"
);
DPRINTK
(
PROBE
,
INFO
,
"Using Autonegotiation at 1000 Mbps Full Duplex only
\n
"
);
"Using Autonegotiation at 1000 Mbps "
"Full Duplex only
\n
"
);
adapter
->
hw
.
autoneg
=
adapter
->
fc_autoneg
=
1
;
adapter
->
hw
.
autoneg_advertised
=
ADVERTISE_1000_FULL
;
break
;
...
...
@@ -679,7 +680,8 @@ e1000_check_copper_options(struct e1000_adapter *adapter)
DPRINTK
(
PROBE
,
INFO
,
"Half Duplex is not supported at 1000 Mbps
\n
"
);
DPRINTK
(
PROBE
,
INFO
,
"Using Autonegotiation at 1000 Mbps Full Duplex only
\n
"
);
"Using Autonegotiation at 1000 Mbps "
"Full Duplex only
\n
"
);
adapter
->
hw
.
autoneg
=
adapter
->
fc_autoneg
=
1
;
adapter
->
hw
.
autoneg_advertised
=
ADVERTISE_1000_FULL
;
break
;
...
...
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