if (qcp_rd_p == tx_ring->qcp_rd_p)
                return;
 
-       if (qcp_rd_p > tx_ring->qcp_rd_p)
-               todo = qcp_rd_p - tx_ring->qcp_rd_p;
-       else
-               todo = qcp_rd_p + tx_ring->cnt - tx_ring->qcp_rd_p;
+       todo = D_IDX(tx_ring, qcp_rd_p + tx_ring->cnt - tx_ring->qcp_rd_p);
 
        while (todo--) {
                idx = D_IDX(tx_ring, tx_ring->rd_p++);
        if (qcp_rd_p == tx_ring->qcp_rd_p)
                return true;
 
-       if (qcp_rd_p > tx_ring->qcp_rd_p)
-               todo = qcp_rd_p - tx_ring->qcp_rd_p;
-       else
-               todo = qcp_rd_p + tx_ring->cnt - tx_ring->qcp_rd_p;
+       todo = D_IDX(tx_ring, qcp_rd_p + tx_ring->cnt - tx_ring->qcp_rd_p);
 
        done_all = todo <= NFP_NET_XDP_MAX_COMPLETE;
        todo = min(todo, NFP_NET_XDP_MAX_COMPLETE);