summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGregory Nutt <gnutt@nuttx.org>2015-01-27 14:59:31 -0600
committerGregory Nutt <gnutt@nuttx.org>2015-01-27 14:59:31 -0600
commit695f0f3d313d3174f58424f8580431535d955d83 (patch)
tree3b886b2af911e3790165966f18f9e420a0283223
parentf82bb2f3057c7e4f81eb85e6f268e596e2c074ae (diff)
downloadnuttx-695f0f3d313d3174f58424f8580431535d955d83.tar.gz
nuttx-695f0f3d313d3174f58424f8580431535d955d83.tar.bz2
nuttx-695f0f3d313d3174f58424f8580431535d955d83.zip
Tiva Ethernet: Move place where interrupts are disabled. It is probably not possible, but the logic looks like it could leave interrupts disabled
-rw-r--r--nuttx/arch/arm/src/tiva/tm4c_ethernet.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/nuttx/arch/arm/src/tiva/tm4c_ethernet.c b/nuttx/arch/arm/src/tiva/tm4c_ethernet.c
index 93d6df9cb..7f63144d8 100644
--- a/nuttx/arch/arm/src/tiva/tm4c_ethernet.c
+++ b/nuttx/arch/arm/src/tiva/tm4c_ethernet.c
@@ -1,7 +1,7 @@
/****************************************************************************
* arch/arm/src/tiva/tm4c_ethernet.c
*
- * Copyright (C) 2014 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2014-2015 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
@@ -2127,22 +2127,24 @@ static int tiva_interrupt(int irq, FAR void *context)
#ifdef CONFIG_NET_NOINTS
uint32_t dmaris;
- /* Disable further Ethernet interrupts. Because Ethernet interrupts are
- * also disabled if the TX timeout event occurs, there can be no race
- * condition here.
- */
-
- up_disable_irq(TIVA_IRQ_ETHCON);
-
- /* Check if a packet transmission just completed. */
+ /* Get the raw interrupt status. */
dmaris = tiva_getreg(TIVA_EMAC_DMARIS);
if (dmaris != 0)
{
+ /* Disable further Ethernet interrupts. Because Ethernet interrupts
+ * are also disabled if the TX timeout event occurs, there can be no
+ * race condition here.
+ */
+
+ up_disable_irq(TIVA_IRQ_ETHCON);
+
+ /* Check if a packet transmission just completed. */
+
if ((dmaris & EMAC_DMAINT_TI) != 0)
{
/* If a TX transfer just completed, then cancel the TX timeout so
- * there will be do race condition between any subsequent timeout
+ * there will be no race condition between any subsequent timeout
* expiration and the deferred interrupt processing.
*/