drivers: net: gianfar: Make RT aware

The adjust_link() disables interrupts before taking the queue
locks. On RT those locks are converted to "sleeping" locks and
therefor the local_irq_save/restore must be converted to
local_irq_save/restore_nort.

Reported-by: Xianghua Xiao <xiaoxianghua@gmail.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Xianghua Xiao <xiaoxianghua@gmail.com>
This commit is contained in:
Thomas Gleixner 2010-04-01 20:20:57 +02:00 committed by Alibek Omarov
parent 1e15e4c4e1
commit 5616769d71
1 changed files with 4 additions and 4 deletions

View File

@ -1716,7 +1716,7 @@ void stop_gfar(struct net_device *dev)
/* Lock it down */
local_irq_save(flags);
local_irq_save_nort(flags);
lock_tx_qs(priv);
lock_rx_qs(priv);
@ -1724,7 +1724,7 @@ void stop_gfar(struct net_device *dev)
unlock_rx_qs(priv);
unlock_tx_qs(priv);
local_irq_restore(flags);
local_irq_restore_nort(flags);
/* Free the IRQs */
if (priv->device_flags & FSL_GIANFAR_DEV_HAS_MULTI_INTR) {
@ -3105,7 +3105,7 @@ static void adjust_link(struct net_device *dev)
struct phy_device *phydev = priv->phydev;
int new_state = 0;
local_irq_save(flags);
local_irq_save_nort(flags);
lock_tx_qs(priv);
if (phydev->link) {
@ -3179,7 +3179,7 @@ static void adjust_link(struct net_device *dev)
if (new_state && netif_msg_link(priv))
phy_print_status(phydev);
unlock_tx_qs(priv);
local_irq_restore(flags);
local_irq_restore_nort(flags);
}
/* Update the hash table based on the current list of multicast