|
@@ -1802,6 +1802,27 @@ static void stmmac_init_tx_coalesce(struct stmmac_priv *priv)
|
|
|
add_timer(&priv->txtimer);
|
|
|
}
|
|
|
|
|
|
+static void stmmac_set_rings_length(struct stmmac_priv *priv)
|
|
|
+{
|
|
|
+ u32 rx_channels_count = priv->plat->rx_queues_to_use;
|
|
|
+ u32 tx_channels_count = priv->plat->tx_queues_to_use;
|
|
|
+ u32 chan;
|
|
|
+
|
|
|
+ /* set TX ring length */
|
|
|
+ if (priv->hw->dma->set_tx_ring_len) {
|
|
|
+ for (chan = 0; chan < tx_channels_count; chan++)
|
|
|
+ priv->hw->dma->set_tx_ring_len(priv->ioaddr,
|
|
|
+ (DMA_TX_SIZE - 1), chan);
|
|
|
+ }
|
|
|
+
|
|
|
+ /* set RX ring length */
|
|
|
+ if (priv->hw->dma->set_rx_ring_len) {
|
|
|
+ for (chan = 0; chan < rx_channels_count; chan++)
|
|
|
+ priv->hw->dma->set_rx_ring_len(priv->ioaddr,
|
|
|
+ (DMA_RX_SIZE - 1), chan);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* stmmac_set_tx_queue_weight - Set TX queue weight
|
|
|
* @priv: driver private structure
|
|
@@ -1995,14 +2016,9 @@ static int stmmac_hw_setup(struct net_device *dev, bool init_ptp)
|
|
|
if (priv->hw->pcs && priv->hw->mac->pcs_ctrl_ane)
|
|
|
priv->hw->mac->pcs_ctrl_ane(priv->hw, 1, priv->hw->ps, 0);
|
|
|
|
|
|
- /* set TX ring length */
|
|
|
- if (priv->hw->dma->set_tx_ring_len)
|
|
|
- priv->hw->dma->set_tx_ring_len(priv->ioaddr,
|
|
|
- (DMA_TX_SIZE - 1));
|
|
|
- /* set RX ring length */
|
|
|
- if (priv->hw->dma->set_rx_ring_len)
|
|
|
- priv->hw->dma->set_rx_ring_len(priv->ioaddr,
|
|
|
- (DMA_RX_SIZE - 1));
|
|
|
+ /* set TX and RX rings length */
|
|
|
+ stmmac_set_rings_length(priv);
|
|
|
+
|
|
|
/* Enable TSO */
|
|
|
if (priv->tso)
|
|
|
priv->hw->dma->enable_tso(priv->ioaddr, 1, STMMAC_CHAN0);
|