aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/rb532/patches-2.6.27/015-korina_irqf_flags.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/rb532/patches-2.6.27/015-korina_irqf_flags.patch')
-rw-r--r--target/linux/rb532/patches-2.6.27/015-korina_irqf_flags.patch53
1 files changed, 53 insertions, 0 deletions
diff --git a/target/linux/rb532/patches-2.6.27/015-korina_irqf_flags.patch b/target/linux/rb532/patches-2.6.27/015-korina_irqf_flags.patch
new file mode 100644
index 0000000000..74059fbeb8
--- /dev/null
+++ b/target/linux/rb532/patches-2.6.27/015-korina_irqf_flags.patch
@@ -0,0 +1,53 @@
+As the kernel warning states: "IRQF_DISABLED is not guaranteed on shared
+IRQs". Since these IRQs' values are hardcoded and my test system doesn't
+show any shared use of IRQs at all, rather make them non-shared than
+non-disabled.
+
+Signed-off-by: Phil Sutter <n0-1@freewrt.org>
+---
+ drivers/net/korina.c | 8 ++++----
+ 1 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/net/korina.c b/drivers/net/korina.c
+index bd33fa9..1d6e48e 100644
+--- a/drivers/net/korina.c
++++ b/drivers/net/korina.c
+@@ -1000,14 +1000,14 @@ static int korina_open(struct net_device *dev)
+ * that handles the Done Finished
+ * Ovr and Und Events */
+ ret = request_irq(lp->rx_irq, &korina_rx_dma_interrupt,
+- IRQF_SHARED | IRQF_DISABLED, "Korina ethernet Rx", dev);
++ IRQF_DISABLED, "Korina ethernet Rx", dev);
+ if (ret < 0) {
+ printk(KERN_ERR DRV_NAME "%s: unable to get Rx DMA IRQ %d\n",
+ dev->name, lp->rx_irq);
+ goto err_release;
+ }
+ ret = request_irq(lp->tx_irq, &korina_tx_dma_interrupt,
+- IRQF_SHARED | IRQF_DISABLED, "Korina ethernet Tx", dev);
++ IRQF_DISABLED, "Korina ethernet Tx", dev);
+ if (ret < 0) {
+ printk(KERN_ERR DRV_NAME "%s: unable to get Tx DMA IRQ %d\n",
+ dev->name, lp->tx_irq);
+@@ -1016,7 +1016,7 @@ static int korina_open(struct net_device *dev)
+
+ /* Install handler for overrun error. */
+ ret = request_irq(lp->ovr_irq, &korina_ovr_interrupt,
+- IRQF_SHARED | IRQF_DISABLED, "Ethernet Overflow", dev);
++ IRQF_DISABLED, "Ethernet Overflow", dev);
+ if (ret < 0) {
+ printk(KERN_ERR DRV_NAME"%s: unable to get OVR IRQ %d\n",
+ dev->name, lp->ovr_irq);
+@@ -1025,7 +1025,7 @@ static int korina_open(struct net_device *dev)
+
+ /* Install handler for underflow error. */
+ ret = request_irq(lp->und_irq, &korina_und_interrupt,
+- IRQF_SHARED | IRQF_DISABLED, "Ethernet Underflow", dev);
++ IRQF_DISABLED, "Ethernet Underflow", dev);
+ if (ret < 0) {
+ printk(KERN_ERR DRV_NAME "%s: unable to get UND IRQ %d\n",
+ dev->name, lp->und_irq);
+--
+1.5.6.4
+
+