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
bdad69b2
Commit
bdad69b2
authored
May 23, 2006
by
Jeff Garzik
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'e1000-7.0.38-k4' of
git://lost.foo-projects.org/~ahkok/git/netdev-2.6
into upstream
parents
9528454f
440c052d
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
104 additions
and
135 deletions
+104
-135
drivers/net/e1000/Makefile
drivers/net/e1000/Makefile
+1
-1
drivers/net/e1000/e1000_ethtool.c
drivers/net/e1000/e1000_ethtool.c
+22
-22
drivers/net/e1000/e1000_hw.c
drivers/net/e1000/e1000_hw.c
+56
-56
drivers/net/e1000/e1000_hw.h
drivers/net/e1000/e1000_hw.h
+2
-2
drivers/net/e1000/e1000_main.c
drivers/net/e1000/e1000_main.c
+23
-54
No files found.
drivers/net/e1000/Makefile
View file @
bdad69b2
################################################################################
#
#
# Copyright(c) 1999 - 200
3
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
# under the terms of the GNU General Public License as published by the Free
...
...
drivers/net/e1000/e1000_ethtool.c
View file @
bdad69b2
...
...
@@ -865,15 +865,15 @@ static int
e1000_intr_test
(
struct
e1000_adapter
*
adapter
,
uint64_t
*
data
)
{
struct
net_device
*
netdev
=
adapter
->
netdev
;
uint32_t
mask
,
i
=
0
,
shared_int
=
TRUE
;
uint32_t
irq
=
adapter
->
pdev
->
irq
;
uint32_t
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
(
irq
,
&
e1000_test_intr
,
0
,
netdev
->
name
,
netdev
))
{
shared_int
=
FALSE
;
}
else
if
(
request_irq
(
irq
,
&
e1000_test_intr
,
SA_SHIRQ
,
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
;
...
...
@@ -889,22 +889,22 @@ 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
* an interrupt was posted to the bus, the
* test failed.
*/
adapter
->
test_icr
=
0
;
E1000_WRITE_REG
(
&
adapter
->
hw
,
IMC
,
mask
);
E1000_WRITE_REG
(
&
adapter
->
hw
,
ICS
,
mask
);
msec_delay
(
10
);
if
(
adapter
->
test_icr
&
mask
)
{
*
data
=
3
;
break
;
}
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
* an interrupt was posted to the bus, the
* test failed.
*/
adapter
->
test_icr
=
0
;
E1000_WRITE_REG
(
&
adapter
->
hw
,
IMC
,
mask
);
E1000_WRITE_REG
(
&
adapter
->
hw
,
ICS
,
mask
);
msec_delay
(
10
);
if
(
adapter
->
test_icr
&
mask
)
{
*
data
=
3
;
break
;
}
}
/* Enable the interrupt to be reported in
...
...
@@ -923,7 +923,7 @@ e1000_intr_test(struct e1000_adapter *adapter, uint64_t *data)
break
;
}
if
(
!
shared_int
)
{
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
...
...
drivers/net/e1000/e1000_hw.c
View file @
bdad69b2
...
...
@@ -765,7 +765,7 @@ e1000_init_hw(struct e1000_hw *hw)
}
if
(
hw
->
mac_type
==
e1000_82573
)
{
e1000_enable_tx_pkt_filtering
(
hw
);
e1000_enable_tx_pkt_filtering
(
hw
);
}
switch
(
hw
->
mac_type
)
{
...
...
@@ -861,7 +861,7 @@ e1000_adjust_serdes_amplitude(struct e1000_hw *hw)
if
(
eeprom_data
!=
EEPROM_RESERVED_WORD
)
{
/* Adjust SERDES output amplitude only. */
eeprom_data
&=
EEPROM_SERDES_AMPLITUDE_MASK
;
eeprom_data
&=
EEPROM_SERDES_AMPLITUDE_MASK
;
ret_val
=
e1000_write_phy_reg
(
hw
,
M88E1000_PHY_EXT_CTRL
,
eeprom_data
);
if
(
ret_val
)
return
ret_val
;
...
...
@@ -1228,7 +1228,7 @@ e1000_copper_link_igp_setup(struct e1000_hw *hw)
if
(
hw
->
phy_reset_disable
)
return
E1000_SUCCESS
;
ret_val
=
e1000_phy_reset
(
hw
);
if
(
ret_val
)
{
DEBUGOUT
(
"Error Resetting the PHY
\n
"
);
...
...
@@ -1370,7 +1370,7 @@ e1000_copper_link_ggp_setup(struct e1000_hw *hw)
DEBUGFUNC
(
"e1000_copper_link_ggp_setup"
);
if
(
!
hw
->
phy_reset_disable
)
{
/* Enable CRS on TX for half-duplex operation. */
ret_val
=
e1000_read_phy_reg
(
hw
,
GG82563_PHY_MAC_SPEC_CTRL
,
&
phy_data
);
...
...
@@ -1519,7 +1519,7 @@ e1000_copper_link_mgp_setup(struct e1000_hw *hw)
if
(
hw
->
phy_reset_disable
)
return
E1000_SUCCESS
;
/* Enable CRS on TX. This must be set for half-duplex operation. */
ret_val
=
e1000_read_phy_reg
(
hw
,
M88E1000_PHY_SPEC_CTRL
,
&
phy_data
);
if
(
ret_val
)
...
...
@@ -1665,7 +1665,7 @@ e1000_copper_link_autoneg(struct e1000_hw *hw)
* collision distance in the Transmit Control Register.
* 2) Set up flow control on the MAC to that established with
* the link partner.
* 3) Config DSP to improve Gigabit link quality for some PHY revisions.
* 3) Config DSP to improve Gigabit link quality for some PHY revisions.
*
* hw - Struct containing variables accessed by shared code
******************************************************************************/
...
...
@@ -1674,7 +1674,7 @@ e1000_copper_link_postconfig(struct e1000_hw *hw)
{
int32_t
ret_val
;
DEBUGFUNC
(
"e1000_copper_link_postconfig"
);
if
(
hw
->
mac_type
>=
e1000_82544
)
{
e1000_config_collision_dist
(
hw
);
}
else
{
...
...
@@ -1698,7 +1698,7 @@ e1000_copper_link_postconfig(struct e1000_hw *hw)
return
ret_val
;
}
}
return
E1000_SUCCESS
;
}
...
...
@@ -1754,11 +1754,11 @@ e1000_setup_copper_link(struct e1000_hw *hw)
}
if
(
hw
->
autoneg
)
{
/* Setup autoneg and flow control advertisement
* and perform autonegotiation */
/* Setup autoneg and flow control advertisement
* and perform autonegotiation */
ret_val
=
e1000_copper_link_autoneg
(
hw
);
if
(
ret_val
)
return
ret_val
;
return
ret_val
;
}
else
{
/* PHY will be set to 10H, 10F, 100H,or 100F
* depending on value from forced_speed_duplex. */
...
...
@@ -1786,7 +1786,7 @@ e1000_setup_copper_link(struct e1000_hw *hw)
ret_val
=
e1000_copper_link_postconfig
(
hw
);
if
(
ret_val
)
return
ret_val
;
DEBUGOUT
(
"Valid link established!!!
\n
"
);
return
E1000_SUCCESS
;
}
...
...
@@ -1984,7 +1984,7 @@ e1000_phy_setup_autoneg(struct e1000_hw *hw)
DEBUGOUT1
(
"Auto-Neg Advertising %x
\n
"
,
mii_autoneg_adv_reg
);
ret_val
=
e1000_write_phy_reg
(
hw
,
PHY_1000T_CTRL
,
mii_1000t_ctrl_reg
);
ret_val
=
e1000_write_phy_reg
(
hw
,
PHY_1000T_CTRL
,
mii_1000t_ctrl_reg
);
if
(
ret_val
)
return
ret_val
;
...
...
@@ -2273,7 +2273,7 @@ e1000_config_mac_to_phy(struct e1000_hw *hw)
DEBUGFUNC
(
"e1000_config_mac_to_phy"
);
/* 82544 or newer MAC, Auto Speed Detection takes care of
/* 82544 or newer MAC, Auto Speed Detection takes care of
* MAC speed/duplex configuration.*/
if
(
hw
->
mac_type
>=
e1000_82544
)
return
E1000_SUCCESS
;
...
...
@@ -2292,9 +2292,9 @@ e1000_config_mac_to_phy(struct e1000_hw *hw)
if
(
ret_val
)
return
ret_val
;
if
(
phy_data
&
M88E1000_PSSR_DPLX
)
if
(
phy_data
&
M88E1000_PSSR_DPLX
)
ctrl
|=
E1000_CTRL_FD
;
else
else
ctrl
&=
~
E1000_CTRL_FD
;
e1000_config_collision_dist
(
hw
);
...
...
@@ -2493,10 +2493,10 @@ e1000_config_fc_after_link_up(struct e1000_hw *hw)
*/
if
(
hw
->
original_fc
==
e1000_fc_full
)
{
hw
->
fc
=
e1000_fc_full
;
DEBUGOUT
(
"Flow Control = FULL.
\
r\
n
"
);
DEBUGOUT
(
"Flow Control = FULL.
\n
"
);
}
else
{
hw
->
fc
=
e1000_fc_rx_pause
;
DEBUGOUT
(
"Flow Control = RX PAUSE frames only.
\
r\
n
"
);
DEBUGOUT
(
"Flow Control = RX PAUSE frames only.
\n
"
);
}
}
/* For receiving PAUSE frames ONLY.
...
...
@@ -2512,7 +2512,7 @@ e1000_config_fc_after_link_up(struct e1000_hw *hw)
(
mii_nway_lp_ability_reg
&
NWAY_LPAR_PAUSE
)
&&
(
mii_nway_lp_ability_reg
&
NWAY_LPAR_ASM_DIR
))
{
hw
->
fc
=
e1000_fc_tx_pause
;
DEBUGOUT
(
"Flow Control = TX PAUSE frames only.
\
r\
n
"
);
DEBUGOUT
(
"Flow Control = TX PAUSE frames only.
\n
"
);
}
/* For transmitting PAUSE frames ONLY.
*
...
...
@@ -2527,7 +2527,7 @@ e1000_config_fc_after_link_up(struct e1000_hw *hw)
!
(
mii_nway_lp_ability_reg
&
NWAY_LPAR_PAUSE
)
&&
(
mii_nway_lp_ability_reg
&
NWAY_LPAR_ASM_DIR
))
{
hw
->
fc
=
e1000_fc_rx_pause
;
DEBUGOUT
(
"Flow Control = RX PAUSE frames only.
\
r\
n
"
);
DEBUGOUT
(
"Flow Control = RX PAUSE frames only.
\n
"
);
}
/* Per the IEEE spec, at this point flow control should be
* disabled. However, we want to consider that we could
...
...
@@ -2553,10 +2553,10 @@ e1000_config_fc_after_link_up(struct e1000_hw *hw)
hw
->
original_fc
==
e1000_fc_tx_pause
)
||
hw
->
fc_strict_ieee
)
{
hw
->
fc
=
e1000_fc_none
;
DEBUGOUT
(
"Flow Control = NONE.
\
r\
n
"
);
DEBUGOUT
(
"Flow Control = NONE.
\n
"
);
}
else
{
hw
->
fc
=
e1000_fc_rx_pause
;
DEBUGOUT
(
"Flow Control = RX PAUSE frames only.
\
r\
n
"
);
DEBUGOUT
(
"Flow Control = RX PAUSE frames only.
\n
"
);
}
/* Now we need to do one last check... If we auto-
...
...
@@ -2581,7 +2581,7 @@ e1000_config_fc_after_link_up(struct e1000_hw *hw)
return
ret_val
;
}
}
else
{
DEBUGOUT
(
"Copper PHY and Auto Neg has not completed.
\
r\
n
"
);
DEBUGOUT
(
"Copper PHY and Auto Neg has not completed.
\n
"
);
}
}
return
E1000_SUCCESS
;
...
...
@@ -2764,7 +2764,7 @@ e1000_check_for_link(struct e1000_hw *hw)
hw
->
autoneg_failed
=
1
;
return
0
;
}
DEBUGOUT
(
"NOT RXing /C/, disable AutoNeg and force link.
\
r\
n
"
);
DEBUGOUT
(
"NOT RXing /C/, disable AutoNeg and force link.
\n
"
);
/* Disable auto-negotiation in the TXCW register */
E1000_WRITE_REG
(
hw
,
TXCW
,
(
hw
->
txcw
&
~
E1000_TXCW_ANE
));
...
...
@@ -2789,7 +2789,7 @@ e1000_check_for_link(struct e1000_hw *hw)
else
if
(((
hw
->
media_type
==
e1000_media_type_fiber
)
||
(
hw
->
media_type
==
e1000_media_type_internal_serdes
))
&&
(
ctrl
&
E1000_CTRL_SLU
)
&&
(
rxcw
&
E1000_RXCW_C
))
{
DEBUGOUT
(
"RXing /C/, enable AutoNeg and stop forcing link.
\
r\
n
"
);
DEBUGOUT
(
"RXing /C/, enable AutoNeg and stop forcing link.
\n
"
);
E1000_WRITE_REG
(
hw
,
TXCW
,
hw
->
txcw
);
E1000_WRITE_REG
(
hw
,
CTRL
,
(
ctrl
&
~
E1000_CTRL_SLU
));
...
...
@@ -2852,13 +2852,13 @@ e1000_get_speed_and_duplex(struct e1000_hw *hw,
if
(
status
&
E1000_STATUS_FD
)
{
*
duplex
=
FULL_DUPLEX
;
DEBUGOUT
(
"Full Duplex
\
r\
n
"
);
DEBUGOUT
(
"Full Duplex
\n
"
);
}
else
{
*
duplex
=
HALF_DUPLEX
;
DEBUGOUT
(
" Half Duplex
\
r\
n
"
);
DEBUGOUT
(
" Half Duplex
\n
"
);
}
}
else
{
DEBUGOUT
(
"1000 Mbs, Full Duplex
\
r\
n
"
);
DEBUGOUT
(
"1000 Mbs, Full Duplex
\n
"
);
*
speed
=
SPEED_1000
;
*
duplex
=
FULL_DUPLEX
;
}
...
...
@@ -2884,7 +2884,7 @@ e1000_get_speed_and_duplex(struct e1000_hw *hw,
}
}
if
((
hw
->
mac_type
==
e1000_80003es2lan
)
&&
if
((
hw
->
mac_type
==
e1000_80003es2lan
)
&&
(
hw
->
media_type
==
e1000_media_type_copper
))
{
if
(
*
speed
==
SPEED_1000
)
ret_val
=
e1000_configure_kmrn_for_1000
(
hw
);
...
...
@@ -3160,7 +3160,7 @@ e1000_read_phy_reg(struct e1000_hw *hw,
if
(
e1000_swfw_sync_acquire
(
hw
,
swfw
))
return
-
E1000_ERR_SWFW_SYNC
;
if
((
hw
->
phy_type
==
e1000_phy_igp
||
if
((
hw
->
phy_type
==
e1000_phy_igp
||
hw
->
phy_type
==
e1000_phy_igp_2
)
&&
(
reg_addr
>
MAX_PHY_MULTI_PAGE_REG
))
{
ret_val
=
e1000_write_phy_reg_ex
(
hw
,
IGP01E1000_PHY_PAGE_SELECT
,
...
...
@@ -3299,7 +3299,7 @@ e1000_write_phy_reg(struct e1000_hw *hw,
if
(
e1000_swfw_sync_acquire
(
hw
,
swfw
))
return
-
E1000_ERR_SWFW_SYNC
;
if
((
hw
->
phy_type
==
e1000_phy_igp
||
if
((
hw
->
phy_type
==
e1000_phy_igp
||
hw
->
phy_type
==
e1000_phy_igp_2
)
&&
(
reg_addr
>
MAX_PHY_MULTI_PAGE_REG
))
{
ret_val
=
e1000_write_phy_reg_ex
(
hw
,
IGP01E1000_PHY_PAGE_SELECT
,
...
...
@@ -3497,22 +3497,22 @@ e1000_phy_hw_reset(struct e1000_hw *hw)
}
/* Read the device control register and assert the E1000_CTRL_PHY_RST
* bit. Then, take it out of reset.
* For pre-e1000_82571 hardware, we delay for 10ms between the assert
* For pre-e1000_82571 hardware, we delay for 10ms between the assert
* and deassert. For e1000_82571 hardware and later, we instead delay
* for 50us between and 10ms after the deassertion.
*/
ctrl
=
E1000_READ_REG
(
hw
,
CTRL
);
E1000_WRITE_REG
(
hw
,
CTRL
,
ctrl
|
E1000_CTRL_PHY_RST
);
E1000_WRITE_FLUSH
(
hw
);
if
(
hw
->
mac_type
<
e1000_82571
)
if
(
hw
->
mac_type
<
e1000_82571
)
msec_delay
(
10
);
else
udelay
(
100
);
E1000_WRITE_REG
(
hw
,
CTRL
,
ctrl
);
E1000_WRITE_FLUSH
(
hw
);
if
(
hw
->
mac_type
>=
e1000_82571
)
msec_delay
(
10
);
e1000_swfw_sync_release
(
hw
,
swfw
);
...
...
@@ -3816,7 +3816,7 @@ e1000_phy_m88_get_info(struct e1000_hw *hw,
/* Check polarity status */
ret_val
=
e1000_check_polarity
(
hw
,
&
polarity
);
if
(
ret_val
)
return
ret_val
;
return
ret_val
;
phy_info
->
cable_polarity
=
polarity
;
ret_val
=
e1000_read_phy_reg
(
hw
,
M88E1000_PHY_SPEC_STATUS
,
&
phy_data
);
...
...
@@ -4541,14 +4541,14 @@ e1000_read_eeprom_eerd(struct e1000_hw *hw,
E1000_WRITE_REG
(
hw
,
EERD
,
eerd
);
error
=
e1000_poll_eerd_eewr_done
(
hw
,
E1000_EEPROM_POLL_READ
);
if
(
error
)
{
break
;
}
data
[
i
]
=
(
E1000_READ_REG
(
hw
,
EERD
)
>>
E1000_EEPROM_RW_REG_DATA
);
}
return
error
;
}
...
...
@@ -4574,24 +4574,24 @@ e1000_write_eeprom_eewr(struct e1000_hw *hw,
return
-
E1000_ERR_SWFW_SYNC
;
for
(
i
=
0
;
i
<
words
;
i
++
)
{
register_value
=
(
data
[
i
]
<<
E1000_EEPROM_RW_REG_DATA
)
|
((
offset
+
i
)
<<
E1000_EEPROM_RW_ADDR_SHIFT
)
|
register_value
=
(
data
[
i
]
<<
E1000_EEPROM_RW_REG_DATA
)
|
((
offset
+
i
)
<<
E1000_EEPROM_RW_ADDR_SHIFT
)
|
E1000_EEPROM_RW_REG_START
;
error
=
e1000_poll_eerd_eewr_done
(
hw
,
E1000_EEPROM_POLL_WRITE
);
if
(
error
)
{
break
;
}
}
E1000_WRITE_REG
(
hw
,
EEWR
,
register_value
);
error
=
e1000_poll_eerd_eewr_done
(
hw
,
E1000_EEPROM_POLL_WRITE
);
if
(
error
)
{
break
;
}
}
}
e1000_swfw_sync_release
(
hw
,
E1000_SWFW_EEP_SM
);
return
error
;
}
...
...
@@ -4611,7 +4611,7 @@ e1000_poll_eerd_eewr_done(struct e1000_hw *hw, int eerd)
for
(
i
=
0
;
i
<
attempts
;
i
++
)
{
if
(
eerd
==
E1000_EEPROM_POLL_READ
)
reg
=
E1000_READ_REG
(
hw
,
EERD
);
else
else
reg
=
E1000_READ_REG
(
hw
,
EEWR
);
if
(
reg
&
E1000_EEPROM_RW_REG_DONE
)
{
...
...
@@ -5136,7 +5136,7 @@ e1000_mc_addr_list_update(struct e1000_hw *hw,
uint32_t i;
uint32_t num_rar_entry;
uint32_t num_mta_entry;
DEBUGFUNC("e1000_mc_addr_list_update");
/* Set the new number of MC addresses that we are being requested to use. */
...
...
@@ -6241,7 +6241,7 @@ e1000_check_polarity(struct e1000_hw *hw,
* 1 - Downshift ocured.
*
* returns: - E1000_ERR_XXX
* E1000_SUCCESS
* E1000_SUCCESS
*
* For phy's older then IGP, this function reads the Downshift bit in the Phy
* Specific Status register. For IGP phy's, it reads the Downgrade bit in the
...
...
@@ -6256,7 +6256,7 @@ e1000_check_downshift(struct e1000_hw *hw)
DEBUGFUNC
(
"e1000_check_downshift"
);
if
(
hw
->
phy_type
==
e1000_phy_igp
||
if
(
hw
->
phy_type
==
e1000_phy_igp
||
hw
->
phy_type
==
e1000_phy_igp_2
)
{
ret_val
=
e1000_read_phy_reg
(
hw
,
IGP01E1000_PHY_LINK_HEALTH
,
&
phy_data
);
...
...
@@ -6685,8 +6685,8 @@ e1000_set_d0_lplu_state(struct e1000_hw *hw,
}
else
{
phy_data
|=
IGP02E1000_PM_D0_LPLU
;
phy_data
|=
IGP02E1000_PM_D0_LPLU
;
ret_val
=
e1000_write_phy_reg
(
hw
,
IGP02E1000_PHY_POWER_MGMT
,
phy_data
);
if
(
ret_val
)
return
ret_val
;
...
...
@@ -6778,7 +6778,7 @@ int32_t
e1000_host_if_read_cookie
(
struct
e1000_hw
*
hw
,
uint8_t
*
buffer
)
{
uint8_t
i
;
uint32_t
offset
=
E1000_MNG_DHCP_COOKIE_OFFSET
;
uint32_t
offset
=
E1000_MNG_DHCP_COOKIE_OFFSET
;
uint8_t
length
=
E1000_MNG_DHCP_COOKIE_LENGTH
;
length
=
(
length
>>
2
);
...
...
@@ -6797,7 +6797,7 @@ e1000_host_if_read_cookie(struct e1000_hw * hw, uint8_t *buffer)
* and also checks whether the previous command is completed.
* It busy waits in case of previous command is not completed.
*
* returns: - E1000_ERR_HOST_INTERFACE_COMMAND in case if is not ready or
* returns: - E1000_ERR_HOST_INTERFACE_COMMAND in case if is not ready or
* timeout
* - E1000_SUCCESS for success.
****************************************************************************/
...
...
@@ -6821,7 +6821,7 @@ e1000_mng_enable_host_if(struct e1000_hw * hw)
msec_delay_irq
(
1
);
}
if
(
i
==
E1000_MNG_DHCP_COMMAND_TIMEOUT
)
{
if
(
i
==
E1000_MNG_DHCP_COMMAND_TIMEOUT
)
{
DEBUGOUT
(
"Previous command timeout failed .
\n
"
);
return
-
E1000_ERR_HOST_INTERFACE_COMMAND
;
}
...
...
drivers/net/e1000/e1000_hw.h
View file @
bdad69b2
...
...
@@ -375,7 +375,7 @@ struct e1000_host_mng_dhcp_cookie{
};
#endif
int32_t
e1000_mng_write_dhcp_info
(
struct
e1000_hw
*
hw
,
uint8_t
*
buffer
,
int32_t
e1000_mng_write_dhcp_info
(
struct
e1000_hw
*
hw
,
uint8_t
*
buffer
,
uint16_t
length
);
boolean_t
e1000_check_mng_mode
(
struct
e1000_hw
*
hw
);
boolean_t
e1000_enable_tx_pkt_filtering
(
struct
e1000_hw
*
hw
);
...
...
@@ -1802,7 +1802,7 @@ struct e1000_hw {
* value2 = [0..64512], default=4096
* value3 = [0..64512], default=0
*/
#define E1000_PSRCTL_BSIZE0_MASK 0x0000007F
#define E1000_PSRCTL_BSIZE1_MASK 0x00003F00
#define E1000_PSRCTL_BSIZE2_MASK 0x003F0000
...
...
drivers/net/e1000/e1000_main.c
View file @
bdad69b2
...
...
@@ -29,45 +29,6 @@
#include "e1000.h"
/* Change Log
* 7.0.33 3-Feb-2006
* o Added another fix for the pass false carrier bit
* 7.0.32 24-Jan-2006
* o Need to rebuild with noew version number for the pass false carrier
* fix in e1000_hw.c
* 7.0.30 18-Jan-2006
* o fixup for tso workaround to disable it for pci-x
* o fix mem leak on 82542
* o fixes for 10 Mb/s connections and incorrect stats
* 7.0.28 01/06/2006
* o hardware workaround to only set "speed mode" bit for 1G link.
* 7.0.26 12/23/2005
* o wake on lan support modified for device ID 10B5
* o fix dhcp + vlan issue not making it to the iAMT firmware
* 7.0.24 12/9/2005
* o New hardware support for the Gigabit NIC embedded in the south bridge
* o Fixes to the recycling logic (skb->tail) from IBM LTC
* 6.3.9 12/16/2005
* o incorporate fix for recycled skbs from IBM LTC
* 6.3.7 11/18/2005
* o Honor eeprom setting for enabling/disabling Wake On Lan
* 6.3.5 11/17/2005
* o Fix memory leak in rx ring handling for PCI Express adapters
* 6.3.4 11/8/05
* o Patch from Jesper Juhl to remove redundant NULL checks for kfree
* 6.3.2 9/20/05
* o Render logic that sets/resets DRV_LOAD as inline functions to
* avoid code replication. If f/w is AMT then set DRV_LOAD only when
* network interface is open.
* o Handle DRV_LOAD set/reset in cases where AMT uses VLANs.
* o Adjust PBA partioning for Jumbo frames using MTU size and not
* rx_buffer_len
* 6.3.1 9/19/05
* o Use adapter->tx_timeout_factor in Tx Hung Detect logic
* (e1000_clean_tx_irq)
* o Support for 8086:10B5 device (Quad Port)
*/
char
e1000_driver_name
[]
=
"e1000"
;
static
char
e1000_driver_string
[]
=
"Intel(R) PRO/1000 Network Driver"
;
#ifndef CONFIG_E1000_NAPI
...
...
@@ -75,7 +36,7 @@ static char e1000_driver_string[] = "Intel(R) PRO/1000 Network Driver";
#else
#define DRIVERNAPI "-NAPI"
#endif
#define DRV_VERSION "7.0.38-k
2
"DRIVERNAPI
#define DRV_VERSION "7.0.38-k
4
"DRIVERNAPI
char
e1000_driver_version
[]
=
DRV_VERSION
;
static
char
e1000_copyright
[]
=
"Copyright (c) 1999-2006 Intel Corporation."
;
...
...
@@ -221,6 +182,7 @@ static void e1000_restore_vlan(struct e1000_adapter *adapter);
static
int
e1000_suspend
(
struct
pci_dev
*
pdev
,
pm_message_t
state
);
static
int
e1000_resume
(
struct
pci_dev
*
pdev
);
#endif
static
void
e1000_shutdown
(
struct
pci_dev
*
pdev
);
#ifdef CONFIG_NET_POLL_CONTROLLER
/* for netdump / net console */
...
...
@@ -236,8 +198,9 @@ static struct pci_driver e1000_driver = {
/* Power Managment Hooks */
#ifdef CONFIG_PM
.
suspend
=
e1000_suspend
,
.
resume
=
e1000_resume
.
resume
=
e1000_resume
,
#endif
.
shutdown
=
e1000_shutdown
};
MODULE_AUTHOR
(
"Intel Corporation, <linux.nics@intel.com>"
);
...
...
@@ -347,7 +310,7 @@ e1000_update_mng_vlan(struct e1000_adapter *adapter)
* For ASF and Pass Through versions of f/w this means that the
* driver is no longer loaded. For AMT version (only with 82573) i
* of the f/w this means that the netowrk i/f is closed.
*
*
**/
static
void
...
...
@@ -379,10 +342,10 @@ e1000_release_hw_control(struct e1000_adapter *adapter)
* @adapter: address of board private structure
*
* e1000_get_hw_control sets {CTRL_EXT|FWSM}:DRV_LOAD bit.
* For ASF and Pass Through versions of f/w this means that
* the driver is loaded. For AMT version (only with 82573)
* For ASF and Pass Through versions of f/w this means that
* the driver is loaded. For AMT version (only with 82573)
* of the f/w this means that the netowrk i/f is open.
*
*
**/
static
void
...
...
@@ -712,8 +675,8 @@ e1000_probe(struct pci_dev *pdev,
DPRINTK
(
PROBE
,
INFO
,
"PHY reset is blocked due to SOL/IDER session.
\n
"
);
/* if ksp3, indicate if it's port a being setup */
if
(
pdev
->
device
==
E1000_DEV_ID_82546GB_QUAD_COPPER_KSP3
&&
e1000_ksp3_port_a
==
0
)
if
(
pdev
->
device
==
E1000_DEV_ID_82546GB_QUAD_COPPER_KSP3
&&
e1000_ksp3_port_a
==
0
)
adapter
->
ksp3_port_a
=
1
;
e1000_ksp3_port_a
++
;
/* Reset for multiple KP3 adapters */
...
...
@@ -741,9 +704,9 @@ e1000_probe(struct pci_dev *pdev,
if
(
pci_using_dac
)
netdev
->
features
|=
NETIF_F_HIGHDMA
;
/* hard_start_xmit is safe against parallel locking */
netdev
->
features
|=
NETIF_F_LLTX
;
/* hard_start_xmit is safe against parallel locking */
netdev
->
features
|=
NETIF_F_LLTX
;
adapter
->
en_mng_pt
=
e1000_enable_mng_pass_thru
(
&
adapter
->
hw
);
/* before reading the EEPROM, reset the controller to
...
...
@@ -2771,7 +2734,7 @@ e1000_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
unsigned
int
nr_frags
=
0
;
unsigned
int
mss
=
0
;
int
count
=
0
;
int
tso
;
int
tso
;
unsigned
int
f
;
len
-=
skb
->
data_len
;
...
...
@@ -2784,7 +2747,7 @@ e1000_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
#ifdef NETIF_F_TSO
mss
=
skb_shinfo
(
skb
)
->
tso_size
;
/* The controller does a simple calculation to
/* The controller does a simple calculation to
* make sure there is enough room in the FIFO before
* initiating the DMA for each buffer. The calc is:
* 4 = ceil(buffer len/mss). To make sure we don't
...
...
@@ -2807,7 +2770,7 @@ e1000_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
case
e1000_82573
:
pull_size
=
min
((
unsigned
int
)
4
,
skb
->
data_len
);
if
(
!
__pskb_pull_tail
(
skb
,
pull_size
))
{
printk
(
KERN_ERR
printk
(
KERN_ERR
"__pskb_pull_tail failed.
\n
"
);
dev_kfree_skb_any
(
skb
);
return
NETDEV_TX_OK
;
...
...
@@ -3753,7 +3716,7 @@ e1000_clean_rx_irq_ps(struct e1000_adapter *adapter,
* throughput, so unsplit small packets and save the alloc/put*/
if
(
l1
&&
((
length
+
l1
)
<=
adapter
->
rx_ps_bsize0
))
{
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
* very long */
pci_dma_sync_single_for_cpu
(
pdev
,
...
...
@@ -4605,6 +4568,12 @@ e1000_resume(struct pci_dev *pdev)
return
0
;
}
#endif
static
void
e1000_shutdown
(
struct
pci_dev
*
pdev
)
{
e1000_suspend
(
pdev
,
PMSG_SUSPEND
);
}
#ifdef CONFIG_NET_POLL_CONTROLLER
/*
* Polling 'interrupt' - used by things like netconsole to send skbs
...
...
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