aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/octeon
diff options
context:
space:
mode:
authorDavid Daney <ddaney@caviumnetworks.com>2010-05-05 13:03:10 +0000
committerDavid S. Miller <davem@davemloft.net>2010-05-05 21:22:34 -0700
commita0cfa850ac639759cd68a121920f3e474ce9dfb1 (patch)
tree7e825478bf38dcb06063e7b228eb24c479320823 /drivers/net/octeon
parentnetdev: octeon_mgmt: Fix race condition freeing TX buffers. (diff)
downloadlinux-dev-a0cfa850ac639759cd68a121920f3e474ce9dfb1.tar.xz
linux-dev-a0cfa850ac639759cd68a121920f3e474ce9dfb1.zip
netdev: octeon_mgmt: Fix race manipulating irq bits.
Don't re-read the interrupt status register, clear the exact bits we will be testing. Signed-off-by: David Daney <ddaney@caviumnetworks.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/octeon')
-rw-r--r--drivers/net/octeon/octeon_mgmt.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/net/octeon/octeon_mgmt.c b/drivers/net/octeon/octeon_mgmt.c
index b975a2fad953..633fa89c442f 100644
--- a/drivers/net/octeon/octeon_mgmt.c
+++ b/drivers/net/octeon/octeon_mgmt.c
@@ -598,8 +598,7 @@ static irqreturn_t octeon_mgmt_interrupt(int cpl, void *dev_id)
mixx_isr.u64 = cvmx_read_csr(CVMX_MIXX_ISR(port));
/* Clear any pending interrupts */
- cvmx_write_csr(CVMX_MIXX_ISR(port),
- cvmx_read_csr(CVMX_MIXX_ISR(port)));
+ cvmx_write_csr(CVMX_MIXX_ISR(port), mixx_isr.u64);
cvmx_read_csr(CVMX_MIXX_ISR(port));
if (mixx_isr.s.irthresh) {