aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/ethernet/atheros/atl1c/atl1c.h2
-rw-r--r--drivers/net/ethernet/atheros/atl1c/atl1c_hw.h1
-rw-r--r--drivers/net/ethernet/atheros/atl1c/atl1c_main.c11
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,
501static int atl1c_change_mtu(struct net_device *netdev, int new_mtu) 501static 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;