diff options
author | Felix Fietkau <nbd@openwrt.org> | 2015-01-24 22:45:28 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2015-01-24 22:45:28 +0000 |
commit | bef829efa5b00d909136593931290345f88ca4e6 (patch) | |
tree | 7e6e1726cf69729ac1da85cac91d20309a652564 /target/linux/ramips/files/drivers/net/ethernet/ralink/soc_mt7620.c | |
parent | 3ec294a825a1f796dbb2f6a56c82e1010e22ad2a (diff) | |
download | mtk-20170518-bef829efa5b00d909136593931290345f88ca4e6.zip mtk-20170518-bef829efa5b00d909136593931290345f88ca4e6.tar.gz mtk-20170518-bef829efa5b00d909136593931290345f88ca4e6.tar.bz2 |
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 <igvtee@gmail.com>
SVN-Revision: 44118
Diffstat (limited to 'target/linux/ramips/files/drivers/net/ethernet/ralink/soc_mt7620.c')
-rw-r--r-- | target/linux/ramips/files/drivers/net/ethernet/ralink/soc_mt7620.c | 13 |
1 files changed, 6 insertions, 7 deletions
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 c99206a..6e2fbdf 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, |