mirror of https://gitee.com/openkylin/linux.git
net: stmmac: stmmac interrupt treatment prepared for multiple queues
This patch prepares the main ISR for multiple queues. Signed-off-by: Joao Pinto <jpinto@synopsys.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
146617b88b
commit
7bac4e1ec3
|
@ -3115,6 +3115,12 @@ static irqreturn_t stmmac_interrupt(int irq, void *dev_id)
|
|||
{
|
||||
struct net_device *dev = (struct net_device *)dev_id;
|
||||
struct stmmac_priv *priv = netdev_priv(dev);
|
||||
u32 rx_cnt = priv->plat->rx_queues_to_use;
|
||||
u32 tx_cnt = priv->plat->tx_queues_to_use;
|
||||
u32 queues_count;
|
||||
u32 queue;
|
||||
|
||||
queues_count = (rx_cnt > tx_cnt) ? rx_cnt : tx_cnt;
|
||||
|
||||
if (priv->irq_wake)
|
||||
pm_wakeup_event(priv->device, 0);
|
||||
|
@ -3129,20 +3135,26 @@ static irqreturn_t stmmac_interrupt(int irq, void *dev_id)
|
|||
int status = priv->hw->mac->host_irq_status(priv->hw,
|
||||
&priv->xstats);
|
||||
|
||||
if (priv->synopsys_id >= DWMAC_CORE_4_00)
|
||||
status |= priv->hw->mac->host_mtl_irq_status(priv->hw,
|
||||
STMMAC_CHAN0);
|
||||
|
||||
if (unlikely(status)) {
|
||||
/* For LPI we need to save the tx status */
|
||||
if (status & CORE_IRQ_TX_PATH_IN_LPI_MODE)
|
||||
priv->tx_path_in_lpi_mode = true;
|
||||
if (status & CORE_IRQ_TX_PATH_EXIT_LPI_MODE)
|
||||
priv->tx_path_in_lpi_mode = false;
|
||||
if (status & CORE_IRQ_MTL_RX_OVERFLOW && priv->hw->dma->set_rx_tail_ptr)
|
||||
priv->hw->dma->set_rx_tail_ptr(priv->ioaddr,
|
||||
priv->rx_tail_addr,
|
||||
STMMAC_CHAN0);
|
||||
}
|
||||
|
||||
if (priv->synopsys_id >= DWMAC_CORE_4_00) {
|
||||
for (queue = 0; queue < queues_count; queue++) {
|
||||
status |=
|
||||
priv->hw->mac->host_mtl_irq_status(priv->hw,
|
||||
queue);
|
||||
|
||||
if (status & CORE_IRQ_MTL_RX_OVERFLOW &&
|
||||
priv->hw->dma->set_rx_tail_ptr)
|
||||
priv->hw->dma->set_rx_tail_ptr(priv->ioaddr,
|
||||
priv->rx_tail_addr,
|
||||
queue);
|
||||
}
|
||||
}
|
||||
|
||||
/* PCS link status */
|
||||
|
|
Loading…
Reference in New Issue