In shared interrupt systems it might be a problem to handle the interrupt
regardless of the interrupt is enabled. Now the same approach to the
DMA RX/TX interrupt in the ISR is taken.
---
 c/src/lib/libbsp/sparc/shared/spw/grspw_pkt.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/c/src/lib/libbsp/sparc/shared/spw/grspw_pkt.c 
b/c/src/lib/libbsp/sparc/shared/spw/grspw_pkt.c
index 498333e..d3eca27 100644
--- a/c/src/lib/libbsp/sparc/shared/spw/grspw_pkt.c
+++ b/c/src/lib/libbsp/sparc/shared/spw/grspw_pkt.c
@@ -2819,7 +2819,8 @@ STATIC void grspw_isr(void *data)
                if (stat & GRSPW_STS_WE)
                        priv->stats.err_wsync++;
 
-               if ((priv->dis_link_on_err >> 16) & stat) {
+               if (((priv->dis_link_on_err >> 16) & stat) &&
+                   (REG_READ(&priv->regs->ctrl) & GRSPW_CTRL_IE)) {
                        /* Disable the link, no more transfers are expected
                         * on any DMA channel.
                         */
-- 
2.7.4

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to