diff --git a/drivers/net/sun4i/sun4i_wemac.c b/drivers/net/sun4i/sun4i_wemac.c
index 92cf994..69fee4e 100644
--- a/drivers/net/sun4i/sun4i_wemac.c
+++ b/drivers/net/sun4i/sun4i_wemac.c
@@ -1267,6 +1267,11 @@ wemac_rx(struct net_device *dev)
                   the interrupts disabled, but the second will fix
                   it */
                Rxcount = readl(db->emac_vbase + EMAC_RX_FBC_REG);
+               if(!Rxcount)
+               {
+                       udelay(150);
+                       Rxcount = readl(db->emac_vbase + EMAC_RX_FBC_REG);
+               }
 
                if (netif_msg_rx_status(db))
                        dev_dbg(db->dev, "RXCount: %x\n", Rxcount);
@@ -1291,11 +1296,7 @@ wemac_rx(struct net_device *dev)
                        reg_val = readl(db->emac_vbase + EMAC_INT_CTL_REG);
                        reg_val |= (0xf<<0) | (0x01<<8);
                        writel(reg_val, db->emac_vbase + EMAC_INT_CTL_REG);
-
-                       /* had one stuck? */
-                       Rxcount = readl(db->emac_vbase + EMAC_RX_FBC_REG);
-                       if (!Rxcount)
-                               return;
+                       return;
                }
