Disable RX interrupts in oct_rx_shutdown(). This way we don't need to
expose the RX IRQ numbers outside the RX module.

Signed-off-by: Aaro Koskinen <aaro.koski...@iki.fi>
---
 drivers/staging/octeon/ethernet-rx.c | 9 +++++++++
 drivers/staging/octeon/ethernet.c    | 9 ---------
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/drivers/staging/octeon/ethernet-rx.c 
b/drivers/staging/octeon/ethernet-rx.c
index a10fe3a..5b26f2a 100644
--- a/drivers/staging/octeon/ethernet-rx.c
+++ b/drivers/staging/octeon/ethernet-rx.c
@@ -495,5 +495,14 @@ void cvm_oct_rx_initialize(void)
 
 void cvm_oct_rx_shutdown(void)
 {
+       /* Disable POW interrupt */
+       if (OCTEON_IS_MODEL(OCTEON_CN68XX))
+               cvmx_write_csr(CVMX_SSO_WQ_INT_THRX(pow_receive_group), 0);
+       else
+               cvmx_write_csr(CVMX_POW_WQ_INT_THRX(pow_receive_group), 0);
+
+       /* Free the interrupt handler */
+       free_irq(OCTEON_IRQ_WORKQ0 + pow_receive_group, cvm_oct_device);
+
        netif_napi_del(&cvm_oct_napi);
 }
diff --git a/drivers/staging/octeon/ethernet.c 
b/drivers/staging/octeon/ethernet.c
index 073a1e3..1e2e1ef 100644
--- a/drivers/staging/octeon/ethernet.c
+++ b/drivers/staging/octeon/ethernet.c
@@ -853,17 +853,8 @@ static int cvm_oct_remove(struct platform_device *pdev)
 {
        int port;
 
-       /* Disable POW interrupt */
-       if (OCTEON_IS_MODEL(OCTEON_CN68XX))
-               cvmx_write_csr(CVMX_SSO_WQ_INT_THRX(pow_receive_group), 0);
-       else
-               cvmx_write_csr(CVMX_POW_WQ_INT_THRX(pow_receive_group), 0);
-
        cvmx_ipd_disable();
 
-       /* Free the interrupt handler */
-       free_irq(OCTEON_IRQ_WORKQ0 + pow_receive_group, cvm_oct_device);
-
        atomic_inc_return(&cvm_oct_poll_queue_stopping);
        cancel_delayed_work_sync(&cvm_oct_rx_refill_work);
 
-- 
2.9.2

Reply via email to