-repeat:
- is_repeat = 0;
-
- /* issue the deq command one more time to get another set of packets */
- if (next_pull) {
- q_storage->toggle ^= 1;
- dq_storage1 = q_storage->dq_storage[q_storage->toggle];
- qbman_pull_desc_clear(&pulldesc);
-
- if (next_pull > DPAA2_DQRR_RING_SIZE) {
- qbman_pull_desc_set_numframes(&pulldesc,
- DPAA2_DQRR_RING_SIZE);
- next_pull = next_pull - DPAA2_DQRR_RING_SIZE;
- q_storage->last_num_pkts = DPAA2_DQRR_RING_SIZE;
- } else {
- qbman_pull_desc_set_numframes(&pulldesc, next_pull);
- q_storage->last_num_pkts = next_pull;
- next_pull = 0;
- }
- qbman_pull_desc_set_fq(&pulldesc, fqid);
- qbman_pull_desc_set_storage(&pulldesc, dq_storage1,
- (dma_addr_t)(DPAA2_VADDR_TO_IOVA(dq_storage1)), 1);
- while (1) {
- if (qbman_swp_pull(swp, &pulldesc)) {
- PMD_RX_LOG(WARNING,
- "VDQ command not issued.QBMAN busy\n");
- /* Portal was busy, try again */
- continue;
- }
- break;
- }
- is_repeat = 1;
- q_storage->active_dqs = dq_storage1;
- set_swp_active_dqs(DPAA2_PER_LCORE_DPIO->index, dq_storage1);
- }
-
- rte_prefetch0((void *)((uint64_t)(dq_storage + 1)));
-
- num_pulled = 0;