From bef829efa5b00d909136593931290345f88ca4e6 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Sat, 24 Jan 2015 22:45:28 +0000 Subject: ralink: fix ethernet feature TSO not work * fix TSO features verify on mt7621 firewrt board * improve tx clean up. no need to access uncached memory. also use TX_DTX register instead of read tx ring DONE bit * mt7621 need napi weight 64 to get more performance * remove netif_receive_skb, after kernel version 3.7 tcp4_gro_receive can handle tcp checksum. on rt2880 use iperf tcp LAN to WAN throughput test. with gro 135 Mbits/sec. without gro 80.4Mbits/sec. Signed-off-by: michael lee SVN-Revision: 44118 --- .../ramips/files/drivers/net/ethernet/ralink/soc_mt7620.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'target/linux/ramips/files/drivers/net/ethernet/ralink/soc_mt7620.c') diff --git a/target/linux/ramips/files/drivers/net/ethernet/ralink/soc_mt7620.c b/target/linux/ramips/files/drivers/net/ethernet/ralink/soc_mt7620.c index c99206a965..6e2fbdf645 100644 --- a/target/linux/ramips/files/drivers/net/ethernet/ralink/soc_mt7620.c +++ b/target/linux/ramips/files/drivers/net/ethernet/ralink/soc_mt7620.c @@ -161,7 +161,7 @@ static int mt7621_fwd_config(struct fe_priv *priv) fe_w32(fe_r32(MT7620A_GDMA1_FWD_CFG) & ~0xffff, MT7620A_GDMA1_FWD_CFG); - mt7620_txcsum_config((dev->features & NETIF_F_IP_CSUM)); + /* mt7621 don't have txcsum config */ mt7620_rxcsum_config((dev->features & NETIF_F_RXCSUM)); mt7621_rxvlan_config((dev->features & NETIF_F_HW_VLAN_CTAG_RX) && (priv->flags & FE_FLAG_RX_VLAN_CTAG)); @@ -171,7 +171,6 @@ static int mt7621_fwd_config(struct fe_priv *priv) static void mt7620_tx_dma(struct fe_tx_dma *txd) { - txd->txd4 = 0; } static void mt7621_tx_dma(struct fe_tx_dma *txd) @@ -189,7 +188,7 @@ static void mt7620_init_data(struct fe_soc_data *data, netdev->hw_features = NETIF_F_IP_CSUM | NETIF_F_RXCSUM | NETIF_F_HW_VLAN_CTAG_TX; - if (mt7620_get_eco() >= 5 || IS_ENABLED(CONFIG_SOC_MT7621)) + if (mt7620_get_eco() >= 5) netdev->hw_features |= NETIF_F_SG | NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_IPV6_CSUM; } @@ -200,9 +199,11 @@ static void mt7621_init_data(struct fe_soc_data *data, struct fe_priv *priv = netdev_priv(netdev); priv->flags = FE_FLAG_PADDING_64B | FE_FLAG_RX_2B_OFFSET | - FE_FLAG_RX_SG_DMA; + FE_FLAG_RX_SG_DMA | FE_FLAG_NAPI_WEIGHT; - netdev->hw_features = NETIF_F_HW_VLAN_CTAG_TX; + netdev->hw_features = NETIF_F_IP_CSUM | NETIF_F_RXCSUM | + NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_SG | NETIF_F_TSO | + NETIF_F_TSO6 | NETIF_F_IPV6_CSUM; } static void mt7621_set_mac(struct fe_priv *priv, unsigned char *mac) @@ -231,7 +232,6 @@ static struct fe_soc_data mt7620_data = { .rx_int = RT5350_RX_DONE_INT, .tx_int = RT5350_TX_DONE_INT, .checksum_bit = MT7620_L4_VALID, - .tx_udf_bit = MT7620_TX_DMA_UDF, .has_carrier = mt7620a_has_carrier, .mdio_read = mt7620_mdio_read, .mdio_write = mt7620_mdio_write, @@ -252,7 +252,6 @@ static struct fe_soc_data mt7621_data = { .rx_int = RT5350_RX_DONE_INT, .tx_int = RT5350_TX_DONE_INT, .checksum_bit = MT7621_L4_VALID, - .tx_udf_bit = MT7621_TX_DMA_UDF, .has_carrier = mt7620a_has_carrier, .mdio_read = mt7620_mdio_read, .mdio_write = mt7620_mdio_write, -- cgit v1.2.3