1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright (C) 2015 Freescale Semiconductor, Inc.
6 #include <fsl_qbman_debug.h>
7 #include "qbman_portal.h"
9 /* QBMan portal management command code */
10 #define QBMAN_BP_QUERY 0x32
11 #define QBMAN_FQ_QUERY 0x44
12 #define QBMAN_FQ_QUERY_NP 0x45
13 #define QBMAN_WQ_QUERY 0x47
14 #define QBMAN_CGR_QUERY 0x51
15 #define QBMAN_WRED_QUERY 0x54
16 #define QBMAN_CGR_STAT_QUERY 0x55
17 #define QBMAN_CGR_STAT_QUERY_CLR 0x56
19 struct qbman_fq_query_desc {
23 uint8_t reserved2[57];
26 int qbman_fq_query_state(struct qbman_swp *s, uint32_t fqid,
27 struct qbman_fq_query_np_rslt *r)
29 struct qbman_fq_query_desc *p;
31 p = (struct qbman_fq_query_desc *)qbman_swp_mc_start(s);
36 *r = *(struct qbman_fq_query_np_rslt *)qbman_swp_mc_complete(s, p,
39 pr_err("qbman: Query FQID %d NP fields failed, no response\n",
44 /* Decode the outcome */
45 QBMAN_BUG_ON((r->verb & QBMAN_RESPONSE_VERB_MASK) != QBMAN_FQ_QUERY_NP);
47 /* Determine success or failure */
48 if (r->rslt != QBMAN_MC_RSLT_OK) {
49 pr_err("Query NP fields of FQID 0x%x failed, code=0x%02x\n",
57 uint32_t qbman_fq_state_frame_count(const struct qbman_fq_query_np_rslt *r)
59 return (r->frm_cnt & 0x00FFFFFF);
62 uint32_t qbman_fq_state_byte_count(const struct qbman_fq_query_np_rslt *r)