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
a45d49d1
Commit
a45d49d1
authored
Mar 03, 2011
by
David S. Miller
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/jkirsher/net-next-2.6
parents
e066008b
a52055e0
Changes
27
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
27 changed files
with
547 additions
and
447 deletions
+547
-447
drivers/net/igb/igb_ethtool.c
drivers/net/igb/igb_ethtool.c
+8
-5
drivers/net/igb/igb_main.c
drivers/net/igb/igb_main.c
+6
-1
drivers/net/ixgbe/ixgbe.h
drivers/net/ixgbe/ixgbe.h
+1
-1
drivers/net/ixgbe/ixgbe_82598.c
drivers/net/ixgbe/ixgbe_82598.c
+40
-23
drivers/net/ixgbe/ixgbe_82599.c
drivers/net/ixgbe/ixgbe_82599.c
+73
-31
drivers/net/ixgbe/ixgbe_common.c
drivers/net/ixgbe/ixgbe_common.c
+173
-265
drivers/net/ixgbe/ixgbe_common.h
drivers/net/ixgbe/ixgbe_common.h
+1
-3
drivers/net/ixgbe/ixgbe_dcb.c
drivers/net/ixgbe/ixgbe_dcb.c
+1
-1
drivers/net/ixgbe/ixgbe_dcb.h
drivers/net/ixgbe/ixgbe_dcb.h
+1
-1
drivers/net/ixgbe/ixgbe_dcb_82598.c
drivers/net/ixgbe/ixgbe_dcb_82598.c
+1
-1
drivers/net/ixgbe/ixgbe_dcb_82598.h
drivers/net/ixgbe/ixgbe_dcb_82598.h
+1
-1
drivers/net/ixgbe/ixgbe_dcb_82599.c
drivers/net/ixgbe/ixgbe_dcb_82599.c
+1
-1
drivers/net/ixgbe/ixgbe_dcb_82599.h
drivers/net/ixgbe/ixgbe_dcb_82599.h
+1
-1
drivers/net/ixgbe/ixgbe_dcb_nl.c
drivers/net/ixgbe/ixgbe_dcb_nl.c
+1
-1
drivers/net/ixgbe/ixgbe_ethtool.c
drivers/net/ixgbe/ixgbe_ethtool.c
+1
-1
drivers/net/ixgbe/ixgbe_fcoe.c
drivers/net/ixgbe/ixgbe_fcoe.c
+1
-1
drivers/net/ixgbe/ixgbe_fcoe.h
drivers/net/ixgbe/ixgbe_fcoe.h
+1
-1
drivers/net/ixgbe/ixgbe_main.c
drivers/net/ixgbe/ixgbe_main.c
+9
-3
drivers/net/ixgbe/ixgbe_mbx.c
drivers/net/ixgbe/ixgbe_mbx.c
+1
-1
drivers/net/ixgbe/ixgbe_mbx.h
drivers/net/ixgbe/ixgbe_mbx.h
+1
-1
drivers/net/ixgbe/ixgbe_phy.c
drivers/net/ixgbe/ixgbe_phy.c
+174
-64
drivers/net/ixgbe/ixgbe_phy.h
drivers/net/ixgbe/ixgbe_phy.h
+1
-1
drivers/net/ixgbe/ixgbe_sriov.c
drivers/net/ixgbe/ixgbe_sriov.c
+1
-1
drivers/net/ixgbe/ixgbe_sriov.h
drivers/net/ixgbe/ixgbe_sriov.h
+1
-1
drivers/net/ixgbe/ixgbe_type.h
drivers/net/ixgbe/ixgbe_type.h
+23
-17
drivers/net/ixgbe/ixgbe_x540.c
drivers/net/ixgbe/ixgbe_x540.c
+22
-12
drivers/net/ixgbevf/ixgbevf_main.c
drivers/net/ixgbevf/ixgbevf_main.c
+2
-7
No files found.
drivers/net/igb/igb_ethtool.c
View file @
a45d49d1
...
@@ -727,8 +727,9 @@ static void igb_get_drvinfo(struct net_device *netdev,
...
@@ -727,8 +727,9 @@ static void igb_get_drvinfo(struct net_device *netdev,
char
firmware_version
[
32
];
char
firmware_version
[
32
];
u16
eeprom_data
;
u16
eeprom_data
;
strncpy
(
drvinfo
->
driver
,
igb_driver_name
,
32
);
strncpy
(
drvinfo
->
driver
,
igb_driver_name
,
sizeof
(
drvinfo
->
driver
)
-
1
);
strncpy
(
drvinfo
->
version
,
igb_driver_version
,
32
);
strncpy
(
drvinfo
->
version
,
igb_driver_version
,
sizeof
(
drvinfo
->
version
)
-
1
);
/* EEPROM image version # is reported as firmware version # for
/* EEPROM image version # is reported as firmware version # for
* 82575 controllers */
* 82575 controllers */
...
@@ -738,8 +739,10 @@ static void igb_get_drvinfo(struct net_device *netdev,
...
@@ -738,8 +739,10 @@ static void igb_get_drvinfo(struct net_device *netdev,
(
eeprom_data
&
0x0FF0
)
>>
4
,
(
eeprom_data
&
0x0FF0
)
>>
4
,
eeprom_data
&
0x000F
);
eeprom_data
&
0x000F
);
strncpy
(
drvinfo
->
fw_version
,
firmware_version
,
32
);
strncpy
(
drvinfo
->
fw_version
,
firmware_version
,
strncpy
(
drvinfo
->
bus_info
,
pci_name
(
adapter
->
pdev
),
32
);
sizeof
(
drvinfo
->
fw_version
)
-
1
);
strncpy
(
drvinfo
->
bus_info
,
pci_name
(
adapter
->
pdev
),
sizeof
(
drvinfo
->
bus_info
)
-
1
);
drvinfo
->
n_stats
=
IGB_STATS_LEN
;
drvinfo
->
n_stats
=
IGB_STATS_LEN
;
drvinfo
->
testinfo_len
=
IGB_TEST_LEN
;
drvinfo
->
testinfo_len
=
IGB_TEST_LEN
;
drvinfo
->
regdump_len
=
igb_get_regs_len
(
netdev
);
drvinfo
->
regdump_len
=
igb_get_regs_len
(
netdev
);
...
@@ -1070,7 +1073,7 @@ static bool reg_pattern_test(struct igb_adapter *adapter, u64 *data,
...
@@ -1070,7 +1073,7 @@ static bool reg_pattern_test(struct igb_adapter *adapter, u64 *data,
{
0x5A5A5A5A
,
0xA5A5A5A5
,
0x00000000
,
0xFFFFFFFF
};
{
0x5A5A5A5A
,
0xA5A5A5A5
,
0x00000000
,
0xFFFFFFFF
};
for
(
pat
=
0
;
pat
<
ARRAY_SIZE
(
_test
);
pat
++
)
{
for
(
pat
=
0
;
pat
<
ARRAY_SIZE
(
_test
);
pat
++
)
{
wr32
(
reg
,
(
_test
[
pat
]
&
write
));
wr32
(
reg
,
(
_test
[
pat
]
&
write
));
val
=
rd32
(
reg
);
val
=
rd32
(
reg
)
&
mask
;
if
(
val
!=
(
_test
[
pat
]
&
write
&
mask
))
{
if
(
val
!=
(
_test
[
pat
]
&
write
&
mask
))
{
dev_err
(
&
adapter
->
pdev
->
dev
,
"pattern test reg %04X "
dev_err
(
&
adapter
->
pdev
->
dev
,
"pattern test reg %04X "
"failed: got 0x%08X expected 0x%08X
\n
"
,
"failed: got 0x%08X expected 0x%08X
\n
"
,
...
...
drivers/net/igb/igb_main.c
View file @
a45d49d1
...
@@ -2291,7 +2291,12 @@ static int __devinit igb_sw_init(struct igb_adapter *adapter)
...
@@ -2291,7 +2291,12 @@ static int __devinit igb_sw_init(struct igb_adapter *adapter)
switch
(
hw
->
mac
.
type
)
{
switch
(
hw
->
mac
.
type
)
{
case
e1000_82576
:
case
e1000_82576
:
case
e1000_i350
:
case
e1000_i350
:
adapter
->
vfs_allocated_count
=
(
max_vfs
>
7
)
?
7
:
max_vfs
;
if
(
max_vfs
>
7
)
{
dev_warn
(
&
pdev
->
dev
,
"Maximum of 7 VFs per PF, using max
\n
"
);
adapter
->
vfs_allocated_count
=
7
;
}
else
adapter
->
vfs_allocated_count
=
max_vfs
;
break
;
break
;
default:
default:
break
;
break
;
...
...
drivers/net/ixgbe/ixgbe.h
View file @
a45d49d1
/*******************************************************************************
/*******************************************************************************
Intel 10 Gigabit PCI Express Linux driver
Intel 10 Gigabit PCI Express Linux driver
Copyright(c) 1999 - 201
0
Intel Corporation.
Copyright(c) 1999 - 201
1
Intel Corporation.
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 and conditions of the GNU General Public License,
under the terms and conditions of the GNU General Public License,
...
...
drivers/net/ixgbe/ixgbe_82598.c
View file @
a45d49d1
/*******************************************************************************
/*******************************************************************************
Intel 10 Gigabit PCI Express Linux driver
Intel 10 Gigabit PCI Express Linux driver
Copyright(c) 1999 - 201
0
Intel Corporation.
Copyright(c) 1999 - 201
1
Intel Corporation.
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 and conditions of the GNU General Public License,
under the terms and conditions of the GNU General Public License,
...
@@ -627,7 +627,6 @@ static s32 ixgbe_check_mac_link_82598(struct ixgbe_hw *hw,
...
@@ -627,7 +627,6 @@ static s32 ixgbe_check_mac_link_82598(struct ixgbe_hw *hw,
return
0
;
return
0
;
}
}
/**
/**
* ixgbe_setup_mac_link_82598 - Set MAC link speed
* ixgbe_setup_mac_link_82598 - Set MAC link speed
* @hw: pointer to hardware structure
* @hw: pointer to hardware structure
...
@@ -698,7 +697,6 @@ static s32 ixgbe_setup_copper_link_82598(struct ixgbe_hw *hw,
...
@@ -698,7 +697,6 @@ static s32 ixgbe_setup_copper_link_82598(struct ixgbe_hw *hw,
/* Setup the PHY according to input speed */
/* Setup the PHY according to input speed */
status
=
hw
->
phy
.
ops
.
setup_link_speed
(
hw
,
speed
,
autoneg
,
status
=
hw
->
phy
.
ops
.
setup_link_speed
(
hw
,
speed
,
autoneg
,
autoneg_wait_to_complete
);
autoneg_wait_to_complete
);
/* Set up MAC */
/* Set up MAC */
ixgbe_start_mac_link_82598
(
hw
,
autoneg_wait_to_complete
);
ixgbe_start_mac_link_82598
(
hw
,
autoneg_wait_to_complete
);
...
@@ -770,7 +768,6 @@ static s32 ixgbe_reset_hw_82598(struct ixgbe_hw *hw)
...
@@ -770,7 +768,6 @@ static s32 ixgbe_reset_hw_82598(struct ixgbe_hw *hw)
else
if
(
phy_status
==
IXGBE_ERR_SFP_NOT_PRESENT
)
else
if
(
phy_status
==
IXGBE_ERR_SFP_NOT_PRESENT
)
goto
no_phy_reset
;
goto
no_phy_reset
;
hw
->
phy
.
ops
.
reset
(
hw
);
hw
->
phy
.
ops
.
reset
(
hw
);
}
}
...
@@ -779,12 +776,9 @@ static s32 ixgbe_reset_hw_82598(struct ixgbe_hw *hw)
...
@@ -779,12 +776,9 @@ static s32 ixgbe_reset_hw_82598(struct ixgbe_hw *hw)
* Prevent the PCI-E bus from from hanging by disabling PCI-E master
* Prevent the PCI-E bus from from hanging by disabling PCI-E master
* access and verify no pending requests before reset
* access and verify no pending requests before reset
*/
*/
status
=
ixgbe_disable_pcie_master
(
hw
);
ixgbe_disable_pcie_master
(
hw
);
if
(
status
!=
0
)
{
status
=
IXGBE_ERR_MASTER_REQUESTS_PENDING
;
hw_dbg
(
hw
,
"PCI-E Master disable polling has failed.
\n
"
);
}
mac_reset_top:
/*
/*
* Issue global reset to the MAC. This needs to be a SW reset.
* Issue global reset to the MAC. This needs to be a SW reset.
* If link reset is used, it might reset the MAC when mng is using it
* If link reset is used, it might reset the MAC when mng is using it
...
@@ -805,6 +799,19 @@ static s32 ixgbe_reset_hw_82598(struct ixgbe_hw *hw)
...
@@ -805,6 +799,19 @@ static s32 ixgbe_reset_hw_82598(struct ixgbe_hw *hw)
hw_dbg
(
hw
,
"Reset polling failed to complete.
\n
"
);
hw_dbg
(
hw
,
"Reset polling failed to complete.
\n
"
);
}
}
/*
* Double resets are required for recovery from certain error
* conditions. Between resets, it is necessary to stall to allow time
* for any pending HW events to complete. We use 1usec since that is
* what is needed for ixgbe_disable_pcie_master(). The second reset
* then clears out any effects of those events.
*/
if
(
hw
->
mac
.
flags
&
IXGBE_FLAGS_DOUBLE_RESET_REQUIRED
)
{
hw
->
mac
.
flags
&=
~
IXGBE_FLAGS_DOUBLE_RESET_REQUIRED
;
udelay
(
1
);
goto
mac_reset_top
;
}
msleep
(
50
);
msleep
(
50
);
gheccr
=
IXGBE_READ_REG
(
hw
,
IXGBE_GHECCR
);
gheccr
=
IXGBE_READ_REG
(
hw
,
IXGBE_GHECCR
);
...
@@ -824,15 +831,15 @@ static s32 ixgbe_reset_hw_82598(struct ixgbe_hw *hw)
...
@@ -824,15 +831,15 @@ static s32 ixgbe_reset_hw_82598(struct ixgbe_hw *hw)
IXGBE_WRITE_REG
(
hw
,
IXGBE_AUTOC
,
hw
->
mac
.
orig_autoc
);
IXGBE_WRITE_REG
(
hw
,
IXGBE_AUTOC
,
hw
->
mac
.
orig_autoc
);
}
}
/* Store the permanent mac address */
hw
->
mac
.
ops
.
get_mac_addr
(
hw
,
hw
->
mac
.
perm_addr
);
/*
/*
* Store MAC address from RAR0, clear receive address registers, and
* Store MAC address from RAR0, clear receive address registers, and
* clear the multicast table
* clear the multicast table
*/
*/
hw
->
mac
.
ops
.
init_rx_addrs
(
hw
);
hw
->
mac
.
ops
.
init_rx_addrs
(
hw
);
/* Store the permanent mac address */
hw
->
mac
.
ops
.
get_mac_addr
(
hw
,
hw
->
mac
.
perm_addr
);
reset_hw_out:
reset_hw_out:
if
(
phy_status
)
if
(
phy_status
)
status
=
phy_status
;
status
=
phy_status
;
...
@@ -849,6 +856,13 @@ static s32 ixgbe_reset_hw_82598(struct ixgbe_hw *hw)
...
@@ -849,6 +856,13 @@ static s32 ixgbe_reset_hw_82598(struct ixgbe_hw *hw)
static
s32
ixgbe_set_vmdq_82598
(
struct
ixgbe_hw
*
hw
,
u32
rar
,
u32
vmdq
)
static
s32
ixgbe_set_vmdq_82598
(
struct
ixgbe_hw
*
hw
,
u32
rar
,
u32
vmdq
)
{
{
u32
rar_high
;
u32
rar_high
;
u32
rar_entries
=
hw
->
mac
.
num_rar_entries
;
/* Make sure we are using a valid rar index range */
if
(
rar
>=
rar_entries
)
{
hw_dbg
(
hw
,
"RAR index %d is out of range.
\n
"
,
rar
);
return
IXGBE_ERR_INVALID_ARGUMENT
;
}
rar_high
=
IXGBE_READ_REG
(
hw
,
IXGBE_RAH
(
rar
));
rar_high
=
IXGBE_READ_REG
(
hw
,
IXGBE_RAH
(
rar
));
rar_high
&=
~
IXGBE_RAH_VIND_MASK
;
rar_high
&=
~
IXGBE_RAH_VIND_MASK
;
...
@@ -868,14 +882,17 @@ static s32 ixgbe_clear_vmdq_82598(struct ixgbe_hw *hw, u32 rar, u32 vmdq)
...
@@ -868,14 +882,17 @@ static s32 ixgbe_clear_vmdq_82598(struct ixgbe_hw *hw, u32 rar, u32 vmdq)
u32
rar_high
;
u32
rar_high
;
u32
rar_entries
=
hw
->
mac
.
num_rar_entries
;
u32
rar_entries
=
hw
->
mac
.
num_rar_entries
;
if
(
rar
<
rar_entries
)
{
rar_high
=
IXGBE_READ_REG
(
hw
,
IXGBE_RAH
(
rar
));
/* Make sure we are using a valid rar index range */
if
(
rar_high
&
IXGBE_RAH_VIND_MASK
)
{
if
(
rar
>=
rar_entries
)
{
rar_high
&=
~
IXGBE_RAH_VIND_MASK
;
IXGBE_WRITE_REG
(
hw
,
IXGBE_RAH
(
rar
),
rar_high
);
}
}
else
{
hw_dbg
(
hw
,
"RAR index %d is out of range.
\n
"
,
rar
);
hw_dbg
(
hw
,
"RAR index %d is out of range.
\n
"
,
rar
);
return
IXGBE_ERR_INVALID_ARGUMENT
;
}
rar_high
=
IXGBE_READ_REG
(
hw
,
IXGBE_RAH
(
rar
));
if
(
rar_high
&
IXGBE_RAH_VIND_MASK
)
{
rar_high
&=
~
IXGBE_RAH_VIND_MASK
;
IXGBE_WRITE_REG
(
hw
,
IXGBE_RAH
(
rar
),
rar_high
);
}
}
return
0
;
return
0
;
...
@@ -994,13 +1011,12 @@ static s32 ixgbe_write_analog_reg8_82598(struct ixgbe_hw *hw, u32 reg, u8 val)
...
@@ -994,13 +1011,12 @@ static s32 ixgbe_write_analog_reg8_82598(struct ixgbe_hw *hw, u32 reg, u8 val)
}
}
/**
/**
* ixgbe_read_i2c_eeprom_82598 - Read 8 bit EEPROM word of an SFP+ module
* ixgbe_read_i2c_eeprom_82598 - Reads 8 bit word over I2C interface.
* over I2C interface through an intermediate phy.
* @hw: pointer to hardware structure
* @hw: pointer to hardware structure
* @byte_offset: EEPROM byte offset to read
* @byte_offset: EEPROM byte offset to read
* @eeprom_data: value read
* @eeprom_data: value read
*
*
* Performs byte read operation to SFP module's EEPROM over I2C interface.
* Performs
8
byte read operation to SFP module's EEPROM over I2C interface.
**/
**/
static
s32
ixgbe_read_i2c_eeprom_82598
(
struct
ixgbe_hw
*
hw
,
u8
byte_offset
,
static
s32
ixgbe_read_i2c_eeprom_82598
(
struct
ixgbe_hw
*
hw
,
u8
byte_offset
,
u8
*
eeprom_data
)
u8
*
eeprom_data
)
...
@@ -1179,13 +1195,14 @@ static struct ixgbe_mac_operations mac_ops_82598 = {
...
@@ -1179,13 +1195,14 @@ static struct ixgbe_mac_operations mac_ops_82598 = {
.
set_vmdq
=
&
ixgbe_set_vmdq_82598
,
.
set_vmdq
=
&
ixgbe_set_vmdq_82598
,
.
clear_vmdq
=
&
ixgbe_clear_vmdq_82598
,
.
clear_vmdq
=
&
ixgbe_clear_vmdq_82598
,
.
init_rx_addrs
=
&
ixgbe_init_rx_addrs_generic
,
.
init_rx_addrs
=
&
ixgbe_init_rx_addrs_generic
,
.
update_uc_addr_list
=
&
ixgbe_update_uc_addr_list_generic
,
.
update_mc_addr_list
=
&
ixgbe_update_mc_addr_list_generic
,
.
update_mc_addr_list
=
&
ixgbe_update_mc_addr_list_generic
,
.
enable_mc
=
&
ixgbe_enable_mc_generic
,
.
enable_mc
=
&
ixgbe_enable_mc_generic
,
.
disable_mc
=
&
ixgbe_disable_mc_generic
,
.
disable_mc
=
&
ixgbe_disable_mc_generic
,
.
clear_vfta
=
&
ixgbe_clear_vfta_82598
,
.
clear_vfta
=
&
ixgbe_clear_vfta_82598
,
.
set_vfta
=
&
ixgbe_set_vfta_82598
,
.
set_vfta
=
&
ixgbe_set_vfta_82598
,
.
fc_enable
=
&
ixgbe_fc_enable_82598
,
.
fc_enable
=
&
ixgbe_fc_enable_82598
,
.
acquire_swfw_sync
=
&
ixgbe_acquire_swfw_sync
,
.
release_swfw_sync
=
&
ixgbe_release_swfw_sync
,
};
};
static
struct
ixgbe_eeprom_operations
eeprom_ops_82598
=
{
static
struct
ixgbe_eeprom_operations
eeprom_ops_82598
=
{
...
...
drivers/net/ixgbe/ixgbe_82599.c
View file @
a45d49d1
/*******************************************************************************
/*******************************************************************************
Intel 10 Gigabit PCI Express Linux driver
Intel 10 Gigabit PCI Express Linux driver
Copyright(c) 1999 - 201
0
Intel Corporation.
Copyright(c) 1999 - 201
1
Intel Corporation.
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 and conditions of the GNU General Public License,
under the terms and conditions of the GNU General Public License,
...
@@ -112,7 +112,8 @@ static s32 ixgbe_setup_sfp_modules_82599(struct ixgbe_hw *hw)
...
@@ -112,7 +112,8 @@ static s32 ixgbe_setup_sfp_modules_82599(struct ixgbe_hw *hw)
goto
setup_sfp_out
;
goto
setup_sfp_out
;
/* PHY config will finish before releasing the semaphore */
/* PHY config will finish before releasing the semaphore */
ret_val
=
ixgbe_acquire_swfw_sync
(
hw
,
IXGBE_GSSR_MAC_CSR_SM
);
ret_val
=
hw
->
mac
.
ops
.
acquire_swfw_sync
(
hw
,
IXGBE_GSSR_MAC_CSR_SM
);
if
(
ret_val
!=
0
)
{
if
(
ret_val
!=
0
)
{
ret_val
=
IXGBE_ERR_SWFW_SYNC
;
ret_val
=
IXGBE_ERR_SWFW_SYNC
;
goto
setup_sfp_out
;
goto
setup_sfp_out
;
...
@@ -329,11 +330,14 @@ static enum ixgbe_media_type ixgbe_get_media_type_82599(struct ixgbe_hw *hw)
...
@@ -329,11 +330,14 @@ static enum ixgbe_media_type ixgbe_get_media_type_82599(struct ixgbe_hw *hw)
enum
ixgbe_media_type
media_type
;
enum
ixgbe_media_type
media_type
;
/* Detect if there is a copper PHY attached. */
/* Detect if there is a copper PHY attached. */
if
(
hw
->
phy
.
type
==
ixgbe_phy_cu_unknown
||
switch
(
hw
->
phy
.
type
)
{
hw
->
phy
.
type
==
ixgbe_phy_tn
||
case
ixgbe_phy_cu_unknown
:
hw
->
phy
.
type
==
ixgbe_phy_aq
)
{
case
ixgbe_phy_tn
:
case
ixgbe_phy_aq
:
media_type
=
ixgbe_media_type_copper
;
media_type
=
ixgbe_media_type_copper
;
goto
out
;
goto
out
;
default:
break
;
}
}
switch
(
hw
->
device_id
)
{
switch
(
hw
->
device_id
)
{
...
@@ -354,6 +358,9 @@ static enum ixgbe_media_type ixgbe_get_media_type_82599(struct ixgbe_hw *hw)
...
@@ -354,6 +358,9 @@ static enum ixgbe_media_type ixgbe_get_media_type_82599(struct ixgbe_hw *hw)
case
IXGBE_DEV_ID_82599_CX4
:
case
IXGBE_DEV_ID_82599_CX4
:
media_type
=
ixgbe_media_type_cx4
;
media_type
=
ixgbe_media_type_cx4
;
break
;
break
;
case
IXGBE_DEV_ID_82599_T3_LOM
:
media_type
=
ixgbe_media_type_copper
;
break
;
default:
default:
media_type
=
ixgbe_media_type_unknown
;
media_type
=
ixgbe_media_type_unknown
;
break
;
break
;
...
@@ -411,14 +418,14 @@ static s32 ixgbe_start_mac_link_82599(struct ixgbe_hw *hw,
...
@@ -411,14 +418,14 @@ static s32 ixgbe_start_mac_link_82599(struct ixgbe_hw *hw,
return
status
;
return
status
;
}
}
/**
/**
* ixgbe_disable_tx_laser_multispeed_fiber - Disable Tx laser
* ixgbe_disable_tx_laser_multispeed_fiber - Disable Tx laser
* @hw: pointer to hardware structure
* @hw: pointer to hardware structure
*
*
* The base drivers may require better control over SFP+ module
* The base drivers may require better control over SFP+ module
* PHY states. This includes selectively shutting down the Tx
* PHY states. This includes selectively shutting down the Tx
* laser on the PHY, effectively halting physical link.
* laser on the PHY, effectively halting physical link.
**/
**/
static
void
ixgbe_disable_tx_laser_multispeed_fiber
(
struct
ixgbe_hw
*
hw
)
static
void
ixgbe_disable_tx_laser_multispeed_fiber
(
struct
ixgbe_hw
*
hw
)
{
{
u32
esdp_reg
=
IXGBE_READ_REG
(
hw
,
IXGBE_ESDP
);
u32
esdp_reg
=
IXGBE_READ_REG
(
hw
,
IXGBE_ESDP
);
...
@@ -536,7 +543,6 @@ s32 ixgbe_setup_mac_link_multispeed_fiber(struct ixgbe_hw *hw,
...
@@ -536,7 +543,6 @@ s32 ixgbe_setup_mac_link_multispeed_fiber(struct ixgbe_hw *hw,
* Section 73.10.2, we may have to wait up to 500ms if KR is
* Section 73.10.2, we may have to wait up to 500ms if KR is
* attempted. 82599 uses the same timing for 10g SFI.
* attempted. 82599 uses the same timing for 10g SFI.
*/
*/
for
(
i
=
0
;
i
<
5
;
i
++
)
{
for
(
i
=
0
;
i
<
5
;
i
++
)
{
/* Wait for the link partner to also set speed */
/* Wait for the link partner to also set speed */
msleep
(
100
);
msleep
(
100
);
...
@@ -761,7 +767,6 @@ static s32 ixgbe_setup_mac_link_82599(struct ixgbe_hw *hw,
...
@@ -761,7 +767,6 @@ static s32 ixgbe_setup_mac_link_82599(struct ixgbe_hw *hw,
else
else
orig_autoc
=
autoc
;
orig_autoc
=
autoc
;
if
(
link_mode
==
IXGBE_AUTOC_LMS_KX4_KX_KR
||
if
(
link_mode
==
IXGBE_AUTOC_LMS_KX4_KX_KR
||
link_mode
==
IXGBE_AUTOC_LMS_KX4_KX_KR_1G_AN
||
link_mode
==
IXGBE_AUTOC_LMS_KX4_KX_KR_1G_AN
||
link_mode
==
IXGBE_AUTOC_LMS_KX4_KX_KR_SGMII
)
{
link_mode
==
IXGBE_AUTOC_LMS_KX4_KX_KR_SGMII
)
{
...
@@ -898,12 +903,9 @@ static s32 ixgbe_reset_hw_82599(struct ixgbe_hw *hw)
...
@@ -898,12 +903,9 @@ static s32 ixgbe_reset_hw_82599(struct ixgbe_hw *hw)
* Prevent the PCI-E bus from from hanging by disabling PCI-E master
* Prevent the PCI-E bus from from hanging by disabling PCI-E master
* access and verify no pending requests before reset
* access and verify no pending requests before reset
*/
*/
status
=
ixgbe_disable_pcie_master
(
hw
);
ixgbe_disable_pcie_master
(
hw
);
if
(
status
!=
0
)
{
status
=
IXGBE_ERR_MASTER_REQUESTS_PENDING
;
hw_dbg
(
hw
,
"PCI-E Master disable polling has failed.
\n
"
);
}
mac_reset_top:
/*
/*
* Issue global reset to the MAC. This needs to be a SW reset.
* Issue global reset to the MAC. This needs to be a SW reset.
* If link reset is used, it might reset the MAC when mng is using it
* If link reset is used, it might reset the MAC when mng is using it
...
@@ -924,6 +926,19 @@ static s32 ixgbe_reset_hw_82599(struct ixgbe_hw *hw)
...
@@ -924,6 +926,19 @@ static s32 ixgbe_reset_hw_82599(struct ixgbe_hw *hw)
hw_dbg
(
hw
,
"Reset polling failed to complete.
\n
"
);
hw_dbg
(
hw
,
"Reset polling failed to complete.
\n
"
);
}
}
/*
* Double resets are required for recovery from certain error
* conditions. Between resets, it is necessary to stall to allow time
* for any pending HW events to complete. We use 1usec since that is
* what is needed for ixgbe_disable_pcie_master(). The second reset
* then clears out any effects of those events.
*/
if
(
hw
->
mac
.
flags
&
IXGBE_FLAGS_DOUBLE_RESET_REQUIRED
)
{
hw
->
mac
.
flags
&=
~
IXGBE_FLAGS_DOUBLE_RESET_REQUIRED
;
udelay
(
1
);
goto
mac_reset_top
;
}
msleep
(
50
);
msleep
(
50
);
/*
/*
...
@@ -951,6 +966,9 @@ static s32 ixgbe_reset_hw_82599(struct ixgbe_hw *hw)
...
@@ -951,6 +966,9 @@ static s32 ixgbe_reset_hw_82599(struct ixgbe_hw *hw)
}
}
}
}
/* Store the permanent mac address */
hw
->
mac
.
ops
.
get_mac_addr
(
hw
,
hw
->
mac
.
perm_addr
);
/*
/*
* Store MAC address from RAR0, clear receive address registers, and
* Store MAC address from RAR0, clear receive address registers, and
* clear the multicast table. Also reset num_rar_entries to 128,
* clear the multicast table. Also reset num_rar_entries to 128,
...
@@ -959,9 +977,6 @@ static s32 ixgbe_reset_hw_82599(struct ixgbe_hw *hw)
...
@@ -959,9 +977,6 @@ static s32 ixgbe_reset_hw_82599(struct ixgbe_hw *hw)
hw
->
mac
.
num_rar_entries
=
128
;
hw
->
mac
.
num_rar_entries
=
128
;
hw
->
mac
.
ops
.
init_rx_addrs
(
hw
);
hw
->
mac
.
ops
.
init_rx_addrs
(
hw
);
/* Store the permanent mac address */
hw
->
mac
.
ops
.
get_mac_addr
(
hw
,
hw
->
mac
.
perm_addr
);
/* Store the permanent SAN mac address */
/* Store the permanent SAN mac address */
hw
->
mac
.
ops
.
get_san_mac_addr
(
hw
,
hw
->
mac
.
san_addr
);
hw
->
mac
.
ops
.
get_san_mac_addr
(
hw
,
hw
->
mac
.
san_addr
);
...
@@ -1733,13 +1748,34 @@ static s32 ixgbe_start_hw_82599(struct ixgbe_hw *hw)
...
@@ -1733,13 +1748,34 @@ static s32 ixgbe_start_hw_82599(struct ixgbe_hw *hw)
* @hw: pointer to hardware structure
* @hw: pointer to hardware structure
*
*
* Determines the physical layer module found on the current adapter.
* Determines the physical layer module found on the current adapter.
* If PHY already detected, maintains current PHY type in hw struct,
* otherwise executes the PHY detection routine.
**/
**/
s
tatic
s
32
ixgbe_identify_phy_82599
(
struct
ixgbe_hw
*
hw
)
s32
ixgbe_identify_phy_82599
(
struct
ixgbe_hw
*
hw
)
{
{
s32
status
=
IXGBE_ERR_PHY_ADDR_INVALID
;
s32
status
=
IXGBE_ERR_PHY_ADDR_INVALID
;
/* Detect PHY if not unknown - returns success if already detected. */
status
=
ixgbe_identify_phy_generic
(
hw
);
status
=
ixgbe_identify_phy_generic
(
hw
);
if
(
status
!=
0
)
if
(
status
!=
0
)
{
status
=
ixgbe_identify_sfp_module_generic
(
hw
);
/* 82599 10GBASE-T requires an external PHY */
if
(
hw
->
mac
.
ops
.
get_media_type
(
hw
)
==
ixgbe_media_type_copper
)
goto
out
;
else
status
=
ixgbe_identify_sfp_module_generic
(
hw
);
}
/* Set PHY type none if no PHY detected */
if
(
hw
->
phy
.
type
==
ixgbe_phy_unknown
)
{
hw
->
phy
.
type
=
ixgbe_phy_none
;
status
=
0
;
}
/* Return error if SFP module has been detected but is not supported */
if
(
hw
->
phy
.
type
==
ixgbe_phy_sfp_unsupported
)
status
=
IXGBE_ERR_SFP_NOT_SUPPORTED
;
out:
return
status
;
return
status
;
}
}
...
@@ -1763,11 +1799,12 @@ static u32 ixgbe_get_supported_physical_layer_82599(struct ixgbe_hw *hw)
...
@@ -1763,11 +1799,12 @@ static u32 ixgbe_get_supported_physical_layer_82599(struct ixgbe_hw *hw)
hw
->
phy
.
ops
.
identify
(
hw
);
hw
->
phy
.
ops
.
identify
(
hw
);
if
(
hw
->
phy
.
type
==
ixgbe_phy_tn
||
switch
(
hw
->
phy
.
type
)
{
hw
->
phy
.
type
==
ixgbe_phy_aq
||
case
ixgbe_phy_tn
:
hw
->
phy
.
type
==
ixgbe_phy_cu_unknown
)
{
case
ixgbe_phy_aq
:
case
ixgbe_phy_cu_unknown
:
hw
->
phy
.
ops
.
read_reg
(
hw
,
MDIO_PMA_EXTABLE
,
MDIO_MMD_PMAPMD
,
hw
->
phy
.
ops
.
read_reg
(
hw
,
MDIO_PMA_EXTABLE
,
MDIO_MMD_PMAPMD
,
&
ext_ability
);
&
ext_ability
);
if
(
ext_ability
&
MDIO_PMA_EXTABLE_10GBT
)
if
(
ext_ability
&
MDIO_PMA_EXTABLE_10GBT
)
physical_layer
|=
IXGBE_PHYSICAL_LAYER_10GBASE_T
;
physical_layer
|=
IXGBE_PHYSICAL_LAYER_10GBASE_T
;
if
(
ext_ability
&
MDIO_PMA_EXTABLE_1000BT
)
if
(
ext_ability
&
MDIO_PMA_EXTABLE_1000BT
)
...
@@ -1775,6 +1812,8 @@ static u32 ixgbe_get_supported_physical_layer_82599(struct ixgbe_hw *hw)
...
@@ -1775,6 +1812,8 @@ static u32 ixgbe_get_supported_physical_layer_82599(struct ixgbe_hw *hw)
if
(
ext_ability
&
MDIO_PMA_EXTABLE_100BTX
)
if
(
ext_ability
&
MDIO_PMA_EXTABLE_100BTX
)
physical_layer
|=
IXGBE_PHYSICAL_LAYER_100BASE_TX
;
physical_layer
|=
IXGBE_PHYSICAL_LAYER_100BASE_TX
;
goto
out
;
goto
out
;
default:
break
;
}
}
switch
(
autoc
&
IXGBE_AUTOC_LMS_MASK
)
{
switch
(
autoc
&
IXGBE_AUTOC_LMS_MASK
)
{
...
@@ -1886,6 +1925,7 @@ static s32 ixgbe_enable_rx_dma_82599(struct ixgbe_hw *hw, u32 regval)
...
@@ -1886,6 +1925,7 @@ static s32 ixgbe_enable_rx_dma_82599(struct ixgbe_hw *hw, u32 regval)
if
(
secrxreg
&
IXGBE_SECRXSTAT_SECRX_RDY
)
if
(
secrxreg
&
IXGBE_SECRXSTAT_SECRX_RDY
)
break
;
break
;
else
else
/* Use interrupt-safe sleep just in case */
udelay
(
10
);
udelay
(
10
);
}
}
...
@@ -1995,7 +2035,6 @@ static struct ixgbe_mac_operations mac_ops_82599 = {
...
@@ -1995,7 +2035,6 @@ static struct ixgbe_mac_operations mac_ops_82599 = {
.
set_vmdq
=
&
ixgbe_set_vmdq_generic
,
.
set_vmdq
=
&
ixgbe_set_vmdq_generic
,
.
clear_vmdq
=
&
ixgbe_clear_vmdq_generic
,
.
clear_vmdq
=
&
ixgbe_clear_vmdq_generic
,
.
init_rx_addrs
=
&
ixgbe_init_rx_addrs_generic
,
.
init_rx_addrs
=
&
ixgbe_init_rx_addrs_generic
,
.
update_uc_addr_list
=
&
ixgbe_update_uc_addr_list_generic
,
.
update_mc_addr_list
=
&
ixgbe_update_mc_addr_list_generic
,
.
update_mc_addr_list
=
&
ixgbe_update_mc_addr_list_generic
,
.
enable_mc
=
&
ixgbe_enable_mc_generic
,
.
enable_mc
=
&
ixgbe_enable_mc_generic
,
.
disable_mc
=
&
ixgbe_disable_mc_generic
,
.
disable_mc
=
&
ixgbe_disable_mc_generic
,
...
@@ -2006,6 +2045,9 @@ static struct ixgbe_mac_operations mac_ops_82599 = {
...
@@ -2006,6 +2045,9 @@ static struct ixgbe_mac_operations mac_ops_82599 = {
.
setup_sfp
=
&
ixgbe_setup_sfp_modules_82599
,
.
setup_sfp
=
&
ixgbe_setup_sfp_modules_82599
,
.
set_mac_anti_spoofing
=
&
ixgbe_set_mac_anti_spoofing
,
.
set_mac_anti_spoofing
=
&
ixgbe_set_mac_anti_spoofing
,
.
set_vlan_anti_spoofing
=
&
ixgbe_set_vlan_anti_spoofing
,
.
set_vlan_anti_spoofing
=
&
ixgbe_set_vlan_anti_spoofing
,
.
acquire_swfw_sync
=
&
ixgbe_acquire_swfw_sync
,
.
release_swfw_sync
=
&
ixgbe_release_swfw_sync
,
};
};
static
struct
ixgbe_eeprom_operations
eeprom_ops_82599
=
{
static
struct
ixgbe_eeprom_operations
eeprom_ops_82599
=
{
...
...
drivers/net/ixgbe/ixgbe_common.c
View file @
a45d49d1
This diff is collapsed.
Click to expand it.
drivers/net/ixgbe/ixgbe_common.h
View file @
a45d49d1
/*******************************************************************************
/*******************************************************************************
Intel 10 Gigabit PCI Express Linux driver
Intel 10 Gigabit PCI Express Linux driver
Copyright(c) 1999 - 201
0
Intel Corporation.
Copyright(c) 1999 - 201
1
Intel Corporation.
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 and conditions of the GNU General Public License,
under the terms and conditions of the GNU General Public License,
...
@@ -63,8 +63,6 @@ s32 ixgbe_clear_rar_generic(struct ixgbe_hw *hw, u32 index);
...
@@ -63,8 +63,6 @@ s32 ixgbe_clear_rar_generic(struct ixgbe_hw *hw, u32 index);
s32
ixgbe_init_rx_addrs_generic
(
struct
ixgbe_hw
*
hw
);
s32
ixgbe_init_rx_addrs_generic
(
struct
ixgbe_hw
*
hw
);
s32
ixgbe_update_mc_addr_list_generic
(
struct
ixgbe_hw
*
hw
,
s32
ixgbe_update_mc_addr_list_generic
(
struct
ixgbe_hw
*
hw
,
struct
net_device
*
netdev
);
struct
net_device
*
netdev
);
s32
ixgbe_update_uc_addr_list_generic
(
struct
ixgbe_hw
*
hw
,
struct
net_device
*
netdev
);
s32
ixgbe_enable_mc_generic
(
struct
ixgbe_hw
*
hw
);
s32
ixgbe_enable_mc_generic
(
struct
ixgbe_hw
*
hw
);
s32
ixgbe_disable_mc_generic
(
struct
ixgbe_hw
*
hw
);
s32
ixgbe_disable_mc_generic
(
struct
ixgbe_hw
*
hw
);
s32
ixgbe_enable_rx_dma_generic
(
struct
ixgbe_hw
*
hw
,
u32
regval
);
s32
ixgbe_enable_rx_dma_generic
(
struct
ixgbe_hw
*
hw
,
u32
regval
);
...
...
drivers/net/ixgbe/ixgbe_dcb.c
View file @
a45d49d1
/*******************************************************************************
/*******************************************************************************
Intel 10 Gigabit PCI Express Linux driver
Intel 10 Gigabit PCI Express Linux driver
Copyright(c) 1999 - 201
0
Intel Corporation.
Copyright(c) 1999 - 201
1
Intel Corporation.
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 and conditions of the GNU General Public License,
under the terms and conditions of the GNU General Public License,
...
...
drivers/net/ixgbe/ixgbe_dcb.h
View file @
a45d49d1
/*******************************************************************************
/*******************************************************************************
Intel 10 Gigabit PCI Express Linux driver
Intel 10 Gigabit PCI Express Linux driver
Copyright(c) 1999 - 201
0
Intel Corporation.
Copyright(c) 1999 - 201
1
Intel Corporation.
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 and conditions of the GNU General Public License,
under the terms and conditions of the GNU General Public License,
...
...
drivers/net/ixgbe/ixgbe_dcb_82598.c
View file @
a45d49d1
/*******************************************************************************
/*******************************************************************************
Intel 10 Gigabit PCI Express Linux driver
Intel 10 Gigabit PCI Express Linux driver
Copyright(c) 1999 - 201
0
Intel Corporation.
Copyright(c) 1999 - 201
1
Intel Corporation.
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 and conditions of the GNU General Public License,
under the terms and conditions of the GNU General Public License,
...
...
drivers/net/ixgbe/ixgbe_dcb_82598.h
View file @
a45d49d1
/*******************************************************************************
/*******************************************************************************
Intel 10 Gigabit PCI Express Linux driver
Intel 10 Gigabit PCI Express Linux driver
Copyright(c) 1999 - 201
0
Intel Corporation.
Copyright(c) 1999 - 201
1
Intel Corporation.
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 and conditions of the GNU General Public License,
under the terms and conditions of the GNU General Public License,
...
...
drivers/net/ixgbe/ixgbe_dcb_82599.c
View file @
a45d49d1
/*******************************************************************************
/*******************************************************************************
Intel 10 Gigabit PCI Express Linux driver
Intel 10 Gigabit PCI Express Linux driver
Copyright(c) 1999 - 201
0
Intel Corporation.
Copyright(c) 1999 - 201
1
Intel Corporation.
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 and conditions of the GNU General Public License,
under the terms and conditions of the GNU General Public License,
...
...
drivers/net/ixgbe/ixgbe_dcb_82599.h
View file @
a45d49d1
/*******************************************************************************
/*******************************************************************************
Intel 10 Gigabit PCI Express Linux driver
Intel 10 Gigabit PCI Express Linux driver
Copyright(c) 1999 - 201
0
Intel Corporation.
Copyright(c) 1999 - 201
1
Intel Corporation.
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 and conditions of the GNU General Public License,
under the terms and conditions of the GNU General Public License,
...
...
drivers/net/ixgbe/ixgbe_dcb_nl.c
View file @
a45d49d1
/*******************************************************************************
/*******************************************************************************
Intel 10 Gigabit PCI Express Linux driver
Intel 10 Gigabit PCI Express Linux driver
Copyright(c) 1999 - 201
0
Intel Corporation.
Copyright(c) 1999 - 201
1
Intel Corporation.
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 and conditions of the GNU General Public License,
under the terms and conditions of the GNU General Public License,
...
...
drivers/net/ixgbe/ixgbe_ethtool.c
View file @
a45d49d1
/*******************************************************************************
/*******************************************************************************
Intel 10 Gigabit PCI Express Linux driver
Intel 10 Gigabit PCI Express Linux driver
Copyright(c) 1999 - 201
0
Intel Corporation.
Copyright(c) 1999 - 201
1
Intel Corporation.
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 and conditions of the GNU General Public License,
under the terms and conditions of the GNU General Public License,
...
...
drivers/net/ixgbe/ixgbe_fcoe.c
View file @
a45d49d1
/*******************************************************************************
/*******************************************************************************
Intel 10 Gigabit PCI Express Linux driver
Intel 10 Gigabit PCI Express Linux driver
Copyright(c) 1999 - 201
0
Intel Corporation.
Copyright(c) 1999 - 201
1
Intel Corporation.
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 and conditions of the GNU General Public License,
under the terms and conditions of the GNU General Public License,
...
...
drivers/net/ixgbe/ixgbe_fcoe.h
View file @
a45d49d1
/*******************************************************************************
/*******************************************************************************
Intel 10 Gigabit PCI Express Linux driver
Intel 10 Gigabit PCI Express Linux driver
Copyright(c) 1999 - 201
0
Intel Corporation.
Copyright(c) 1999 - 201
1
Intel Corporation.
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 and conditions of the GNU General Public License,
under the terms and conditions of the GNU General Public License,
...
...
drivers/net/ixgbe/ixgbe_main.c
View file @
a45d49d1
/*******************************************************************************
/*******************************************************************************
Intel 10 Gigabit PCI Express Linux driver
Intel 10 Gigabit PCI Express Linux driver
Copyright(c) 1999 - 201
0
Intel Corporation.
Copyright(c) 1999 - 201
1
Intel Corporation.
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 and conditions of the GNU General Public License,
under the terms and conditions of the GNU General Public License,
...
@@ -54,7 +54,8 @@ static const char ixgbe_driver_string[] =
...
@@ -54,7 +54,8 @@ static const char ixgbe_driver_string[] =
#define DRV_VERSION "3.2.9-k2"
#define DRV_VERSION "3.2.9-k2"
const
char
ixgbe_driver_version
[]
=
DRV_VERSION
;
const
char
ixgbe_driver_version
[]
=
DRV_VERSION
;
static
char
ixgbe_copyright
[]
=
"Copyright (c) 1999-2010 Intel Corporation."
;
static
const
char
ixgbe_copyright
[]
=
"Copyright (c) 1999-2011 Intel Corporation."
;
static
const
struct
ixgbe_info
*
ixgbe_info_tbl
[]
=
{
static
const
struct
ixgbe_info
*
ixgbe_info_tbl
[]
=
{
[
board_82598
]
=
&
ixgbe_82598_info
,
[
board_82598
]
=
&
ixgbe_82598_info
,
...
@@ -2597,6 +2598,11 @@ static void ixgbe_free_irq(struct ixgbe_adapter *adapter)
...
@@ -2597,6 +2598,11 @@ static void ixgbe_free_irq(struct ixgbe_adapter *adapter)
i
--
;
i
--
;
for
(;
i
>=
0
;
i
--
)
{
for
(;
i
>=
0
;
i
--
)
{
/* free only the irqs that were actually requested */
if
(
!
adapter
->
q_vector
[
i
]
->
rxr_count
&&
!
adapter
->
q_vector
[
i
]
->
txr_count
)
continue
;
free_irq
(
adapter
->
msix_entries
[
i
].
vector
,
free_irq
(
adapter
->
msix_entries
[
i
].
vector
,
adapter
->
q_vector
[
i
]);
adapter
->
q_vector
[
i
]);
}
}
...
@@ -3884,7 +3890,7 @@ static int ixgbe_up_complete(struct ixgbe_adapter *adapter)
...
@@ -3884,7 +3890,7 @@ static int ixgbe_up_complete(struct ixgbe_adapter *adapter)
* If we're not hot-pluggable SFP+, we just need to configure link
* If we're not hot-pluggable SFP+, we just need to configure link
* and bring it up.
* and bring it up.
*/
*/
if
(
hw
->
phy
.
type
==
ixgbe_phy_
unknown
)
if
(
hw
->
phy
.
type
==
ixgbe_phy_
none
)
schedule_work
(
&
adapter
->
sfp_config_module_task
);
schedule_work
(
&
adapter
->
sfp_config_module_task
);
/* enable transmits */
/* enable transmits */
...
...
drivers/net/ixgbe/ixgbe_mbx.c
View file @
a45d49d1
/*******************************************************************************
/*******************************************************************************
Intel 10 Gigabit PCI Express Linux driver
Intel 10 Gigabit PCI Express Linux driver
Copyright(c) 1999 - 201
0
Intel Corporation.
Copyright(c) 1999 - 201
1
Intel Corporation.
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 and conditions of the GNU General Public License,
under the terms and conditions of the GNU General Public License,
...
...
drivers/net/ixgbe/ixgbe_mbx.h
View file @
a45d49d1
/*******************************************************************************
/*******************************************************************************
Intel 10 Gigabit PCI Express Linux driver
Intel 10 Gigabit PCI Express Linux driver
Copyright(c) 1999 - 201
0
Intel Corporation.
Copyright(c) 1999 - 201
1
Intel Corporation.
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 and conditions of the GNU General Public License,
under the terms and conditions of the GNU General Public License,
...
...
drivers/net/ixgbe/ixgbe_phy.c
View file @
a45d49d1
This diff is collapsed.
Click to expand it.
drivers/net/ixgbe/ixgbe_phy.h
View file @
a45d49d1
/*******************************************************************************
/*******************************************************************************
Intel 10 Gigabit PCI Express Linux driver
Intel 10 Gigabit PCI Express Linux driver
Copyright(c) 1999 - 201
0
Intel Corporation.
Copyright(c) 1999 - 201
1
Intel Corporation.
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 and conditions of the GNU General Public License,
under the terms and conditions of the GNU General Public License,
...
...
drivers/net/ixgbe/ixgbe_sriov.c
View file @
a45d49d1
/*******************************************************************************
/*******************************************************************************
Intel 10 Gigabit PCI Express Linux driver
Intel 10 Gigabit PCI Express Linux driver
Copyright(c) 1999 - 201
0
Intel Corporation.
Copyright(c) 1999 - 201
1
Intel Corporation.
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 and conditions of the GNU General Public License,
under the terms and conditions of the GNU General Public License,
...
...
drivers/net/ixgbe/ixgbe_sriov.h
View file @
a45d49d1
/*******************************************************************************
/*******************************************************************************
Intel 10 Gigabit PCI Express Linux driver
Intel 10 Gigabit PCI Express Linux driver
Copyright(c) 1999 - 201
0
Intel Corporation.
Copyright(c) 1999 - 201
1
Intel Corporation.
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 and conditions of the GNU General Public License,
under the terms and conditions of the GNU General Public License,
...
...
drivers/net/ixgbe/ixgbe_type.h
View file @
a45d49d1
/*******************************************************************************
/*******************************************************************************
Intel 10 Gigabit PCI Express Linux driver
Intel 10 Gigabit PCI Express Linux driver
Copyright(c) 1999 - 201
0
Intel Corporation.
Copyright(c) 1999 - 201
1
Intel Corporation.
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 and conditions of the GNU General Public License,
under the terms and conditions of the GNU General Public License,
...
@@ -91,7 +91,7 @@
...
@@ -91,7 +91,7 @@
/* General Receive Control */
/* General Receive Control */
#define IXGBE_GRC_MNG 0x00000001
/* Manageability Enable */
#define IXGBE_GRC_MNG 0x00000001
/* Manageability Enable */
#define IXGBE_GRC_APME 0x00000002
/* A
dvanced Power Management Enable
*/
#define IXGBE_GRC_APME 0x00000002
/* A
PM enabled in EEPROM
*/
#define IXGBE_VPDDIAG0 0x10204
#define IXGBE_VPDDIAG0 0x10204
#define IXGBE_VPDDIAG1 0x10208
#define IXGBE_VPDDIAG1 0x10208
...
@@ -342,7 +342,7 @@
...
@@ -342,7 +342,7 @@
/* Wake Up Control */
/* Wake Up Control */
#define IXGBE_WUC_PME_EN 0x00000002
/* PME Enable */
#define IXGBE_WUC_PME_EN 0x00000002
/* PME Enable */
#define IXGBE_WUC_PME_STATUS 0x00000004
/* PME Status */
#define IXGBE_WUC_PME_STATUS 0x00000004
/* PME Status */
#define IXGBE_WUC_
ADVD3WUC 0x00000010
/* D3Cold wake up cap. enable
*/
#define IXGBE_WUC_
WKEN 0x00000010
/* Enable PE_WAKE_N pin assertion
*/
/* Wake Up Filter Control */
/* Wake Up Filter Control */
#define IXGBE_WUFC_LNKC 0x00000001
/* Link Status Change Wakeup Enable */
#define IXGBE_WUFC_LNKC 0x00000001
/* Link Status Change Wakeup Enable */
...
@@ -1614,6 +1614,8 @@
...
@@ -1614,6 +1614,8 @@
#define IXGBE_ALT_SAN_MAC_ADDR_CAPS_ALTWWN 0x1
/* Alt. WWN base exists */
#define IXGBE_ALT_SAN_MAC_ADDR_CAPS_ALTWWN 0x1
/* Alt. WWN base exists */
/* PCI Bus Info */
/* PCI Bus Info */
#define IXGBE_PCI_DEVICE_STATUS 0xAA
#define IXGBE_PCI_DEVICE_STATUS_TRANSACTION_PENDING 0x0020
#define IXGBE_PCI_LINK_STATUS 0xB2
#define IXGBE_PCI_LINK_STATUS 0xB2
#define IXGBE_PCI_DEVICE_CONTROL2 0xC8
#define IXGBE_PCI_DEVICE_CONTROL2 0xC8
#define IXGBE_PCI_LINK_WIDTH 0x3F0
#define IXGBE_PCI_LINK_WIDTH 0x3F0
...
@@ -2242,6 +2244,7 @@ enum ixgbe_mac_type {
...
@@ -2242,6 +2244,7 @@ enum ixgbe_mac_type {
enum
ixgbe_phy_type
{
enum
ixgbe_phy_type
{
ixgbe_phy_unknown
=
0
,
ixgbe_phy_unknown
=
0
,
ixgbe_phy_none
,
ixgbe_phy_tn
,
ixgbe_phy_tn
,
ixgbe_phy_aq
,
ixgbe_phy_aq
,
ixgbe_phy_cu_unknown
,
ixgbe_phy_cu_unknown
,
...
@@ -2330,32 +2333,31 @@ enum ixgbe_bus_type {
...
@@ -2330,32 +2333,31 @@ enum ixgbe_bus_type {
/* PCI bus speeds */
/* PCI bus speeds */
enum
ixgbe_bus_speed
{
enum
ixgbe_bus_speed
{
ixgbe_bus_speed_unknown
=
0
,
ixgbe_bus_speed_unknown
=
0
,
ixgbe_bus_speed_33
,
ixgbe_bus_speed_33
=
33
,
ixgbe_bus_speed_66
,
ixgbe_bus_speed_66
=
66
,
ixgbe_bus_speed_100
,
ixgbe_bus_speed_100
=
100
,
ixgbe_bus_speed_120
,
ixgbe_bus_speed_120
=
120
,
ixgbe_bus_speed_133
,
ixgbe_bus_speed_133
=
133
,
ixgbe_bus_speed_2500
,
ixgbe_bus_speed_2500
=
2500
,
ixgbe_bus_speed_5000
,
ixgbe_bus_speed_5000
=
5000
,
ixgbe_bus_speed_reserved
ixgbe_bus_speed_reserved
};
};
/* PCI bus widths */
/* PCI bus widths */
enum
ixgbe_bus_width
{
enum
ixgbe_bus_width
{
ixgbe_bus_width_unknown
=
0
,
ixgbe_bus_width_unknown
=
0
,
ixgbe_bus_width_pcie_x1
,
ixgbe_bus_width_pcie_x1
=
1
,
ixgbe_bus_width_pcie_x2
,
ixgbe_bus_width_pcie_x2
=
2
,
ixgbe_bus_width_pcie_x4
=
4
,
ixgbe_bus_width_pcie_x4
=
4
,
ixgbe_bus_width_pcie_x8
=
8
,
ixgbe_bus_width_pcie_x8
=
8
,
ixgbe_bus_width_32
,
ixgbe_bus_width_32
=
32
,
ixgbe_bus_width_64
,
ixgbe_bus_width_64
=
64
,
ixgbe_bus_width_reserved
ixgbe_bus_width_reserved
};
};
struct
ixgbe_addr_filter_info
{
struct
ixgbe_addr_filter_info
{
u32
num_mc_addrs
;
u32
num_mc_addrs
;
u32
rar_used_count
;
u32
rar_used_count
;
u32
mc_addr_in_rar_count
;
u32
mta_in_use
;
u32
mta_in_use
;
u32
overflow_promisc
;
u32
overflow_promisc
;
bool
uc_set_promisc
;
bool
uc_set_promisc
;
...
@@ -2493,6 +2495,8 @@ struct ixgbe_mac_operations {
...
@@ -2493,6 +2495,8 @@ struct ixgbe_mac_operations {
s32
(
*
write_analog_reg8
)(
struct
ixgbe_hw
*
,
u32
,
u8
);
s32
(
*
write_analog_reg8
)(
struct
ixgbe_hw
*
,
u32
,
u8
);
s32
(
*
setup_sfp
)(
struct
ixgbe_hw
*
);
s32
(
*
setup_sfp
)(
struct
ixgbe_hw
*
);
s32
(
*
enable_rx_dma
)(
struct
ixgbe_hw
*
,
u32
);
s32
(
*
enable_rx_dma
)(
struct
ixgbe_hw
*
,
u32
);
s32
(
*
acquire_swfw_sync
)(
struct
ixgbe_hw
*
,
u16
);
void
(
*
release_swfw_sync
)(
struct
ixgbe_hw
*
,
u16
);
/* Link */
/* Link */
void
(
*
disable_tx_laser
)(
struct
ixgbe_hw
*
);
void
(
*
disable_tx_laser
)(
struct
ixgbe_hw
*
);
...
@@ -2515,7 +2519,6 @@ struct ixgbe_mac_operations {
...
@@ -2515,7 +2519,6 @@ struct ixgbe_mac_operations {
s32
(
*
set_vmdq
)(
struct
ixgbe_hw
*
,
u32
,
u32
);
s32
(
*
set_vmdq
)(
struct
ixgbe_hw
*
,
u32
,
u32
);
s32
(
*
clear_vmdq
)(
struct
ixgbe_hw
*
,
u32
,
u32
);
s32
(
*
clear_vmdq
)(
struct
ixgbe_hw
*
,
u32
,
u32
);
s32
(
*
init_rx_addrs
)(
struct
ixgbe_hw
*
);
s32
(
*
init_rx_addrs
)(
struct
ixgbe_hw
*
);
s32
(
*
update_uc_addr_list
)(
struct
ixgbe_hw
*
,
struct
net_device
*
);
s32
(
*
update_mc_addr_list
)(
struct
ixgbe_hw
*
,
struct
net_device
*
);
s32
(
*
update_mc_addr_list
)(
struct
ixgbe_hw
*
,
struct
net_device
*
);
s32
(
*
enable_mc
)(
struct
ixgbe_hw
*
);
s32
(
*
enable_mc
)(
struct
ixgbe_hw
*
);
s32
(
*
disable_mc
)(
struct
ixgbe_hw
*
);
s32
(
*
disable_mc
)(
struct
ixgbe_hw
*
);
...
@@ -2556,6 +2559,7 @@ struct ixgbe_eeprom_info {
...
@@ -2556,6 +2559,7 @@ struct ixgbe_eeprom_info {
u16
address_bits
;
u16
address_bits
;
};
};
#define IXGBE_FLAGS_DOUBLE_RESET_REQUIRED 0x01
struct
ixgbe_mac_info
{
struct
ixgbe_mac_info
{
struct
ixgbe_mac_operations
ops
;
struct
ixgbe_mac_operations
ops
;
enum
ixgbe_mac_type
type
;
enum
ixgbe_mac_type
type
;
...
@@ -2566,6 +2570,8 @@ struct ixgbe_mac_info {
...
@@ -2566,6 +2570,8 @@ struct ixgbe_mac_info {
u16
wwnn_prefix
;
u16
wwnn_prefix
;
/* prefix for World Wide Port Name (WWPN) */
/* prefix for World Wide Port Name (WWPN) */
u16
wwpn_prefix
;
u16
wwpn_prefix
;
#define IXGBE_MAX_MTA 128
u32
mta_shadow
[
IXGBE_MAX_MTA
];
s32
mc_filter_type
;
s32
mc_filter_type
;
u32
mcft_size
;
u32
mcft_size
;
u32
vft_size
;
u32
vft_size
;
...
@@ -2578,6 +2584,7 @@ struct ixgbe_mac_info {
...
@@ -2578,6 +2584,7 @@ struct ixgbe_mac_info {
u32
orig_autoc2
;
u32
orig_autoc2
;
bool
orig_link_settings_stored
;
bool
orig_link_settings_stored
;
bool
autotry_restart
;
bool
autotry_restart
;
u8
flags
;
};
};
struct
ixgbe_phy_info
{
struct
ixgbe_phy_info
{
...
@@ -2684,7 +2691,6 @@ struct ixgbe_info {
...
@@ -2684,7 +2691,6 @@ struct ixgbe_info {
#define IXGBE_ERR_EEPROM_VERSION -24
#define IXGBE_ERR_EEPROM_VERSION -24
#define IXGBE_ERR_NO_SPACE -25
#define IXGBE_ERR_NO_SPACE -25
#define IXGBE_ERR_OVERTEMP -26
#define IXGBE_ERR_OVERTEMP -26
#define IXGBE_ERR_RAR_INDEX -27
#define IXGBE_ERR_SFP_SETUP_NOT_COMPLETE -30
#define IXGBE_ERR_SFP_SETUP_NOT_COMPLETE -30
#define IXGBE_ERR_PBA_SECTION -31
#define IXGBE_ERR_PBA_SECTION -31
#define IXGBE_ERR_INVALID_ARGUMENT -32
#define IXGBE_ERR_INVALID_ARGUMENT -32
...
...
drivers/net/ixgbe/ixgbe_x540.c
View file @
a45d49d1
/*******************************************************************************
/*******************************************************************************
Intel 10 Gigabit PCI Express Linux driver
Intel 10 Gigabit PCI Express Linux driver
Copyright(c) 1999 - 201
0
Intel Corporation.
Copyright(c) 1999 - 201
1
Intel Corporation.
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 and conditions of the GNU General Public License,
under the terms and conditions of the GNU General Public License,
...
@@ -31,7 +31,6 @@
...
@@ -31,7 +31,6 @@
#include "ixgbe.h"
#include "ixgbe.h"
#include "ixgbe_phy.h"
#include "ixgbe_phy.h"
//#include "ixgbe_mbx.h"
#define IXGBE_X540_MAX_TX_QUEUES 128
#define IXGBE_X540_MAX_TX_QUEUES 128
#define IXGBE_X540_MAX_RX_QUEUES 128
#define IXGBE_X540_MAX_RX_QUEUES 128
...
@@ -110,12 +109,9 @@ static s32 ixgbe_reset_hw_X540(struct ixgbe_hw *hw)
...
@@ -110,12 +109,9 @@ static s32 ixgbe_reset_hw_X540(struct ixgbe_hw *hw)
* Prevent the PCI-E bus from from hanging by disabling PCI-E master
* Prevent the PCI-E bus from from hanging by disabling PCI-E master
* access and verify no pending requests before reset
* access and verify no pending requests before reset
*/
*/
status
=
ixgbe_disable_pcie_master
(
hw
);
ixgbe_disable_pcie_master
(
hw
);
if
(
status
!=
0
)
{
status
=
IXGBE_ERR_MASTER_REQUESTS_PENDING
;
hw_dbg
(
hw
,
"PCI-E Master disable polling has failed.
\n
"
);
}
mac_reset_top:
/*
/*
* Issue global reset to the MAC. Needs to be SW reset if link is up.
* Issue global reset to the MAC. Needs to be SW reset if link is up.
* If link reset is used when link is up, it might reset the PHY when
* If link reset is used when link is up, it might reset the PHY when
...
@@ -148,6 +144,19 @@ static s32 ixgbe_reset_hw_X540(struct ixgbe_hw *hw)
...
@@ -148,6 +144,19 @@ static s32 ixgbe_reset_hw_X540(struct ixgbe_hw *hw)
hw_dbg
(
hw
,
"Reset polling failed to complete.
\n
"
);
hw_dbg
(
hw
,
"Reset polling failed to complete.
\n
"
);
}
}
/*
* Double resets are required for recovery from certain error
* conditions. Between resets, it is necessary to stall to allow time
* for any pending HW events to complete. We use 1usec since that is
* what is needed for ixgbe_disable_pcie_master(). The second reset
* then clears out any effects of those events.
*/
if
(
hw
->
mac
.
flags
&
IXGBE_FLAGS_DOUBLE_RESET_REQUIRED
)
{
hw
->
mac
.
flags
&=
~
IXGBE_FLAGS_DOUBLE_RESET_REQUIRED
;
udelay
(
1
);
goto
mac_reset_top
;
}
/* Clear PF Reset Done bit so PF/VF Mail Ops can work */
/* Clear PF Reset Done bit so PF/VF Mail Ops can work */
ctrl_ext
=
IXGBE_READ_REG
(
hw
,
IXGBE_CTRL_EXT
);
ctrl_ext
=
IXGBE_READ_REG
(
hw
,
IXGBE_CTRL_EXT
);
ctrl_ext
|=
IXGBE_CTRL_EXT_PFRSTD
;
ctrl_ext
|=
IXGBE_CTRL_EXT_PFRSTD
;
...
@@ -191,7 +200,7 @@ static s32 ixgbe_reset_hw_X540(struct ixgbe_hw *hw)
...
@@ -191,7 +200,7 @@ static s32 ixgbe_reset_hw_X540(struct ixgbe_hw *hw)
* clear the multicast table. Also reset num_rar_entries to 128,
* clear the multicast table. Also reset num_rar_entries to 128,
* since we modify this value when programming the SAN MAC address.
* since we modify this value when programming the SAN MAC address.
*/
*/
hw
->
mac
.
num_rar_entries
=
128
;
hw
->
mac
.
num_rar_entries
=
IXGBE_X540_MAX_TX_QUEUES
;
hw
->
mac
.
ops
.
init_rx_addrs
(
hw
);
hw
->
mac
.
ops
.
init_rx_addrs
(
hw
);
/* Store the permanent mac address */
/* Store the permanent mac address */
...
@@ -278,7 +287,7 @@ static s32 ixgbe_read_eerd_X540(struct ixgbe_hw *hw, u16 offset, u16 *data)
...
@@ -278,7 +287,7 @@ static s32 ixgbe_read_eerd_X540(struct ixgbe_hw *hw, u16 offset, u16 *data)
{
{
s32
status
;
s32
status
;
if
(
ixgbe_acquire_swfw_sync_X540
(
hw
,
IXGBE_GSSR_EEP_SM
)
==
0
)
if
(
hw
->
mac
.
ops
.
acquire_swfw_sync
(
hw
,
IXGBE_GSSR_EEP_SM
)
==
0
)
status
=
ixgbe_read_eerd_generic
(
hw
,
offset
,
data
);
status
=
ixgbe_read_eerd_generic
(
hw
,
offset
,
data
);
else
else
status
=
IXGBE_ERR_SWFW_SYNC
;
status
=
IXGBE_ERR_SWFW_SYNC
;
...
@@ -311,7 +320,7 @@ static s32 ixgbe_write_eewr_X540(struct ixgbe_hw *hw, u16 offset, u16 data)
...
@@ -311,7 +320,7 @@ static s32 ixgbe_write_eewr_X540(struct ixgbe_hw *hw, u16 offset, u16 data)
(
data
<<
IXGBE_EEPROM_RW_REG_DATA
)
|
(
data
<<
IXGBE_EEPROM_RW_REG_DATA
)
|
IXGBE_EEPROM_RW_REG_START
;
IXGBE_EEPROM_RW_REG_START
;
if
(
ixgbe_acquire_swfw_sync_X540
(
hw
,
IXGBE_GSSR_EEP_SM
)
==
0
)
{
if
(
hw
->
mac
.
ops
.
acquire_swfw_sync
(
hw
,
IXGBE_GSSR_EEP_SM
)
==
0
)
{
status
=
ixgbe_poll_eerd_eewr_done
(
hw
,
IXGBE_NVM_POLL_WRITE
);
status
=
ixgbe_poll_eerd_eewr_done
(
hw
,
IXGBE_NVM_POLL_WRITE
);
if
(
status
!=
0
)
{
if
(
status
!=
0
)
{
hw_dbg
(
hw
,
"Eeprom write EEWR timed out
\n
"
);
hw_dbg
(
hw
,
"Eeprom write EEWR timed out
\n
"
);
...
@@ -676,7 +685,6 @@ static struct ixgbe_mac_operations mac_ops_X540 = {
...
@@ -676,7 +685,6 @@ static struct ixgbe_mac_operations mac_ops_X540 = {
.
set_vmdq
=
&
ixgbe_set_vmdq_generic
,
.
set_vmdq
=
&
ixgbe_set_vmdq_generic
,
.
clear_vmdq
=
&
ixgbe_clear_vmdq_generic
,
.
clear_vmdq
=
&
ixgbe_clear_vmdq_generic
,
.
init_rx_addrs
=
&
ixgbe_init_rx_addrs_generic
,
.
init_rx_addrs
=
&
ixgbe_init_rx_addrs_generic
,
.
update_uc_addr_list
=
&
ixgbe_update_uc_addr_list_generic
,
.
update_mc_addr_list
=
&
ixgbe_update_mc_addr_list_generic
,
.
update_mc_addr_list
=
&
ixgbe_update_mc_addr_list_generic
,
.
enable_mc
=
&
ixgbe_enable_mc_generic
,
.
enable_mc
=
&
ixgbe_enable_mc_generic
,
.
disable_mc
=
&
ixgbe_disable_mc_generic
,
.
disable_mc
=
&
ixgbe_disable_mc_generic
,
...
@@ -687,6 +695,8 @@ static struct ixgbe_mac_operations mac_ops_X540 = {
...
@@ -687,6 +695,8 @@ static struct ixgbe_mac_operations mac_ops_X540 = {
.
setup_sfp
=
NULL
,
.
setup_sfp
=
NULL
,
.
set_mac_anti_spoofing
=
&
ixgbe_set_mac_anti_spoofing
,
.
set_mac_anti_spoofing
=
&
ixgbe_set_mac_anti_spoofing
,
.
set_vlan_anti_spoofing
=
&
ixgbe_set_vlan_anti_spoofing
,
.
set_vlan_anti_spoofing
=
&
ixgbe_set_vlan_anti_spoofing
,
.
acquire_swfw_sync
=
&
ixgbe_acquire_swfw_sync_X540
,
.
release_swfw_sync
=
&
ixgbe_release_swfw_sync_X540
,
};
};
static
struct
ixgbe_eeprom_operations
eeprom_ops_X540
=
{
static
struct
ixgbe_eeprom_operations
eeprom_ops_X540
=
{
...
@@ -702,7 +712,7 @@ static struct ixgbe_phy_operations phy_ops_X540 = {
...
@@ -702,7 +712,7 @@ static struct ixgbe_phy_operations phy_ops_X540 = {
.
identify
=
&
ixgbe_identify_phy_generic
,
.
identify
=
&
ixgbe_identify_phy_generic
,
.
identify_sfp
=
&
ixgbe_identify_sfp_module_generic
,
.
identify_sfp
=
&
ixgbe_identify_sfp_module_generic
,
.
init
=
NULL
,
.
init
=
NULL
,
.
reset
=
&
ixgbe_reset_phy_generic
,
.
reset
=
NULL
,
.
read_reg
=
&
ixgbe_read_phy_reg_generic
,
.
read_reg
=
&
ixgbe_read_phy_reg_generic
,
.
write_reg
=
&
ixgbe_write_phy_reg_generic
,
.
write_reg
=
&
ixgbe_write_phy_reg_generic
,
.
setup_link
=
&
ixgbe_setup_phy_link_generic
,
.
setup_link
=
&
ixgbe_setup_phy_link_generic
,
...
...
drivers/net/ixgbevf/ixgbevf_main.c
View file @
a45d49d1
...
@@ -178,8 +178,6 @@ static inline bool ixgbevf_check_tx_hang(struct ixgbevf_adapter *adapter,
...
@@ -178,8 +178,6 @@ static inline bool ixgbevf_check_tx_hang(struct ixgbevf_adapter *adapter,
tx_ring
->
tx_buffer_info
[
eop
].
time_stamp
&&
tx_ring
->
tx_buffer_info
[
eop
].
time_stamp
&&
time_after
(
jiffies
,
tx_ring
->
tx_buffer_info
[
eop
].
time_stamp
+
HZ
))
{
time_after
(
jiffies
,
tx_ring
->
tx_buffer_info
[
eop
].
time_stamp
+
HZ
))
{
/* detected Tx unit hang */
/* detected Tx unit hang */
union
ixgbe_adv_tx_desc
*
tx_desc
;
tx_desc
=
IXGBE_TX_DESC_ADV
(
*
tx_ring
,
eop
);
printk
(
KERN_ERR
"Detected Tx Unit Hang
\n
"
printk
(
KERN_ERR
"Detected Tx Unit Hang
\n
"
" Tx Queue <%d>
\n
"
" Tx Queue <%d>
\n
"
" TDH, TDT <%x>, <%x>
\n
"
" TDH, TDT <%x>, <%x>
\n
"
...
@@ -334,7 +332,6 @@ static void ixgbevf_receive_skb(struct ixgbevf_q_vector *q_vector,
...
@@ -334,7 +332,6 @@ static void ixgbevf_receive_skb(struct ixgbevf_q_vector *q_vector,
struct
ixgbevf_adapter
*
adapter
=
q_vector
->
adapter
;
struct
ixgbevf_adapter
*
adapter
=
q_vector
->
adapter
;
bool
is_vlan
=
(
status
&
IXGBE_RXD_STAT_VP
);
bool
is_vlan
=
(
status
&
IXGBE_RXD_STAT_VP
);
u16
tag
=
le16_to_cpu
(
rx_desc
->
wb
.
upper
.
vlan
);
u16
tag
=
le16_to_cpu
(
rx_desc
->
wb
.
upper
.
vlan
);
int
ret
;
if
(
!
(
adapter
->
flags
&
IXGBE_FLAG_IN_NETPOLL
))
{
if
(
!
(
adapter
->
flags
&
IXGBE_FLAG_IN_NETPOLL
))
{
if
(
adapter
->
vlgrp
&&
is_vlan
)
if
(
adapter
->
vlgrp
&&
is_vlan
)
...
@@ -345,9 +342,9 @@ static void ixgbevf_receive_skb(struct ixgbevf_q_vector *q_vector,
...
@@ -345,9 +342,9 @@ static void ixgbevf_receive_skb(struct ixgbevf_q_vector *q_vector,
napi_gro_receive
(
&
q_vector
->
napi
,
skb
);
napi_gro_receive
(
&
q_vector
->
napi
,
skb
);
}
else
{
}
else
{
if
(
adapter
->
vlgrp
&&
is_vlan
)
if
(
adapter
->
vlgrp
&&
is_vlan
)
ret
=
vlan_hwaccel_rx
(
skb
,
adapter
->
vlgrp
,
tag
);
vlan_hwaccel_rx
(
skb
,
adapter
->
vlgrp
,
tag
);
else
else
ret
=
netif_rx
(
skb
);
netif_rx
(
skb
);
}
}
}
}
...
@@ -3287,8 +3284,6 @@ static const struct net_device_ops ixgbe_netdev_ops = {
...
@@ -3287,8 +3284,6 @@ static const struct net_device_ops ixgbe_netdev_ops = {
static
void
ixgbevf_assign_netdev_ops
(
struct
net_device
*
dev
)
static
void
ixgbevf_assign_netdev_ops
(
struct
net_device
*
dev
)
{
{
struct
ixgbevf_adapter
*
adapter
;
adapter
=
netdev_priv
(
dev
);
dev
->
netdev_ops
=
&
ixgbe_netdev_ops
;
dev
->
netdev_ops
=
&
ixgbe_netdev_ops
;
ixgbevf_set_ethtool_ops
(
dev
);
ixgbevf_set_ethtool_ops
(
dev
);
dev
->
watchdog_timeo
=
5
*
HZ
;
dev
->
watchdog_timeo
=
5
*
HZ
;
...
...
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