diff options
author | Felix Fietkau <nbd@openwrt.org> | 2014-08-29 19:42:08 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2014-08-29 19:42:08 +0000 |
commit | 2c680151e4a5ed2114bbd6a82a8d0638f507decd (patch) | |
tree | 0ab8ac31ece635e77f373ece4c7545caecddf097 /target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_ethtool.c | |
parent | c23e0ed691bb8b36742fe996bc75fe94d7d03be2 (diff) | |
download | upstream-2c680151e4a5ed2114bbd6a82a8d0638f507decd.tar.gz upstream-2c680151e4a5ed2114bbd6a82a8d0638f507decd.tar.bz2 upstream-2c680151e4a5ed2114bbd6a82a8d0638f507decd.zip |
ar71xx: split packets into multiple descriptors on ar716x
This improves performance when doing concurrent rx/tx on a single
ethernet MAC, e.g. when routing between VLANs.
Fixes #13072
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 42328
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.c | 6 |
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; |