58 lines
1.8 KiB
Diff
58 lines
1.8 KiB
Diff
From 37a77c8c514dc179049baca9cf708cbd9ec889d5 Mon Sep 17 00:00:00 2001
|
|
From: Thomas Gleixner <tglx@linutronix.de>
|
|
Date: Thu, 1 Apr 2010 20:20:57 +0200
|
|
Subject: [085/254] 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>
|
|
---
|
|
drivers/net/ethernet/freescale/gianfar.c | 8 ++++----
|
|
1 file changed, 4 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/drivers/net/ethernet/freescale/gianfar.c b/drivers/net/ethernet/freescale/gianfar.c
|
|
index e7bed53..3a42d36 100644
|
|
--- a/drivers/net/ethernet/freescale/gianfar.c
|
|
+++ b/drivers/net/ethernet/freescale/gianfar.c
|
|
@@ -1643,7 +1643,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);
|
|
|
|
@@ -1651,7 +1651,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) {
|
|
@@ -2948,7 +2948,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) {
|
|
@@ -3015,7 +3015,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
|