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
16dc459c
Commit
16dc459c
authored
Feb 13, 2012
by
David S. Miller
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next
parents
2132cf64
5015e53a
Changes
8
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
265 additions
and
373 deletions
+265
-373
drivers/net/ethernet/intel/e1000e/80003es2lan.c
drivers/net/ethernet/intel/e1000e/80003es2lan.c
+11
-25
drivers/net/ethernet/intel/e1000e/82571.c
drivers/net/ethernet/intel/e1000e/82571.c
+13
-23
drivers/net/ethernet/intel/e1000e/ich8lan.c
drivers/net/ethernet/intel/e1000e/ich8lan.c
+96
-124
drivers/net/ethernet/intel/e1000e/mac.c
drivers/net/ethernet/intel/e1000e/mac.c
+11
-14
drivers/net/ethernet/intel/e1000e/manage.c
drivers/net/ethernet/intel/e1000e/manage.c
+11
-21
drivers/net/ethernet/intel/e1000e/netdev.c
drivers/net/ethernet/intel/e1000e/netdev.c
+7
-9
drivers/net/ethernet/intel/e1000e/nvm.c
drivers/net/ethernet/intel/e1000e/nvm.c
+14
-18
drivers/net/ethernet/intel/e1000e/phy.c
drivers/net/ethernet/intel/e1000e/phy.c
+102
-139
No files found.
drivers/net/ethernet/intel/e1000e/80003es2lan.c
View file @
16dc459c
...
...
@@ -470,9 +470,8 @@ static s32 e1000_read_phy_reg_gg82563_80003es2lan(struct e1000_hw *hw,
ret_val
=
e1000e_read_phy_reg_mdic
(
hw
,
page_select
,
&
temp
);
if
(((
u16
)
offset
>>
GG82563_PAGE_SHIFT
)
!=
temp
)
{
ret_val
=
-
E1000_ERR_PHY
;
e1000_release_phy_80003es2lan
(
hw
);
return
ret_val
;
return
-
E1000_ERR_PHY
;
}
udelay
(
200
);
...
...
@@ -715,22 +714,19 @@ static s32 e1000_get_cable_length_80003es2lan(struct e1000_hw *hw)
ret_val
=
e1e_rphy
(
hw
,
GG82563_PHY_DSP_DISTANCE
,
&
phy_data
);
if
(
ret_val
)
goto
out
;
return
ret_val
;
index
=
phy_data
&
GG82563_DSPD_CABLE_LENGTH
;
if
(
index
>=
GG82563_CABLE_LENGTH_TABLE_SIZE
-
5
)
{
ret_val
=
-
E1000_ERR_PHY
;
goto
out
;
}
if
(
index
>=
GG82563_CABLE_LENGTH_TABLE_SIZE
-
5
)
return
-
E1000_ERR_PHY
;
phy
->
min_cable_length
=
e1000_gg82563_cable_length_table
[
index
];
phy
->
max_cable_length
=
e1000_gg82563_cable_length_table
[
index
+
5
];
phy
->
cable_length
=
(
phy
->
min_cable_length
+
phy
->
max_cable_length
)
/
2
;
out:
return
ret_val
;
return
0
;
}
/**
...
...
@@ -804,9 +800,7 @@ static s32 e1000_reset_hw_80003es2lan(struct e1000_hw *hw)
ew32
(
IMC
,
0xffffffff
);
er32
(
ICR
);
ret_val
=
e1000_check_alt_mac_addr_generic
(
hw
);
return
ret_val
;
return
e1000_check_alt_mac_addr_generic
(
hw
);
}
/**
...
...
@@ -1147,9 +1141,7 @@ static s32 e1000_setup_copper_link_80003es2lan(struct e1000_hw *hw)
if
(
ret_val
)
return
ret_val
;
ret_val
=
e1000e_setup_copper_link
(
hw
);
return
0
;
return
e1000e_setup_copper_link
(
hw
);
}
/**
...
...
@@ -1225,9 +1217,7 @@ static s32 e1000_cfg_kmrn_10_100_80003es2lan(struct e1000_hw *hw, u16 duplex)
else
reg_data
&=
~
GG82563_KMCR_PASS_FALSE_CARRIER
;
ret_val
=
e1e_wphy
(
hw
,
GG82563_PHY_KMRN_MODE_CTRL
,
reg_data
);
return
0
;
return
e1e_wphy
(
hw
,
GG82563_PHY_KMRN_MODE_CTRL
,
reg_data
);
}
/**
...
...
@@ -1269,9 +1259,8 @@ static s32 e1000_cfg_kmrn_1000_80003es2lan(struct e1000_hw *hw)
}
while
((
reg_data
!=
reg_data2
)
&&
(
i
<
GG82563_MAX_KMRN_RETRY
));
reg_data
&=
~
GG82563_KMCR_PASS_FALSE_CARRIER
;
ret_val
=
e1e_wphy
(
hw
,
GG82563_PHY_KMRN_MODE_CTRL
,
reg_data
);
return
ret_val
;
return
e1e_wphy
(
hw
,
GG82563_PHY_KMRN_MODE_CTRL
,
reg_data
)
;
}
/**
...
...
@@ -1356,12 +1345,9 @@ static s32 e1000_read_mac_addr_80003es2lan(struct e1000_hw *hw)
*/
ret_val
=
e1000_check_alt_mac_addr_generic
(
hw
);
if
(
ret_val
)
goto
out
;
ret_val
=
e1000_read_mac_addr_generic
(
hw
);
return
ret_val
;
out:
return
ret_val
;
return
e1000_read_mac_addr_generic
(
hw
);
}
/**
...
...
drivers/net/ethernet/intel/e1000e/82571.c
View file @
16dc459c
...
...
@@ -564,7 +564,6 @@ static void e1000_put_hw_semaphore_82571(struct e1000_hw *hw)
static
s32
e1000_get_hw_semaphore_82573
(
struct
e1000_hw
*
hw
)
{
u32
extcnf_ctrl
;
s32
ret_val
=
0
;
s32
i
=
0
;
extcnf_ctrl
=
er32
(
EXTCNF_CTRL
);
...
...
@@ -586,12 +585,10 @@ static s32 e1000_get_hw_semaphore_82573(struct e1000_hw *hw)
/* Release semaphores */
e1000_put_hw_semaphore_82573
(
hw
);
e_dbg
(
"Driver can't access the PHY
\n
"
);
ret_val
=
-
E1000_ERR_PHY
;
goto
out
;
return
-
E1000_ERR_PHY
;
}
out:
return
ret_val
;
return
0
;
}
/**
...
...
@@ -796,7 +793,7 @@ static s32 e1000_update_nvm_checksum_82571(struct e1000_hw *hw)
* otherwise, commit the checksum to the flash NVM.
*/
if
(
hw
->
nvm
.
type
!=
e1000_nvm_flash_hw
)
return
ret_val
;
return
0
;
/* Check for pending operations. */
for
(
i
=
0
;
i
<
E1000_FLASH_UPDATES
;
i
++
)
{
...
...
@@ -1409,7 +1406,6 @@ bool e1000_check_phy_82574(struct e1000_hw *hw)
{
u16
status_1kbt
=
0
;
u16
receive_errors
=
0
;
bool
phy_hung
=
false
;
s32
ret_val
=
0
;
/*
...
...
@@ -1417,19 +1413,18 @@ bool e1000_check_phy_82574(struct e1000_hw *hw)
* read the Base1000T status register If both are max then PHY is hung.
*/
ret_val
=
e1e_rphy
(
hw
,
E1000_RECEIVE_ERROR_COUNTER
,
&
receive_errors
);
if
(
ret_val
)
goto
out
;
return
false
;
if
(
receive_errors
==
E1000_RECEIVE_ERROR_MAX
)
{
ret_val
=
e1e_rphy
(
hw
,
E1000_BASE1000T_STATUS
,
&
status_1kbt
);
if
(
ret_val
)
goto
out
;
return
false
;
if
((
status_1kbt
&
E1000_IDLE_ERROR_COUNT_MASK
)
==
E1000_IDLE_ERROR_COUNT_MASK
)
phy_hung
=
true
;
return
true
;
}
out:
return
phy_hung
;
return
false
;
}
/**
...
...
@@ -1497,9 +1492,7 @@ static s32 e1000_setup_copper_link_82571(struct e1000_hw *hw)
if
(
ret_val
)
return
ret_val
;
ret_val
=
e1000e_setup_copper_link
(
hw
);
return
ret_val
;
return
e1000e_setup_copper_link
(
hw
);
}
/**
...
...
@@ -1833,9 +1826,9 @@ static s32 e1000_fix_nvm_checksum_82571(struct e1000_hw *hw)
**/
static
s32
e1000_read_mac_addr_82571
(
struct
e1000_hw
*
hw
)
{
s32
ret_val
=
0
;
if
(
hw
->
mac
.
type
==
e1000_82571
)
{
s32
ret_val
=
0
;
/*
* If there's an alternate MAC address place it in RAR0
* so that it will override the Si installed default perm
...
...
@@ -1843,13 +1836,10 @@ static s32 e1000_read_mac_addr_82571(struct e1000_hw *hw)
*/
ret_val
=
e1000_check_alt_mac_addr_generic
(
hw
);
if
(
ret_val
)
goto
out
;
return
ret_val
;
}
ret_val
=
e1000_read_mac_addr_generic
(
hw
);
out:
return
ret_val
;
return
e1000_read_mac_addr_generic
(
hw
);
}
/**
...
...
drivers/net/ethernet/intel/e1000e/ich8lan.c
View file @
16dc459c
This diff is collapsed.
Click to expand it.
drivers/net/ethernet/intel/e1000e/mac.c
View file @
16dc459c
...
...
@@ -172,23 +172,23 @@ s32 e1000_check_alt_mac_addr_generic(struct e1000_hw *hw)
ret_val
=
e1000_read_nvm
(
hw
,
NVM_COMPAT
,
1
,
&
nvm_data
);
if
(
ret_val
)
goto
out
;
return
ret_val
;
/* not supported on 82573 */
if
(
hw
->
mac
.
type
==
e1000_82573
)
goto
out
;
return
0
;
ret_val
=
e1000_read_nvm
(
hw
,
NVM_ALT_MAC_ADDR_PTR
,
1
,
&
nvm_alt_mac_addr_offset
);
if
(
ret_val
)
{
e_dbg
(
"NVM Read Error
\n
"
);
goto
out
;
return
ret_val
;
}
if
((
nvm_alt_mac_addr_offset
==
0xFFFF
)
||
(
nvm_alt_mac_addr_offset
==
0x0000
))
/* There is no Alternate MAC Address */
goto
out
;
return
0
;
if
(
hw
->
bus
.
func
==
E1000_FUNC_1
)
nvm_alt_mac_addr_offset
+=
E1000_ALT_MAC_ADDRESS_OFFSET_LAN1
;
...
...
@@ -197,7 +197,7 @@ s32 e1000_check_alt_mac_addr_generic(struct e1000_hw *hw)
ret_val
=
e1000_read_nvm
(
hw
,
offset
,
1
,
&
nvm_data
);
if
(
ret_val
)
{
e_dbg
(
"NVM Read Error
\n
"
);
goto
out
;
return
ret_val
;
}
alt_mac_addr
[
i
]
=
(
u8
)(
nvm_data
&
0xFF
);
...
...
@@ -207,7 +207,7 @@ s32 e1000_check_alt_mac_addr_generic(struct e1000_hw *hw)
/* if multicast bit is set, the alternate address will not be used */
if
(
is_multicast_ether_addr
(
alt_mac_addr
))
{
e_dbg
(
"Ignoring Alternate Mac Address with MC bit set
\n
"
);
goto
out
;
return
0
;
}
/*
...
...
@@ -217,8 +217,7 @@ s32 e1000_check_alt_mac_addr_generic(struct e1000_hw *hw)
*/
e1000e_rar_set
(
hw
,
alt_mac_addr
,
0
);
out:
return
ret_val
;
return
0
;
}
/**
...
...
@@ -444,7 +443,7 @@ s32 e1000e_check_for_copper_link(struct e1000_hw *hw)
return
ret_val
;
if
(
!
link
)
return
ret_val
;
/* No link detected */
return
0
;
/* No link detected */
mac
->
get_link_status
=
false
;
...
...
@@ -458,10 +457,8 @@ s32 e1000e_check_for_copper_link(struct e1000_hw *hw)
* If we are forcing speed/duplex, then we simply return since
* we have already determined whether we have link or not.
*/
if
(
!
mac
->
autoneg
)
{
ret_val
=
-
E1000_ERR_CONFIG
;
return
ret_val
;
}
if
(
!
mac
->
autoneg
)
return
-
E1000_ERR_CONFIG
;
/*
* Auto-Neg is enabled. Auto Speed Detection takes care
...
...
@@ -924,7 +921,7 @@ s32 e1000e_setup_fiber_serdes_link(struct e1000_hw *hw)
e_dbg
(
"No signal detected
\n
"
);
}
return
0
;
return
ret_val
;
}
/**
...
...
drivers/net/ethernet/intel/e1000e/manage.c
View file @
16dc459c
...
...
@@ -140,7 +140,7 @@ bool e1000e_enable_tx_pkt_filtering(struct e1000_hw *hw)
/* No manageability, no filtering */
if
(
!
e1000e_check_mng_mode
(
hw
))
{
hw
->
mac
.
tx_pkt_filtering
=
false
;
goto
out
;
return
hw
->
mac
.
tx_pkt_filtering
;
}
/*
...
...
@@ -150,7 +150,7 @@ bool e1000e_enable_tx_pkt_filtering(struct e1000_hw *hw)
ret_val
=
e1000_mng_enable_host_if
(
hw
);
if
(
ret_val
)
{
hw
->
mac
.
tx_pkt_filtering
=
false
;
goto
out
;
return
hw
->
mac
.
tx_pkt_filtering
;
}
/* Read in the header. Length and offset are in dwords. */
...
...
@@ -170,16 +170,13 @@ bool e1000e_enable_tx_pkt_filtering(struct e1000_hw *hw)
*/
if
((
hdr_csum
!=
csum
)
||
(
hdr
->
signature
!=
E1000_IAMT_SIGNATURE
))
{
hw
->
mac
.
tx_pkt_filtering
=
true
;
goto
out
;
return
hw
->
mac
.
tx_pkt_filtering
;
}
/* Cookie area is valid, make the final check for filtering. */
if
(
!
(
hdr
->
status
&
E1000_MNG_DHCP_COOKIE_STATUS_PARSING
))
{
if
(
!
(
hdr
->
status
&
E1000_MNG_DHCP_COOKIE_STATUS_PARSING
))
hw
->
mac
.
tx_pkt_filtering
=
false
;
goto
out
;
}
out:
return
hw
->
mac
.
tx_pkt_filtering
;
}
...
...
@@ -336,12 +333,11 @@ bool e1000e_enable_mng_pass_thru(struct e1000_hw *hw)
{
u32
manc
;
u32
fwsm
,
factps
;
bool
ret_val
=
false
;
manc
=
er32
(
MANC
);
if
(
!
(
manc
&
E1000_MANC_RCV_TCO_EN
))
goto
out
;
return
false
;
if
(
hw
->
mac
.
has_fwsm
)
{
fwsm
=
er32
(
FWSM
);
...
...
@@ -349,10 +345,8 @@ bool e1000e_enable_mng_pass_thru(struct e1000_hw *hw)
if
(
!
(
factps
&
E1000_FACTPS_MNGCG
)
&&
((
fwsm
&
E1000_FWSM_MODE_MASK
)
==
(
e1000_mng_mode_pt
<<
E1000_FWSM_MODE_SHIFT
)))
{
ret_val
=
true
;
goto
out
;
}
(
e1000_mng_mode_pt
<<
E1000_FWSM_MODE_SHIFT
)))
return
true
;
}
else
if
((
hw
->
mac
.
type
==
e1000_82574
)
||
(
hw
->
mac
.
type
==
e1000_82583
))
{
u16
data
;
...
...
@@ -362,16 +356,12 @@ bool e1000e_enable_mng_pass_thru(struct e1000_hw *hw)
if
(
!
(
factps
&
E1000_FACTPS_MNGCG
)
&&
((
data
&
E1000_NVM_INIT_CTRL2_MNGM
)
==
(
e1000_mng_mode_pt
<<
13
)))
{
ret_val
=
true
;
goto
out
;
}
(
e1000_mng_mode_pt
<<
13
)))
return
true
;
}
else
if
((
manc
&
E1000_MANC_SMBUS_EN
)
&&
!
(
manc
&
E1000_MANC_ASF_EN
))
{
ret_val
=
true
;
goto
out
;
return
true
;
}
out:
return
ret_val
;
return
false
;
}
drivers/net/ethernet/intel/e1000e/netdev.c
View file @
16dc459c
...
...
@@ -1985,7 +1985,7 @@ static int e1000_request_msix(struct e1000_adapter *adapter)
e1000_intr_msix_rx
,
0
,
adapter
->
rx_ring
->
name
,
netdev
);
if
(
err
)
goto
out
;
return
err
;
adapter
->
rx_ring
->
itr_register
=
adapter
->
hw
.
hw_addr
+
E1000_EITR_82574
(
vector
);
adapter
->
rx_ring
->
itr_val
=
adapter
->
itr
;
...
...
@@ -2001,7 +2001,7 @@ static int e1000_request_msix(struct e1000_adapter *adapter)
e1000_intr_msix_tx
,
0
,
adapter
->
tx_ring
->
name
,
netdev
);
if
(
err
)
goto
out
;
return
err
;
adapter
->
tx_ring
->
itr_register
=
adapter
->
hw
.
hw_addr
+
E1000_EITR_82574
(
vector
);
adapter
->
tx_ring
->
itr_val
=
adapter
->
itr
;
...
...
@@ -2010,12 +2010,11 @@ static int e1000_request_msix(struct e1000_adapter *adapter)
err
=
request_irq
(
adapter
->
msix_entries
[
vector
].
vector
,
e1000_msix_other
,
0
,
netdev
->
name
,
netdev
);
if
(
err
)
goto
out
;
return
err
;
e1000_configure_msix
(
adapter
);
return
0
;
out:
return
err
;
}
/**
...
...
@@ -2367,7 +2366,7 @@ static unsigned int e1000_update_itr(struct e1000_adapter *adapter,
unsigned
int
retval
=
itr_setting
;
if
(
packets
==
0
)
goto
update_itr_done
;
return
itr_setting
;
switch
(
itr_setting
)
{
case
lowest_latency
:
...
...
@@ -2402,7 +2401,6 @@ static unsigned int e1000_update_itr(struct e1000_adapter *adapter,
break
;
}
update_itr_done:
return
retval
;
}
...
...
@@ -5365,7 +5363,7 @@ static int e1000_init_phy_wakeup(struct e1000_adapter *adapter, u32 wufc)
/* Enable access to wakeup registers on and set page to BM_WUC_PAGE */
retval
=
e1000_enable_phy_wakeup_reg_access_bm
(
hw
,
&
wuc_enable
);
if
(
retval
)
goto
out
;
goto
release
;
/* copy MAC MTA to PHY MTA - only needed for pchlan */
for
(
i
=
0
;
i
<
adapter
->
hw
.
mac
.
mta_reg_count
;
i
++
)
{
...
...
@@ -5409,7 +5407,7 @@ static int e1000_init_phy_wakeup(struct e1000_adapter *adapter, u32 wufc)
retval
=
e1000_disable_phy_wakeup_reg_access_bm
(
hw
,
&
wuc_enable
);
if
(
retval
)
e_err
(
"Could not set PHY Host Wakeup bit
\n
"
);
out
:
release
:
hw
->
phy
.
ops
.
release
(
hw
);
return
retval
;
...
...
drivers/net/ethernet/intel/e1000e/nvm.c
View file @
16dc459c
...
...
@@ -382,10 +382,8 @@ s32 e1000e_write_nvm_spi(struct e1000_hw *hw, u16 offset, u16 words, u16 *data)
u8
write_opcode
=
NVM_WRITE_OPCODE_SPI
;
ret_val
=
e1000_ready_nvm_eeprom
(
hw
);
if
(
ret_val
)
{
nvm
->
ops
.
release
(
hw
);
return
ret_val
;
}
if
(
ret_val
)
goto
release
;
e1000_standby_nvm
(
hw
);
...
...
@@ -422,8 +420,10 @@ s32 e1000e_write_nvm_spi(struct e1000_hw *hw, u16 offset, u16 words, u16 *data)
}
usleep_range
(
10000
,
20000
);
release:
nvm
->
ops
.
release
(
hw
);
return
0
;
return
ret_val
;
}
/**
...
...
@@ -446,20 +446,19 @@ s32 e1000_read_pba_string_generic(struct e1000_hw *hw, u8 *pba_num,
if
(
pba_num
==
NULL
)
{
e_dbg
(
"PBA string buffer was null
\n
"
);
ret_val
=
E1000_ERR_INVALID_ARGUMENT
;
goto
out
;
return
-
E1000_ERR_INVALID_ARGUMENT
;
}
ret_val
=
e1000_read_nvm
(
hw
,
NVM_PBA_OFFSET_0
,
1
,
&
nvm_data
);
if
(
ret_val
)
{
e_dbg
(
"NVM Read Error
\n
"
);
goto
out
;
return
ret_val
;
}
ret_val
=
e1000_read_nvm
(
hw
,
NVM_PBA_OFFSET_1
,
1
,
&
pba_ptr
);
if
(
ret_val
)
{
e_dbg
(
"NVM Read Error
\n
"
);
goto
out
;
return
ret_val
;
}
/*
...
...
@@ -499,25 +498,23 @@ s32 e1000_read_pba_string_generic(struct e1000_hw *hw, u8 *pba_num,
pba_num
[
offset
]
+=
'A'
-
0xA
;
}
goto
out
;
return
0
;
}
ret_val
=
e1000_read_nvm
(
hw
,
pba_ptr
,
1
,
&
length
);
if
(
ret_val
)
{
e_dbg
(
"NVM Read Error
\n
"
);
goto
out
;
return
ret_val
;
}
if
(
length
==
0xFFFF
||
length
==
0
)
{
e_dbg
(
"NVM PBA number section invalid length
\n
"
);
ret_val
=
E1000_ERR_NVM_PBA_SECTION
;
goto
out
;
return
-
E1000_ERR_NVM_PBA_SECTION
;
}
/* check if pba_num buffer is big enough */
if
(
pba_num_size
<
(((
u32
)
length
*
2
)
-
1
))
{
e_dbg
(
"PBA string buffer too small
\n
"
);
ret_val
=
E1000_ERR_NO_SPACE
;
goto
out
;
return
-
E1000_ERR_NO_SPACE
;
}
/* trim pba length from start of string */
...
...
@@ -528,15 +525,14 @@ s32 e1000_read_pba_string_generic(struct e1000_hw *hw, u8 *pba_num,
ret_val
=
e1000_read_nvm
(
hw
,
pba_ptr
+
offset
,
1
,
&
nvm_data
);
if
(
ret_val
)
{
e_dbg
(
"NVM Read Error
\n
"
);
goto
out
;
return
ret_val
;
}
pba_num
[
offset
*
2
]
=
(
u8
)(
nvm_data
>>
8
);
pba_num
[(
offset
*
2
)
+
1
]
=
(
u8
)(
nvm_data
&
0xFF
);
}
pba_num
[
offset
*
2
]
=
'\0'
;
out:
return
ret_val
;
return
0
;
}
/**
...
...
drivers/net/ethernet/intel/e1000e/phy.c
View file @
16dc459c
This diff is collapsed.
Click to expand it.
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