diff options
author | Gregory Nutt <gnutt@nuttx.org> | 2015-01-27 17:32:36 -0600 |
---|---|---|
committer | Gregory Nutt <gnutt@nuttx.org> | 2015-01-27 17:32:36 -0600 |
commit | e23fb86f1bd62c454413147795466504eea771bc (patch) | |
tree | f4822eafa46e16f8a42515fa3bf55a8515710e57 | |
parent | d4a0d16b5bd70e65578898a46d1377f8367a847f (diff) | |
parent | a67f1112b12c9b44a5c816f8a8a3884f900ae8c8 (diff) | |
download | nuttx-e23fb86f1bd62c454413147795466504eea771bc.tar.gz nuttx-e23fb86f1bd62c454413147795466504eea771bc.tar.bz2 nuttx-e23fb86f1bd62c454413147795466504eea771bc.zip |
Merge branch 'afunix' of ssh://git.code.sf.net/p/nuttx/git into afunix
-rw-r--r-- | nuttx/arch/arm/src/tiva/tm4c_ethernet.c | 22 |
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. */ |