]> rtime.felk.cvut.cz Git - zynq/linux.git/commitdiff
net: xilinx_emacps: Release receive BDs when there is a resource error
authorPunnaiah Choudary Kalluri <punnaiah.choudary.kalluri@xilinx.com>
Tue, 22 Apr 2014 15:28:46 +0000 (20:58 +0530)
committerMichal Simek <michal.simek@xilinx.com>
Wed, 23 Apr 2014 05:33:21 +0000 (07:33 +0200)
Driver should clean/release the BDs when it detects a resource error to
ensure the proper cleanup and allow the controller to recover from rx
lockdown issue.

Signed-off-by: Punnaiah Choudary Kalluri <punnaia@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
drivers/net/ethernet/xilinx/xilinx_emacps.c

index 1b76742af0b9e2317dd850067c931aaafe192722..de8f31d5a1d9bb352caa93eace85b3ade26f629f 100644 (file)
@@ -1484,6 +1484,9 @@ static irqreturn_t xemacps_interrupt(int irq, void *dev_id)
                        xemacps_write(lp->baseaddr,
                                        XEMACPS_NWCTRL_OFFSET, regctrl);
                        spin_unlock(&lp->nwctrlreg_lock);
+                       xemacps_write(lp->baseaddr,
+                               XEMACPS_IDR_OFFSET, XEMACPS_IXR_FRAMERX_MASK);
+                       napi_schedule(&lp->napi);
                }
 
                if (regisr & XEMACPS_IXR_FRAMERX_MASK) {