@ -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 ) ;