static void do_enqueues(struct qman_fq *fq) { unsigned int loop; for (loop = 0; loop < NUM_ENQUEUES; loop++) { if (qman_enqueue(fq, &fd, QMAN_ENQUEUE_FLAG_WAIT | (((loop + 1) == NUM_ENQUEUES) ? QMAN_ENQUEUE_FLAG_WAIT_SYNC : 0))) panic("qman_enqueue() failed\n"); fd_inc(&fd); } }
static enum qman_cb_dqrr_result cb_dqrr(struct qman_portal *p, struct qman_fq *fq, const struct qm_dqrr_entry *dq) { if (WARN_ON(fd_neq(&fd_dq, &dq->fd))) { pr_err("BADNESS: dequeued frame doesn't match;\n"); return qman_cb_dqrr_consume; } fd_inc(&fd_dq); if (!(dq->stat & QM_DQRR_STAT_UNSCHEDULED) && !fd_neq(&fd_dq, &fd)) { sdqcr_complete = 1; wake_up(&waitqueue); } return qman_cb_dqrr_consume; }
/* test */ static int do_enqueues(struct qman_fq *fq) { unsigned int loop; int err = 0; for (loop = 0; loop < NUM_ENQUEUES; loop++) { if (qman_enqueue(fq, &fd)) { pr_crit("qman_enqueue() failed\n"); err = -EIO; } fd_inc(&fd); } return err; }
static void do_enqueues(struct qman_fq *fq) { unsigned int loop = test_frames; dcbt_rw(eq_capture); while (loop) { int err; if (loop == test_start) eq_capture[0] = mfatb(); retry: err = qman_enqueue(fq, &fd, 0); if (err) { eq_jam++; cpu_spin(ENQUEUE_BACKOFF); goto retry; } #ifdef TEST_FD fd_inc(&fd); #endif loop--; } eq_capture[1] = mfatb(); }