1dfb02998SAshwin Sekhar T K /* SPDX-License-Identifier: BSD-3-Clause 2dfb02998SAshwin Sekhar T K * Copyright(C) 2021 Marvell. 3dfb02998SAshwin Sekhar T K */ 4dfb02998SAshwin Sekhar T K 5dfb02998SAshwin Sekhar T K #include "roc_api.h" 6dfb02998SAshwin Sekhar T K #include "roc_priv.h" 7dfb02998SAshwin Sekhar T K 8bce33776SRahul Bhansali #define npa_dump plt_dump 9dfb02998SAshwin Sekhar T K 10dfb02998SAshwin Sekhar T K static inline void 11dfb02998SAshwin Sekhar T K npa_pool_dump(__io struct npa_pool_s *pool) 12dfb02998SAshwin Sekhar T K { 13dfb02998SAshwin Sekhar T K npa_dump("W0: Stack base\t\t0x%" PRIx64 "", pool->stack_base); 14dfb02998SAshwin Sekhar T K npa_dump("W1: ena \t\t%d\nW1: nat_align \t\t%d\nW1: stack_caching \t%d", 15dfb02998SAshwin Sekhar T K pool->ena, pool->nat_align, pool->stack_caching); 16dfb02998SAshwin Sekhar T K npa_dump("W1: stack_way_mask\t%d\nW1: buf_offset\t\t%d", 17dfb02998SAshwin Sekhar T K pool->stack_way_mask, pool->buf_offset); 18dfb02998SAshwin Sekhar T K npa_dump("W1: buf_size \t\t%d", pool->buf_size); 19dfb02998SAshwin Sekhar T K 20dfb02998SAshwin Sekhar T K npa_dump("W2: stack_max_pages \t%d\nW2: stack_pages\t\t%d", 21dfb02998SAshwin Sekhar T K pool->stack_max_pages, pool->stack_pages); 22dfb02998SAshwin Sekhar T K 23dfb02998SAshwin Sekhar T K npa_dump("W3: op_pc \t\t0x%" PRIx64 "", (uint64_t)pool->op_pc); 24dfb02998SAshwin Sekhar T K 25dfb02998SAshwin Sekhar T K npa_dump("W4: stack_offset\t%d\nW4: shift\t\t%d\nW4: avg_level\t\t%d", 26dfb02998SAshwin Sekhar T K pool->stack_offset, pool->shift, pool->avg_level); 27dfb02998SAshwin Sekhar T K npa_dump("W4: avg_con \t\t%d\nW4: fc_ena\t\t%d\nW4: fc_stype\t\t%d", 28dfb02998SAshwin Sekhar T K pool->avg_con, pool->fc_ena, pool->fc_stype); 29dfb02998SAshwin Sekhar T K npa_dump("W4: fc_hyst_bits\t%d\nW4: fc_up_crossing\t%d", 30dfb02998SAshwin Sekhar T K pool->fc_hyst_bits, pool->fc_up_crossing); 31dfb02998SAshwin Sekhar T K npa_dump("W4: update_time\t\t%d\n", pool->update_time); 32dfb02998SAshwin Sekhar T K 33dfb02998SAshwin Sekhar T K npa_dump("W5: fc_addr\t\t0x%" PRIx64 "\n", pool->fc_addr); 34dfb02998SAshwin Sekhar T K 35dfb02998SAshwin Sekhar T K npa_dump("W6: ptr_start\t\t0x%" PRIx64 "\n", pool->ptr_start); 36dfb02998SAshwin Sekhar T K 37dfb02998SAshwin Sekhar T K npa_dump("W7: ptr_end\t\t0x%" PRIx64 "\n", pool->ptr_end); 38dfb02998SAshwin Sekhar T K npa_dump("W8: err_int\t\t%d\nW8: err_int_ena\t\t%d", pool->err_int, 39dfb02998SAshwin Sekhar T K pool->err_int_ena); 40dfb02998SAshwin Sekhar T K npa_dump("W8: thresh_int\t\t%d", pool->thresh_int); 41dfb02998SAshwin Sekhar T K 42dfb02998SAshwin Sekhar T K npa_dump("W8: thresh_int_ena\t%d\nW8: thresh_up\t\t%d", 43dfb02998SAshwin Sekhar T K pool->thresh_int_ena, pool->thresh_up); 44dfb02998SAshwin Sekhar T K npa_dump("W8: thresh_qint_idx\t%d\nW8: err_qint_idx\t%d", 45dfb02998SAshwin Sekhar T K pool->thresh_qint_idx, pool->err_qint_idx); 46dfb02998SAshwin Sekhar T K } 47dfb02998SAshwin Sekhar T K 48dfb02998SAshwin Sekhar T K static inline void 49dfb02998SAshwin Sekhar T K npa_aura_dump(__io struct npa_aura_s *aura) 50dfb02998SAshwin Sekhar T K { 51dfb02998SAshwin Sekhar T K npa_dump("W0: Pool addr\t\t0x%" PRIx64 "\n", aura->pool_addr); 52dfb02998SAshwin Sekhar T K 53dfb02998SAshwin Sekhar T K npa_dump("W1: ena\t\t\t%d\nW1: pool caching\t%d\nW1: pool way mask\t%d", 54dfb02998SAshwin Sekhar T K aura->ena, aura->pool_caching, aura->pool_way_mask); 55dfb02998SAshwin Sekhar T K npa_dump("W1: avg con\t\t%d\nW1: pool drop ena\t%d", aura->avg_con, 56dfb02998SAshwin Sekhar T K aura->pool_drop_ena); 57dfb02998SAshwin Sekhar T K npa_dump("W1: aura drop ena\t%d", aura->aura_drop_ena); 58dfb02998SAshwin Sekhar T K npa_dump("W1: bp_ena\t\t%d\nW1: aura drop\t\t%d\nW1: aura shift\t\t%d", 59dfb02998SAshwin Sekhar T K aura->bp_ena, aura->aura_drop, aura->shift); 60dfb02998SAshwin Sekhar T K npa_dump("W1: avg_level\t\t%d\n", aura->avg_level); 61dfb02998SAshwin Sekhar T K 62dfb02998SAshwin Sekhar T K npa_dump("W2: count\t\t%" PRIx64 "\nW2: nix0_bpid\t\t%d", 63dfb02998SAshwin Sekhar T K (uint64_t)aura->count, aura->nix0_bpid); 64dfb02998SAshwin Sekhar T K npa_dump("W2: nix1_bpid\t\t%d", aura->nix1_bpid); 65dfb02998SAshwin Sekhar T K 66dfb02998SAshwin Sekhar T K npa_dump("W3: limit\t\t%" PRIx64 "\nW3: bp\t\t\t%d\nW3: fc_ena\t\t%d\n", 67dfb02998SAshwin Sekhar T K (uint64_t)aura->limit, aura->bp, aura->fc_ena); 68dfb02998SAshwin Sekhar T K npa_dump("W3: fc_up_crossing\t%d\nW3: fc_stype\t\t%d", 69dfb02998SAshwin Sekhar T K aura->fc_up_crossing, aura->fc_stype); 70dfb02998SAshwin Sekhar T K 71dfb02998SAshwin Sekhar T K npa_dump("W3: fc_hyst_bits\t%d", aura->fc_hyst_bits); 72dfb02998SAshwin Sekhar T K 73dfb02998SAshwin Sekhar T K npa_dump("W4: fc_addr\t\t0x%" PRIx64 "\n", aura->fc_addr); 74dfb02998SAshwin Sekhar T K 75dfb02998SAshwin Sekhar T K npa_dump("W5: pool_drop\t\t%d\nW5: update_time\t\t%d", aura->pool_drop, 76dfb02998SAshwin Sekhar T K aura->update_time); 77dfb02998SAshwin Sekhar T K npa_dump("W5: err_int\t\t%d", aura->err_int); 78dfb02998SAshwin Sekhar T K npa_dump("W5: err_int_ena\t\t%d\nW5: thresh_int\t\t%d", 79dfb02998SAshwin Sekhar T K aura->err_int_ena, aura->thresh_int); 80dfb02998SAshwin Sekhar T K npa_dump("W5: thresh_int_ena\t%d", aura->thresh_int_ena); 81dfb02998SAshwin Sekhar T K 82dfb02998SAshwin Sekhar T K npa_dump("W5: thresh_up\t\t%d\nW5: thresh_qint_idx\t%d", 83dfb02998SAshwin Sekhar T K aura->thresh_up, aura->thresh_qint_idx); 84dfb02998SAshwin Sekhar T K npa_dump("W5: err_qint_idx\t%d", aura->err_qint_idx); 85dfb02998SAshwin Sekhar T K 86dfb02998SAshwin Sekhar T K npa_dump("W6: thresh\t\t%" PRIx64 "\n", (uint64_t)aura->thresh); 87dfb02998SAshwin Sekhar T K } 88dfb02998SAshwin Sekhar T K 89dfb02998SAshwin Sekhar T K int 90dfb02998SAshwin Sekhar T K roc_npa_ctx_dump(void) 91dfb02998SAshwin Sekhar T K { 92*143a419eSAshwin Sekhar T K struct npa_cn20k_aq_enq_req *aq_cn20k; 93dfb02998SAshwin Sekhar T K struct npa_aq_enq_rsp *rsp; 94*143a419eSAshwin Sekhar T K struct npa_aq_enq_req *aq; 9544a9307cSRakesh Kudurumalla struct mbox *mbox; 96dfb02998SAshwin Sekhar T K struct npa_lf *lf; 97dfb02998SAshwin Sekhar T K uint32_t q; 98dfb02998SAshwin Sekhar T K int rc = 0; 99dfb02998SAshwin Sekhar T K 100dfb02998SAshwin Sekhar T K lf = idev_npa_obj_get(); 101dfb02998SAshwin Sekhar T K if (lf == NULL) 102dfb02998SAshwin Sekhar T K return NPA_ERR_DEVICE_NOT_BOUNDED; 10344a9307cSRakesh Kudurumalla mbox = mbox_get(lf->mbox); 104dfb02998SAshwin Sekhar T K 105dfb02998SAshwin Sekhar T K for (q = 0; q < lf->nr_pools; q++) { 106dfb02998SAshwin Sekhar T K /* Skip disabled POOL */ 107dfb02998SAshwin Sekhar T K if (plt_bitmap_get(lf->npa_bmp, q)) 108dfb02998SAshwin Sekhar T K continue; 109dfb02998SAshwin Sekhar T K 110*143a419eSAshwin Sekhar T K if (roc_model_is_cn20k()) { 111*143a419eSAshwin Sekhar T K aq_cn20k = mbox_alloc_msg_npa_cn20k_aq_enq(mbox); 112*143a419eSAshwin Sekhar T K aq = (struct npa_aq_enq_req *)aq_cn20k; 113*143a419eSAshwin Sekhar T K } else { 11444a9307cSRakesh Kudurumalla aq = mbox_alloc_msg_npa_aq_enq(mbox); 115*143a419eSAshwin Sekhar T K } 11644a9307cSRakesh Kudurumalla if (aq == NULL) { 11744a9307cSRakesh Kudurumalla rc = -ENOSPC; 11844a9307cSRakesh Kudurumalla goto exit; 11944a9307cSRakesh Kudurumalla } 120dfb02998SAshwin Sekhar T K aq->aura_id = q; 121dfb02998SAshwin Sekhar T K aq->ctype = NPA_AQ_CTYPE_POOL; 122dfb02998SAshwin Sekhar T K aq->op = NPA_AQ_INSTOP_READ; 123dfb02998SAshwin Sekhar T K 12444a9307cSRakesh Kudurumalla rc = mbox_process_msg(mbox, (void *)&rsp); 125dfb02998SAshwin Sekhar T K if (rc) { 126dfb02998SAshwin Sekhar T K plt_err("Failed to get pool(%d) context", q); 12744a9307cSRakesh Kudurumalla goto exit; 128dfb02998SAshwin Sekhar T K } 129dfb02998SAshwin Sekhar T K npa_dump("============== pool=%d ===============\n", q); 130dfb02998SAshwin Sekhar T K npa_pool_dump(&rsp->pool); 131dfb02998SAshwin Sekhar T K } 132dfb02998SAshwin Sekhar T K 133dfb02998SAshwin Sekhar T K for (q = 0; q < lf->nr_pools; q++) { 134dfb02998SAshwin Sekhar T K /* Skip disabled AURA */ 135dfb02998SAshwin Sekhar T K if (plt_bitmap_get(lf->npa_bmp, q)) 136dfb02998SAshwin Sekhar T K continue; 137dfb02998SAshwin Sekhar T K 138*143a419eSAshwin Sekhar T K if (roc_model_is_cn20k()) { 139*143a419eSAshwin Sekhar T K aq_cn20k = mbox_alloc_msg_npa_cn20k_aq_enq(mbox); 140*143a419eSAshwin Sekhar T K aq = (struct npa_aq_enq_req *)aq_cn20k; 141*143a419eSAshwin Sekhar T K } else { 14244a9307cSRakesh Kudurumalla aq = mbox_alloc_msg_npa_aq_enq(mbox); 143*143a419eSAshwin Sekhar T K } 14444a9307cSRakesh Kudurumalla if (aq == NULL) { 14544a9307cSRakesh Kudurumalla rc = -ENOSPC; 14644a9307cSRakesh Kudurumalla goto exit; 14744a9307cSRakesh Kudurumalla } 148dfb02998SAshwin Sekhar T K aq->aura_id = q; 149dfb02998SAshwin Sekhar T K aq->ctype = NPA_AQ_CTYPE_AURA; 150dfb02998SAshwin Sekhar T K aq->op = NPA_AQ_INSTOP_READ; 151dfb02998SAshwin Sekhar T K 15244a9307cSRakesh Kudurumalla rc = mbox_process_msg(mbox, (void *)&rsp); 153dfb02998SAshwin Sekhar T K if (rc) { 154dfb02998SAshwin Sekhar T K plt_err("Failed to get aura(%d) context", q); 15544a9307cSRakesh Kudurumalla goto exit; 156dfb02998SAshwin Sekhar T K } 157dfb02998SAshwin Sekhar T K npa_dump("============== aura=%d ===============\n", q); 158dfb02998SAshwin Sekhar T K npa_aura_dump(&rsp->aura); 159dfb02998SAshwin Sekhar T K } 160dfb02998SAshwin Sekhar T K 16144a9307cSRakesh Kudurumalla exit: 16244a9307cSRakesh Kudurumalla mbox_put(mbox); 163dfb02998SAshwin Sekhar T K return rc; 164dfb02998SAshwin Sekhar T K } 165dfb02998SAshwin Sekhar T K 166dfb02998SAshwin Sekhar T K int 167dfb02998SAshwin Sekhar T K roc_npa_dump(void) 168dfb02998SAshwin Sekhar T K { 169dfb02998SAshwin Sekhar T K struct npa_lf *lf; 170dfb02998SAshwin Sekhar T K int aura_cnt = 0; 171dfb02998SAshwin Sekhar T K uint32_t i; 172dfb02998SAshwin Sekhar T K 173dfb02998SAshwin Sekhar T K lf = idev_npa_obj_get(); 174dfb02998SAshwin Sekhar T K if (lf == NULL) 175dfb02998SAshwin Sekhar T K return NPA_ERR_DEVICE_NOT_BOUNDED; 176dfb02998SAshwin Sekhar T K 177dfb02998SAshwin Sekhar T K for (i = 0; i < lf->nr_pools; i++) { 178dfb02998SAshwin Sekhar T K if (plt_bitmap_get(lf->npa_bmp, i)) 179dfb02998SAshwin Sekhar T K continue; 180dfb02998SAshwin Sekhar T K aura_cnt++; 181dfb02998SAshwin Sekhar T K } 182dfb02998SAshwin Sekhar T K 183dfb02998SAshwin Sekhar T K npa_dump("npa@%p", lf); 184dfb02998SAshwin Sekhar T K npa_dump(" pf = %d", dev_get_pf(lf->pf_func)); 185dfb02998SAshwin Sekhar T K npa_dump(" vf = %d", dev_get_vf(lf->pf_func)); 186dfb02998SAshwin Sekhar T K npa_dump(" aura_cnt = %d", aura_cnt); 187dfb02998SAshwin Sekhar T K npa_dump(" \tpci_dev = %p", lf->pci_dev); 188dfb02998SAshwin Sekhar T K npa_dump(" \tnpa_bmp = %p", lf->npa_bmp); 189dfb02998SAshwin Sekhar T K npa_dump(" \tnpa_bmp_mem = %p", lf->npa_bmp_mem); 190dfb02998SAshwin Sekhar T K npa_dump(" \tnpa_qint_mem = %p", lf->npa_qint_mem); 191dfb02998SAshwin Sekhar T K npa_dump(" \tintr_handle = %p", lf->intr_handle); 192dfb02998SAshwin Sekhar T K npa_dump(" \tmbox = %p", lf->mbox); 193dfb02998SAshwin Sekhar T K npa_dump(" \tbase = 0x%" PRIx64 "", lf->base); 194dfb02998SAshwin Sekhar T K npa_dump(" \tstack_pg_ptrs = %d", lf->stack_pg_ptrs); 195dfb02998SAshwin Sekhar T K npa_dump(" \tstack_pg_bytes = %d", lf->stack_pg_bytes); 196dfb02998SAshwin Sekhar T K npa_dump(" \tnpa_msixoff = 0x%x", lf->npa_msixoff); 197dfb02998SAshwin Sekhar T K npa_dump(" \tnr_pools = %d", lf->nr_pools); 198dfb02998SAshwin Sekhar T K npa_dump(" \tpf_func = 0x%x", lf->pf_func); 199dfb02998SAshwin Sekhar T K npa_dump(" \taura_sz = %d", lf->aura_sz); 200dfb02998SAshwin Sekhar T K npa_dump(" \tqints = %d", lf->qints); 201dfb02998SAshwin Sekhar T K 202dfb02998SAshwin Sekhar T K return 0; 203dfb02998SAshwin Sekhar T K } 204