mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-02 18:33:55 +08:00
mlx4_en: Fix BQL reset TX queue call point
Fix issue in Mellanox driver related to BQL. netdev_tx_reset_queue was not being called in certain situations where the device was being start and stopped. Moved netdev_tx_reset_queue from the reset device path to mlx4_en_free_tx_buf which is where the rings are cleaned in a reset (specifically from device being stopped). Signed-off-by: Tom Herbert <therbert@google.com> Acked-By: Amir Vadai <amirv@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
2de27f307f
commit
41b749201b
@ -1685,15 +1685,12 @@ static void mlx4_en_restart(struct work_struct *work)
|
||||
watchdog_task);
|
||||
struct mlx4_en_dev *mdev = priv->mdev;
|
||||
struct net_device *dev = priv->dev;
|
||||
int i;
|
||||
|
||||
en_dbg(DRV, priv, "Watchdog task called for port %d\n", priv->port);
|
||||
|
||||
mutex_lock(&mdev->state_lock);
|
||||
if (priv->port_up) {
|
||||
mlx4_en_stop_port(dev, 1);
|
||||
for (i = 0; i < priv->tx_ring_num; i++)
|
||||
netdev_tx_reset_queue(priv->tx_ring[i].tx_queue);
|
||||
if (mlx4_en_start_port(dev))
|
||||
en_err(priv, "Failed restarting port %d\n", priv->port);
|
||||
}
|
||||
|
@ -294,6 +294,8 @@ int mlx4_en_free_tx_buf(struct net_device *dev, struct mlx4_en_tx_ring *ring)
|
||||
cnt++;
|
||||
}
|
||||
|
||||
netdev_tx_reset_queue(ring->tx_queue);
|
||||
|
||||
if (cnt)
|
||||
en_dbg(DRV, priv, "Freed %d uncompleted tx descriptors\n", cnt);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user