Lines Matching refs:fq

268 	struct qm_mcc_fq fq;
957 static inline void fq_set(struct qman_fq *fq, u32 mask)
959 fq->flags |= mask;
962 static inline void fq_clear(struct qman_fq *fq, u32 mask)
964 fq->flags &= ~mask;
967 static inline int fq_isset(struct qman_fq *fq, u32 mask)
969 return fq->flags & mask;
972 static inline int fq_isclear(struct qman_fq *fq, u32 mask)
974 return !(fq->flags & mask);
1114 pr_debug("Allocated fq lookup table at %p, entry count %u\n",
1121 struct qman_fq *fq;
1127 fq = fq_table[idx];
1128 DPAA_ASSERT(!fq || idx == fq->idx);
1130 return fq;
1134 * Only returns full-service fq objects, not enqueue-only
1151 static u32 fq_to_tag(struct qman_fq *fq)
1154 return fq->idx;
1156 return (u32)fq;
1425 static inline void fq_state_change(struct qman_portal *p, struct qman_fq *fq,
1430 DPAA_ASSERT(fq_isset(fq, QMAN_FQ_STATE_ORL));
1431 fq_clear(fq, QMAN_FQ_STATE_ORL);
1434 DPAA_ASSERT(fq->state == qman_fq_state_parked ||
1435 fq->state == qman_fq_state_sched);
1436 DPAA_ASSERT(fq_isset(fq, QMAN_FQ_STATE_CHANGING));
1437 fq_clear(fq, QMAN_FQ_STATE_CHANGING);
1438 if (msg->fq.fqs & QM_MR_FQS_NOTEMPTY)
1439 fq_set(fq, QMAN_FQ_STATE_NE);
1440 if (msg->fq.fqs & QM_MR_FQS_ORLPRESENT)
1441 fq_set(fq, QMAN_FQ_STATE_ORL);
1442 fq->state = qman_fq_state_retired;
1445 DPAA_ASSERT(fq->state == qman_fq_state_sched);
1446 DPAA_ASSERT(fq_isclear(fq, QMAN_FQ_STATE_CHANGING));
1447 fq->state = qman_fq_state_parked;
1488 struct qman_fq *fq;
1509 fq = fqid_to_fq(qm_fqid_get(&msg->fq));
1510 if (WARN_ON(!fq))
1512 fq_state_change(p, fq, msg, verb);
1513 if (fq->cb.fqs)
1514 fq->cb.fqs(p, fq, msg);
1518 fq = tag_to_fq(be32_to_cpu(msg->fq.context_b));
1519 fq_state_change(p, fq, msg, verb);
1520 if (fq->cb.fqs)
1521 fq->cb.fqs(p, fq, msg);
1532 fq = tag_to_fq(be32_to_cpu(msg->ern.tag));
1533 fq->cb.ern(p, fq, msg);
1571 static noinline void clear_vdqcr(struct qman_portal *p, struct qman_fq *fq)
1574 fq_clear(fq, QMAN_FQ_STATE_VDQCR);
1608 struct qman_fq *fq;
1624 fq = p->vdqcr_owned;
1632 fq_clear(fq, QMAN_FQ_STATE_NE);
1639 res = fq->cb.dqrr(p, fq, dq);
1644 clear_vdqcr(p, fq);
1647 fq = tag_to_fq(be32_to_cpu(dq->context_b));
1649 res = fq->cb.dqrr(p, fq, dq);
1795 int qman_create_fq(u32 fqid, u32 flags, struct qman_fq *fq)
1803 fq->fqid = fqid;
1804 fq->flags = flags;
1805 fq->state = qman_fq_state_oos;
1806 fq->cgr_groupid = 0;
1814 fq->idx = fqid * 2;
1816 fq->idx++;
1818 WARN_ON(fq_table[fq->idx]);
1819 fq_table[fq->idx] = fq;
1825 void qman_destroy_fq(struct qman_fq *fq)
1831 switch (fq->state) {
1834 if (fq_isset(fq, QMAN_FQ_FLAG_DYNAMIC_FQID))
1835 qman_release_fqid(fq->fqid);
1837 DPAA_ASSERT(fq_table[fq->idx]);
1838 fq_table[fq->idx] = NULL;
1847 u32 qman_fq_fqid(struct qman_fq *fq)
1849 return fq->fqid;
1853 int qman_init_fq(struct qman_fq *fq, u32 flags, struct qm_mcc_initfq *opts)
1864 if (fq->state != qman_fq_state_oos &&
1865 fq->state != qman_fq_state_parked)
1868 if (fq_isset(fq, QMAN_FQ_FLAG_NO_MODIFY))
1878 if (fq_isset(fq, QMAN_FQ_STATE_CHANGING) ||
1879 (fq->state != qman_fq_state_oos &&
1880 fq->state != qman_fq_state_parked)) {
1887 qm_fqid_set(&mcc->fq, fq->fqid);
1894 if (fq_isclear(fq, QMAN_FQ_FLAG_TO_DCPORTAL)) {
1898 mcc->initfq.fqd.context_b = cpu_to_be32(fq_to_tag(fq));
1912 phys_fq = dma_map_single(p->config->dev, fq,
1913 sizeof(*fq), DMA_TO_DEVICE);
1950 fq_set(fq, QMAN_FQ_STATE_CGR_EN);
1952 fq_clear(fq, QMAN_FQ_STATE_CGR_EN);
1955 fq->cgr_groupid = opts->fqd.cgid;
1957 fq->state = (flags & QMAN_INITFQ_FLAG_SCHED) ?
1966 int qman_schedule_fq(struct qman_fq *fq)
1973 if (fq->state != qman_fq_state_parked)
1976 if (fq_isset(fq, QMAN_FQ_FLAG_NO_MODIFY))
1981 if (fq_isset(fq, QMAN_FQ_STATE_CHANGING) ||
1982 fq->state != qman_fq_state_parked) {
1987 qm_fqid_set(&mcc->fq, fq->fqid);
2000 fq->state = qman_fq_state_sched;
2007 int qman_retire_fq(struct qman_fq *fq, u32 *flags)
2015 if (fq->state != qman_fq_state_parked &&
2016 fq->state != qman_fq_state_sched)
2019 if (fq_isset(fq, QMAN_FQ_FLAG_NO_MODIFY))
2023 if (fq_isset(fq, QMAN_FQ_STATE_CHANGING) ||
2024 fq->state == qman_fq_state_retired ||
2025 fq->state == qman_fq_state_oos) {
2030 qm_fqid_set(&mcc->fq, fq->fqid);
2051 /* Process 'fq' right away, we'll ignore FQRNI */
2053 fq_set(fq, QMAN_FQ_STATE_NE);
2055 fq_set(fq, QMAN_FQ_STATE_ORL);
2057 *flags = fq->flags;
2058 fq->state = qman_fq_state_retired;
2059 if (fq->cb.fqs) {
2064 * fq may have been OOS'd and free()'d already). But if
2072 msg.fq.fqs = mcr->alterfq.fqs;
2073 qm_fqid_set(&msg.fq, fq->fqid);
2074 msg.fq.context_b = cpu_to_be32(fq_to_tag(fq));
2075 fq->cb.fqs(p, fq, &msg);
2079 fq_set(fq, QMAN_FQ_STATE_CHANGING);
2089 int qman_oos_fq(struct qman_fq *fq)
2096 if (fq->state != qman_fq_state_retired)
2099 if (fq_isset(fq, QMAN_FQ_FLAG_NO_MODIFY))
2103 if (fq_isset(fq, QMAN_FQ_STATE_BLOCKOOS) ||
2104 fq->state != qman_fq_state_retired) {
2109 qm_fqid_set(&mcc->fq, fq->fqid);
2120 fq->state = qman_fq_state_oos;
2127 int qman_query_fq(struct qman_fq *fq, struct qm_fqd *fqd)
2135 qm_fqid_set(&mcc->fq, fq->fqid);
2152 int qman_query_fq_np(struct qman_fq *fq, struct qm_mcr_queryfq_np *np)
2160 qm_fqid_set(&mcc->fq, fq->fqid);
2223 static int set_p_vdqcr(struct qman_portal *p, struct qman_fq *fq, u32 vdqcr)
2231 if (fq_isset(fq, QMAN_FQ_STATE_VDQCR))
2234 fq_set(fq, QMAN_FQ_STATE_VDQCR);
2235 p->vdqcr_owned = fq;
2243 static int set_vdqcr(struct qman_portal **p, struct qman_fq *fq, u32 vdqcr)
2248 ret = set_p_vdqcr(*p, fq, vdqcr);
2253 static int wait_vdqcr_start(struct qman_portal **p, struct qman_fq *fq,
2260 !set_vdqcr(p, fq, vdqcr));
2262 wait_event(affine_queue, !set_vdqcr(p, fq, vdqcr));
2266 int qman_volatile_dequeue(struct qman_fq *fq, u32 flags, u32 vdqcr)
2271 if (fq->state != qman_fq_state_parked &&
2272 fq->state != qman_fq_state_retired)
2276 if (fq_isset(fq, QMAN_FQ_STATE_VDQCR))
2278 vdqcr = (vdqcr & ~QM_VDQCR_FQID_MASK) | fq->fqid;
2280 ret = wait_vdqcr_start(&p, fq, vdqcr, flags);
2282 ret = set_vdqcr(&p, fq, vdqcr);
2295 !fq_isset(fq, QMAN_FQ_STATE_VDQCR));
2298 !fq_isset(fq, QMAN_FQ_STATE_VDQCR));
2312 int qman_enqueue(struct qman_fq *fq, const struct qm_fd *fd)
2342 qm_fqid_set(eq, fq->fqid);
2343 eq->tag = cpu_to_be32(fq_to_tag(fq));
2632 qm_fqid_set(&mcc->fq, fqid);
2647 qm_fqid_set(&mcc->fq, fqid);
2678 qm_fqid_set(&mcc->fq, fqid);
2779 qm_fqid_set(&mcc->fq, fqid);
2799 qm_fqid_set(&mcc->fq, fqid);
2896 struct qman_fq fq = {
2904 err = qman_query_fq_np(&fq, &np);
2914 err = qman_query_fq(&fq, &fqd);
2919 err = qman_shutdown_fq(fq.fqid);
2929 fq.fqid++;
2954 struct qman_fq fq = {
2962 err = qman_query_fq_np(&fq, &np);
2972 err = qman_query_fq(&fq, &fqd);
2978 cgrid, fq.fqid);
2983 fq.fqid++;