struct ethtool_ringparam *ring)
 {
        struct i40evf_adapter *adapter = netdev_priv(netdev);
-       struct i40e_ring *tx_ring = adapter->tx_rings[0];
-       struct i40e_ring *rx_ring = adapter->rx_rings[0];
 
        ring->rx_max_pending = I40EVF_MAX_RXD;
        ring->tx_max_pending = I40EVF_MAX_TXD;
-       ring->rx_pending = rx_ring->count;
-       ring->tx_pending = tx_ring->count;
+       ring->rx_pending = adapter->rx_desc_count;
+       ring->tx_pending = adapter->tx_desc_count;
 }
 
 /**
 {
        struct i40evf_adapter *adapter = netdev_priv(netdev);
        u32 new_rx_count, new_tx_count;
-       int i;
 
        if ((ring->rx_mini_pending) || (ring->rx_jumbo_pending))
                return -EINVAL;
        new_rx_count = ALIGN(new_rx_count, I40EVF_REQ_DESCRIPTOR_MULTIPLE);
 
        /* if nothing to do return success */
-       if ((new_tx_count == adapter->tx_rings[0]->count) &&
-           (new_rx_count == adapter->rx_rings[0]->count))
+       if ((new_tx_count == adapter->tx_desc_count) &&
+           (new_rx_count == adapter->rx_desc_count))
                return 0;
 
-       for (i = 0; i < adapter->vsi_res->num_queue_pairs; i++) {
-               adapter->tx_rings[0]->count = new_tx_count;
-               adapter->rx_rings[0]->count = new_rx_count;
-       }
+       adapter->tx_desc_count = new_tx_count;
+       adapter->rx_desc_count = new_rx_count;
 
        if (netif_running(netdev))
                i40evf_reinit_locked(adapter);
+
        return 0;
 }
 
 
                tx_ring->queue_index = i;
                tx_ring->netdev = adapter->netdev;
                tx_ring->dev = &adapter->pdev->dev;
-               tx_ring->count = I40EVF_DEFAULT_TXD;
+               tx_ring->count = adapter->tx_desc_count;
                adapter->tx_rings[i] = tx_ring;
 
                rx_ring = &tx_ring[1];
                rx_ring->queue_index = i;
                rx_ring->netdev = adapter->netdev;
                rx_ring->dev = &adapter->pdev->dev;
-               rx_ring->count = I40EVF_DEFAULT_RXD;
+               rx_ring->count = adapter->rx_desc_count;
                adapter->rx_rings[i] = rx_ring;
        }
 
        int i, err = 0;
 
        for (i = 0; i < adapter->vsi_res->num_queue_pairs; i++) {
+               adapter->tx_rings[i]->count = adapter->tx_desc_count;
                err = i40evf_setup_tx_descriptors(adapter->tx_rings[i]);
                if (!err)
                        continue;
        int i, err = 0;
 
        for (i = 0; i < adapter->vsi_res->num_queue_pairs; i++) {
+               adapter->rx_rings[i]->count = adapter->rx_desc_count;
                err = i40evf_setup_rx_descriptors(adapter->rx_rings[i]);
                if (!err)
                        continue;
        adapter->watchdog_timer.data = (unsigned long)adapter;
        mod_timer(&adapter->watchdog_timer, jiffies + 1);
 
+       adapter->tx_desc_count = I40EVF_DEFAULT_TXD;
+       adapter->rx_desc_count = I40EVF_DEFAULT_RXD;
        err = i40evf_init_interrupt_scheme(adapter);
        if (err)
                goto err_sw_init;