aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_ethtool.c
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2014-09-07 09:46:39 +0000
committerFelix Fietkau <nbd@openwrt.org>2014-09-07 09:46:39 +0000
commit96475a042ec3af58ba77cadf2a283e005038d27c (patch)
tree9272f71403e68ef3fa6d3b94e5d47b8e7904d0d4 /target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_ethtool.c
parent4ff0d3f27a1df5850ef9bc797bf5771c47d29964 (diff)
downloadupstream-96475a042ec3af58ba77cadf2a283e005038d27c.tar.gz
upstream-96475a042ec3af58ba77cadf2a283e005038d27c.tar.bz2
upstream-96475a042ec3af58ba77cadf2a283e005038d27c.zip
ar71xx: merge ethernet tx descriptor splitting from trunk (as of r42429) to fix ar716x performance issues
Signed-off-by: Felix Fietkau <nbd@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/branches/barrier_breaker@42433 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_ethtool.c')
-rw-r--r--target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_ethtool.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_ethtool.c b/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_ethtool.c
index 498fbed1ff..cad9f2ff06 100644
--- a/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_ethtool.c
+++ b/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_ethtool.c
@@ -75,6 +75,9 @@ static void ag71xx_ethtool_get_ringparam(struct net_device *dev,
er->rx_pending = ag->rx_ring.size;
er->rx_mini_pending = 0;
er->rx_jumbo_pending = 0;
+
+ if (ag->tx_ring.desc_split)
+ er->tx_pending /= AG71XX_TX_RING_DS_PER_PKT;
}
static int ag71xx_ethtool_set_ringparam(struct net_device *dev,
@@ -103,6 +106,9 @@ static int ag71xx_ethtool_set_ringparam(struct net_device *dev,
return err;
}
+ if (ag->tx_ring.desc_split)
+ tx_size *= AG71XX_TX_RING_DS_PER_PKT;
+
ag->tx_ring.size = tx_size;
ag->rx_ring.size = rx_size;