diff options
-rw-r--r-- | drivers/net/ethernet/atheros/atl1c/atl1c.h | 2 | ||||
-rw-r--r-- | drivers/net/ethernet/atheros/atl1c/atl1c_hw.h | 1 | ||||
-rw-r--r-- | drivers/net/ethernet/atheros/atl1c/atl1c_main.c | 11 |
3 files changed, 9 insertions, 5 deletions
diff --git a/drivers/net/ethernet/atheros/atl1c/atl1c.h b/drivers/net/ethernet/atheros/atl1c/atl1c.h index 0a4bfab7a19..fa315519c07 100644 --- a/drivers/net/ethernet/atheros/atl1c/atl1c.h +++ b/drivers/net/ethernet/atheros/atl1c/atl1c.h | |||
@@ -74,8 +74,6 @@ | |||
74 | 74 | ||
75 | #define AT_RX_BUF_SIZE (ETH_FRAME_LEN + VLAN_HLEN + ETH_FCS_LEN) | 75 | #define AT_RX_BUF_SIZE (ETH_FRAME_LEN + VLAN_HLEN + ETH_FCS_LEN) |
76 | #define MAX_JUMBO_FRAME_SIZE (6*1024) | 76 | #define MAX_JUMBO_FRAME_SIZE (6*1024) |
77 | #define MAX_TSO_FRAME_SIZE (7*1024) | ||
78 | #define MAX_TX_OFFLOAD_THRESH (9*1024) | ||
79 | 77 | ||
80 | #define AT_MAX_RECEIVE_QUEUE 4 | 78 | #define AT_MAX_RECEIVE_QUEUE 4 |
81 | #define AT_DEF_RECEIVE_QUEUE 1 | 79 | #define AT_DEF_RECEIVE_QUEUE 1 |
diff --git a/drivers/net/ethernet/atheros/atl1c/atl1c_hw.h b/drivers/net/ethernet/atheros/atl1c/atl1c_hw.h index c1aa3ba7545..c9c67821310 100644 --- a/drivers/net/ethernet/atheros/atl1c/atl1c_hw.h +++ b/drivers/net/ethernet/atheros/atl1c/atl1c_hw.h | |||
@@ -500,6 +500,7 @@ int atl1c_phy_power_saving(struct atl1c_hw *hw); | |||
500 | /* Jumbo packet Threshold for task offload */ | 500 | /* Jumbo packet Threshold for task offload */ |
501 | #define REG_TX_TSO_OFFLOAD_THRESH 0x1594 /* In 8-bytes */ | 501 | #define REG_TX_TSO_OFFLOAD_THRESH 0x1594 /* In 8-bytes */ |
502 | #define TX_TSO_OFFLOAD_THRESH_MASK 0x07FF | 502 | #define TX_TSO_OFFLOAD_THRESH_MASK 0x07FF |
503 | #define MAX_TSO_FRAME_SIZE (7*1024) | ||
503 | 504 | ||
504 | #define REG_TXF_WATER_MARK 0x1598 /* In 8-bytes */ | 505 | #define REG_TXF_WATER_MARK 0x1598 /* In 8-bytes */ |
505 | #define TXF_WATER_MARK_MASK 0x0FFF | 506 | #define TXF_WATER_MARK_MASK 0x0FFF |
diff --git a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c index d2f89f026d7..e8e9c104cfe 100644 --- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c +++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c | |||
@@ -501,11 +501,16 @@ static int atl1c_set_features(struct net_device *netdev, | |||
501 | static int atl1c_change_mtu(struct net_device *netdev, int new_mtu) | 501 | static int atl1c_change_mtu(struct net_device *netdev, int new_mtu) |
502 | { | 502 | { |
503 | struct atl1c_adapter *adapter = netdev_priv(netdev); | 503 | struct atl1c_adapter *adapter = netdev_priv(netdev); |
504 | struct atl1c_hw *hw = &adapter->hw; | ||
504 | int old_mtu = netdev->mtu; | 505 | int old_mtu = netdev->mtu; |
505 | int max_frame = new_mtu + ETH_HLEN + ETH_FCS_LEN + VLAN_HLEN; | 506 | int max_frame = new_mtu + ETH_HLEN + ETH_FCS_LEN + VLAN_HLEN; |
506 | 507 | ||
507 | if ((max_frame < ETH_ZLEN + ETH_FCS_LEN) || | 508 | /* Fast Ethernet controller doesn't support jumbo packet */ |
508 | (max_frame > MAX_JUMBO_FRAME_SIZE)) { | 509 | if (((hw->nic_type == athr_l2c || |
510 | hw->nic_type == athr_l2c_b || | ||
511 | hw->nic_type == athr_l2c_b2) && new_mtu > ETH_DATA_LEN) || | ||
512 | max_frame < ETH_ZLEN + ETH_FCS_LEN || | ||
513 | max_frame > MAX_JUMBO_FRAME_SIZE) { | ||
509 | if (netif_msg_link(adapter)) | 514 | if (netif_msg_link(adapter)) |
510 | dev_warn(&adapter->pdev->dev, "invalid MTU setting\n"); | 515 | dev_warn(&adapter->pdev->dev, "invalid MTU setting\n"); |
511 | return -EINVAL; | 516 | return -EINVAL; |
@@ -1049,7 +1054,7 @@ static void atl1c_configure_tx(struct atl1c_adapter *adapter) | |||
1049 | u16 tx_offload_thresh; | 1054 | u16 tx_offload_thresh; |
1050 | u32 txq_ctrl_data; | 1055 | u32 txq_ctrl_data; |
1051 | 1056 | ||
1052 | tx_offload_thresh = MAX_TX_OFFLOAD_THRESH; | 1057 | tx_offload_thresh = MAX_TSO_FRAME_SIZE; |
1053 | AT_WRITE_REG(hw, REG_TX_TSO_OFFLOAD_THRESH, | 1058 | AT_WRITE_REG(hw, REG_TX_TSO_OFFLOAD_THRESH, |
1054 | (tx_offload_thresh >> 3) & TX_TSO_OFFLOAD_THRESH_MASK); | 1059 | (tx_offload_thresh >> 3) & TX_TSO_OFFLOAD_THRESH_MASK); |
1055 | max_pay_load = pcie_get_readrq(adapter->pdev) >> 8; | 1060 | max_pay_load = pcie_get_readrq(adapter->pdev) >> 8; |