15aef7fbdSJerin Jacob /* SPDX-License-Identifier: BSD-3-Clause 25aef7fbdSJerin Jacob * Copyright(C) 2021 Marvell. 35aef7fbdSJerin Jacob */ 45aef7fbdSJerin Jacob 55aef7fbdSJerin Jacob #include "roc_api.h" 65aef7fbdSJerin Jacob #include "roc_priv.h" 75aef7fbdSJerin Jacob 84006ac1fSRakesh Kudurumalla 94006ac1fSRakesh Kudurumalla #define nix_dump(file, fmt, ...) do { \ 104006ac1fSRakesh Kudurumalla if ((file) == NULL) \ 114006ac1fSRakesh Kudurumalla plt_dump(fmt, ##__VA_ARGS__); \ 124006ac1fSRakesh Kudurumalla else \ 134006ac1fSRakesh Kudurumalla fprintf(file, fmt "\n", ##__VA_ARGS__); \ 144006ac1fSRakesh Kudurumalla } while (0) 154006ac1fSRakesh Kudurumalla 165aef7fbdSJerin Jacob #define NIX_REG_INFO(reg) \ 175aef7fbdSJerin Jacob { \ 185aef7fbdSJerin Jacob reg, #reg \ 195aef7fbdSJerin Jacob } 205aef7fbdSJerin Jacob #define NIX_REG_NAME_SZ 48 215aef7fbdSJerin Jacob 224006ac1fSRakesh Kudurumalla #define nix_dump_no_nl(file, fmt, ...) do { \ 234006ac1fSRakesh Kudurumalla if ((file) == NULL) \ 244006ac1fSRakesh Kudurumalla plt_dump_no_nl(fmt, ##__VA_ARGS__); \ 254006ac1fSRakesh Kudurumalla else \ 264006ac1fSRakesh Kudurumalla fprintf(file, fmt, ##__VA_ARGS__); \ 274006ac1fSRakesh Kudurumalla } while (0) 284006ac1fSRakesh Kudurumalla 295aef7fbdSJerin Jacob 305aef7fbdSJerin Jacob struct nix_lf_reg_info { 315aef7fbdSJerin Jacob uint32_t offset; 325aef7fbdSJerin Jacob const char *name; 335aef7fbdSJerin Jacob }; 345aef7fbdSJerin Jacob 355aef7fbdSJerin Jacob static const struct nix_lf_reg_info nix_lf_reg[] = { 365aef7fbdSJerin Jacob NIX_REG_INFO(NIX_LF_RX_SECRETX(0)), 375aef7fbdSJerin Jacob NIX_REG_INFO(NIX_LF_RX_SECRETX(1)), 385aef7fbdSJerin Jacob NIX_REG_INFO(NIX_LF_RX_SECRETX(2)), 395aef7fbdSJerin Jacob NIX_REG_INFO(NIX_LF_RX_SECRETX(3)), 405aef7fbdSJerin Jacob NIX_REG_INFO(NIX_LF_RX_SECRETX(4)), 415aef7fbdSJerin Jacob NIX_REG_INFO(NIX_LF_RX_SECRETX(5)), 425aef7fbdSJerin Jacob NIX_REG_INFO(NIX_LF_CFG), 435aef7fbdSJerin Jacob NIX_REG_INFO(NIX_LF_GINT), 445aef7fbdSJerin Jacob NIX_REG_INFO(NIX_LF_GINT_W1S), 455aef7fbdSJerin Jacob NIX_REG_INFO(NIX_LF_GINT_ENA_W1C), 465aef7fbdSJerin Jacob NIX_REG_INFO(NIX_LF_GINT_ENA_W1S), 475aef7fbdSJerin Jacob NIX_REG_INFO(NIX_LF_ERR_INT), 485aef7fbdSJerin Jacob NIX_REG_INFO(NIX_LF_ERR_INT_W1S), 495aef7fbdSJerin Jacob NIX_REG_INFO(NIX_LF_ERR_INT_ENA_W1C), 505aef7fbdSJerin Jacob NIX_REG_INFO(NIX_LF_ERR_INT_ENA_W1S), 515aef7fbdSJerin Jacob NIX_REG_INFO(NIX_LF_RAS), 525aef7fbdSJerin Jacob NIX_REG_INFO(NIX_LF_RAS_W1S), 535aef7fbdSJerin Jacob NIX_REG_INFO(NIX_LF_RAS_ENA_W1C), 545aef7fbdSJerin Jacob NIX_REG_INFO(NIX_LF_RAS_ENA_W1S), 555aef7fbdSJerin Jacob NIX_REG_INFO(NIX_LF_SQ_OP_ERR_DBG), 565aef7fbdSJerin Jacob NIX_REG_INFO(NIX_LF_MNQ_ERR_DBG), 575aef7fbdSJerin Jacob NIX_REG_INFO(NIX_LF_SEND_ERR_DBG), 585aef7fbdSJerin Jacob }; 595aef7fbdSJerin Jacob 60fcdef46bSNithin Dabilpuram static void 614006ac1fSRakesh Kudurumalla nix_bitmap_dump(struct plt_bitmap *bmp, FILE *file) 62fcdef46bSNithin Dabilpuram { 63fcdef46bSNithin Dabilpuram uint32_t pos = 0, start_pos; 64fcdef46bSNithin Dabilpuram uint64_t slab = 0; 65fcdef46bSNithin Dabilpuram int i; 66fcdef46bSNithin Dabilpuram 67fcdef46bSNithin Dabilpuram plt_bitmap_scan_init(bmp); 6814f7e5d4SGowrishankar Muthukrishnan if (!plt_bitmap_scan(bmp, &pos, &slab)) 6914f7e5d4SGowrishankar Muthukrishnan return; 7014f7e5d4SGowrishankar Muthukrishnan 71fcdef46bSNithin Dabilpuram start_pos = pos; 72fcdef46bSNithin Dabilpuram 734006ac1fSRakesh Kudurumalla nix_dump_no_nl(file, " \t\t["); 74fcdef46bSNithin Dabilpuram do { 75fcdef46bSNithin Dabilpuram if (!slab) 76fcdef46bSNithin Dabilpuram break; 77fcdef46bSNithin Dabilpuram i = 0; 78fcdef46bSNithin Dabilpuram 79fcdef46bSNithin Dabilpuram for (i = 0; i < 64; i++) 80fcdef46bSNithin Dabilpuram if (slab & (1ULL << i)) 814006ac1fSRakesh Kudurumalla nix_dump_no_nl(file, "%d, ", i); 82fcdef46bSNithin Dabilpuram 83fcdef46bSNithin Dabilpuram if (!plt_bitmap_scan(bmp, &pos, &slab)) 84fcdef46bSNithin Dabilpuram break; 85fcdef46bSNithin Dabilpuram } while (start_pos != pos); 864006ac1fSRakesh Kudurumalla nix_dump_no_nl(file, " ]"); 87fcdef46bSNithin Dabilpuram } 88fcdef46bSNithin Dabilpuram 895aef7fbdSJerin Jacob int 905aef7fbdSJerin Jacob roc_nix_lf_get_reg_count(struct roc_nix *roc_nix) 915aef7fbdSJerin Jacob { 925aef7fbdSJerin Jacob struct nix *nix = roc_nix_to_nix_priv(roc_nix); 935aef7fbdSJerin Jacob int reg_count; 945aef7fbdSJerin Jacob 955aef7fbdSJerin Jacob if (roc_nix == NULL) 965aef7fbdSJerin Jacob return NIX_ERR_PARAM; 975aef7fbdSJerin Jacob 985aef7fbdSJerin Jacob reg_count = PLT_DIM(nix_lf_reg); 995aef7fbdSJerin Jacob /* NIX_LF_TX_STATX */ 1005aef7fbdSJerin Jacob reg_count += nix->lf_tx_stats; 1015aef7fbdSJerin Jacob /* NIX_LF_RX_STATX */ 1025aef7fbdSJerin Jacob reg_count += nix->lf_rx_stats; 1035aef7fbdSJerin Jacob /* NIX_LF_QINTX_CNT*/ 1045aef7fbdSJerin Jacob reg_count += nix->qints; 1055aef7fbdSJerin Jacob /* NIX_LF_QINTX_INT */ 1065aef7fbdSJerin Jacob reg_count += nix->qints; 1075aef7fbdSJerin Jacob /* NIX_LF_QINTX_ENA_W1S */ 1085aef7fbdSJerin Jacob reg_count += nix->qints; 1095aef7fbdSJerin Jacob /* NIX_LF_QINTX_ENA_W1C */ 1105aef7fbdSJerin Jacob reg_count += nix->qints; 1115aef7fbdSJerin Jacob /* NIX_LF_CINTX_CNT */ 1125aef7fbdSJerin Jacob reg_count += nix->cints; 1135aef7fbdSJerin Jacob /* NIX_LF_CINTX_WAIT */ 1145aef7fbdSJerin Jacob reg_count += nix->cints; 1155aef7fbdSJerin Jacob /* NIX_LF_CINTX_INT */ 1165aef7fbdSJerin Jacob reg_count += nix->cints; 1175aef7fbdSJerin Jacob /* NIX_LF_CINTX_INT_W1S */ 1185aef7fbdSJerin Jacob reg_count += nix->cints; 1195aef7fbdSJerin Jacob /* NIX_LF_CINTX_ENA_W1S */ 1205aef7fbdSJerin Jacob reg_count += nix->cints; 1215aef7fbdSJerin Jacob /* NIX_LF_CINTX_ENA_W1C */ 1225aef7fbdSJerin Jacob reg_count += nix->cints; 1235aef7fbdSJerin Jacob 1245aef7fbdSJerin Jacob return reg_count; 1255aef7fbdSJerin Jacob } 1265aef7fbdSJerin Jacob 1275aef7fbdSJerin Jacob int 12838b177feSNithin Dabilpuram nix_lf_gen_reg_dump(uintptr_t nix_lf_base, uint64_t *data) 1295aef7fbdSJerin Jacob { 1304006ac1fSRakesh Kudurumalla FILE *file = NULL; 1315aef7fbdSJerin Jacob bool dump_stdout; 1325aef7fbdSJerin Jacob uint64_t reg; 1335aef7fbdSJerin Jacob uint32_t i; 1345aef7fbdSJerin Jacob 1355aef7fbdSJerin Jacob dump_stdout = data ? 0 : 1; 1365aef7fbdSJerin Jacob 1375aef7fbdSJerin Jacob for (i = 0; i < PLT_DIM(nix_lf_reg); i++) { 1385aef7fbdSJerin Jacob reg = plt_read64(nix_lf_base + nix_lf_reg[i].offset); 1395aef7fbdSJerin Jacob if (dump_stdout && reg) 1404006ac1fSRakesh Kudurumalla nix_dump(file, "%32s = 0x%" PRIx64, nix_lf_reg[i].name, reg); 1415aef7fbdSJerin Jacob if (data) 1425aef7fbdSJerin Jacob *data++ = reg; 1435aef7fbdSJerin Jacob } 1445aef7fbdSJerin Jacob 14538b177feSNithin Dabilpuram return i; 14638b177feSNithin Dabilpuram } 14738b177feSNithin Dabilpuram 14838b177feSNithin Dabilpuram int 14938b177feSNithin Dabilpuram nix_lf_stat_reg_dump(uintptr_t nix_lf_base, uint64_t *data, uint8_t lf_tx_stats, 15038b177feSNithin Dabilpuram uint8_t lf_rx_stats) 15138b177feSNithin Dabilpuram { 15238b177feSNithin Dabilpuram uint32_t i, count = 0; 1534006ac1fSRakesh Kudurumalla FILE *file = NULL; 15438b177feSNithin Dabilpuram bool dump_stdout; 15538b177feSNithin Dabilpuram uint64_t reg; 15638b177feSNithin Dabilpuram 15738b177feSNithin Dabilpuram dump_stdout = data ? 0 : 1; 15838b177feSNithin Dabilpuram 1595aef7fbdSJerin Jacob /* NIX_LF_TX_STATX */ 16038b177feSNithin Dabilpuram for (i = 0; i < lf_tx_stats; i++) { 1615aef7fbdSJerin Jacob reg = plt_read64(nix_lf_base + NIX_LF_TX_STATX(i)); 1625aef7fbdSJerin Jacob if (dump_stdout && reg) 1634006ac1fSRakesh Kudurumalla nix_dump(file, "%32s_%d = 0x%" PRIx64, "NIX_LF_TX_STATX", i, 1645aef7fbdSJerin Jacob reg); 1655aef7fbdSJerin Jacob if (data) 1665aef7fbdSJerin Jacob *data++ = reg; 1675aef7fbdSJerin Jacob } 16838b177feSNithin Dabilpuram count += i; 1695aef7fbdSJerin Jacob 1705aef7fbdSJerin Jacob /* NIX_LF_RX_STATX */ 17138b177feSNithin Dabilpuram for (i = 0; i < lf_rx_stats; i++) { 1725aef7fbdSJerin Jacob reg = plt_read64(nix_lf_base + NIX_LF_RX_STATX(i)); 1735aef7fbdSJerin Jacob if (dump_stdout && reg) 1744006ac1fSRakesh Kudurumalla nix_dump(file, "%32s_%d = 0x%" PRIx64, "NIX_LF_RX_STATX", i, 1755aef7fbdSJerin Jacob reg); 1765aef7fbdSJerin Jacob if (data) 1775aef7fbdSJerin Jacob *data++ = reg; 1785aef7fbdSJerin Jacob } 1795aef7fbdSJerin Jacob 18038b177feSNithin Dabilpuram return count + i; 18138b177feSNithin Dabilpuram } 18238b177feSNithin Dabilpuram 18338b177feSNithin Dabilpuram int 18438b177feSNithin Dabilpuram nix_lf_int_reg_dump(uintptr_t nix_lf_base, uint64_t *data, uint16_t qints, 18538b177feSNithin Dabilpuram uint16_t cints) 18638b177feSNithin Dabilpuram { 18738b177feSNithin Dabilpuram uint32_t i, count = 0; 1884006ac1fSRakesh Kudurumalla FILE *file = NULL; 18938b177feSNithin Dabilpuram bool dump_stdout; 19038b177feSNithin Dabilpuram uint64_t reg; 19138b177feSNithin Dabilpuram 19238b177feSNithin Dabilpuram dump_stdout = data ? 0 : 1; 19338b177feSNithin Dabilpuram 1945aef7fbdSJerin Jacob /* NIX_LF_QINTX_CNT*/ 19538b177feSNithin Dabilpuram for (i = 0; i < qints; i++) { 1965aef7fbdSJerin Jacob reg = plt_read64(nix_lf_base + NIX_LF_QINTX_CNT(i)); 1975aef7fbdSJerin Jacob if (dump_stdout && reg) 1984006ac1fSRakesh Kudurumalla nix_dump(file, "%32s_%d = 0x%" PRIx64, "NIX_LF_QINTX_CNT", i, 1995aef7fbdSJerin Jacob reg); 2005aef7fbdSJerin Jacob if (data) 2015aef7fbdSJerin Jacob *data++ = reg; 2025aef7fbdSJerin Jacob } 20338b177feSNithin Dabilpuram count += i; 2045aef7fbdSJerin Jacob 2055aef7fbdSJerin Jacob /* NIX_LF_QINTX_INT */ 20638b177feSNithin Dabilpuram for (i = 0; i < qints; i++) { 2075aef7fbdSJerin Jacob reg = plt_read64(nix_lf_base + NIX_LF_QINTX_INT(i)); 2085aef7fbdSJerin Jacob if (dump_stdout && reg) 2094006ac1fSRakesh Kudurumalla nix_dump(file, "%32s_%d = 0x%" PRIx64, "NIX_LF_QINTX_INT", i, 2105aef7fbdSJerin Jacob reg); 2115aef7fbdSJerin Jacob if (data) 2125aef7fbdSJerin Jacob *data++ = reg; 2135aef7fbdSJerin Jacob } 21438b177feSNithin Dabilpuram count += i; 2155aef7fbdSJerin Jacob 2165aef7fbdSJerin Jacob /* NIX_LF_QINTX_ENA_W1S */ 21738b177feSNithin Dabilpuram for (i = 0; i < qints; i++) { 2185aef7fbdSJerin Jacob reg = plt_read64(nix_lf_base + NIX_LF_QINTX_ENA_W1S(i)); 2195aef7fbdSJerin Jacob if (dump_stdout && reg) 2204006ac1fSRakesh Kudurumalla nix_dump(file, "%32s_%d = 0x%" PRIx64, "NIX_LF_QINTX_ENA_W1S", 2215aef7fbdSJerin Jacob i, reg); 2225aef7fbdSJerin Jacob if (data) 2235aef7fbdSJerin Jacob *data++ = reg; 2245aef7fbdSJerin Jacob } 22538b177feSNithin Dabilpuram count += i; 2265aef7fbdSJerin Jacob 2275aef7fbdSJerin Jacob /* NIX_LF_QINTX_ENA_W1C */ 22838b177feSNithin Dabilpuram for (i = 0; i < qints; i++) { 2295aef7fbdSJerin Jacob reg = plt_read64(nix_lf_base + NIX_LF_QINTX_ENA_W1C(i)); 2305aef7fbdSJerin Jacob if (dump_stdout && reg) 2314006ac1fSRakesh Kudurumalla nix_dump(file, "%32s_%d = 0x%" PRIx64, "NIX_LF_QINTX_ENA_W1C", 2325aef7fbdSJerin Jacob i, reg); 2335aef7fbdSJerin Jacob if (data) 2345aef7fbdSJerin Jacob *data++ = reg; 2355aef7fbdSJerin Jacob } 23638b177feSNithin Dabilpuram count += i; 2375aef7fbdSJerin Jacob 2385aef7fbdSJerin Jacob /* NIX_LF_CINTX_CNT */ 23938b177feSNithin Dabilpuram for (i = 0; i < cints; i++) { 2405aef7fbdSJerin Jacob reg = plt_read64(nix_lf_base + NIX_LF_CINTX_CNT(i)); 2415aef7fbdSJerin Jacob if (dump_stdout && reg) 2424006ac1fSRakesh Kudurumalla nix_dump(file, "%32s_%d = 0x%" PRIx64, "NIX_LF_CINTX_CNT", i, 2435aef7fbdSJerin Jacob reg); 2445aef7fbdSJerin Jacob if (data) 2455aef7fbdSJerin Jacob *data++ = reg; 2465aef7fbdSJerin Jacob } 24738b177feSNithin Dabilpuram count += i; 2485aef7fbdSJerin Jacob 2495aef7fbdSJerin Jacob /* NIX_LF_CINTX_WAIT */ 25038b177feSNithin Dabilpuram for (i = 0; i < cints; i++) { 2515aef7fbdSJerin Jacob reg = plt_read64(nix_lf_base + NIX_LF_CINTX_WAIT(i)); 2525aef7fbdSJerin Jacob if (dump_stdout && reg) 2534006ac1fSRakesh Kudurumalla nix_dump(file, "%32s_%d = 0x%" PRIx64, "NIX_LF_CINTX_WAIT", i, 2545aef7fbdSJerin Jacob reg); 2555aef7fbdSJerin Jacob if (data) 2565aef7fbdSJerin Jacob *data++ = reg; 2575aef7fbdSJerin Jacob } 25838b177feSNithin Dabilpuram count += i; 2595aef7fbdSJerin Jacob 2605aef7fbdSJerin Jacob /* NIX_LF_CINTX_INT */ 26138b177feSNithin Dabilpuram for (i = 0; i < cints; i++) { 2625aef7fbdSJerin Jacob reg = plt_read64(nix_lf_base + NIX_LF_CINTX_INT(i)); 2635aef7fbdSJerin Jacob if (dump_stdout && reg) 2644006ac1fSRakesh Kudurumalla nix_dump(file, "%32s_%d = 0x%" PRIx64, "NIX_LF_CINTX_INT", i, 2655aef7fbdSJerin Jacob reg); 2665aef7fbdSJerin Jacob if (data) 2675aef7fbdSJerin Jacob *data++ = reg; 2685aef7fbdSJerin Jacob } 26938b177feSNithin Dabilpuram count += i; 2705aef7fbdSJerin Jacob 2715aef7fbdSJerin Jacob /* NIX_LF_CINTX_INT_W1S */ 27238b177feSNithin Dabilpuram for (i = 0; i < cints; i++) { 2735aef7fbdSJerin Jacob reg = plt_read64(nix_lf_base + NIX_LF_CINTX_INT_W1S(i)); 2745aef7fbdSJerin Jacob if (dump_stdout && reg) 2754006ac1fSRakesh Kudurumalla nix_dump(file, "%32s_%d = 0x%" PRIx64, "NIX_LF_CINTX_INT_W1S", 2765aef7fbdSJerin Jacob i, reg); 2775aef7fbdSJerin Jacob if (data) 2785aef7fbdSJerin Jacob *data++ = reg; 2795aef7fbdSJerin Jacob } 28038b177feSNithin Dabilpuram count += i; 2815aef7fbdSJerin Jacob 2825aef7fbdSJerin Jacob /* NIX_LF_CINTX_ENA_W1S */ 28338b177feSNithin Dabilpuram for (i = 0; i < cints; i++) { 2845aef7fbdSJerin Jacob reg = plt_read64(nix_lf_base + NIX_LF_CINTX_ENA_W1S(i)); 2855aef7fbdSJerin Jacob if (dump_stdout && reg) 2864006ac1fSRakesh Kudurumalla nix_dump(file, "%32s_%d = 0x%" PRIx64, "NIX_LF_CINTX_ENA_W1S", 2875aef7fbdSJerin Jacob i, reg); 2885aef7fbdSJerin Jacob if (data) 2895aef7fbdSJerin Jacob *data++ = reg; 2905aef7fbdSJerin Jacob } 29138b177feSNithin Dabilpuram count += i; 2925aef7fbdSJerin Jacob 2935aef7fbdSJerin Jacob /* NIX_LF_CINTX_ENA_W1C */ 29438b177feSNithin Dabilpuram for (i = 0; i < cints; i++) { 2955aef7fbdSJerin Jacob reg = plt_read64(nix_lf_base + NIX_LF_CINTX_ENA_W1C(i)); 2965aef7fbdSJerin Jacob if (dump_stdout && reg) 2974006ac1fSRakesh Kudurumalla nix_dump(file, "%32s_%d = 0x%" PRIx64, "NIX_LF_CINTX_ENA_W1C", 2985aef7fbdSJerin Jacob i, reg); 2995aef7fbdSJerin Jacob if (data) 3005aef7fbdSJerin Jacob *data++ = reg; 3015aef7fbdSJerin Jacob } 30238b177feSNithin Dabilpuram 30338b177feSNithin Dabilpuram return count + i; 30438b177feSNithin Dabilpuram } 30538b177feSNithin Dabilpuram 30638b177feSNithin Dabilpuram int 30738b177feSNithin Dabilpuram roc_nix_lf_reg_dump(struct roc_nix *roc_nix, uint64_t *data) 30838b177feSNithin Dabilpuram { 30938b177feSNithin Dabilpuram struct nix *nix = roc_nix_to_nix_priv(roc_nix); 31038b177feSNithin Dabilpuram bool dump_stdout = data ? 0 : 1; 31138b177feSNithin Dabilpuram uintptr_t nix_base; 31238b177feSNithin Dabilpuram uint32_t i; 31338b177feSNithin Dabilpuram 31438b177feSNithin Dabilpuram if (roc_nix == NULL) 31538b177feSNithin Dabilpuram return NIX_ERR_PARAM; 31638b177feSNithin Dabilpuram 31738b177feSNithin Dabilpuram nix_base = nix->base; 31838b177feSNithin Dabilpuram /* General registers */ 31938b177feSNithin Dabilpuram i = nix_lf_gen_reg_dump(nix_base, data); 32038b177feSNithin Dabilpuram 32138b177feSNithin Dabilpuram /* Rx, Tx stat registers */ 32238b177feSNithin Dabilpuram i += nix_lf_stat_reg_dump(nix_base, dump_stdout ? NULL : &data[i], 32338b177feSNithin Dabilpuram nix->lf_tx_stats, nix->lf_rx_stats); 32438b177feSNithin Dabilpuram 32538b177feSNithin Dabilpuram /* Intr registers */ 32638b177feSNithin Dabilpuram i += nix_lf_int_reg_dump(nix_base, dump_stdout ? NULL : &data[i], 32738b177feSNithin Dabilpuram nix->qints, nix->cints); 32838b177feSNithin Dabilpuram 3295aef7fbdSJerin Jacob return 0; 3305aef7fbdSJerin Jacob } 3315aef7fbdSJerin Jacob 33238b177feSNithin Dabilpuram int 33338b177feSNithin Dabilpuram nix_q_ctx_get(struct dev *dev, uint8_t ctype, uint16_t qid, __io void **ctx_p) 3345aef7fbdSJerin Jacob { 33544a9307cSRakesh Kudurumalla struct mbox *mbox = mbox_get(dev->mbox); 3365aef7fbdSJerin Jacob int rc; 3375aef7fbdSJerin Jacob 3385aef7fbdSJerin Jacob if (roc_model_is_cn9k()) { 3395aef7fbdSJerin Jacob struct nix_aq_enq_rsp *rsp; 3405aef7fbdSJerin Jacob struct nix_aq_enq_req *aq; 3415aef7fbdSJerin Jacob 3425aef7fbdSJerin Jacob aq = mbox_alloc_msg_nix_aq_enq(mbox); 34344a9307cSRakesh Kudurumalla if (!aq) { 34444a9307cSRakesh Kudurumalla rc = -ENOSPC; 34544a9307cSRakesh Kudurumalla goto exit; 34644a9307cSRakesh Kudurumalla } 347da718c19SNithin Dabilpuram 3485aef7fbdSJerin Jacob aq->qidx = qid; 3495aef7fbdSJerin Jacob aq->ctype = ctype; 3505aef7fbdSJerin Jacob aq->op = NIX_AQ_INSTOP_READ; 3515aef7fbdSJerin Jacob 3525aef7fbdSJerin Jacob rc = mbox_process_msg(mbox, (void *)&rsp); 3535aef7fbdSJerin Jacob if (rc) 35444a9307cSRakesh Kudurumalla goto exit; 3555aef7fbdSJerin Jacob if (ctype == NIX_AQ_CTYPE_RQ) 3565aef7fbdSJerin Jacob *ctx_p = &rsp->rq; 3575aef7fbdSJerin Jacob else if (ctype == NIX_AQ_CTYPE_SQ) 3585aef7fbdSJerin Jacob *ctx_p = &rsp->sq; 3595aef7fbdSJerin Jacob else 3605aef7fbdSJerin Jacob *ctx_p = &rsp->cq; 361*db5744d3SSatha Rao } else if (roc_model_is_cn10k()) { 3625aef7fbdSJerin Jacob struct nix_cn10k_aq_enq_rsp *rsp; 3635aef7fbdSJerin Jacob struct nix_cn10k_aq_enq_req *aq; 3645aef7fbdSJerin Jacob 3655aef7fbdSJerin Jacob aq = mbox_alloc_msg_nix_cn10k_aq_enq(mbox); 36644a9307cSRakesh Kudurumalla if (!aq) { 36744a9307cSRakesh Kudurumalla rc = -ENOSPC; 36844a9307cSRakesh Kudurumalla goto exit; 36944a9307cSRakesh Kudurumalla } 370da718c19SNithin Dabilpuram 3715aef7fbdSJerin Jacob aq->qidx = qid; 3725aef7fbdSJerin Jacob aq->ctype = ctype; 3735aef7fbdSJerin Jacob aq->op = NIX_AQ_INSTOP_READ; 3745aef7fbdSJerin Jacob 3755aef7fbdSJerin Jacob rc = mbox_process_msg(mbox, (void *)&rsp); 3765aef7fbdSJerin Jacob if (rc) 37744a9307cSRakesh Kudurumalla goto exit; 3785aef7fbdSJerin Jacob 3795aef7fbdSJerin Jacob if (ctype == NIX_AQ_CTYPE_RQ) 3805aef7fbdSJerin Jacob *ctx_p = &rsp->rq; 3815aef7fbdSJerin Jacob else if (ctype == NIX_AQ_CTYPE_SQ) 3825aef7fbdSJerin Jacob *ctx_p = &rsp->sq; 3835aef7fbdSJerin Jacob else 3845aef7fbdSJerin Jacob *ctx_p = &rsp->cq; 385*db5744d3SSatha Rao } else { 386*db5744d3SSatha Rao struct nix_cn20k_aq_enq_rsp *rsp; 387*db5744d3SSatha Rao struct nix_cn20k_aq_enq_req *aq; 388*db5744d3SSatha Rao 389*db5744d3SSatha Rao aq = mbox_alloc_msg_nix_cn20k_aq_enq(mbox); 390*db5744d3SSatha Rao if (!aq) { 391*db5744d3SSatha Rao rc = -ENOSPC; 392*db5744d3SSatha Rao goto exit; 393*db5744d3SSatha Rao } 394*db5744d3SSatha Rao 395*db5744d3SSatha Rao aq->qidx = qid; 396*db5744d3SSatha Rao aq->ctype = ctype; 397*db5744d3SSatha Rao aq->op = NIX_AQ_INSTOP_READ; 398*db5744d3SSatha Rao 399*db5744d3SSatha Rao rc = mbox_process_msg(mbox, (void *)&rsp); 400*db5744d3SSatha Rao if (rc) 401*db5744d3SSatha Rao goto exit; 402*db5744d3SSatha Rao 403*db5744d3SSatha Rao if (ctype == NIX_AQ_CTYPE_RQ) 404*db5744d3SSatha Rao *ctx_p = &rsp->rq; 405*db5744d3SSatha Rao else if (ctype == NIX_AQ_CTYPE_SQ) 406*db5744d3SSatha Rao *ctx_p = &rsp->sq; 407*db5744d3SSatha Rao else 408*db5744d3SSatha Rao *ctx_p = &rsp->cq; 4095aef7fbdSJerin Jacob } 41044a9307cSRakesh Kudurumalla rc = 0; 41144a9307cSRakesh Kudurumalla exit: 41244a9307cSRakesh Kudurumalla mbox_put(mbox); 41344a9307cSRakesh Kudurumalla return rc; 4145aef7fbdSJerin Jacob } 4155aef7fbdSJerin Jacob 4165aef7fbdSJerin Jacob static inline void 4174006ac1fSRakesh Kudurumalla nix_cn9k_lf_sq_dump(__io struct nix_sq_ctx_s *ctx, uint32_t *sqb_aura_p, FILE *file) 4185aef7fbdSJerin Jacob { 4194006ac1fSRakesh Kudurumalla nix_dump(file, "W0: sqe_way_mask \t\t%d\nW0: cq \t\t\t\t%d", 4205aef7fbdSJerin Jacob ctx->sqe_way_mask, ctx->cq); 4214006ac1fSRakesh Kudurumalla nix_dump(file, "W0: sdp_mcast \t\t\t%d\nW0: substream \t\t\t0x%03x", 4225aef7fbdSJerin Jacob ctx->sdp_mcast, ctx->substream); 4234006ac1fSRakesh Kudurumalla nix_dump(file, "W0: qint_idx \t\t\t%d\nW0: ena \t\t\t%d\n", ctx->qint_idx, 4245aef7fbdSJerin Jacob ctx->ena); 4255aef7fbdSJerin Jacob 4264006ac1fSRakesh Kudurumalla nix_dump(file, "W1: sqb_count \t\t\t%d\nW1: default_chan \t\t%d", 4275aef7fbdSJerin Jacob ctx->sqb_count, ctx->default_chan); 4284006ac1fSRakesh Kudurumalla nix_dump(file, "W1: smq_rr_quantum \t\t%d\nW1: sso_ena \t\t\t%d", 4295aef7fbdSJerin Jacob ctx->smq_rr_quantum, ctx->sso_ena); 4304006ac1fSRakesh Kudurumalla nix_dump(file, "W1: xoff \t\t\t%d\nW1: cq_ena \t\t\t%d\nW1: smq\t\t\t\t%d\n", 4315aef7fbdSJerin Jacob ctx->xoff, ctx->cq_ena, ctx->smq); 4325aef7fbdSJerin Jacob 4334006ac1fSRakesh Kudurumalla nix_dump(file, "W2: sqe_stype \t\t\t%d\nW2: sq_int_ena \t\t\t%d", 4345aef7fbdSJerin Jacob ctx->sqe_stype, ctx->sq_int_ena); 4354006ac1fSRakesh Kudurumalla nix_dump(file, "W2: sq_int \t\t\t%d\nW2: sqb_aura \t\t\t%d", ctx->sq_int, 4365aef7fbdSJerin Jacob ctx->sqb_aura); 4374006ac1fSRakesh Kudurumalla nix_dump(file, "W2: smq_rr_count \t\t%d\n", ctx->smq_rr_count); 4385aef7fbdSJerin Jacob 4394006ac1fSRakesh Kudurumalla nix_dump(file, "W3: smq_next_sq_vld\t\t%d\nW3: smq_pend\t\t\t%d", 4405aef7fbdSJerin Jacob ctx->smq_next_sq_vld, ctx->smq_pend); 4414006ac1fSRakesh Kudurumalla nix_dump(file, "W3: smenq_next_sqb_vld \t%d\nW3: head_offset\t\t\t%d", 4425aef7fbdSJerin Jacob ctx->smenq_next_sqb_vld, ctx->head_offset); 4434006ac1fSRakesh Kudurumalla nix_dump(file, "W3: smenq_offset\t\t%d\nW3: tail_offset \t\t%d", 4445aef7fbdSJerin Jacob ctx->smenq_offset, ctx->tail_offset); 4454006ac1fSRakesh Kudurumalla nix_dump(file, "W3: smq_lso_segnum \t\t%d\nW3: smq_next_sq \t\t%d", 4465aef7fbdSJerin Jacob ctx->smq_lso_segnum, ctx->smq_next_sq); 4474006ac1fSRakesh Kudurumalla nix_dump(file, "W3: mnq_dis \t\t\t%d\nW3: lmt_dis \t\t\t%d", ctx->mnq_dis, 4485aef7fbdSJerin Jacob ctx->lmt_dis); 4494006ac1fSRakesh Kudurumalla nix_dump(file, "W3: cq_limit\t\t\t%d\nW3: max_sqe_size\t\t%d\n", 4505aef7fbdSJerin Jacob ctx->cq_limit, ctx->max_sqe_size); 4515aef7fbdSJerin Jacob 4524006ac1fSRakesh Kudurumalla nix_dump(file, "W4: next_sqb \t\t\t0x%" PRIx64 "", ctx->next_sqb); 4534006ac1fSRakesh Kudurumalla nix_dump(file, "W5: tail_sqb \t\t\t0x%" PRIx64 "", ctx->tail_sqb); 4544006ac1fSRakesh Kudurumalla nix_dump(file, "W6: smenq_sqb \t\t\t0x%" PRIx64 "", ctx->smenq_sqb); 4554006ac1fSRakesh Kudurumalla nix_dump(file, "W7: smenq_next_sqb \t\t0x%" PRIx64 "", ctx->smenq_next_sqb); 4564006ac1fSRakesh Kudurumalla nix_dump(file, "W8: head_sqb \t\t\t0x%" PRIx64 "", ctx->head_sqb); 4575aef7fbdSJerin Jacob 4584006ac1fSRakesh Kudurumalla nix_dump(file, "W9: vfi_lso_vld \t\t%d\nW9: vfi_lso_vlan1_ins_ena\t%d", 4595aef7fbdSJerin Jacob ctx->vfi_lso_vld, ctx->vfi_lso_vlan1_ins_ena); 4604006ac1fSRakesh Kudurumalla nix_dump(file, "W9: vfi_lso_vlan0_ins_ena\t%d\nW9: vfi_lso_mps\t\t\t%d", 4615aef7fbdSJerin Jacob ctx->vfi_lso_vlan0_ins_ena, ctx->vfi_lso_mps); 4624006ac1fSRakesh Kudurumalla nix_dump(file, "W9: vfi_lso_sb \t\t\t%d\nW9: vfi_lso_sizem1\t\t%d", 4635aef7fbdSJerin Jacob ctx->vfi_lso_sb, ctx->vfi_lso_sizem1); 4644006ac1fSRakesh Kudurumalla nix_dump(file, "W9: vfi_lso_total\t\t%d", ctx->vfi_lso_total); 4655aef7fbdSJerin Jacob 4664006ac1fSRakesh Kudurumalla nix_dump(file, "W10: scm_lso_rem \t\t0x%" PRIx64 "", 4675aef7fbdSJerin Jacob (uint64_t)ctx->scm_lso_rem); 4684006ac1fSRakesh Kudurumalla nix_dump(file, "W11: octs \t\t\t0x%" PRIx64 "", (uint64_t)ctx->octs); 4694006ac1fSRakesh Kudurumalla nix_dump(file, "W12: pkts \t\t\t0x%" PRIx64 "", (uint64_t)ctx->pkts); 4704006ac1fSRakesh Kudurumalla nix_dump(file, "W14: dropped_octs \t\t0x%" PRIx64 "", 4715aef7fbdSJerin Jacob (uint64_t)ctx->drop_octs); 4724006ac1fSRakesh Kudurumalla nix_dump(file, "W15: dropped_pkts \t\t0x%" PRIx64 "", 4735aef7fbdSJerin Jacob (uint64_t)ctx->drop_pkts); 4745aef7fbdSJerin Jacob 4755aef7fbdSJerin Jacob *sqb_aura_p = ctx->sqb_aura; 4765aef7fbdSJerin Jacob } 4775aef7fbdSJerin Jacob 4785aef7fbdSJerin Jacob static inline void 479*db5744d3SSatha Rao nix_cn10k_lf_sq_dump(__io struct nix_cn10k_sq_ctx_s *ctx, uint32_t *sqb_aura_p, FILE *file) 480*db5744d3SSatha Rao { 481*db5744d3SSatha Rao nix_dump(file, "W0: sqe_way_mask \t\t%d\nW0: cq \t\t\t\t%d", 482*db5744d3SSatha Rao ctx->sqe_way_mask, ctx->cq); 483*db5744d3SSatha Rao nix_dump(file, "W0: sdp_mcast \t\t\t%d\nW0: substream \t\t\t0x%03x", 484*db5744d3SSatha Rao ctx->sdp_mcast, ctx->substream); 485*db5744d3SSatha Rao nix_dump(file, "W0: qint_idx \t\t\t%d\nW0: ena \t\t\t%d\n", ctx->qint_idx, 486*db5744d3SSatha Rao ctx->ena); 487*db5744d3SSatha Rao 488*db5744d3SSatha Rao nix_dump(file, "W1: sqb_count \t\t\t%d\nW1: default_chan \t\t%d", 489*db5744d3SSatha Rao ctx->sqb_count, ctx->default_chan); 490*db5744d3SSatha Rao nix_dump(file, "W1: smq_rr_weight \t\t%d\nW1: sso_ena \t\t\t%d", 491*db5744d3SSatha Rao ctx->smq_rr_weight, ctx->sso_ena); 492*db5744d3SSatha Rao nix_dump(file, "W1: xoff \t\t\t%d\nW1: cq_ena \t\t\t%d\nW1: smq\t\t\t\t%d\n", 493*db5744d3SSatha Rao ctx->xoff, ctx->cq_ena, ctx->smq); 494*db5744d3SSatha Rao 495*db5744d3SSatha Rao nix_dump(file, "W2: sqe_stype \t\t\t%d\nW2: sq_int_ena \t\t\t%d", 496*db5744d3SSatha Rao ctx->sqe_stype, ctx->sq_int_ena); 497*db5744d3SSatha Rao nix_dump(file, "W2: sq_int \t\t\t%d\nW2: sqb_aura \t\t\t%d", ctx->sq_int, 498*db5744d3SSatha Rao ctx->sqb_aura); 499*db5744d3SSatha Rao nix_dump(file, "W2: smq_rr_count[ub:lb] \t\t%x:%x\n", ctx->smq_rr_count_ub, 500*db5744d3SSatha Rao ctx->smq_rr_count_lb); 501*db5744d3SSatha Rao 502*db5744d3SSatha Rao nix_dump(file, "W3: smq_next_sq_vld\t\t%d\nW3: smq_pend\t\t\t%d", 503*db5744d3SSatha Rao ctx->smq_next_sq_vld, ctx->smq_pend); 504*db5744d3SSatha Rao nix_dump(file, "W3: smenq_next_sqb_vld \t%d\nW3: head_offset\t\t\t%d", 505*db5744d3SSatha Rao ctx->smenq_next_sqb_vld, ctx->head_offset); 506*db5744d3SSatha Rao nix_dump(file, "W3: smenq_offset\t\t%d\nW3: tail_offset \t\t%d", 507*db5744d3SSatha Rao ctx->smenq_offset, ctx->tail_offset); 508*db5744d3SSatha Rao nix_dump(file, "W3: smq_lso_segnum \t\t%d\nW3: smq_next_sq \t\t%d", 509*db5744d3SSatha Rao ctx->smq_lso_segnum, ctx->smq_next_sq); 510*db5744d3SSatha Rao nix_dump(file, "W3: mnq_dis \t\t\t%d\nW3: lmt_dis \t\t\t%d", ctx->mnq_dis, 511*db5744d3SSatha Rao ctx->lmt_dis); 512*db5744d3SSatha Rao nix_dump(file, "W3: cq_limit\t\t\t%d\nW3: max_sqe_size\t\t%d\n", 513*db5744d3SSatha Rao ctx->cq_limit, ctx->max_sqe_size); 514*db5744d3SSatha Rao 515*db5744d3SSatha Rao nix_dump(file, "W4: next_sqb \t\t\t0x%" PRIx64 "", ctx->next_sqb); 516*db5744d3SSatha Rao nix_dump(file, "W5: tail_sqb \t\t\t0x%" PRIx64 "", ctx->tail_sqb); 517*db5744d3SSatha Rao nix_dump(file, "W6: smenq_sqb \t\t\t0x%" PRIx64 "", ctx->smenq_sqb); 518*db5744d3SSatha Rao nix_dump(file, "W7: smenq_next_sqb \t\t0x%" PRIx64 "", ctx->smenq_next_sqb); 519*db5744d3SSatha Rao nix_dump(file, "W8: head_sqb \t\t\t0x%" PRIx64 "", ctx->head_sqb); 520*db5744d3SSatha Rao 521*db5744d3SSatha Rao nix_dump(file, "W9: vfi_lso_vld \t\t%d\nW9: vfi_lso_vlan1_ins_ena\t%d", ctx->vfi_lso_vld, 522*db5744d3SSatha Rao ctx->vfi_lso_vlan1_ins_ena); 523*db5744d3SSatha Rao nix_dump(file, "W9: vfi_lso_vlan0_ins_ena\t%d\nW9: vfi_lso_mps\t\t\t%d", 524*db5744d3SSatha Rao ctx->vfi_lso_vlan0_ins_ena, ctx->vfi_lso_mps); 525*db5744d3SSatha Rao nix_dump(file, "W9: vfi_lso_sb \t\t\t%d\nW9: vfi_lso_sizem1\t\t%d", ctx->vfi_lso_sb, 526*db5744d3SSatha Rao ctx->vfi_lso_sizem1); 527*db5744d3SSatha Rao nix_dump(file, "W9: vfi_lso_total\t\t%d", ctx->vfi_lso_total); 528*db5744d3SSatha Rao 529*db5744d3SSatha Rao nix_dump(file, "W10: scm_lso_rem \t\t0x%" PRIx64 "", (uint64_t)ctx->scm_lso_rem); 530*db5744d3SSatha Rao nix_dump(file, "W11: octs \t\t\t0x%" PRIx64 "", (uint64_t)ctx->octs); 531*db5744d3SSatha Rao nix_dump(file, "W12: pkts \t\t\t0x%" PRIx64 "", (uint64_t)ctx->pkts); 532*db5744d3SSatha Rao nix_dump(file, "W13: aged_drop_pkts \t\t\t0x%" PRIx64 "", (uint64_t)ctx->aged_drop_pkts); 533*db5744d3SSatha Rao nix_dump(file, "W13: aged_drop_octs \t\t\t0x%" PRIx64 "", (uint64_t)ctx->aged_drop_octs); 534*db5744d3SSatha Rao nix_dump(file, "W14: dropped_octs \t\t0x%" PRIx64 "", (uint64_t)ctx->drop_octs); 535*db5744d3SSatha Rao nix_dump(file, "W15: dropped_pkts \t\t0x%" PRIx64 "", (uint64_t)ctx->drop_pkts); 536*db5744d3SSatha Rao 537*db5744d3SSatha Rao *sqb_aura_p = ctx->sqb_aura; 538*db5744d3SSatha Rao } 539*db5744d3SSatha Rao 540*db5744d3SSatha Rao static inline void 541*db5744d3SSatha Rao nix_lf_sq_dump(__io struct nix_cn20k_sq_ctx_s *ctx, uint32_t *sqb_aura_p, FILE *file) 5425aef7fbdSJerin Jacob { 5434006ac1fSRakesh Kudurumalla nix_dump(file, "W0: sqe_way_mask \t\t%d\nW0: cq \t\t\t\t%d", 5445aef7fbdSJerin Jacob ctx->sqe_way_mask, ctx->cq); 5454006ac1fSRakesh Kudurumalla nix_dump(file, "W0: sdp_mcast \t\t\t%d\nW0: substream \t\t\t0x%03x", 5465aef7fbdSJerin Jacob ctx->sdp_mcast, ctx->substream); 5474006ac1fSRakesh Kudurumalla nix_dump(file, "W0: qint_idx \t\t\t%d\nW0: ena \t\t\t%d\n", ctx->qint_idx, 5485aef7fbdSJerin Jacob ctx->ena); 5495aef7fbdSJerin Jacob 5504006ac1fSRakesh Kudurumalla nix_dump(file, "W1: sqb_count \t\t\t%d\nW1: default_chan \t\t%d", 5515aef7fbdSJerin Jacob ctx->sqb_count, ctx->default_chan); 5524006ac1fSRakesh Kudurumalla nix_dump(file, "W1: smq_rr_weight \t\t%d\nW1: sso_ena \t\t\t%d", 5535aef7fbdSJerin Jacob ctx->smq_rr_weight, ctx->sso_ena); 5544006ac1fSRakesh Kudurumalla nix_dump(file, "W1: xoff \t\t\t%d\nW1: cq_ena \t\t\t%d\nW1: smq\t\t\t\t%d\n", 5555aef7fbdSJerin Jacob ctx->xoff, ctx->cq_ena, ctx->smq); 5565aef7fbdSJerin Jacob 5574006ac1fSRakesh Kudurumalla nix_dump(file, "W2: sqe_stype \t\t\t%d\nW2: sq_int_ena \t\t\t%d", 5585aef7fbdSJerin Jacob ctx->sqe_stype, ctx->sq_int_ena); 5594006ac1fSRakesh Kudurumalla nix_dump(file, "W2: sq_int \t\t\t%d\nW2: sqb_aura \t\t\t%d", ctx->sq_int, 5605aef7fbdSJerin Jacob ctx->sqb_aura); 5614006ac1fSRakesh Kudurumalla nix_dump(file, "W2: smq_rr_count[ub:lb] \t\t%x:%x\n", ctx->smq_rr_count_ub, 5625aef7fbdSJerin Jacob ctx->smq_rr_count_lb); 5635aef7fbdSJerin Jacob 5644006ac1fSRakesh Kudurumalla nix_dump(file, "W3: smq_next_sq_vld\t\t%d\nW3: smq_pend\t\t\t%d", 5655aef7fbdSJerin Jacob ctx->smq_next_sq_vld, ctx->smq_pend); 5664006ac1fSRakesh Kudurumalla nix_dump(file, "W3: smenq_next_sqb_vld \t%d\nW3: head_offset\t\t\t%d", 5675aef7fbdSJerin Jacob ctx->smenq_next_sqb_vld, ctx->head_offset); 5684006ac1fSRakesh Kudurumalla nix_dump(file, "W3: smenq_offset\t\t%d\nW3: tail_offset \t\t%d", 5695aef7fbdSJerin Jacob ctx->smenq_offset, ctx->tail_offset); 5704006ac1fSRakesh Kudurumalla nix_dump(file, "W3: smq_lso_segnum \t\t%d\nW3: smq_next_sq \t\t%d", 5715aef7fbdSJerin Jacob ctx->smq_lso_segnum, ctx->smq_next_sq); 5724006ac1fSRakesh Kudurumalla nix_dump(file, "W3: mnq_dis \t\t\t%d\nW3: lmt_dis \t\t\t%d", ctx->mnq_dis, 5735aef7fbdSJerin Jacob ctx->lmt_dis); 5744006ac1fSRakesh Kudurumalla nix_dump(file, "W3: cq_limit\t\t\t%d\nW3: max_sqe_size\t\t%d\n", 5755aef7fbdSJerin Jacob ctx->cq_limit, ctx->max_sqe_size); 5765aef7fbdSJerin Jacob 5774006ac1fSRakesh Kudurumalla nix_dump(file, "W4: next_sqb \t\t\t0x%" PRIx64 "", ctx->next_sqb); 5784006ac1fSRakesh Kudurumalla nix_dump(file, "W5: tail_sqb \t\t\t0x%" PRIx64 "", ctx->tail_sqb); 5794006ac1fSRakesh Kudurumalla nix_dump(file, "W6: smenq_sqb \t\t\t0x%" PRIx64 "", ctx->smenq_sqb); 5804006ac1fSRakesh Kudurumalla nix_dump(file, "W7: smenq_next_sqb \t\t0x%" PRIx64 "", ctx->smenq_next_sqb); 5814006ac1fSRakesh Kudurumalla nix_dump(file, "W8: head_sqb \t\t\t0x%" PRIx64 "", ctx->head_sqb); 5825aef7fbdSJerin Jacob 5834006ac1fSRakesh Kudurumalla nix_dump(file, "W9: vfi_lso_vld \t\t%d\nW9: vfi_lso_vlan1_ins_ena\t%d", ctx->vfi_lso_vld, 58446008e1bSSatha Rao ctx->vfi_lso_vlan1_ins_ena); 5854006ac1fSRakesh Kudurumalla nix_dump(file, "W9: vfi_lso_vlan0_ins_ena\t%d\nW9: vfi_lso_mps\t\t\t%d", 5865aef7fbdSJerin Jacob ctx->vfi_lso_vlan0_ins_ena, ctx->vfi_lso_mps); 5874006ac1fSRakesh Kudurumalla nix_dump(file, "W9: vfi_lso_sb \t\t\t%d\nW9: vfi_lso_sizem1\t\t%d", ctx->vfi_lso_sb, 58846008e1bSSatha Rao ctx->vfi_lso_sizem1); 5894006ac1fSRakesh Kudurumalla nix_dump(file, "W9: vfi_lso_total\t\t%d", ctx->vfi_lso_total); 5905aef7fbdSJerin Jacob 5914006ac1fSRakesh Kudurumalla nix_dump(file, "W10: scm_lso_rem \t\t0x%" PRIx64 "", (uint64_t)ctx->scm_lso_rem); 5924006ac1fSRakesh Kudurumalla nix_dump(file, "W11: octs \t\t\t0x%" PRIx64 "", (uint64_t)ctx->octs); 5934006ac1fSRakesh Kudurumalla nix_dump(file, "W12: pkts \t\t\t0x%" PRIx64 "", (uint64_t)ctx->pkts); 5944006ac1fSRakesh Kudurumalla nix_dump(file, "W13: aged_drop_pkts \t\t\t0x%" PRIx64 "", (uint64_t)ctx->aged_drop_pkts); 5954006ac1fSRakesh Kudurumalla nix_dump(file, "W13: aged_drop_octs \t\t\t0x%" PRIx64 "", (uint64_t)ctx->aged_drop_octs); 5964006ac1fSRakesh Kudurumalla nix_dump(file, "W14: dropped_octs \t\t0x%" PRIx64 "", (uint64_t)ctx->drop_octs); 5974006ac1fSRakesh Kudurumalla nix_dump(file, "W15: dropped_pkts \t\t0x%" PRIx64 "", (uint64_t)ctx->drop_pkts); 5985aef7fbdSJerin Jacob 5995aef7fbdSJerin Jacob *sqb_aura_p = ctx->sqb_aura; 6005aef7fbdSJerin Jacob } 6015aef7fbdSJerin Jacob 6025aef7fbdSJerin Jacob static inline void 6034006ac1fSRakesh Kudurumalla nix_cn9k_lf_rq_dump(__io struct nix_rq_ctx_s *ctx, FILE *file) 6045aef7fbdSJerin Jacob { 6054006ac1fSRakesh Kudurumalla nix_dump(file, "W0: wqe_aura \t\t\t%d\nW0: substream \t\t\t0x%03x", 6065aef7fbdSJerin Jacob ctx->wqe_aura, ctx->substream); 6074006ac1fSRakesh Kudurumalla nix_dump(file, "W0: cq \t\t\t\t%d\nW0: ena_wqwd \t\t\t%d", ctx->cq, 6085aef7fbdSJerin Jacob ctx->ena_wqwd); 6094006ac1fSRakesh Kudurumalla nix_dump(file, "W0: ipsech_ena \t\t\t%d\nW0: sso_ena \t\t\t%d", 6105aef7fbdSJerin Jacob ctx->ipsech_ena, ctx->sso_ena); 6114006ac1fSRakesh Kudurumalla nix_dump(file, "W0: ena \t\t\t%d\n", ctx->ena); 6125aef7fbdSJerin Jacob 6134006ac1fSRakesh Kudurumalla nix_dump(file, "W1: lpb_drop_ena \t\t%d\nW1: spb_drop_ena \t\t%d", 6145aef7fbdSJerin Jacob ctx->lpb_drop_ena, ctx->spb_drop_ena); 6154006ac1fSRakesh Kudurumalla nix_dump(file, "W1: xqe_drop_ena \t\t%d\nW1: wqe_caching \t\t%d", 6165aef7fbdSJerin Jacob ctx->xqe_drop_ena, ctx->wqe_caching); 6174006ac1fSRakesh Kudurumalla nix_dump(file, "W1: pb_caching \t\t\t%d\nW1: sso_tt \t\t\t%d", 6185aef7fbdSJerin Jacob ctx->pb_caching, ctx->sso_tt); 6194006ac1fSRakesh Kudurumalla nix_dump(file, "W1: sso_grp \t\t\t%d\nW1: lpb_aura \t\t\t%d", ctx->sso_grp, 6205aef7fbdSJerin Jacob ctx->lpb_aura); 6214006ac1fSRakesh Kudurumalla nix_dump(file, "W1: spb_aura \t\t\t%d\n", ctx->spb_aura); 6225aef7fbdSJerin Jacob 6234006ac1fSRakesh Kudurumalla nix_dump(file, "W2: xqe_hdr_split \t\t%d\nW2: xqe_imm_copy \t\t%d", 6245aef7fbdSJerin Jacob ctx->xqe_hdr_split, ctx->xqe_imm_copy); 6254006ac1fSRakesh Kudurumalla nix_dump(file, "W2: xqe_imm_size \t\t%d\nW2: later_skip \t\t\t%d", 6265aef7fbdSJerin Jacob ctx->xqe_imm_size, ctx->later_skip); 6274006ac1fSRakesh Kudurumalla nix_dump(file, "W2: first_skip \t\t\t%d\nW2: lpb_sizem1 \t\t\t%d", 6285aef7fbdSJerin Jacob ctx->first_skip, ctx->lpb_sizem1); 6294006ac1fSRakesh Kudurumalla nix_dump(file, "W2: spb_ena \t\t\t%d\nW2: wqe_skip \t\t\t%d", ctx->spb_ena, 6305aef7fbdSJerin Jacob ctx->wqe_skip); 6314006ac1fSRakesh Kudurumalla nix_dump(file, "W2: spb_sizem1 \t\t\t%d\n", ctx->spb_sizem1); 6325aef7fbdSJerin Jacob 6334006ac1fSRakesh Kudurumalla nix_dump(file, "W3: spb_pool_pass \t\t%d\nW3: spb_pool_drop \t\t%d", 6345aef7fbdSJerin Jacob ctx->spb_pool_pass, ctx->spb_pool_drop); 6354006ac1fSRakesh Kudurumalla nix_dump(file, "W3: spb_aura_pass \t\t%d\nW3: spb_aura_drop \t\t%d", 6365aef7fbdSJerin Jacob ctx->spb_aura_pass, ctx->spb_aura_drop); 6374006ac1fSRakesh Kudurumalla nix_dump(file, "W3: wqe_pool_pass \t\t%d\nW3: wqe_pool_drop \t\t%d", 6385aef7fbdSJerin Jacob ctx->wqe_pool_pass, ctx->wqe_pool_drop); 6394006ac1fSRakesh Kudurumalla nix_dump(file, "W3: xqe_pass \t\t\t%d\nW3: xqe_drop \t\t\t%d\n", 6405aef7fbdSJerin Jacob ctx->xqe_pass, ctx->xqe_drop); 6415aef7fbdSJerin Jacob 6424006ac1fSRakesh Kudurumalla nix_dump(file, "W4: qint_idx \t\t\t%d\nW4: rq_int_ena \t\t\t%d", 6435aef7fbdSJerin Jacob ctx->qint_idx, ctx->rq_int_ena); 6444006ac1fSRakesh Kudurumalla nix_dump(file, "W4: rq_int \t\t\t%d\nW4: lpb_pool_pass \t\t%d", ctx->rq_int, 6455aef7fbdSJerin Jacob ctx->lpb_pool_pass); 6464006ac1fSRakesh Kudurumalla nix_dump(file, "W4: lpb_pool_drop \t\t%d\nW4: lpb_aura_pass \t\t%d", 6475aef7fbdSJerin Jacob ctx->lpb_pool_drop, ctx->lpb_aura_pass); 6484006ac1fSRakesh Kudurumalla nix_dump(file, "W4: lpb_aura_drop \t\t%d\n", ctx->lpb_aura_drop); 6495aef7fbdSJerin Jacob 6504006ac1fSRakesh Kudurumalla nix_dump(file, "W5: flow_tagw \t\t\t%d\nW5: bad_utag \t\t\t%d", 6515aef7fbdSJerin Jacob ctx->flow_tagw, ctx->bad_utag); 6524006ac1fSRakesh Kudurumalla nix_dump(file, "W5: good_utag \t\t\t%d\nW5: ltag \t\t\t%d\n", ctx->good_utag, 6535aef7fbdSJerin Jacob ctx->ltag); 6545aef7fbdSJerin Jacob 6554006ac1fSRakesh Kudurumalla nix_dump(file, "W6: octs \t\t\t0x%" PRIx64 "", (uint64_t)ctx->octs); 6564006ac1fSRakesh Kudurumalla nix_dump(file, "W7: pkts \t\t\t0x%" PRIx64 "", (uint64_t)ctx->pkts); 6574006ac1fSRakesh Kudurumalla nix_dump(file, "W8: drop_octs \t\t\t0x%" PRIx64 "", (uint64_t)ctx->drop_octs); 6584006ac1fSRakesh Kudurumalla nix_dump(file, "W9: drop_pkts \t\t\t0x%" PRIx64 "", (uint64_t)ctx->drop_pkts); 6594006ac1fSRakesh Kudurumalla nix_dump(file, "W10: re_pkts \t\t\t0x%" PRIx64 "\n", (uint64_t)ctx->re_pkts); 6605aef7fbdSJerin Jacob } 6615aef7fbdSJerin Jacob 66238b177feSNithin Dabilpuram void 663*db5744d3SSatha Rao nix_cn10k_lf_rq_dump(__io struct nix_cn10k_rq_ctx_s *ctx, FILE *file) 6645aef7fbdSJerin Jacob { 6654006ac1fSRakesh Kudurumalla nix_dump(file, "W0: wqe_aura \t\t\t%d\nW0: len_ol3_dis \t\t\t%d", 6665aef7fbdSJerin Jacob ctx->wqe_aura, ctx->len_ol3_dis); 6674006ac1fSRakesh Kudurumalla nix_dump(file, "W0: len_ol4_dis \t\t\t%d\nW0: len_il3_dis \t\t\t%d", 6685aef7fbdSJerin Jacob ctx->len_ol4_dis, ctx->len_il3_dis); 6694006ac1fSRakesh Kudurumalla nix_dump(file, "W0: len_il4_dis \t\t\t%d\nW0: csum_ol4_dis \t\t\t%d", 6705aef7fbdSJerin Jacob ctx->len_il4_dis, ctx->csum_ol4_dis); 6714006ac1fSRakesh Kudurumalla nix_dump(file, "W0: csum_ol3_dis \t\t\t%d\nW0: lenerr_dis \t\t\t%d", 6725aef7fbdSJerin Jacob ctx->csum_ol4_dis, ctx->lenerr_dis); 6734006ac1fSRakesh Kudurumalla nix_dump(file, "W0: cq \t\t\t\t%d\nW0: ena_wqwd \t\t\t%d", ctx->cq, 6745aef7fbdSJerin Jacob ctx->ena_wqwd); 6754006ac1fSRakesh Kudurumalla nix_dump(file, "W0: ipsech_ena \t\t\t%d\nW0: sso_ena \t\t\t%d", 6765aef7fbdSJerin Jacob ctx->ipsech_ena, ctx->sso_ena); 6774006ac1fSRakesh Kudurumalla nix_dump(file, "W0: ena \t\t\t%d\n", ctx->ena); 6785aef7fbdSJerin Jacob 6794006ac1fSRakesh Kudurumalla nix_dump(file, "W1: chi_ena \t\t%d\nW1: ipsecd_drop_en \t\t%d", ctx->chi_ena, 6805aef7fbdSJerin Jacob ctx->ipsecd_drop_en); 6814006ac1fSRakesh Kudurumalla nix_dump(file, "W1: pb_stashing \t\t\t%d", ctx->pb_stashing); 6824006ac1fSRakesh Kudurumalla nix_dump(file, "W1: lpb_drop_ena \t\t%d\nW1: spb_drop_ena \t\t%d", 6835aef7fbdSJerin Jacob ctx->lpb_drop_ena, ctx->spb_drop_ena); 6844006ac1fSRakesh Kudurumalla nix_dump(file, "W1: xqe_drop_ena \t\t%d\nW1: wqe_caching \t\t%d", 6855aef7fbdSJerin Jacob ctx->xqe_drop_ena, ctx->wqe_caching); 6864006ac1fSRakesh Kudurumalla nix_dump(file, "W1: pb_caching \t\t\t%d\nW1: sso_tt \t\t\t%d", 6875aef7fbdSJerin Jacob ctx->pb_caching, ctx->sso_tt); 6884006ac1fSRakesh Kudurumalla nix_dump(file, "W1: sso_grp \t\t\t%d\nW1: lpb_aura \t\t\t%d", ctx->sso_grp, 6895aef7fbdSJerin Jacob ctx->lpb_aura); 6904006ac1fSRakesh Kudurumalla nix_dump(file, "W1: spb_aura \t\t\t%d\n", ctx->spb_aura); 6915aef7fbdSJerin Jacob 6924006ac1fSRakesh Kudurumalla nix_dump(file, "W2: xqe_hdr_split \t\t%d\nW2: xqe_imm_copy \t\t%d", 6935aef7fbdSJerin Jacob ctx->xqe_hdr_split, ctx->xqe_imm_copy); 6944006ac1fSRakesh Kudurumalla nix_dump(file, "W2: xqe_imm_size \t\t%d\nW2: later_skip \t\t\t%d", 6955aef7fbdSJerin Jacob ctx->xqe_imm_size, ctx->later_skip); 6964006ac1fSRakesh Kudurumalla nix_dump(file, "W2: first_skip \t\t\t%d\nW2: lpb_sizem1 \t\t\t%d", 6975aef7fbdSJerin Jacob ctx->first_skip, ctx->lpb_sizem1); 6984006ac1fSRakesh Kudurumalla nix_dump(file, "W2: spb_ena \t\t\t%d\nW2: wqe_skip \t\t\t%d", ctx->spb_ena, 6995aef7fbdSJerin Jacob ctx->wqe_skip); 7004006ac1fSRakesh Kudurumalla nix_dump(file, "W2: spb_sizem1 \t\t\t%d\nW2: policer_ena \t\t\t%d", 7015aef7fbdSJerin Jacob ctx->spb_sizem1, ctx->policer_ena); 7024006ac1fSRakesh Kudurumalla nix_dump(file, "W2: band_prof_id \t\t\t%d", ctx->band_prof_id); 7035aef7fbdSJerin Jacob 7044006ac1fSRakesh Kudurumalla nix_dump(file, "W3: spb_pool_pass \t\t%d\nW3: spb_pool_drop \t\t%d", 7055aef7fbdSJerin Jacob ctx->spb_pool_pass, ctx->spb_pool_drop); 7064006ac1fSRakesh Kudurumalla nix_dump(file, "W3: spb_aura_pass \t\t%d\nW3: spb_aura_drop \t\t%d", 7075aef7fbdSJerin Jacob ctx->spb_aura_pass, ctx->spb_aura_drop); 7084006ac1fSRakesh Kudurumalla nix_dump(file, "W3: wqe_pool_pass \t\t%d\nW3: wqe_pool_drop \t\t%d", 7095aef7fbdSJerin Jacob ctx->wqe_pool_pass, ctx->wqe_pool_drop); 7104006ac1fSRakesh Kudurumalla nix_dump(file, "W3: xqe_pass \t\t\t%d\nW3: xqe_drop \t\t\t%d\n", 7115aef7fbdSJerin Jacob ctx->xqe_pass, ctx->xqe_drop); 7125aef7fbdSJerin Jacob 7134006ac1fSRakesh Kudurumalla nix_dump(file, "W4: qint_idx \t\t\t%d\nW4: rq_int_ena \t\t\t%d", 7145aef7fbdSJerin Jacob ctx->qint_idx, ctx->rq_int_ena); 7154006ac1fSRakesh Kudurumalla nix_dump(file, "W4: rq_int \t\t\t%d\nW4: lpb_pool_pass \t\t%d", ctx->rq_int, 7165aef7fbdSJerin Jacob ctx->lpb_pool_pass); 7174006ac1fSRakesh Kudurumalla nix_dump(file, "W4: lpb_pool_drop \t\t%d\nW4: lpb_aura_pass \t\t%d", 7185aef7fbdSJerin Jacob ctx->lpb_pool_drop, ctx->lpb_aura_pass); 7194006ac1fSRakesh Kudurumalla nix_dump(file, "W4: lpb_aura_drop \t\t%d\n", ctx->lpb_aura_drop); 7205aef7fbdSJerin Jacob 7214006ac1fSRakesh Kudurumalla nix_dump(file, "W5: vwqe_skip \t\t\t%d\nW5: max_vsize_exp \t\t\t%d", 7225aef7fbdSJerin Jacob ctx->vwqe_skip, ctx->max_vsize_exp); 7234006ac1fSRakesh Kudurumalla nix_dump(file, "W5: vtime_wait \t\t\t%d\nW5: vwqe_ena \t\t\t%d", 7245aef7fbdSJerin Jacob ctx->vtime_wait, ctx->max_vsize_exp); 7254006ac1fSRakesh Kudurumalla nix_dump(file, "W5: ipsec_vwqe \t\t\t%d", ctx->ipsec_vwqe); 7264006ac1fSRakesh Kudurumalla nix_dump(file, "W5: flow_tagw \t\t\t%d\nW5: bad_utag \t\t\t%d", 7275aef7fbdSJerin Jacob ctx->flow_tagw, ctx->bad_utag); 7284006ac1fSRakesh Kudurumalla nix_dump(file, "W5: good_utag \t\t\t%d\nW5: ltag \t\t\t%d\n", ctx->good_utag, 7295aef7fbdSJerin Jacob ctx->ltag); 7305aef7fbdSJerin Jacob 7314006ac1fSRakesh Kudurumalla nix_dump(file, "W6: octs \t\t\t0x%" PRIx64 "", (uint64_t)ctx->octs); 7324006ac1fSRakesh Kudurumalla nix_dump(file, "W7: pkts \t\t\t0x%" PRIx64 "", (uint64_t)ctx->pkts); 7334006ac1fSRakesh Kudurumalla nix_dump(file, "W8: drop_octs \t\t\t0x%" PRIx64 "", (uint64_t)ctx->drop_octs); 7344006ac1fSRakesh Kudurumalla nix_dump(file, "W9: drop_pkts \t\t\t0x%" PRIx64 "", (uint64_t)ctx->drop_pkts); 7354006ac1fSRakesh Kudurumalla nix_dump(file, "W10: re_pkts \t\t\t0x%" PRIx64 "\n", (uint64_t)ctx->re_pkts); 7365aef7fbdSJerin Jacob } 7375aef7fbdSJerin Jacob 738*db5744d3SSatha Rao void 739*db5744d3SSatha Rao nix_lf_rq_dump(__io struct nix_cn20k_rq_ctx_s *ctx, FILE *file) 740*db5744d3SSatha Rao { 741*db5744d3SSatha Rao nix_dump(file, "W0: wqe_aura \t\t\t%d\nW0: len_ol3_dis \t\t\t%d", 742*db5744d3SSatha Rao ctx->wqe_aura, ctx->len_ol3_dis); 743*db5744d3SSatha Rao nix_dump(file, "W0: len_ol4_dis \t\t\t%d\nW0: len_il3_dis \t\t\t%d", 744*db5744d3SSatha Rao ctx->len_ol4_dis, ctx->len_il3_dis); 745*db5744d3SSatha Rao nix_dump(file, "W0: len_il4_dis \t\t\t%d\nW0: csum_ol4_dis \t\t\t%d", 746*db5744d3SSatha Rao ctx->len_il4_dis, ctx->csum_ol4_dis); 747*db5744d3SSatha Rao nix_dump(file, "W0: csum_il4_dis \t\t\t%d\nW0: lenerr_dis \t\t\t%d", 748*db5744d3SSatha Rao ctx->csum_il4_dis, ctx->lenerr_dis); 749*db5744d3SSatha Rao nix_dump(file, "W0: port_ol4_dis \t\t\t%d\nW0: port_il4_dis\t\t\t%d", 750*db5744d3SSatha Rao ctx->port_ol4_dis, ctx->port_il4_dis); 751*db5744d3SSatha Rao nix_dump(file, "W0: cq \t\t\t\t%d\nW0: ena_wqwd \t\t\t%d", ctx->cq, 752*db5744d3SSatha Rao ctx->ena_wqwd); 753*db5744d3SSatha Rao nix_dump(file, "W0: ipsech_ena \t\t\t%d\nW0: sso_ena \t\t\t%d", 754*db5744d3SSatha Rao ctx->ipsech_ena, ctx->sso_ena); 755*db5744d3SSatha Rao nix_dump(file, "W0: ena \t\t\t%d\n", ctx->ena); 756*db5744d3SSatha Rao 757*db5744d3SSatha Rao nix_dump(file, "W1: chi_ena \t\t%d\nW1: ipsecd_drop_en \t\t%d", ctx->chi_ena, 758*db5744d3SSatha Rao ctx->ipsecd_drop_en); 759*db5744d3SSatha Rao nix_dump(file, "W1: pb_stashing \t\t\t%d", ctx->pb_stashing); 760*db5744d3SSatha Rao nix_dump(file, "W1: lpb_drop_ena \t\t%d\nW1: spb_drop_ena \t\t%d", 761*db5744d3SSatha Rao ctx->lpb_drop_ena, ctx->spb_drop_ena); 762*db5744d3SSatha Rao nix_dump(file, "W1: xqe_drop_ena \t\t%d\nW1: wqe_caching \t\t%d", 763*db5744d3SSatha Rao ctx->xqe_drop_ena, ctx->wqe_caching); 764*db5744d3SSatha Rao nix_dump(file, "W1: pb_caching \t\t\t%d\nW1: sso_tt \t\t\t%d", 765*db5744d3SSatha Rao ctx->pb_caching, ctx->sso_tt); 766*db5744d3SSatha Rao nix_dump(file, "W1: sso_grp \t\t\t%d\nW1: lpb_aura \t\t\t%d", ctx->sso_grp, 767*db5744d3SSatha Rao ctx->lpb_aura); 768*db5744d3SSatha Rao nix_dump(file, "W1: spb_aura \t\t\t%d\n", ctx->spb_aura); 769*db5744d3SSatha Rao 770*db5744d3SSatha Rao nix_dump(file, "W2: xqe_hdr_split \t\t%d\nW2: xqe_imm_copy \t\t%d", 771*db5744d3SSatha Rao ctx->xqe_hdr_split, ctx->xqe_imm_copy); 772*db5744d3SSatha Rao nix_dump(file, "W2: band_prof_id\t\t%d\n", 773*db5744d3SSatha Rao ((ctx->band_prof_id_h << 10) | ctx->band_prof_id_l)); 774*db5744d3SSatha Rao nix_dump(file, "W2: xqe_imm_size \t\t%d\nW2: later_skip \t\t\t%d", 775*db5744d3SSatha Rao ctx->xqe_imm_size, ctx->later_skip); 776*db5744d3SSatha Rao nix_dump(file, "W2: sso_bp_ena\t\t%d\n", ctx->sso_bp_ena); 777*db5744d3SSatha Rao nix_dump(file, "W2: first_skip \t\t\t%d\nW2: lpb_sizem1 \t\t\t%d", 778*db5744d3SSatha Rao ctx->first_skip, ctx->lpb_sizem1); 779*db5744d3SSatha Rao nix_dump(file, "W2: spb_ena \t\t\t%d\nW2: spb_high_sizem1 \t\t\t%d", ctx->spb_ena, 780*db5744d3SSatha Rao ctx->spb_high_sizem1); 781*db5744d3SSatha Rao nix_dump(file, "W2: wqe_skip \t\t\t%d", ctx->wqe_skip); 782*db5744d3SSatha Rao nix_dump(file, "W2: spb_sizem1 \t\t\t%d\nW2: policer_ena \t\t\t%d", 783*db5744d3SSatha Rao ctx->spb_sizem1, ctx->policer_ena); 784*db5744d3SSatha Rao nix_dump(file, "W2: sso_fc_ena \t\t\t%d\n", ctx->sso_fc_ena); 785*db5744d3SSatha Rao 786*db5744d3SSatha Rao nix_dump(file, "W3: spb_pool_pass \t\t%d\nW3: spb_pool_drop \t\t%d", 787*db5744d3SSatha Rao ctx->spb_pool_pass, ctx->spb_pool_drop); 788*db5744d3SSatha Rao nix_dump(file, "W3: spb_aura_pass \t\t%d\nW3: spb_aura_drop \t\t%d", 789*db5744d3SSatha Rao ctx->spb_aura_pass, ctx->spb_aura_drop); 790*db5744d3SSatha Rao nix_dump(file, "W3: wqe_pool_pass \t\t%d\nW3: wqe_pool_drop \t\t%d", 791*db5744d3SSatha Rao ctx->wqe_pool_pass, ctx->wqe_pool_drop); 792*db5744d3SSatha Rao nix_dump(file, "W3: xqe_pass \t\t\t%d\nW3: xqe_drop \t\t\t%d\n", 793*db5744d3SSatha Rao ctx->xqe_pass, ctx->xqe_drop); 794*db5744d3SSatha Rao 795*db5744d3SSatha Rao nix_dump(file, "W4: qint_idx \t\t\t%d\nW4: rq_int_ena \t\t\t%d", 796*db5744d3SSatha Rao ctx->qint_idx, ctx->rq_int_ena); 797*db5744d3SSatha Rao nix_dump(file, "W4: rq_int \t\t\t%d\nW4: lpb_pool_pass \t\t%d", ctx->rq_int, 798*db5744d3SSatha Rao ctx->lpb_pool_pass); 799*db5744d3SSatha Rao nix_dump(file, "W4: lpb_pool_drop \t\t%d\nW4: lpb_aura_pass \t\t%d", 800*db5744d3SSatha Rao ctx->lpb_pool_drop, ctx->lpb_aura_pass); 801*db5744d3SSatha Rao nix_dump(file, "W4: lpb_aura_drop \t\t%d\n", ctx->lpb_aura_drop); 802*db5744d3SSatha Rao 803*db5744d3SSatha Rao nix_dump(file, "W5: flow_tagw \t\t\t%d\nW5: bad_utag \t\t\t%d", 804*db5744d3SSatha Rao ctx->flow_tagw, ctx->bad_utag); 805*db5744d3SSatha Rao nix_dump(file, "W5: good_utag \t\t\t%d\nW5: ltag \t\t\t%d\n", ctx->good_utag, 806*db5744d3SSatha Rao ctx->ltag); 807*db5744d3SSatha Rao 808*db5744d3SSatha Rao nix_dump(file, "W6: octs \t\t\t0x%" PRIx64 "", (uint64_t)ctx->octs); 809*db5744d3SSatha Rao nix_dump(file, "W7: pkts \t\t\t0x%" PRIx64 "", (uint64_t)ctx->pkts); 810*db5744d3SSatha Rao nix_dump(file, "W8: drop_octs \t\t\t0x%" PRIx64 "", (uint64_t)ctx->drop_octs); 811*db5744d3SSatha Rao nix_dump(file, "W9: drop_pkts \t\t\t0x%" PRIx64 "", (uint64_t)ctx->drop_pkts); 812*db5744d3SSatha Rao nix_dump(file, "W10: re_pkts \t\t\t0x%" PRIx64 "\n", (uint64_t)ctx->re_pkts); 813*db5744d3SSatha Rao } 814*db5744d3SSatha Rao 815*db5744d3SSatha Rao static inline void 816*db5744d3SSatha Rao nix_cn20k_lf_cq_dump(__io struct nix_cn20k_cq_ctx_s *ctx, FILE *file) 817*db5744d3SSatha Rao { 818*db5744d3SSatha Rao nix_dump(file, "W0: base \t\t\t0x%" PRIx64 "\n", ctx->base); 819*db5744d3SSatha Rao 820*db5744d3SSatha Rao nix_dump(file, "W1: wrptr \t\t\t%" PRIx64 "", (uint64_t)ctx->wrptr); 821*db5744d3SSatha Rao nix_dump(file, "W1: avg_con \t\t\t%d\nW1: cint_idx \t\t\t%d", ctx->avg_con, 822*db5744d3SSatha Rao ctx->cint_idx); 823*db5744d3SSatha Rao nix_dump(file, "W1: cq_err \t\t\t%d\nW1: qint_idx \t\t\t%d", ctx->cq_err, 824*db5744d3SSatha Rao ctx->qint_idx); 825*db5744d3SSatha Rao nix_dump(file, "W1: bpid \t\t\t%d\nW1: bp_ena \t\t\t%d\n", ctx->bpid, 826*db5744d3SSatha Rao ctx->bp_ena); 827*db5744d3SSatha Rao nix_dump(file, 828*db5744d3SSatha Rao "W1: lbpid_high \t\t\t0x%03x\nW1: lbpid_med \t\t\t0x%03x\n" 829*db5744d3SSatha Rao "W1: lbpid_low \t\t\t0x%03x\n(W1: lbpid) \t\t\t0x%03x\n", 830*db5744d3SSatha Rao ctx->lbpid_high, ctx->lbpid_med, ctx->lbpid_low, (unsigned int) 831*db5744d3SSatha Rao (ctx->lbpid_high << 6 | ctx->lbpid_med << 3 | ctx->lbpid_low)); 832*db5744d3SSatha Rao nix_dump(file, "W1: lbp_ena \t\t\t\t%d\n", ctx->lbp_ena); 833*db5744d3SSatha Rao 834*db5744d3SSatha Rao nix_dump(file, "W2: update_time \t\t%d\nW2: avg_level \t\t\t%d", 835*db5744d3SSatha Rao ctx->update_time, ctx->avg_level); 836*db5744d3SSatha Rao nix_dump(file, "W2: head \t\t\t%d\nW2: tail \t\t\t%d\n", ctx->head, 837*db5744d3SSatha Rao ctx->tail); 838*db5744d3SSatha Rao 839*db5744d3SSatha Rao nix_dump(file, "W3: cq_err_int_ena \t\t%d\nW3: cq_err_int \t\t\t%d", 840*db5744d3SSatha Rao ctx->cq_err_int_ena, ctx->cq_err_int); 841*db5744d3SSatha Rao nix_dump(file, "W3: qsize \t\t\t%d\nW3: stashing \t\t\t%d", ctx->qsize, 842*db5744d3SSatha Rao ctx->stashing); 843*db5744d3SSatha Rao nix_dump(file, "W3: caching \t\t\t%d\nW3: lbp_frac \t\t\t%d", ctx->caching, ctx->lbp_frac); 844*db5744d3SSatha Rao nix_dump(file, "W3: stash_thresh \t\t\t%d\nW3: msh_valid\t\t\t%d", ctx->stash_thresh, 845*db5744d3SSatha Rao ctx->msh_valid); 846*db5744d3SSatha Rao nix_dump(file, "W3: msh_dst \t\t\t0x%03x\nW3: cpt_drop_err_en \t\t\t%d\n", 847*db5744d3SSatha Rao ctx->msh_dst, ctx->cpt_drop_err_en); 848*db5744d3SSatha Rao nix_dump(file, "W3: ena \t\t\t%d\n", ctx->ena); 849*db5744d3SSatha Rao nix_dump(file, "W3: drop_ena \t\t\t%d\nW3: drop \t\t\t%d", ctx->drop_ena, 850*db5744d3SSatha Rao ctx->drop); 851*db5744d3SSatha Rao nix_dump(file, "W3: bp \t\t\t\t%d\n", ctx->bp); 852*db5744d3SSatha Rao nix_dump(file, "W4: lbpid_ext \t\t\t%d\nW3: bpid_ext \t\t\t%d", ctx->lbpid_ext, 853*db5744d3SSatha Rao ctx->bpid_ext); 854*db5744d3SSatha Rao } 855*db5744d3SSatha Rao 8565aef7fbdSJerin Jacob static inline void 8574006ac1fSRakesh Kudurumalla nix_lf_cq_dump(__io struct nix_cq_ctx_s *ctx, FILE *file) 8585aef7fbdSJerin Jacob { 8594006ac1fSRakesh Kudurumalla nix_dump(file, "W0: base \t\t\t0x%" PRIx64 "\n", ctx->base); 8605aef7fbdSJerin Jacob 8614006ac1fSRakesh Kudurumalla nix_dump(file, "W1: wrptr \t\t\t%" PRIx64 "", (uint64_t)ctx->wrptr); 8624006ac1fSRakesh Kudurumalla nix_dump(file, "W1: avg_con \t\t\t%d\nW1: cint_idx \t\t\t%d", ctx->avg_con, 8635aef7fbdSJerin Jacob ctx->cint_idx); 8644006ac1fSRakesh Kudurumalla nix_dump(file, "W1: cq_err \t\t\t%d\nW1: qint_idx \t\t\t%d", ctx->cq_err, 8655aef7fbdSJerin Jacob ctx->qint_idx); 8664006ac1fSRakesh Kudurumalla nix_dump(file, "W1: bpid \t\t\t%d\nW1: bp_ena \t\t\t%d\n", ctx->bpid, 8675aef7fbdSJerin Jacob ctx->bp_ena); 868d2f168dfSNithin Dabilpuram nix_dump(file, 869d2f168dfSNithin Dabilpuram "W1: lbpid_high \t\t\t0x%03x\nW1: lbpid_med \t\t\t0x%03x\n" 870d2f168dfSNithin Dabilpuram "W1: lbpid_low \t\t\t0x%03x\n(W1: lbpid) \t\t\t0x%03x\n", 8718f162d69SGowrishankar Muthukrishnan ctx->lbpid_high, ctx->lbpid_med, ctx->lbpid_low, (unsigned int) 8728f162d69SGowrishankar Muthukrishnan (ctx->lbpid_high << 6 | ctx->lbpid_med << 3 | ctx->lbpid_low)); 873d2f168dfSNithin Dabilpuram nix_dump(file, "W1: lbp_ena \t\t\t\t%d\n", ctx->lbp_ena); 8745aef7fbdSJerin Jacob 8754006ac1fSRakesh Kudurumalla nix_dump(file, "W2: update_time \t\t%d\nW2: avg_level \t\t\t%d", 8765aef7fbdSJerin Jacob ctx->update_time, ctx->avg_level); 8774006ac1fSRakesh Kudurumalla nix_dump(file, "W2: head \t\t\t%d\nW2: tail \t\t\t%d\n", ctx->head, 8785aef7fbdSJerin Jacob ctx->tail); 8795aef7fbdSJerin Jacob 8804006ac1fSRakesh Kudurumalla nix_dump(file, "W3: cq_err_int_ena \t\t%d\nW3: cq_err_int \t\t\t%d", 8815aef7fbdSJerin Jacob ctx->cq_err_int_ena, ctx->cq_err_int); 8824006ac1fSRakesh Kudurumalla nix_dump(file, "W3: qsize \t\t\t%d\nW3: caching \t\t\t%d", ctx->qsize, 8835aef7fbdSJerin Jacob ctx->caching); 8848bc924cfSNithin Dabilpuram nix_dump(file, "W3: lbp_frac \t\t\t%d\n", ctx->lbp_frac); 885d2f168dfSNithin Dabilpuram nix_dump(file, "W3: substream \t\t\t0x%03x\nW3: cpt_drop_err_en \t\t\t%d\n", 886d2f168dfSNithin Dabilpuram ctx->substream, ctx->cpt_drop_err_en); 887d2f168dfSNithin Dabilpuram nix_dump(file, "W3: ena \t\t\t%d\n", ctx->ena); 8884006ac1fSRakesh Kudurumalla nix_dump(file, "W3: drop_ena \t\t\t%d\nW3: drop \t\t\t%d", ctx->drop_ena, 8895aef7fbdSJerin Jacob ctx->drop); 8904006ac1fSRakesh Kudurumalla nix_dump(file, "W3: bp \t\t\t\t%d\n", ctx->bp); 8915aef7fbdSJerin Jacob } 8925aef7fbdSJerin Jacob 8935aef7fbdSJerin Jacob int 8944006ac1fSRakesh Kudurumalla roc_nix_queues_ctx_dump(struct roc_nix *roc_nix, FILE *file) 8955aef7fbdSJerin Jacob { 8965aef7fbdSJerin Jacob struct nix *nix = roc_nix_to_nix_priv(roc_nix); 897143a419eSAshwin Sekhar T K struct npa_cn20k_aq_enq_req *npa_aq_cn20k; 8985aef7fbdSJerin Jacob int rc = -1, q, rq = nix->nb_rx_queues; 8995aef7fbdSJerin Jacob struct npa_aq_enq_rsp *npa_rsp; 9005aef7fbdSJerin Jacob struct npa_aq_enq_req *npa_aq; 90138b177feSNithin Dabilpuram struct dev *dev = &nix->dev; 9025aef7fbdSJerin Jacob int sq = nix->nb_tx_queues; 9034398c409SNithin Dabilpuram struct roc_nix_rq *inl_rq; 9045aef7fbdSJerin Jacob struct npa_lf *npa_lf; 90538b177feSNithin Dabilpuram volatile void *ctx; 9065aef7fbdSJerin Jacob uint32_t sqb_aura; 9075aef7fbdSJerin Jacob 9085aef7fbdSJerin Jacob npa_lf = idev_npa_obj_get(); 9095aef7fbdSJerin Jacob if (npa_lf == NULL) 9105aef7fbdSJerin Jacob return NPA_ERR_DEVICE_NOT_BOUNDED; 9115aef7fbdSJerin Jacob 9125aef7fbdSJerin Jacob for (q = 0; q < rq; q++) { 91338b177feSNithin Dabilpuram rc = nix_q_ctx_get(dev, NIX_AQ_CTYPE_CQ, q, &ctx); 9145aef7fbdSJerin Jacob if (rc) { 9155aef7fbdSJerin Jacob plt_err("Failed to get cq context"); 9165aef7fbdSJerin Jacob goto fail; 9175aef7fbdSJerin Jacob } 9184006ac1fSRakesh Kudurumalla nix_dump(file, "============== port=%d cq=%d ===============", 9195aef7fbdSJerin Jacob roc_nix->port_id, q); 920*db5744d3SSatha Rao if (roc_model_is_cn20k()) 921*db5744d3SSatha Rao nix_cn20k_lf_cq_dump(ctx, file); 922*db5744d3SSatha Rao else 9234006ac1fSRakesh Kudurumalla nix_lf_cq_dump(ctx, file); 9245aef7fbdSJerin Jacob } 9255aef7fbdSJerin Jacob 9265aef7fbdSJerin Jacob for (q = 0; q < rq; q++) { 92738b177feSNithin Dabilpuram rc = nix_q_ctx_get(dev, NIX_AQ_CTYPE_RQ, q, &ctx); 9285aef7fbdSJerin Jacob if (rc) { 9295aef7fbdSJerin Jacob plt_err("Failed to get rq context"); 9305aef7fbdSJerin Jacob goto fail; 9315aef7fbdSJerin Jacob } 9324006ac1fSRakesh Kudurumalla nix_dump(file, "============== port=%d rq=%d ===============", 9335aef7fbdSJerin Jacob roc_nix->port_id, q); 9345aef7fbdSJerin Jacob if (roc_model_is_cn9k()) 9354006ac1fSRakesh Kudurumalla nix_cn9k_lf_rq_dump(ctx, file); 936*db5744d3SSatha Rao else if (roc_model_is_cn10k()) 937*db5744d3SSatha Rao nix_cn10k_lf_rq_dump(ctx, file); 9385aef7fbdSJerin Jacob else 9394006ac1fSRakesh Kudurumalla nix_lf_rq_dump(ctx, file); 9405aef7fbdSJerin Jacob } 9415aef7fbdSJerin Jacob 9424398c409SNithin Dabilpuram /* Dump inline dev RQ for this port */ 9434398c409SNithin Dabilpuram inl_rq = roc_nix_inl_dev_rq(roc_nix); 9444398c409SNithin Dabilpuram if (inl_rq) { 9454398c409SNithin Dabilpuram struct idev_cfg *idev = idev_get_cfg(); 946f7648fb3SGowrishankar Muthukrishnan struct nix_inl_dev *inl_dev = NULL; 947f7648fb3SGowrishankar Muthukrishnan 948f7648fb3SGowrishankar Muthukrishnan if (idev && idev->nix_inl_dev) 949f7648fb3SGowrishankar Muthukrishnan inl_dev = idev->nix_inl_dev; 950f7648fb3SGowrishankar Muthukrishnan 951f7648fb3SGowrishankar Muthukrishnan if (!inl_dev) 952f7648fb3SGowrishankar Muthukrishnan return -EINVAL; 9534398c409SNithin Dabilpuram 9544398c409SNithin Dabilpuram rc = nix_q_ctx_get(&inl_dev->dev, NIX_AQ_CTYPE_RQ, inl_rq->qid, &ctx); 9554398c409SNithin Dabilpuram if (rc) { 9564398c409SNithin Dabilpuram plt_err("Failed to get rq context"); 9574398c409SNithin Dabilpuram goto fail; 9584398c409SNithin Dabilpuram } 9594398c409SNithin Dabilpuram nix_dump(file, "============== port=%d inl_rq=%d ===============", roc_nix->port_id, 9604398c409SNithin Dabilpuram inl_rq->qid); 9614398c409SNithin Dabilpuram if (roc_model_is_cn9k()) 9624398c409SNithin Dabilpuram nix_cn9k_lf_rq_dump(ctx, file); 963*db5744d3SSatha Rao else if (roc_model_is_cn10k()) 964*db5744d3SSatha Rao nix_cn10k_lf_rq_dump(ctx, file); 9654398c409SNithin Dabilpuram else 9664398c409SNithin Dabilpuram nix_lf_rq_dump(ctx, file); 9674398c409SNithin Dabilpuram } 9684398c409SNithin Dabilpuram 9695aef7fbdSJerin Jacob for (q = 0; q < sq; q++) { 97038b177feSNithin Dabilpuram rc = nix_q_ctx_get(dev, NIX_AQ_CTYPE_SQ, q, &ctx); 9715aef7fbdSJerin Jacob if (rc) { 9725aef7fbdSJerin Jacob plt_err("Failed to get sq context"); 9735aef7fbdSJerin Jacob goto fail; 9745aef7fbdSJerin Jacob } 9754006ac1fSRakesh Kudurumalla nix_dump(file, "============== port=%d sq=%d ===============", 9765aef7fbdSJerin Jacob roc_nix->port_id, q); 9775aef7fbdSJerin Jacob if (roc_model_is_cn9k()) 9784006ac1fSRakesh Kudurumalla nix_cn9k_lf_sq_dump(ctx, &sqb_aura, file); 979*db5744d3SSatha Rao else if (roc_model_is_cn10k()) 980*db5744d3SSatha Rao nix_cn10k_lf_sq_dump(ctx, &sqb_aura, file); 9815aef7fbdSJerin Jacob else 9824006ac1fSRakesh Kudurumalla nix_lf_sq_dump(ctx, &sqb_aura, file); 9835aef7fbdSJerin Jacob 9845aef7fbdSJerin Jacob if (!npa_lf) { 9855aef7fbdSJerin Jacob plt_err("NPA LF does not exist"); 9865aef7fbdSJerin Jacob continue; 9875aef7fbdSJerin Jacob } 9885aef7fbdSJerin Jacob 989143a419eSAshwin Sekhar T K if (roc_model_is_cn20k()) { 990143a419eSAshwin Sekhar T K npa_aq_cn20k = mbox_alloc_msg_npa_cn20k_aq_enq(mbox_get(npa_lf->mbox)); 991143a419eSAshwin Sekhar T K npa_aq = (struct npa_aq_enq_req *)npa_aq_cn20k; /* Common fields */ 992143a419eSAshwin Sekhar T K } else { 99344a9307cSRakesh Kudurumalla npa_aq = mbox_alloc_msg_npa_aq_enq(mbox_get(npa_lf->mbox)); 994143a419eSAshwin Sekhar T K } 99544a9307cSRakesh Kudurumalla if (npa_aq == NULL) { 99644a9307cSRakesh Kudurumalla rc = -ENOSPC; 99744a9307cSRakesh Kudurumalla mbox_put(npa_lf->mbox); 99844a9307cSRakesh Kudurumalla goto fail; 99944a9307cSRakesh Kudurumalla } 10005aef7fbdSJerin Jacob npa_aq->aura_id = sqb_aura; 10015aef7fbdSJerin Jacob npa_aq->ctype = NPA_AQ_CTYPE_AURA; 10025aef7fbdSJerin Jacob npa_aq->op = NPA_AQ_INSTOP_READ; 10035aef7fbdSJerin Jacob 10045aef7fbdSJerin Jacob rc = mbox_process_msg(npa_lf->mbox, (void *)&npa_rsp); 100544a9307cSRakesh Kudurumalla mbox_put(npa_lf->mbox); 10065aef7fbdSJerin Jacob if (rc) { 10075aef7fbdSJerin Jacob plt_err("Failed to get sq's sqb_aura context"); 10085aef7fbdSJerin Jacob continue; 10095aef7fbdSJerin Jacob } 10105aef7fbdSJerin Jacob 10114006ac1fSRakesh Kudurumalla nix_dump(file, "\nSQB Aura W0: Pool addr\t\t0x%" PRIx64 "", 10125aef7fbdSJerin Jacob npa_rsp->aura.pool_addr); 10134006ac1fSRakesh Kudurumalla nix_dump(file, "SQB Aura W1: ena\t\t\t%d", npa_rsp->aura.ena); 10144006ac1fSRakesh Kudurumalla nix_dump(file, "SQB Aura W2: count\t\t%" PRIx64 "", 10155aef7fbdSJerin Jacob (uint64_t)npa_rsp->aura.count); 10164006ac1fSRakesh Kudurumalla nix_dump(file, "SQB Aura W3: limit\t\t%" PRIx64 "", 10175aef7fbdSJerin Jacob (uint64_t)npa_rsp->aura.limit); 10184006ac1fSRakesh Kudurumalla nix_dump(file, "SQB Aura W3: fc_ena\t\t%d", npa_rsp->aura.fc_ena); 10194006ac1fSRakesh Kudurumalla nix_dump(file, "SQB Aura W4: fc_addr\t\t0x%" PRIx64 "\n", 10205aef7fbdSJerin Jacob npa_rsp->aura.fc_addr); 10215aef7fbdSJerin Jacob } 10225aef7fbdSJerin Jacob 10235aef7fbdSJerin Jacob fail: 10245aef7fbdSJerin Jacob return rc; 10255aef7fbdSJerin Jacob } 10265aef7fbdSJerin Jacob 10275aef7fbdSJerin Jacob /* Dumps struct nix_cqe_hdr_s and union nix_rx_parse_u */ 10285aef7fbdSJerin Jacob void 1029c758279fSRakesh Kudurumalla roc_nix_cqe_dump(FILE *file, const struct nix_cqe_hdr_s *cq) 10305aef7fbdSJerin Jacob { 10315aef7fbdSJerin Jacob const union nix_rx_parse_u *rx = 10325aef7fbdSJerin Jacob (const union nix_rx_parse_u *)((const uint64_t *)cq + 1); 103338b177feSNithin Dabilpuram const uint64_t *sgs = (const uint64_t *)(rx + 1); 103438b177feSNithin Dabilpuram int i; 10355aef7fbdSJerin Jacob 10364006ac1fSRakesh Kudurumalla nix_dump(file, "tag \t\t0x%x\tq \t\t%d\t\tnode \t\t%d\tcqe_type \t%d", 10375aef7fbdSJerin Jacob cq->tag, cq->q, cq->node, cq->cqe_type); 10385aef7fbdSJerin Jacob 10394006ac1fSRakesh Kudurumalla nix_dump(file, "W0: chan \t0x%x\t\tdesc_sizem1 \t%d", rx->chan, 10405aef7fbdSJerin Jacob rx->desc_sizem1); 10414006ac1fSRakesh Kudurumalla nix_dump(file, "W0: imm_copy \t%d\t\texpress \t%d", rx->imm_copy, 10425aef7fbdSJerin Jacob rx->express); 10434006ac1fSRakesh Kudurumalla nix_dump(file, "W0: wqwd \t%d\t\terrlev \t\t%d\t\terrcode \t%d", rx->wqwd, 10445aef7fbdSJerin Jacob rx->errlev, rx->errcode); 10454006ac1fSRakesh Kudurumalla nix_dump(file, "W0: latype \t%d\t\tlbtype \t\t%d\t\tlctype \t\t%d", 10465aef7fbdSJerin Jacob rx->latype, rx->lbtype, rx->lctype); 10474006ac1fSRakesh Kudurumalla nix_dump(file, "W0: ldtype \t%d\t\tletype \t\t%d\t\tlftype \t\t%d", 10485aef7fbdSJerin Jacob rx->ldtype, rx->letype, rx->lftype); 10494006ac1fSRakesh Kudurumalla nix_dump(file, "W0: lgtype \t%d \t\tlhtype \t\t%d", rx->lgtype, rx->lhtype); 10505aef7fbdSJerin Jacob 10514006ac1fSRakesh Kudurumalla nix_dump(file, "W1: pkt_lenm1 \t%d", rx->pkt_lenm1); 10524006ac1fSRakesh Kudurumalla nix_dump(file, "W1: l2m \t%d\t\tl2b \t\t%d\t\tl3m \t\t%d\tl3b \t\t%d", 10535aef7fbdSJerin Jacob rx->l2m, rx->l2b, rx->l3m, rx->l3b); 10544006ac1fSRakesh Kudurumalla nix_dump(file, "W1: vtag0_valid %d\t\tvtag0_gone \t%d", rx->vtag0_valid, 10555aef7fbdSJerin Jacob rx->vtag0_gone); 10564006ac1fSRakesh Kudurumalla nix_dump(file, "W1: vtag1_valid %d\t\tvtag1_gone \t%d", rx->vtag1_valid, 10575aef7fbdSJerin Jacob rx->vtag1_gone); 10584006ac1fSRakesh Kudurumalla nix_dump(file, "W1: pkind \t%d", rx->pkind); 10594006ac1fSRakesh Kudurumalla nix_dump(file, "W1: vtag0_tci \t%d\t\tvtag1_tci \t%d", rx->vtag0_tci, 10605aef7fbdSJerin Jacob rx->vtag1_tci); 10615aef7fbdSJerin Jacob 10624006ac1fSRakesh Kudurumalla nix_dump(file, "W2: laflags \t%d\t\tlbflags\t\t%d\t\tlcflags \t%d", 10635aef7fbdSJerin Jacob rx->laflags, rx->lbflags, rx->lcflags); 10644006ac1fSRakesh Kudurumalla nix_dump(file, "W2: ldflags \t%d\t\tleflags\t\t%d\t\tlfflags \t%d", 10655aef7fbdSJerin Jacob rx->ldflags, rx->leflags, rx->lfflags); 10664006ac1fSRakesh Kudurumalla nix_dump(file, "W2: lgflags \t%d\t\tlhflags \t%d", rx->lgflags, rx->lhflags); 10675aef7fbdSJerin Jacob 10684006ac1fSRakesh Kudurumalla nix_dump(file, "W3: eoh_ptr \t%d\t\twqe_aura \t%d\t\tpb_aura \t%d", 10695aef7fbdSJerin Jacob rx->eoh_ptr, rx->wqe_aura, rx->pb_aura); 10704006ac1fSRakesh Kudurumalla nix_dump(file, "W3: match_id \t%d", rx->match_id); 10715aef7fbdSJerin Jacob 10724006ac1fSRakesh Kudurumalla nix_dump(file, "W4: laptr \t%d\t\tlbptr \t\t%d\t\tlcptr \t\t%d", rx->laptr, 10735aef7fbdSJerin Jacob rx->lbptr, rx->lcptr); 10744006ac1fSRakesh Kudurumalla nix_dump(file, "W4: ldptr \t%d\t\tleptr \t\t%d\t\tlfptr \t\t%d", rx->ldptr, 10755aef7fbdSJerin Jacob rx->leptr, rx->lfptr); 10764006ac1fSRakesh Kudurumalla nix_dump(file, "W4: lgptr \t%d\t\tlhptr \t\t%d", rx->lgptr, rx->lhptr); 10775aef7fbdSJerin Jacob 10784006ac1fSRakesh Kudurumalla nix_dump(file, "W5: vtag0_ptr \t%d\t\tvtag1_ptr \t%d\t\tflow_key_alg \t%d", 10795aef7fbdSJerin Jacob rx->vtag0_ptr, rx->vtag1_ptr, rx->flow_key_alg); 108038b177feSNithin Dabilpuram 108138b177feSNithin Dabilpuram for (i = 0; i < (rx->desc_sizem1 + 1) << 1; i++) 10824006ac1fSRakesh Kudurumalla nix_dump(file, "sg[%u] = %p", i, (void *)sgs[i]); 10835aef7fbdSJerin Jacob } 10845aef7fbdSJerin Jacob 10855aef7fbdSJerin Jacob void 10864006ac1fSRakesh Kudurumalla roc_nix_rq_dump(struct roc_nix_rq *rq, FILE *file) 10875aef7fbdSJerin Jacob { 10884006ac1fSRakesh Kudurumalla nix_dump(file, "nix_rq@%p", rq); 10894006ac1fSRakesh Kudurumalla nix_dump(file, " qid = %d", rq->qid); 10904006ac1fSRakesh Kudurumalla nix_dump(file, " aura_handle = 0x%" PRIx64 "", rq->aura_handle); 10914006ac1fSRakesh Kudurumalla nix_dump(file, " ipsec_ena = %d", rq->ipsech_ena); 10924006ac1fSRakesh Kudurumalla nix_dump(file, " first_skip = %d", rq->first_skip); 10934006ac1fSRakesh Kudurumalla nix_dump(file, " later_skip = %d", rq->later_skip); 10944006ac1fSRakesh Kudurumalla nix_dump(file, " lpb_size = %d", rq->lpb_size); 10954006ac1fSRakesh Kudurumalla nix_dump(file, " sso_ena = %d", rq->sso_ena); 10964006ac1fSRakesh Kudurumalla nix_dump(file, " tag_mask = %d", rq->tag_mask); 10974006ac1fSRakesh Kudurumalla nix_dump(file, " flow_tag_width = %d", rq->flow_tag_width); 10984006ac1fSRakesh Kudurumalla nix_dump(file, " tt = %d", rq->tt); 10994006ac1fSRakesh Kudurumalla nix_dump(file, " hwgrp = %d", rq->hwgrp); 11004006ac1fSRakesh Kudurumalla nix_dump(file, " vwqe_ena = %d", rq->vwqe_ena); 11014006ac1fSRakesh Kudurumalla nix_dump(file, " vwqe_first_skip = %d", rq->vwqe_first_skip); 11024006ac1fSRakesh Kudurumalla nix_dump(file, " vwqe_max_sz_exp = %d", rq->vwqe_max_sz_exp); 11034006ac1fSRakesh Kudurumalla nix_dump(file, " vwqe_wait_tmo = %ld", rq->vwqe_wait_tmo); 11044006ac1fSRakesh Kudurumalla nix_dump(file, " vwqe_aura_handle = %ld", rq->vwqe_aura_handle); 11054006ac1fSRakesh Kudurumalla nix_dump(file, " roc_nix = %p", rq->roc_nix); 11064006ac1fSRakesh Kudurumalla nix_dump(file, " inl_dev_refs = %d", rq->inl_dev_refs); 110778fb5efeSNithin Dabilpuram nix_dump(file, " tc = %d", rq->tc); 11085aef7fbdSJerin Jacob } 11095aef7fbdSJerin Jacob 11105aef7fbdSJerin Jacob void 11114006ac1fSRakesh Kudurumalla roc_nix_cq_dump(struct roc_nix_cq *cq, FILE *file) 11125aef7fbdSJerin Jacob { 11134006ac1fSRakesh Kudurumalla nix_dump(file, "nix_cq@%p", cq); 11144006ac1fSRakesh Kudurumalla nix_dump(file, " qid = %d", cq->qid); 11154006ac1fSRakesh Kudurumalla nix_dump(file, " qnb_desc = %d", cq->nb_desc); 11164006ac1fSRakesh Kudurumalla nix_dump(file, " roc_nix = %p", cq->roc_nix); 11174006ac1fSRakesh Kudurumalla nix_dump(file, " door = 0x%" PRIx64 "", cq->door); 11184006ac1fSRakesh Kudurumalla nix_dump(file, " status = %p", cq->status); 11194006ac1fSRakesh Kudurumalla nix_dump(file, " wdata = 0x%" PRIx64 "", cq->wdata); 11204006ac1fSRakesh Kudurumalla nix_dump(file, " desc_base = %p", cq->desc_base); 11214006ac1fSRakesh Kudurumalla nix_dump(file, " qmask = 0x%" PRIx32 "", cq->qmask); 11225aef7fbdSJerin Jacob } 11235aef7fbdSJerin Jacob 11245aef7fbdSJerin Jacob void 11254006ac1fSRakesh Kudurumalla roc_nix_sq_dump(struct roc_nix_sq *sq, FILE *file) 11265aef7fbdSJerin Jacob { 11274006ac1fSRakesh Kudurumalla nix_dump(file, "nix_sq@%p", sq); 11284006ac1fSRakesh Kudurumalla nix_dump(file, " qid = %d", sq->qid); 11294006ac1fSRakesh Kudurumalla nix_dump(file, " max_sqe_sz = %d", sq->max_sqe_sz); 11304006ac1fSRakesh Kudurumalla nix_dump(file, " nb_desc = %d", sq->nb_desc); 11314006ac1fSRakesh Kudurumalla nix_dump(file, " sqes_per_sqb_log2 = %d", sq->sqes_per_sqb_log2); 11324006ac1fSRakesh Kudurumalla nix_dump(file, " roc_nix= %p", sq->roc_nix); 11334006ac1fSRakesh Kudurumalla nix_dump(file, " aura_handle = 0x%" PRIx64 "", sq->aura_handle); 11344006ac1fSRakesh Kudurumalla nix_dump(file, " nb_sqb_bufs_adj = %d", sq->nb_sqb_bufs_adj); 11354006ac1fSRakesh Kudurumalla nix_dump(file, " nb_sqb_bufs = %d", sq->nb_sqb_bufs); 11364006ac1fSRakesh Kudurumalla nix_dump(file, " io_addr = 0x%" PRIx64 "", sq->io_addr); 11374006ac1fSRakesh Kudurumalla nix_dump(file, " lmt_addr = %p", sq->lmt_addr); 11384006ac1fSRakesh Kudurumalla nix_dump(file, " sqe_mem = %p", sq->sqe_mem); 11394006ac1fSRakesh Kudurumalla nix_dump(file, " fc = %p", sq->fc); 114078fb5efeSNithin Dabilpuram nix_dump(file, " tc = %d", sq->tc); 11415aef7fbdSJerin Jacob }; 11425aef7fbdSJerin Jacob 1143fcdef46bSNithin Dabilpuram static uint8_t 1144fcdef46bSNithin Dabilpuram nix_tm_reg_dump_prep(uint16_t hw_lvl, uint16_t schq, uint16_t link, 1145fcdef46bSNithin Dabilpuram uint64_t *reg, char regstr[][NIX_REG_NAME_SZ]) 1146fcdef46bSNithin Dabilpuram { 11474006ac1fSRakesh Kudurumalla FILE *file = NULL; 1148fcdef46bSNithin Dabilpuram uint8_t k = 0; 1149fcdef46bSNithin Dabilpuram 1150fcdef46bSNithin Dabilpuram switch (hw_lvl) { 1151fcdef46bSNithin Dabilpuram case NIX_TXSCH_LVL_SMQ: 1152fcdef46bSNithin Dabilpuram reg[k] = NIX_AF_SMQX_CFG(schq); 1153fcdef46bSNithin Dabilpuram snprintf(regstr[k++], NIX_REG_NAME_SZ, "NIX_AF_SMQ[%u]_CFG", 1154fcdef46bSNithin Dabilpuram schq); 1155fcdef46bSNithin Dabilpuram 1156fcdef46bSNithin Dabilpuram reg[k] = NIX_AF_MDQX_PARENT(schq); 1157fcdef46bSNithin Dabilpuram snprintf(regstr[k++], NIX_REG_NAME_SZ, "NIX_AF_MDQ[%u]_PARENT", 1158fcdef46bSNithin Dabilpuram schq); 1159fcdef46bSNithin Dabilpuram 1160fcdef46bSNithin Dabilpuram reg[k] = NIX_AF_MDQX_SCHEDULE(schq); 1161fcdef46bSNithin Dabilpuram snprintf(regstr[k++], NIX_REG_NAME_SZ, 1162fcdef46bSNithin Dabilpuram "NIX_AF_MDQ[%u]_SCHEDULE", schq); 1163fcdef46bSNithin Dabilpuram 1164fcdef46bSNithin Dabilpuram reg[k] = NIX_AF_MDQX_PIR(schq); 1165fcdef46bSNithin Dabilpuram snprintf(regstr[k++], NIX_REG_NAME_SZ, "NIX_AF_MDQ[%u]_PIR", 1166fcdef46bSNithin Dabilpuram schq); 1167fcdef46bSNithin Dabilpuram 1168fcdef46bSNithin Dabilpuram reg[k] = NIX_AF_MDQX_CIR(schq); 1169fcdef46bSNithin Dabilpuram snprintf(regstr[k++], NIX_REG_NAME_SZ, "NIX_AF_MDQ[%u]_CIR", 1170fcdef46bSNithin Dabilpuram schq); 1171fcdef46bSNithin Dabilpuram 1172fcdef46bSNithin Dabilpuram reg[k] = NIX_AF_MDQX_SHAPE(schq); 1173fcdef46bSNithin Dabilpuram snprintf(regstr[k++], NIX_REG_NAME_SZ, "NIX_AF_MDQ[%u]_SHAPE", 1174fcdef46bSNithin Dabilpuram schq); 1175fcdef46bSNithin Dabilpuram 1176fcdef46bSNithin Dabilpuram reg[k] = NIX_AF_MDQX_SW_XOFF(schq); 1177fcdef46bSNithin Dabilpuram snprintf(regstr[k++], NIX_REG_NAME_SZ, "NIX_AF_MDQ[%u]_SW_XOFF", 1178fcdef46bSNithin Dabilpuram schq); 1179fcdef46bSNithin Dabilpuram break; 1180fcdef46bSNithin Dabilpuram case NIX_TXSCH_LVL_TL4: 1181fcdef46bSNithin Dabilpuram reg[k] = NIX_AF_TL4X_PARENT(schq); 1182fcdef46bSNithin Dabilpuram snprintf(regstr[k++], NIX_REG_NAME_SZ, "NIX_AF_TL4[%u]_PARENT", 1183fcdef46bSNithin Dabilpuram schq); 1184fcdef46bSNithin Dabilpuram 1185fcdef46bSNithin Dabilpuram reg[k] = NIX_AF_TL4X_TOPOLOGY(schq); 1186fcdef46bSNithin Dabilpuram snprintf(regstr[k++], NIX_REG_NAME_SZ, 1187fcdef46bSNithin Dabilpuram "NIX_AF_TL4[%u]_TOPOLOGY", schq); 1188fcdef46bSNithin Dabilpuram 1189fcdef46bSNithin Dabilpuram reg[k] = NIX_AF_TL4X_SDP_LINK_CFG(schq); 1190fcdef46bSNithin Dabilpuram snprintf(regstr[k++], NIX_REG_NAME_SZ, 1191fcdef46bSNithin Dabilpuram "NIX_AF_TL4[%u]_SDP_LINK_CFG", schq); 1192fcdef46bSNithin Dabilpuram 1193fcdef46bSNithin Dabilpuram reg[k] = NIX_AF_TL4X_SCHEDULE(schq); 1194fcdef46bSNithin Dabilpuram snprintf(regstr[k++], NIX_REG_NAME_SZ, 1195fcdef46bSNithin Dabilpuram "NIX_AF_TL4[%u]_SCHEDULE", schq); 1196fcdef46bSNithin Dabilpuram 1197fcdef46bSNithin Dabilpuram reg[k] = NIX_AF_TL4X_PIR(schq); 1198fcdef46bSNithin Dabilpuram snprintf(regstr[k++], NIX_REG_NAME_SZ, "NIX_AF_TL4[%u]_PIR", 1199fcdef46bSNithin Dabilpuram schq); 1200fcdef46bSNithin Dabilpuram 1201fcdef46bSNithin Dabilpuram reg[k] = NIX_AF_TL4X_CIR(schq); 1202fcdef46bSNithin Dabilpuram snprintf(regstr[k++], NIX_REG_NAME_SZ, "NIX_AF_TL4[%u]_CIR", 1203fcdef46bSNithin Dabilpuram schq); 1204fcdef46bSNithin Dabilpuram 1205fcdef46bSNithin Dabilpuram reg[k] = NIX_AF_TL4X_SHAPE(schq); 1206fcdef46bSNithin Dabilpuram snprintf(regstr[k++], NIX_REG_NAME_SZ, "NIX_AF_TL4[%u]_SHAPE", 1207fcdef46bSNithin Dabilpuram schq); 1208fcdef46bSNithin Dabilpuram 1209fcdef46bSNithin Dabilpuram reg[k] = NIX_AF_TL4X_SW_XOFF(schq); 1210fcdef46bSNithin Dabilpuram snprintf(regstr[k++], NIX_REG_NAME_SZ, "NIX_AF_TL4[%u]_SW_XOFF", 1211fcdef46bSNithin Dabilpuram schq); 1212fcdef46bSNithin Dabilpuram break; 1213fcdef46bSNithin Dabilpuram case NIX_TXSCH_LVL_TL3: 1214fcdef46bSNithin Dabilpuram reg[k] = NIX_AF_TL3X_PARENT(schq); 1215fcdef46bSNithin Dabilpuram snprintf(regstr[k++], NIX_REG_NAME_SZ, "NIX_AF_TL3[%u]_PARENT", 1216fcdef46bSNithin Dabilpuram schq); 1217fcdef46bSNithin Dabilpuram 1218fcdef46bSNithin Dabilpuram reg[k] = NIX_AF_TL3X_TOPOLOGY(schq); 1219fcdef46bSNithin Dabilpuram snprintf(regstr[k++], NIX_REG_NAME_SZ, 1220fcdef46bSNithin Dabilpuram "NIX_AF_TL3[%u]_TOPOLOGY", schq); 1221fcdef46bSNithin Dabilpuram 1222fcdef46bSNithin Dabilpuram reg[k] = NIX_AF_TL3_TL2X_LINKX_CFG(schq, link); 1223fcdef46bSNithin Dabilpuram snprintf(regstr[k++], NIX_REG_NAME_SZ, 1224fcdef46bSNithin Dabilpuram "NIX_AF_TL3_TL2[%u]_LINK[%u]_CFG", schq, link); 1225fcdef46bSNithin Dabilpuram 1226fcdef46bSNithin Dabilpuram reg[k] = NIX_AF_TL3X_SCHEDULE(schq); 1227fcdef46bSNithin Dabilpuram snprintf(regstr[k++], NIX_REG_NAME_SZ, 1228fcdef46bSNithin Dabilpuram "NIX_AF_TL3[%u]_SCHEDULE", schq); 1229fcdef46bSNithin Dabilpuram 1230fcdef46bSNithin Dabilpuram reg[k] = NIX_AF_TL3X_PIR(schq); 1231fcdef46bSNithin Dabilpuram snprintf(regstr[k++], NIX_REG_NAME_SZ, "NIX_AF_TL3[%u]_PIR", 1232fcdef46bSNithin Dabilpuram schq); 1233fcdef46bSNithin Dabilpuram 1234fcdef46bSNithin Dabilpuram reg[k] = NIX_AF_TL3X_CIR(schq); 1235fcdef46bSNithin Dabilpuram snprintf(regstr[k++], NIX_REG_NAME_SZ, "NIX_AF_TL3[%u]_CIR", 1236fcdef46bSNithin Dabilpuram schq); 1237fcdef46bSNithin Dabilpuram 1238fcdef46bSNithin Dabilpuram reg[k] = NIX_AF_TL3X_SHAPE(schq); 1239fcdef46bSNithin Dabilpuram snprintf(regstr[k++], NIX_REG_NAME_SZ, "NIX_AF_TL3[%u]_SHAPE", 1240fcdef46bSNithin Dabilpuram schq); 1241fcdef46bSNithin Dabilpuram 1242fcdef46bSNithin Dabilpuram reg[k] = NIX_AF_TL3X_SW_XOFF(schq); 1243fcdef46bSNithin Dabilpuram snprintf(regstr[k++], NIX_REG_NAME_SZ, "NIX_AF_TL3[%u]_SW_XOFF", 1244fcdef46bSNithin Dabilpuram schq); 1245fcdef46bSNithin Dabilpuram break; 1246fcdef46bSNithin Dabilpuram case NIX_TXSCH_LVL_TL2: 1247fcdef46bSNithin Dabilpuram reg[k] = NIX_AF_TL2X_PARENT(schq); 1248fcdef46bSNithin Dabilpuram snprintf(regstr[k++], NIX_REG_NAME_SZ, "NIX_AF_TL2[%u]_PARENT", 1249fcdef46bSNithin Dabilpuram schq); 1250fcdef46bSNithin Dabilpuram 1251fcdef46bSNithin Dabilpuram reg[k] = NIX_AF_TL2X_TOPOLOGY(schq); 1252fcdef46bSNithin Dabilpuram snprintf(regstr[k++], NIX_REG_NAME_SZ, 1253fcdef46bSNithin Dabilpuram "NIX_AF_TL2[%u]_TOPOLOGY", schq); 1254fcdef46bSNithin Dabilpuram 1255fcdef46bSNithin Dabilpuram reg[k] = NIX_AF_TL3_TL2X_LINKX_CFG(schq, link); 1256fcdef46bSNithin Dabilpuram snprintf(regstr[k++], NIX_REG_NAME_SZ, 1257fcdef46bSNithin Dabilpuram "NIX_AF_TL3_TL2[%u]_LINK[%u]_CFG", schq, link); 1258fcdef46bSNithin Dabilpuram 1259fcdef46bSNithin Dabilpuram reg[k] = NIX_AF_TL2X_SCHEDULE(schq); 1260fcdef46bSNithin Dabilpuram snprintf(regstr[k++], NIX_REG_NAME_SZ, 1261fcdef46bSNithin Dabilpuram "NIX_AF_TL2[%u]_SCHEDULE", schq); 1262fcdef46bSNithin Dabilpuram 1263fcdef46bSNithin Dabilpuram reg[k] = NIX_AF_TL2X_PIR(schq); 1264fcdef46bSNithin Dabilpuram snprintf(regstr[k++], NIX_REG_NAME_SZ, "NIX_AF_TL2[%u]_PIR", 1265fcdef46bSNithin Dabilpuram schq); 1266fcdef46bSNithin Dabilpuram 1267fcdef46bSNithin Dabilpuram reg[k] = NIX_AF_TL2X_CIR(schq); 1268fcdef46bSNithin Dabilpuram snprintf(regstr[k++], NIX_REG_NAME_SZ, "NIX_AF_TL2[%u]_CIR", 1269fcdef46bSNithin Dabilpuram schq); 1270fcdef46bSNithin Dabilpuram 1271fcdef46bSNithin Dabilpuram reg[k] = NIX_AF_TL2X_SHAPE(schq); 1272fcdef46bSNithin Dabilpuram snprintf(regstr[k++], NIX_REG_NAME_SZ, "NIX_AF_TL2[%u]_SHAPE", 1273fcdef46bSNithin Dabilpuram schq); 1274fcdef46bSNithin Dabilpuram 1275fcdef46bSNithin Dabilpuram reg[k] = NIX_AF_TL2X_SW_XOFF(schq); 1276fcdef46bSNithin Dabilpuram snprintf(regstr[k++], NIX_REG_NAME_SZ, "NIX_AF_TL2[%u]_SW_XOFF", 1277fcdef46bSNithin Dabilpuram schq); 1278fcdef46bSNithin Dabilpuram break; 1279fcdef46bSNithin Dabilpuram case NIX_TXSCH_LVL_TL1: 1280fcdef46bSNithin Dabilpuram 1281fcdef46bSNithin Dabilpuram reg[k] = NIX_AF_TL1X_TOPOLOGY(schq); 1282fcdef46bSNithin Dabilpuram snprintf(regstr[k++], NIX_REG_NAME_SZ, 1283fcdef46bSNithin Dabilpuram "NIX_AF_TL1[%u]_TOPOLOGY", schq); 1284fcdef46bSNithin Dabilpuram 1285fcdef46bSNithin Dabilpuram reg[k] = NIX_AF_TL1X_SCHEDULE(schq); 1286fcdef46bSNithin Dabilpuram snprintf(regstr[k++], NIX_REG_NAME_SZ, 1287fcdef46bSNithin Dabilpuram "NIX_AF_TL1[%u]_SCHEDULE", schq); 1288fcdef46bSNithin Dabilpuram 1289fcdef46bSNithin Dabilpuram reg[k] = NIX_AF_TL1X_CIR(schq); 1290fcdef46bSNithin Dabilpuram snprintf(regstr[k++], NIX_REG_NAME_SZ, "NIX_AF_TL1[%u]_CIR", 1291fcdef46bSNithin Dabilpuram schq); 1292fcdef46bSNithin Dabilpuram 1293fcdef46bSNithin Dabilpuram reg[k] = NIX_AF_TL1X_SW_XOFF(schq); 1294fcdef46bSNithin Dabilpuram snprintf(regstr[k++], NIX_REG_NAME_SZ, "NIX_AF_TL1[%u]_SW_XOFF", 1295fcdef46bSNithin Dabilpuram schq); 1296fcdef46bSNithin Dabilpuram 1297fcdef46bSNithin Dabilpuram reg[k] = NIX_AF_TL1X_DROPPED_PACKETS(schq); 1298fcdef46bSNithin Dabilpuram snprintf(regstr[k++], NIX_REG_NAME_SZ, 1299fcdef46bSNithin Dabilpuram "NIX_AF_TL1[%u]_DROPPED_PACKETS", schq); 1300fcdef46bSNithin Dabilpuram break; 1301fcdef46bSNithin Dabilpuram default: 1302fcdef46bSNithin Dabilpuram break; 1303fcdef46bSNithin Dabilpuram } 1304fcdef46bSNithin Dabilpuram 1305fcdef46bSNithin Dabilpuram if (k > MAX_REGS_PER_MBOX_MSG) { 13064006ac1fSRakesh Kudurumalla nix_dump(file, "\t!!!NIX TM Registers request overflow!!!"); 1307fcdef46bSNithin Dabilpuram return 0; 1308fcdef46bSNithin Dabilpuram } 1309fcdef46bSNithin Dabilpuram return k; 1310fcdef46bSNithin Dabilpuram } 1311fcdef46bSNithin Dabilpuram 1312fcdef46bSNithin Dabilpuram static void 1313fcdef46bSNithin Dabilpuram nix_tm_dump_lvl(struct nix *nix, struct nix_tm_node_list *list, uint8_t hw_lvl) 1314fcdef46bSNithin Dabilpuram { 1315fcdef46bSNithin Dabilpuram char regstr[MAX_REGS_PER_MBOX_MSG * 2][NIX_REG_NAME_SZ]; 1316fcdef46bSNithin Dabilpuram uint64_t reg[MAX_REGS_PER_MBOX_MSG * 2]; 1317fcdef46bSNithin Dabilpuram struct mbox *mbox = (&nix->dev)->mbox; 1318fcdef46bSNithin Dabilpuram struct nix_txschq_config *req, *rsp; 1319fcdef46bSNithin Dabilpuram const char *lvlstr, *parent_lvlstr; 1320fcdef46bSNithin Dabilpuram struct nix_tm_node *node, *parent; 1321fcdef46bSNithin Dabilpuram struct nix_tm_node *root = NULL; 1322fcdef46bSNithin Dabilpuram uint32_t schq, parent_schq; 1323fcdef46bSNithin Dabilpuram bool found = false; 13244006ac1fSRakesh Kudurumalla FILE *file = NULL; 1325fcdef46bSNithin Dabilpuram uint8_t j, k, rc; 1326fcdef46bSNithin Dabilpuram 1327fcdef46bSNithin Dabilpuram TAILQ_FOREACH(node, list, node) { 1328fcdef46bSNithin Dabilpuram if (node->hw_lvl != hw_lvl) 1329fcdef46bSNithin Dabilpuram continue; 1330fcdef46bSNithin Dabilpuram 1331fcdef46bSNithin Dabilpuram found = true; 1332fcdef46bSNithin Dabilpuram parent = node->parent; 1333fcdef46bSNithin Dabilpuram if (hw_lvl == NIX_TXSCH_LVL_CNT) { 1334fcdef46bSNithin Dabilpuram lvlstr = "SQ"; 1335fcdef46bSNithin Dabilpuram schq = node->id; 1336fcdef46bSNithin Dabilpuram } else { 1337fcdef46bSNithin Dabilpuram lvlstr = nix_tm_hwlvl2str(node->hw_lvl); 1338fcdef46bSNithin Dabilpuram schq = node->hw_id; 1339fcdef46bSNithin Dabilpuram } 1340fcdef46bSNithin Dabilpuram 1341fcdef46bSNithin Dabilpuram if (parent) { 1342fcdef46bSNithin Dabilpuram parent_schq = parent->hw_id; 1343fcdef46bSNithin Dabilpuram parent_lvlstr = nix_tm_hwlvl2str(parent->hw_lvl); 1344fcdef46bSNithin Dabilpuram } else if (node->hw_lvl == NIX_TXSCH_LVL_TL1) { 1345fcdef46bSNithin Dabilpuram parent_schq = nix->tx_link; 1346fcdef46bSNithin Dabilpuram parent_lvlstr = "LINK"; 1347fcdef46bSNithin Dabilpuram } else { 1348fcdef46bSNithin Dabilpuram parent_schq = node->parent_hw_id; 1349fcdef46bSNithin Dabilpuram parent_lvlstr = nix_tm_hwlvl2str(node->hw_lvl + 1); 1350fcdef46bSNithin Dabilpuram } 1351fcdef46bSNithin Dabilpuram 13524006ac1fSRakesh Kudurumalla nix_dump(file, "\t(%p%s) %s_%d->%s_%d", node, 1353fcdef46bSNithin Dabilpuram node->child_realloc ? "[CR]" : "", lvlstr, schq, 1354fcdef46bSNithin Dabilpuram parent_lvlstr, parent_schq); 1355fcdef46bSNithin Dabilpuram 1356fcdef46bSNithin Dabilpuram if (!(node->flags & NIX_TM_NODE_HWRES)) 1357fcdef46bSNithin Dabilpuram continue; 1358fcdef46bSNithin Dabilpuram 1359fcdef46bSNithin Dabilpuram /* Need to dump TL1 when root is TL2 */ 1360fcdef46bSNithin Dabilpuram if (node->hw_lvl == nix->tm_root_lvl) 1361fcdef46bSNithin Dabilpuram root = node; 1362fcdef46bSNithin Dabilpuram 1363fcdef46bSNithin Dabilpuram /* Dump registers only when HWRES is present */ 1364fcdef46bSNithin Dabilpuram k = nix_tm_reg_dump_prep(node->hw_lvl, schq, nix->tx_link, reg, 1365fcdef46bSNithin Dabilpuram regstr); 1366fcdef46bSNithin Dabilpuram if (!k) 1367fcdef46bSNithin Dabilpuram continue; 1368fcdef46bSNithin Dabilpuram 136944a9307cSRakesh Kudurumalla req = mbox_alloc_msg_nix_txschq_cfg(mbox_get(mbox)); 1370fcdef46bSNithin Dabilpuram req->read = 1; 1371fcdef46bSNithin Dabilpuram req->lvl = node->hw_lvl; 1372fcdef46bSNithin Dabilpuram req->num_regs = k; 1373fcdef46bSNithin Dabilpuram mbox_memcpy(req->reg, reg, sizeof(uint64_t) * k); 1374fcdef46bSNithin Dabilpuram rc = mbox_process_msg(mbox, (void **)&rsp); 1375fcdef46bSNithin Dabilpuram if (!rc) { 1376fcdef46bSNithin Dabilpuram for (j = 0; j < k; j++) 13774006ac1fSRakesh Kudurumalla nix_dump(file, "\t\t%s=0x%016" PRIx64, regstr[j], 1378fcdef46bSNithin Dabilpuram rsp->regval[j]); 1379fcdef46bSNithin Dabilpuram } else { 13804006ac1fSRakesh Kudurumalla nix_dump(file, "\t!!!Failed to dump registers!!!"); 1381fcdef46bSNithin Dabilpuram } 138244a9307cSRakesh Kudurumalla mbox_put(mbox); 1383fcdef46bSNithin Dabilpuram } 1384fcdef46bSNithin Dabilpuram 1385fcdef46bSNithin Dabilpuram if (found) 13864006ac1fSRakesh Kudurumalla nix_dump(file, "\n"); 1387fcdef46bSNithin Dabilpuram 1388fcdef46bSNithin Dabilpuram /* Dump TL1 node data when root level is TL2 */ 1389fcdef46bSNithin Dabilpuram if (root && root->hw_lvl == NIX_TXSCH_LVL_TL2) { 1390fcdef46bSNithin Dabilpuram k = nix_tm_reg_dump_prep(NIX_TXSCH_LVL_TL1, root->parent_hw_id, 1391fcdef46bSNithin Dabilpuram nix->tx_link, reg, regstr); 1392fcdef46bSNithin Dabilpuram if (!k) 1393fcdef46bSNithin Dabilpuram return; 1394fcdef46bSNithin Dabilpuram 139544a9307cSRakesh Kudurumalla req = mbox_alloc_msg_nix_txschq_cfg(mbox_get(mbox)); 1396fcdef46bSNithin Dabilpuram req->read = 1; 1397fcdef46bSNithin Dabilpuram req->lvl = NIX_TXSCH_LVL_TL1; 1398fcdef46bSNithin Dabilpuram req->num_regs = k; 1399fcdef46bSNithin Dabilpuram mbox_memcpy(req->reg, reg, sizeof(uint64_t) * k); 1400fcdef46bSNithin Dabilpuram rc = mbox_process_msg(mbox, (void **)&rsp); 1401fcdef46bSNithin Dabilpuram if (!rc) { 1402fcdef46bSNithin Dabilpuram for (j = 0; j < k; j++) 14034006ac1fSRakesh Kudurumalla nix_dump(file, "\t\t%s=0x%016" PRIx64, regstr[j], 1404fcdef46bSNithin Dabilpuram rsp->regval[j]); 1405fcdef46bSNithin Dabilpuram } else { 14064006ac1fSRakesh Kudurumalla nix_dump(file, "\t!!!Failed to dump registers!!!"); 1407fcdef46bSNithin Dabilpuram } 140844a9307cSRakesh Kudurumalla mbox_put(mbox); 14094006ac1fSRakesh Kudurumalla nix_dump(file, "\n"); 1410fcdef46bSNithin Dabilpuram } 1411fcdef46bSNithin Dabilpuram } 1412fcdef46bSNithin Dabilpuram 1413fcdef46bSNithin Dabilpuram void 14144006ac1fSRakesh Kudurumalla roc_nix_tm_dump(struct roc_nix *roc_nix, FILE *file) 1415fcdef46bSNithin Dabilpuram { 1416fcdef46bSNithin Dabilpuram struct nix *nix = roc_nix_to_nix_priv(roc_nix); 1417fcdef46bSNithin Dabilpuram struct dev *dev = &nix->dev; 1418fcdef46bSNithin Dabilpuram uint8_t hw_lvl, i; 1419fcdef46bSNithin Dabilpuram 14204006ac1fSRakesh Kudurumalla nix_dump(file, "===TM hierarchy and registers dump of %s (pf:vf) (%d:%d)===", 1421fcdef46bSNithin Dabilpuram nix->pci_dev->name, dev_get_pf(dev->pf_func), 1422fcdef46bSNithin Dabilpuram dev_get_vf(dev->pf_func)); 1423fcdef46bSNithin Dabilpuram 1424fcdef46bSNithin Dabilpuram /* Dump all trees */ 1425fcdef46bSNithin Dabilpuram for (i = 0; i < ROC_NIX_TM_TREE_MAX; i++) { 14264006ac1fSRakesh Kudurumalla nix_dump(file, "\tTM %s:", nix_tm_tree2str(i)); 1427fcdef46bSNithin Dabilpuram for (hw_lvl = 0; hw_lvl <= NIX_TXSCH_LVL_CNT; hw_lvl++) 1428fcdef46bSNithin Dabilpuram nix_tm_dump_lvl(nix, &nix->trees[i], hw_lvl); 1429fcdef46bSNithin Dabilpuram } 1430fcdef46bSNithin Dabilpuram 1431fcdef46bSNithin Dabilpuram /* Dump unused resources */ 14324006ac1fSRakesh Kudurumalla nix_dump(file, "\tTM unused resources:"); 1433fcdef46bSNithin Dabilpuram hw_lvl = NIX_TXSCH_LVL_SMQ; 1434fcdef46bSNithin Dabilpuram for (; hw_lvl < NIX_TXSCH_LVL_CNT; hw_lvl++) { 14354006ac1fSRakesh Kudurumalla nix_dump(file, "\t\ttxschq %7s num = %d", 1436fcdef46bSNithin Dabilpuram nix_tm_hwlvl2str(hw_lvl), 1437fcdef46bSNithin Dabilpuram nix_tm_resource_avail(nix, hw_lvl, false)); 1438fcdef46bSNithin Dabilpuram 14394006ac1fSRakesh Kudurumalla nix_bitmap_dump(nix->schq_bmp[hw_lvl], file); 14404006ac1fSRakesh Kudurumalla nix_dump(file, "\n"); 1441fcdef46bSNithin Dabilpuram 14424006ac1fSRakesh Kudurumalla nix_dump(file, "\t\ttxschq_contig %7s num = %d", 1443fcdef46bSNithin Dabilpuram nix_tm_hwlvl2str(hw_lvl), 1444fcdef46bSNithin Dabilpuram nix_tm_resource_avail(nix, hw_lvl, true)); 14454006ac1fSRakesh Kudurumalla nix_bitmap_dump(nix->schq_contig_bmp[hw_lvl], file); 14464006ac1fSRakesh Kudurumalla nix_dump(file, "\n"); 1447fcdef46bSNithin Dabilpuram } 1448fcdef46bSNithin Dabilpuram } 1449fcdef46bSNithin Dabilpuram 14505aef7fbdSJerin Jacob void 14514006ac1fSRakesh Kudurumalla roc_nix_dump(struct roc_nix *roc_nix, FILE *file) 14525aef7fbdSJerin Jacob { 14535aef7fbdSJerin Jacob struct nix *nix = roc_nix_to_nix_priv(roc_nix); 14545aef7fbdSJerin Jacob struct dev *dev = &nix->dev; 1455ee48f711SNithin Dabilpuram int i; 14565aef7fbdSJerin Jacob 14574006ac1fSRakesh Kudurumalla nix_dump(file, "nix@%p", nix); 14584006ac1fSRakesh Kudurumalla nix_dump(file, " pf = %d", dev_get_pf(dev->pf_func)); 14594006ac1fSRakesh Kudurumalla nix_dump(file, " vf = %d", dev_get_vf(dev->pf_func)); 14604006ac1fSRakesh Kudurumalla nix_dump(file, " bar2 = 0x%" PRIx64, dev->bar2); 14614006ac1fSRakesh Kudurumalla nix_dump(file, " bar4 = 0x%" PRIx64, dev->bar4); 14624006ac1fSRakesh Kudurumalla nix_dump(file, " port_id = %d", roc_nix->port_id); 14634006ac1fSRakesh Kudurumalla nix_dump(file, " rss_tag_as_xor = %d", roc_nix->rss_tag_as_xor); 14644006ac1fSRakesh Kudurumalla nix_dump(file, " rss_tag_as_xor = %d", roc_nix->max_sqb_count); 14654006ac1fSRakesh Kudurumalla nix_dump(file, " outb_nb_desc = %u", roc_nix->outb_nb_desc); 14665aef7fbdSJerin Jacob 14674006ac1fSRakesh Kudurumalla nix_dump(file, " \tpci_dev = %p", nix->pci_dev); 14684006ac1fSRakesh Kudurumalla nix_dump(file, " \tbase = 0x%" PRIxPTR "", nix->base); 14694006ac1fSRakesh Kudurumalla nix_dump(file, " \tlmt_base = 0x%" PRIxPTR "", nix->lmt_base); 14704006ac1fSRakesh Kudurumalla nix_dump(file, " \treta_size = %d", nix->reta_sz); 14714006ac1fSRakesh Kudurumalla nix_dump(file, " \ttx_chan_base = %d", nix->tx_chan_base); 14724006ac1fSRakesh Kudurumalla nix_dump(file, " \trx_chan_base = %d", nix->rx_chan_base); 14734006ac1fSRakesh Kudurumalla nix_dump(file, " \tnb_rx_queues = %d", nix->nb_rx_queues); 14744006ac1fSRakesh Kudurumalla nix_dump(file, " \tnb_tx_queues = %d", nix->nb_tx_queues); 14754006ac1fSRakesh Kudurumalla nix_dump(file, " \tlso_tsov6_idx = %d", nix->lso_tsov6_idx); 14764006ac1fSRakesh Kudurumalla nix_dump(file, " \tlso_tsov4_idx = %d", nix->lso_tsov4_idx); 14774006ac1fSRakesh Kudurumalla nix_dump(file, " \tlso_udp_tun_v4v4 = %d", 1478dfa267ecSSunil Kumar Kori nix->lso_udp_tun_idx[ROC_NIX_LSO_TUN_V4V4]); 14794006ac1fSRakesh Kudurumalla nix_dump(file, " \tlso_udp_tun_v4v6 = %d", 1480dfa267ecSSunil Kumar Kori nix->lso_udp_tun_idx[ROC_NIX_LSO_TUN_V4V6]); 14814006ac1fSRakesh Kudurumalla nix_dump(file, " \tlso_udp_tun_v6v4 = %d", 1482dfa267ecSSunil Kumar Kori nix->lso_udp_tun_idx[ROC_NIX_LSO_TUN_V6V4]); 14834006ac1fSRakesh Kudurumalla nix_dump(file, " \tlso_udp_tun_v6v6 = %d", 1484dfa267ecSSunil Kumar Kori nix->lso_udp_tun_idx[ROC_NIX_LSO_TUN_V6V6]); 14854006ac1fSRakesh Kudurumalla nix_dump(file, " \tlso_tun_v4v4 = %d", 1486dfa267ecSSunil Kumar Kori nix->lso_tun_idx[ROC_NIX_LSO_TUN_V4V4]); 14874006ac1fSRakesh Kudurumalla nix_dump(file, " \tlso_tun_v4v6 = %d", 1488dfa267ecSSunil Kumar Kori nix->lso_tun_idx[ROC_NIX_LSO_TUN_V4V6]); 14894006ac1fSRakesh Kudurumalla nix_dump(file, " \tlso_tun_v6v4 = %d", 1490dfa267ecSSunil Kumar Kori nix->lso_tun_idx[ROC_NIX_LSO_TUN_V6V4]); 14914006ac1fSRakesh Kudurumalla nix_dump(file, " \tlso_tun_v6v6 = %d", 1492dfa267ecSSunil Kumar Kori nix->lso_tun_idx[ROC_NIX_LSO_TUN_V6V6]); 14934006ac1fSRakesh Kudurumalla nix_dump(file, " \tlf_rx_stats = %d", nix->lf_rx_stats); 14944006ac1fSRakesh Kudurumalla nix_dump(file, " \tlf_tx_stats = %d", nix->lf_tx_stats); 14954006ac1fSRakesh Kudurumalla nix_dump(file, " \trx_chan_cnt = %d", nix->rx_chan_cnt); 14964006ac1fSRakesh Kudurumalla nix_dump(file, " \ttx_chan_cnt = %d", nix->tx_chan_cnt); 14974006ac1fSRakesh Kudurumalla nix_dump(file, " \tcgx_links = %d", nix->cgx_links); 14984006ac1fSRakesh Kudurumalla nix_dump(file, " \tlbk_links = %d", nix->lbk_links); 14994006ac1fSRakesh Kudurumalla nix_dump(file, " \tsdp_links = %d", nix->sdp_links); 15004006ac1fSRakesh Kudurumalla nix_dump(file, " \ttx_link = %d", nix->tx_link); 15014006ac1fSRakesh Kudurumalla nix_dump(file, " \tsqb_size = %d", nix->sqb_size); 15024006ac1fSRakesh Kudurumalla nix_dump(file, " \tmsixoff = %d", nix->msixoff); 1503ee48f711SNithin Dabilpuram for (i = 0; i < nix->nb_cpt_lf; i++) 15044006ac1fSRakesh Kudurumalla nix_dump(file, " \tcpt_msixoff[%d] = %d", i, nix->cpt_msixoff[i]); 15054006ac1fSRakesh Kudurumalla nix_dump(file, " \tcints = %d", nix->cints); 15064006ac1fSRakesh Kudurumalla nix_dump(file, " \tqints = %d", nix->qints); 15074006ac1fSRakesh Kudurumalla nix_dump(file, " \tsdp_link = %d", nix->sdp_link); 15084006ac1fSRakesh Kudurumalla nix_dump(file, " \tptp_en = %d", nix->ptp_en); 15094006ac1fSRakesh Kudurumalla nix_dump(file, " \trss_alg_idx = %d", nix->rss_alg_idx); 15104006ac1fSRakesh Kudurumalla nix_dump(file, " \ttx_pause = %d", nix->tx_pause); 15114006ac1fSRakesh Kudurumalla nix_dump(file, " \tinl_inb_ena = %d", nix->inl_inb_ena); 15124006ac1fSRakesh Kudurumalla nix_dump(file, " \tinl_outb_ena = %d", nix->inl_outb_ena); 15134006ac1fSRakesh Kudurumalla nix_dump(file, " \tinb_sa_base = 0x%p", nix->inb_sa_base); 15144006ac1fSRakesh Kudurumalla nix_dump(file, " \tinb_sa_sz = %" PRIu64, nix->inb_sa_sz); 15154006ac1fSRakesh Kudurumalla nix_dump(file, " \toutb_sa_base = 0x%p", nix->outb_sa_base); 15164006ac1fSRakesh Kudurumalla nix_dump(file, " \toutb_sa_sz = %" PRIu64, nix->outb_sa_sz); 15174006ac1fSRakesh Kudurumalla nix_dump(file, " \toutb_err_sso_pffunc = 0x%x", nix->outb_err_sso_pffunc); 15184006ac1fSRakesh Kudurumalla nix_dump(file, " \tcpt_lf_base = 0x%p", nix->cpt_lf_base); 15194006ac1fSRakesh Kudurumalla nix_dump(file, " \tnb_cpt_lf = %d", nix->nb_cpt_lf); 15204006ac1fSRakesh Kudurumalla nix_dump(file, " \tinb_inl_dev = %d", nix->inb_inl_dev); 15214006ac1fSRakesh Kudurumalla 15225aef7fbdSJerin Jacob } 1523bbcd191cSNithin Dabilpuram 1524bbcd191cSNithin Dabilpuram void 15254006ac1fSRakesh Kudurumalla roc_nix_inl_dev_dump(struct roc_nix_inl_dev *roc_inl_dev, FILE *file) 1526bbcd191cSNithin Dabilpuram { 15274006ac1fSRakesh Kudurumalla struct idev_cfg *idev = idev_get_cfg(); 15284006ac1fSRakesh Kudurumalla struct nix_inl_dev *inl_dev = NULL; 15294006ac1fSRakesh Kudurumalla struct dev *dev = NULL; 15303c100e0eSNithin Dabilpuram int i; 1531bbcd191cSNithin Dabilpuram 15324006ac1fSRakesh Kudurumalla if (roc_inl_dev) { 15334006ac1fSRakesh Kudurumalla inl_dev = (struct nix_inl_dev *)&roc_inl_dev->reserved; 15344006ac1fSRakesh Kudurumalla } else { 15354006ac1fSRakesh Kudurumalla if (idev && idev->nix_inl_dev) 15364006ac1fSRakesh Kudurumalla inl_dev = idev->nix_inl_dev; 15374006ac1fSRakesh Kudurumalla else 15384006ac1fSRakesh Kudurumalla return; 15394006ac1fSRakesh Kudurumalla } 1540bbcd191cSNithin Dabilpuram 15414006ac1fSRakesh Kudurumalla dev = &inl_dev->dev; 15424006ac1fSRakesh Kudurumalla nix_dump(file, "nix_inl_dev@%p", inl_dev); 15434006ac1fSRakesh Kudurumalla nix_dump(file, " pf = %d", dev_get_pf(dev->pf_func)); 15444006ac1fSRakesh Kudurumalla nix_dump(file, " vf = %d", dev_get_vf(dev->pf_func)); 15454006ac1fSRakesh Kudurumalla nix_dump(file, " bar2 = 0x%" PRIx64, dev->bar2); 15464006ac1fSRakesh Kudurumalla nix_dump(file, " bar4 = 0x%" PRIx64, dev->bar4); 1547bbcd191cSNithin Dabilpuram 15484006ac1fSRakesh Kudurumalla nix_dump(file, " \tpci_dev = %p", inl_dev->pci_dev); 15494006ac1fSRakesh Kudurumalla nix_dump(file, " \tnix_base = 0x%" PRIxPTR "", inl_dev->nix_base); 15504006ac1fSRakesh Kudurumalla nix_dump(file, " \tsso_base = 0x%" PRIxPTR "", inl_dev->sso_base); 15514006ac1fSRakesh Kudurumalla nix_dump(file, " \tssow_base = 0x%" PRIxPTR "", inl_dev->ssow_base); 15524006ac1fSRakesh Kudurumalla nix_dump(file, " \tnix_msixoff = %d", inl_dev->nix_msixoff); 15534006ac1fSRakesh Kudurumalla nix_dump(file, " \tsso_msixoff = %d", inl_dev->sso_msixoff); 15544006ac1fSRakesh Kudurumalla nix_dump(file, " \tssow_msixoff = %d", inl_dev->ssow_msixoff); 15554006ac1fSRakesh Kudurumalla nix_dump(file, " \tnix_cints = %d", inl_dev->cints); 15564006ac1fSRakesh Kudurumalla nix_dump(file, " \tnix_qints = %d", inl_dev->qints); 15574006ac1fSRakesh Kudurumalla nix_dump(file, " \tinb_sa_base = 0x%p", inl_dev->inb_sa_base); 15584006ac1fSRakesh Kudurumalla nix_dump(file, " \tinb_sa_sz = %d", inl_dev->inb_sa_sz); 15594006ac1fSRakesh Kudurumalla nix_dump(file, " \txaq_buf_size = %u", inl_dev->xaq_buf_size); 15604006ac1fSRakesh Kudurumalla nix_dump(file, " \txae_waes = %u", inl_dev->xae_waes); 15614006ac1fSRakesh Kudurumalla nix_dump(file, " \tiue = %u", inl_dev->iue); 15624006ac1fSRakesh Kudurumalla nix_dump(file, " \txaq_aura = 0x%" PRIx64, inl_dev->xaq.aura_handle); 15634006ac1fSRakesh Kudurumalla nix_dump(file, " \txaq_mem = 0x%p", inl_dev->xaq.mem); 15644006ac1fSRakesh Kudurumalla 15654006ac1fSRakesh Kudurumalla nix_dump(file, " \tinl_dev_rq:"); 15663c100e0eSNithin Dabilpuram for (i = 0; i < inl_dev->nb_rqs; i++) 15674006ac1fSRakesh Kudurumalla roc_nix_rq_dump(&inl_dev->rqs[i], file); 1568bbcd191cSNithin Dabilpuram } 1569bde0d30aSRahul Bhansali 1570bde0d30aSRahul Bhansali void 15714006ac1fSRakesh Kudurumalla roc_nix_inl_outb_cpt_lfs_dump(struct roc_nix *roc_nix, FILE *file) 1572bde0d30aSRahul Bhansali { 1573bde0d30aSRahul Bhansali struct nix *nix = roc_nix_to_nix_priv(roc_nix); 1574bde0d30aSRahul Bhansali struct roc_cpt_lf *lf_base = nix->cpt_lf_base; 1575bde0d30aSRahul Bhansali int i; 1576bde0d30aSRahul Bhansali 15774006ac1fSRakesh Kudurumalla nix_dump(file, "nix@%p", nix); 1578bde0d30aSRahul Bhansali for (i = 0; i < nix->nb_cpt_lf; i++) { 15794006ac1fSRakesh Kudurumalla nix_dump(file, "NIX inline dev outbound CPT LFs:"); 1580bde0d30aSRahul Bhansali cpt_lf_print(&lf_base[i]); 1581bde0d30aSRahul Bhansali } 1582bde0d30aSRahul Bhansali } 1583656bb5a3SSatha Rao 1584656bb5a3SSatha Rao static void 1585656bb5a3SSatha Rao nix_tm_sqe_dump(uint64_t *sqe, int head_off, int end_off, int instr_sz, FILE *file, int full, 1586656bb5a3SSatha Rao uint16_t *num) 1587656bb5a3SSatha Rao { 1588656bb5a3SSatha Rao int i, j, inc = (8 * (0x2 >> instr_sz)), segs; 1589656bb5a3SSatha Rao uint64_t *ptr; 1590656bb5a3SSatha Rao 1591656bb5a3SSatha Rao if (!sqe || !(*num)) 1592656bb5a3SSatha Rao return; 1593656bb5a3SSatha Rao 1594656bb5a3SSatha Rao ptr = sqe + (head_off * inc); 1595656bb5a3SSatha Rao for (i = head_off; i < end_off; i++) { 1596656bb5a3SSatha Rao if (!(*num)) 1597656bb5a3SSatha Rao return; 1598656bb5a3SSatha Rao ptr = sqe + (i * inc); 1599656bb5a3SSatha Rao nix_dump(file, "Entry : %d >>>>>\n", i); 1600656bb5a3SSatha Rao nix_dump(file, "\t\tSEND_HDR[0]: 0x%016lx SEND_HDR[1]: 0x%016lx\n", *ptr, 1601656bb5a3SSatha Rao *(ptr + 1)); 1602656bb5a3SSatha Rao *num = *num - 1; 1603656bb5a3SSatha Rao if (!full) 1604656bb5a3SSatha Rao continue; 1605656bb5a3SSatha Rao ptr += 2; 1606656bb5a3SSatha Rao if (((*ptr >> 60) & 0xF) == NIX_SUBDC_EXT) { 1607656bb5a3SSatha Rao nix_dump(file, "\t\tSUBDC_EXT[0]: 0x%016lx DUBDC_EXT[1]: 0x%016lx\n", *ptr, 1608656bb5a3SSatha Rao *(ptr + 1)); 1609656bb5a3SSatha Rao ptr += 2; 1610656bb5a3SSatha Rao } 1611656bb5a3SSatha Rao if (((*ptr >> 60) & 0xF) == NIX_SUBDC_AGE_AND_STATS) { 1612656bb5a3SSatha Rao nix_dump(file, 1613656bb5a3SSatha Rao "\t\tSUBDC_AGE_STATS[0]: 0x%016lx SUBDC_AGE_STATS[1]: 0x%016lx\n", 1614656bb5a3SSatha Rao *ptr, *(ptr + 1)); 1615656bb5a3SSatha Rao ptr += 2; 1616656bb5a3SSatha Rao } 1617656bb5a3SSatha Rao if (((*ptr >> 60) & 0xF) == NIX_SUBDC_JUMP) { 1618656bb5a3SSatha Rao nix_dump(file, "\t\tSUBDC_JUMP: 0x%016lx\n", *ptr); 1619656bb5a3SSatha Rao ptr += 1; 1620656bb5a3SSatha Rao ptr = (uint64_t *)*ptr; 1621656bb5a3SSatha Rao } 1622656bb5a3SSatha Rao if (((*ptr >> 60) & 0xF) == NIX_SUBDC_CRC) { 1623656bb5a3SSatha Rao nix_dump(file, "\t\tSUBDC_CRC[0]: 0x%016lx SUBDC_CRC[1]: 0x%016lx\n", *ptr, 1624656bb5a3SSatha Rao *(ptr + 1)); 1625656bb5a3SSatha Rao ptr += 2; 1626656bb5a3SSatha Rao } 1627656bb5a3SSatha Rao /* We are not parsing immediate send descriptor */ 1628656bb5a3SSatha Rao if (((*ptr >> 60) & 0xF) == NIX_SUBDC_IMM) { 1629656bb5a3SSatha Rao nix_dump(file, "\t\tSUBDC_IMM: 0x%016lx ", *ptr); 1630656bb5a3SSatha Rao continue; 1631656bb5a3SSatha Rao } 1632656bb5a3SSatha Rao while (1) { 1633656bb5a3SSatha Rao if (((*ptr >> 60) & 0xF) == NIX_SUBDC_SG) { 1634656bb5a3SSatha Rao nix_dump(file, "\t\tSUBDC_SG: 0x%016lx ", *ptr); 1635656bb5a3SSatha Rao segs = (*ptr >> 48) & 0x3; 1636656bb5a3SSatha Rao ptr += 1; 1637656bb5a3SSatha Rao for (j = 0; j < segs; j++) { 1638656bb5a3SSatha Rao nix_dump(file, "\t\t\t 0x%016lx ", *ptr); 1639656bb5a3SSatha Rao ptr += 1; 1640656bb5a3SSatha Rao } 1641656bb5a3SSatha Rao if (segs == 2) 1642656bb5a3SSatha Rao ptr += 1; 1643656bb5a3SSatha Rao } else if (((*ptr >> 60) & 0xF) == NIX_SUBDC_SG2) { 1644656bb5a3SSatha Rao nix_dump(file, "\t\tSUBDC_SG2: 0x%016lx ", *ptr); 1645656bb5a3SSatha Rao ptr += 1; 1646656bb5a3SSatha Rao nix_dump(file, "\t\t\t 0x%016lx ", *ptr); 1647656bb5a3SSatha Rao ptr += 1; 1648656bb5a3SSatha Rao } else 1649656bb5a3SSatha Rao break; 1650656bb5a3SSatha Rao } 1651656bb5a3SSatha Rao } 1652656bb5a3SSatha Rao } 1653656bb5a3SSatha Rao 1654656bb5a3SSatha Rao int 1655656bb5a3SSatha Rao roc_nix_sq_desc_dump(struct roc_nix *roc_nix, uint16_t q, uint16_t offset, uint16_t num, FILE *file) 1656656bb5a3SSatha Rao { 1657656bb5a3SSatha Rao int head_off, count, rc = 0, tail_off, full = 0; 1658656bb5a3SSatha Rao struct nix *nix = roc_nix_to_nix_priv(roc_nix); 1659656bb5a3SSatha Rao struct roc_nix_sq *sq = nix->sqs[q]; 1660656bb5a3SSatha Rao void *sqb_buf, *dat, *tail_sqb; 1661656bb5a3SSatha Rao struct ndc_sync_op *ndc_req; 1662656bb5a3SSatha Rao struct dev *dev = &nix->dev; 1663656bb5a3SSatha Rao uint16_t sqes_per_sqb; 1664656bb5a3SSatha Rao struct mbox *mbox; 1665656bb5a3SSatha Rao 1666656bb5a3SSatha Rao mbox = dev->mbox; 1667656bb5a3SSatha Rao /* Sync NDC-NIX-TX for LF */ 1668656bb5a3SSatha Rao ndc_req = mbox_alloc_msg_ndc_sync_op(mbox_get(mbox)); 1669656bb5a3SSatha Rao if (ndc_req == NULL) { 1670656bb5a3SSatha Rao mbox_put(mbox); 1671656bb5a3SSatha Rao return -EFAULT; 1672656bb5a3SSatha Rao } 1673656bb5a3SSatha Rao 1674656bb5a3SSatha Rao ndc_req->nix_lf_tx_sync = 1; 1675656bb5a3SSatha Rao if (mbox_process(mbox)) 1676656bb5a3SSatha Rao rc |= NIX_ERR_NDC_SYNC; 1677656bb5a3SSatha Rao mbox_put(mbox); 1678656bb5a3SSatha Rao 1679656bb5a3SSatha Rao if (rc) 1680656bb5a3SSatha Rao plt_err("NDC_SYNC failed rc %d", rc); 1681656bb5a3SSatha Rao 1682656bb5a3SSatha Rao rc = nix_q_ctx_get(dev, NIX_AQ_CTYPE_SQ, q, (void *)&dat); 1683656bb5a3SSatha Rao if (rc) 1684656bb5a3SSatha Rao return rc; 1685656bb5a3SSatha Rao if (roc_model_is_cn9k()) { 1686656bb5a3SSatha Rao volatile struct nix_sq_ctx_s *ctx = (struct nix_sq_ctx_s *)dat; 1687656bb5a3SSatha Rao 1688656bb5a3SSatha Rao if (ctx->mnq_dis || ctx->lmt_dis) 1689656bb5a3SSatha Rao full = 1; 1690656bb5a3SSatha Rao 1691656bb5a3SSatha Rao count = ctx->sqb_count; 1692656bb5a3SSatha Rao sqb_buf = (void *)ctx->head_sqb; 1693656bb5a3SSatha Rao tail_sqb = (void *)ctx->tail_sqb; 1694656bb5a3SSatha Rao head_off = ctx->head_offset; 1695656bb5a3SSatha Rao tail_off = ctx->tail_offset; 1696*db5744d3SSatha Rao } else if (roc_model_is_cn10k()) { 1697656bb5a3SSatha Rao volatile struct nix_cn10k_sq_ctx_s *ctx = (struct nix_cn10k_sq_ctx_s *)dat; 1698656bb5a3SSatha Rao 1699656bb5a3SSatha Rao if (ctx->mnq_dis || ctx->lmt_dis) 1700656bb5a3SSatha Rao full = 1; 1701656bb5a3SSatha Rao 1702656bb5a3SSatha Rao count = ctx->sqb_count; 1703656bb5a3SSatha Rao sqb_buf = (void *)ctx->head_sqb; 1704656bb5a3SSatha Rao tail_sqb = (void *)ctx->tail_sqb; 1705656bb5a3SSatha Rao head_off = ctx->head_offset; 1706656bb5a3SSatha Rao tail_off = ctx->tail_offset; 1707*db5744d3SSatha Rao } else { 1708*db5744d3SSatha Rao volatile struct nix_cn20k_sq_ctx_s *ctx = (struct nix_cn20k_sq_ctx_s *)dat; 1709*db5744d3SSatha Rao 1710*db5744d3SSatha Rao if (ctx->mnq_dis || ctx->lmt_dis) 1711*db5744d3SSatha Rao full = 1; 1712*db5744d3SSatha Rao 1713*db5744d3SSatha Rao count = ctx->sqb_count; 1714*db5744d3SSatha Rao sqb_buf = (void *)ctx->head_sqb; 1715*db5744d3SSatha Rao tail_sqb = (void *)ctx->tail_sqb; 1716*db5744d3SSatha Rao head_off = ctx->head_offset; 1717*db5744d3SSatha Rao tail_off = ctx->tail_offset; 1718656bb5a3SSatha Rao } 1719656bb5a3SSatha Rao sqes_per_sqb = 1 << sq->sqes_per_sqb_log2; 1720656bb5a3SSatha Rao while (count) { 1721656bb5a3SSatha Rao void *next_sqb; 1722656bb5a3SSatha Rao 1723656bb5a3SSatha Rao if (sqb_buf == tail_sqb) { 1724656bb5a3SSatha Rao if ((head_off + offset) >= tail_off) /* Nothing to be dump */ 1725656bb5a3SSatha Rao return 0; 1726656bb5a3SSatha Rao head_off += tail_off; 1727656bb5a3SSatha Rao break; 1728656bb5a3SSatha Rao } else if ((head_off + offset) >= sqes_per_sqb) { 1729656bb5a3SSatha Rao next_sqb = *(void **)((uint64_t *)sqb_buf + 1730656bb5a3SSatha Rao (uint32_t)((sqes_per_sqb - 1) * 1731656bb5a3SSatha Rao (0x2 >> sq->max_sqe_sz) * 8)); 1732656bb5a3SSatha Rao /* While traffic running HW may freed/reused this SQE */ 1733656bb5a3SSatha Rao if (!next_sqb) 1734656bb5a3SSatha Rao return 0; 1735656bb5a3SSatha Rao sqb_buf = next_sqb; 1736656bb5a3SSatha Rao head_off = 0; 1737656bb5a3SSatha Rao count--; 1738656bb5a3SSatha Rao } else { 1739656bb5a3SSatha Rao head_off += offset; 1740656bb5a3SSatha Rao break; 1741656bb5a3SSatha Rao } 1742656bb5a3SSatha Rao } 1743656bb5a3SSatha Rao while (count) { 1744656bb5a3SSatha Rao void *next_sqb; 1745656bb5a3SSatha Rao 1746656bb5a3SSatha Rao if (sqb_buf == tail_sqb) 1747656bb5a3SSatha Rao nix_tm_sqe_dump(sqb_buf, head_off, tail_off, sq->max_sqe_sz, file, full, 1748656bb5a3SSatha Rao &num); 1749656bb5a3SSatha Rao else 1750656bb5a3SSatha Rao nix_tm_sqe_dump(sqb_buf, head_off, (sqes_per_sqb - 1), sq->max_sqe_sz, file, 1751656bb5a3SSatha Rao full, &num); 1752656bb5a3SSatha Rao if (!num) 1753656bb5a3SSatha Rao break; 1754656bb5a3SSatha Rao next_sqb = *(void **)((uint64_t *)sqb_buf + 1755656bb5a3SSatha Rao (uint32_t)((sqes_per_sqb - 1) * (0x2 >> sq->max_sqe_sz) * 8)); 1756656bb5a3SSatha Rao /* While traffic running HW may freed/reused this SQE */ 1757656bb5a3SSatha Rao if (!next_sqb) 1758656bb5a3SSatha Rao return 0; 1759656bb5a3SSatha Rao sqb_buf = next_sqb; 1760656bb5a3SSatha Rao head_off = 0; 1761656bb5a3SSatha Rao count--; 1762656bb5a3SSatha Rao } 1763656bb5a3SSatha Rao 1764656bb5a3SSatha Rao return 0; 1765656bb5a3SSatha Rao } 1766