e1000: Add enabled Jumbo frame support for 82573L
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> Signed-off-by: John Ronciak <john.ronciak@intel.com>
This commit is contained in:
@@ -1875,6 +1875,7 @@ struct e1000_hw {
|
|||||||
#define E1000_MANC_TCO_RESET 0x00010000 /* TCO Reset Occurred */
|
#define E1000_MANC_TCO_RESET 0x00010000 /* TCO Reset Occurred */
|
||||||
#define E1000_MANC_RCV_TCO_EN 0x00020000 /* Receive TCO Packets Enabled */
|
#define E1000_MANC_RCV_TCO_EN 0x00020000 /* Receive TCO Packets Enabled */
|
||||||
#define E1000_MANC_REPORT_STATUS 0x00040000 /* Status Reporting Enabled */
|
#define E1000_MANC_REPORT_STATUS 0x00040000 /* Status Reporting Enabled */
|
||||||
|
#define E1000_MANC_RCV_ALL 0x00080000 /* Receive All Enabled */
|
||||||
#define E1000_MANC_BLK_PHY_RST_ON_IDE 0x00040000 /* Block phy resets */
|
#define E1000_MANC_BLK_PHY_RST_ON_IDE 0x00040000 /* Block phy resets */
|
||||||
#define E1000_MANC_EN_MAC_ADDR_FILTER 0x00100000 /* Enable MAC address
|
#define E1000_MANC_EN_MAC_ADDR_FILTER 0x00100000 /* Enable MAC address
|
||||||
* filtering */
|
* filtering */
|
||||||
@@ -2036,6 +2037,7 @@ struct e1000_host_command_info {
|
|||||||
#define EEPROM_INIT_CONTROL1_REG 0x000A
|
#define EEPROM_INIT_CONTROL1_REG 0x000A
|
||||||
#define EEPROM_INIT_CONTROL2_REG 0x000F
|
#define EEPROM_INIT_CONTROL2_REG 0x000F
|
||||||
#define EEPROM_INIT_CONTROL3_PORT_B 0x0014
|
#define EEPROM_INIT_CONTROL3_PORT_B 0x0014
|
||||||
|
#define EEPROM_INIT_3GIO_3 0x001A
|
||||||
#define EEPROM_INIT_CONTROL3_PORT_A 0x0024
|
#define EEPROM_INIT_CONTROL3_PORT_A 0x0024
|
||||||
#define EEPROM_CFG 0x0012
|
#define EEPROM_CFG 0x0012
|
||||||
#define EEPROM_FLASH_VERSION 0x0032
|
#define EEPROM_FLASH_VERSION 0x0032
|
||||||
@@ -2085,6 +2087,9 @@ struct e1000_host_command_info {
|
|||||||
#define EEPROM_WORD0F_ANE 0x0800
|
#define EEPROM_WORD0F_ANE 0x0800
|
||||||
#define EEPROM_WORD0F_SWPDIO_EXT 0x00F0
|
#define EEPROM_WORD0F_SWPDIO_EXT 0x00F0
|
||||||
|
|
||||||
|
/* Mask bits for fields in Word 0x1a of the EEPROM */
|
||||||
|
#define EEPROM_WORD1A_ASPM_MASK 0x000C
|
||||||
|
|
||||||
/* For checksumming, the sum of all words in the EEPROM should equal 0xBABA. */
|
/* For checksumming, the sum of all words in the EEPROM should equal 0xBABA. */
|
||||||
#define EEPROM_SUM 0xBABA
|
#define EEPROM_SUM 0xBABA
|
||||||
|
|
||||||
|
@@ -2978,6 +2978,7 @@ e1000_change_mtu(struct net_device *netdev, int new_mtu)
|
|||||||
{
|
{
|
||||||
struct e1000_adapter *adapter = netdev_priv(netdev);
|
struct e1000_adapter *adapter = netdev_priv(netdev);
|
||||||
int max_frame = new_mtu + ENET_HEADER_SIZE + ETHERNET_FCS_SIZE;
|
int max_frame = new_mtu + ENET_HEADER_SIZE + ETHERNET_FCS_SIZE;
|
||||||
|
uint16_t eeprom_data = 0;
|
||||||
|
|
||||||
if ((max_frame < MINIMUM_ETHERNET_FRAME_SIZE) ||
|
if ((max_frame < MINIMUM_ETHERNET_FRAME_SIZE) ||
|
||||||
(max_frame > MAX_JUMBO_FRAME_SIZE)) {
|
(max_frame > MAX_JUMBO_FRAME_SIZE)) {
|
||||||
@@ -2989,12 +2990,25 @@ e1000_change_mtu(struct net_device *netdev, int new_mtu)
|
|||||||
switch (adapter->hw.mac_type) {
|
switch (adapter->hw.mac_type) {
|
||||||
case e1000_82542_rev2_0:
|
case e1000_82542_rev2_0:
|
||||||
case e1000_82542_rev2_1:
|
case e1000_82542_rev2_1:
|
||||||
case e1000_82573:
|
|
||||||
if (max_frame > MAXIMUM_ETHERNET_FRAME_SIZE) {
|
if (max_frame > MAXIMUM_ETHERNET_FRAME_SIZE) {
|
||||||
DPRINTK(PROBE, ERR, "Jumbo Frames not supported.\n");
|
DPRINTK(PROBE, ERR, "Jumbo Frames not supported.\n");
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case e1000_82573:
|
||||||
|
/* only enable jumbo frames if ASPM is disabled completely
|
||||||
|
* this means both bits must be zero in 0x1A bits 3:2 */
|
||||||
|
e1000_read_eeprom(&adapter->hw, EEPROM_INIT_3GIO_3, 1,
|
||||||
|
&eeprom_data);
|
||||||
|
if (eeprom_data & EEPROM_WORD1A_ASPM_MASK) {
|
||||||
|
if (max_frame > MAXIMUM_ETHERNET_FRAME_SIZE) {
|
||||||
|
DPRINTK(PROBE, ERR,
|
||||||
|
"Jumbo Frames not supported.\n");
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
/* fall through to get support */
|
||||||
case e1000_82571:
|
case e1000_82571:
|
||||||
case e1000_82572:
|
case e1000_82572:
|
||||||
#define MAX_STD_JUMBO_FRAME_SIZE 9234
|
#define MAX_STD_JUMBO_FRAME_SIZE 9234
|
||||||
|
Reference in New Issue
Block a user