if (likely(j)) {
                rx_ring->next_to_alloc = i; /* keep track from page reuse */
                rx_ring->next_to_use = i;
+
+               /* update ENETC's consumer index */
+               enetc_wr_reg_hot(rx_ring->rcir, rx_ring->next_to_use);
        }
 
        return j;
                u32 bd_status;
                u16 size;
 
-               if (cleaned_cnt >= ENETC_RXBD_BUNDLE) {
-                       int count = enetc_refill_rx_ring(rx_ring, cleaned_cnt);
-
-                       /* update ENETC's consumer index */
-                       enetc_wr_reg_hot(rx_ring->rcir, rx_ring->next_to_use);
-                       cleaned_cnt -= count;
-               }
+               if (cleaned_cnt >= ENETC_RXBD_BUNDLE)
+                       cleaned_cnt -= enetc_refill_rx_ring(rx_ring,
+                                                           cleaned_cnt);
 
                rxbd = enetc_rxbd(rx_ring, i);
                bd_status = le32_to_cpu(rxbd->r.lstatus);
        rx_ring->rcir = hw->reg + ENETC_BDR(RX, idx, ENETC_RBCIR);
        rx_ring->idr = hw->reg + ENETC_SIRXIDR;
 
+       enetc_lock_mdio();
        enetc_refill_rx_ring(rx_ring, enetc_bd_unused(rx_ring));
-       /* update ENETC's consumer index */
-       enetc_rxbdr_wr(hw, idx, ENETC_RBCIR, rx_ring->next_to_use);
+       enetc_unlock_mdio();
 
        /* enable ring */
        enetc_rxbdr_wr(hw, idx, ENETC_RBMR, rbmr);