|
@@ -90,22 +90,15 @@ static void fd_inc(struct qm_fd *fd)
|
|
|
}
|
|
|
|
|
|
/* The only part of the 'fd' we can't memcmp() is the ppid */
|
|
|
-static int fd_cmp(const struct qm_fd *a, const struct qm_fd *b)
|
|
|
+static bool fd_neq(const struct qm_fd *a, const struct qm_fd *b)
|
|
|
{
|
|
|
- int r = (qm_fd_addr_get64(a) == qm_fd_addr_get64(b)) ? 0 : -1;
|
|
|
+ bool neq = qm_fd_addr_get64(a) != qm_fd_addr_get64(b);
|
|
|
|
|
|
- if (!r) {
|
|
|
- enum qm_fd_format fmt_a, fmt_b;
|
|
|
+ neq |= qm_fd_get_format(a) != qm_fd_get_format(b);
|
|
|
+ neq |= a->cfg != b->cfg;
|
|
|
+ neq |= a->cmd != b->cmd;
|
|
|
|
|
|
- fmt_a = qm_fd_get_format(a);
|
|
|
- fmt_b = qm_fd_get_format(b);
|
|
|
- r = fmt_a - fmt_b;
|
|
|
- }
|
|
|
- if (!r)
|
|
|
- r = a->cfg - b->cfg;
|
|
|
- if (!r)
|
|
|
- r = a->cmd - b->cmd;
|
|
|
- return r;
|
|
|
+ return neq;
|
|
|
}
|
|
|
|
|
|
/* test */
|
|
@@ -217,12 +210,12 @@ 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_cmp(&fd_dq, &dq->fd))) {
|
|
|
+ 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_cmp(&fd_dq, &fd)) {
|
|
|
+ if (!(dq->stat & QM_DQRR_STAT_UNSCHEDULED) && !fd_neq(&fd_dq, &fd)) {
|
|
|
sdqcr_complete = 1;
|
|
|
wake_up(&waitqueue);
|
|
|
}
|