summaryrefslogtreecommitdiffstats
path: root/target/linux/ramips/files/drivers/net/ethernet/ralink/soc_mt7620.c
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2015-01-24 22:45:28 +0000
committerFelix Fietkau <nbd@openwrt.org>2015-01-24 22:45:28 +0000
commitbef829efa5b00d909136593931290345f88ca4e6 (patch)
tree7e6e1726cf69729ac1da85cac91d20309a652564 /target/linux/ramips/files/drivers/net/ethernet/ralink/soc_mt7620.c
parent3ec294a825a1f796dbb2f6a56c82e1010e22ad2a (diff)
downloadmaster-31e0f0ae-bef829efa5b00d909136593931290345f88ca4e6.tar.gz
master-31e0f0ae-bef829efa5b00d909136593931290345f88ca4e6.tar.bz2
master-31e0f0ae-bef829efa5b00d909136593931290345f88ca4e6.zip
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.c13
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 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,