netdev: octeon_mgmt: Fix race manipulating irq bits.
authorDavid Daney <ddaney@caviumnetworks.com>
Wed, 5 May 2010 13:03:10 +0000 (13:03 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 6 May 2010 04:22:34 +0000 (21:22 -0700)
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>
drivers/net/octeon/octeon_mgmt.c

index b975a2fad9530ff8dad979213d36d8e924fb49f0..633fa89c442f6b64623f37ec667ee79a93e03422 100644 (file)
@@ -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) {