ag71xx: store ring size order instead of ring size to avoid div/mod
[openwrt.git] / target / linux / ar71xx / files / drivers / net / ethernet / atheros / ag71xx / ag71xx_ethtool.c
index cad9f2f..3395cab 100644 (file)
@@ -71,8 +71,8 @@ static void ag71xx_ethtool_get_ringparam(struct net_device *dev,
        er->rx_mini_max_pending = 0;
        er->rx_jumbo_max_pending = 0;
 
        er->rx_mini_max_pending = 0;
        er->rx_jumbo_max_pending = 0;
 
-       er->tx_pending = ag->tx_ring.size;
-       er->rx_pending = ag->rx_ring.size;
+       er->tx_pending = BIT(ag->tx_ring.order);
+       er->rx_pending = BIT(ag->rx_ring.order);
        er->rx_mini_pending = 0;
        er->rx_jumbo_pending = 0;
 
        er->rx_mini_pending = 0;
        er->rx_jumbo_pending = 0;
 
@@ -109,8 +109,8 @@ static int ag71xx_ethtool_set_ringparam(struct net_device *dev,
        if (ag->tx_ring.desc_split)
                tx_size *= AG71XX_TX_RING_DS_PER_PKT;
 
        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;
+       ag->tx_ring.order = ag71xx_ring_size_order(tx_size);
+       ag->rx_ring.order = ag71xx_ring_size_order(rx_size);
 
        if (netif_running(dev))
                err = dev->netdev_ops->ndo_open(dev);
 
        if (netif_running(dev))
                err = dev->netdev_ops->ndo_open(dev);