Branch data Line data Source code
1 : : /* SPDX-License-Identifier: BSD-3-Clause
2 : : * Copyright(C) 2021 Marvell.
3 : : */
4 : :
5 : : #include <inttypes.h>
6 : :
7 : : #include "roc_api.h"
8 : : #include "roc_nix_xstats.h"
9 : : #include "roc_priv.h"
10 : :
11 : : #define NIX_RX_STATS(val) plt_read64(nix->base + NIX_LF_RX_STATX(val))
12 : : #define NIX_TX_STATS(val) plt_read64(nix->base + NIX_LF_TX_STATX(val))
13 : : #define INL_NIX_RX_STATS(val) \
14 : : plt_read64(inl_dev->nix_base + NIX_LF_RX_STATX(val))
15 : :
16 : : #define NIX_XSTATS_NAME_PRINT(xstats_names, count, xstats, index) \
17 : : do { \
18 : : if (xstats_names) \
19 : : snprintf(xstats_names[count].name, \
20 : : sizeof(xstats_names[count].name), "%s", \
21 : : xstats[index].name); \
22 : : } while (0)
23 : :
24 : : int
25 : 0 : roc_nix_num_xstats_get(struct roc_nix *roc_nix)
26 : : {
27 : 0 : return roc_nix_xstats_names_get(roc_nix, NULL, 0);
28 : : }
29 : :
30 : : int
31 : 0 : roc_nix_stats_get(struct roc_nix *roc_nix, struct roc_nix_stats *stats)
32 : : {
33 : : struct nix *nix = roc_nix_to_nix_priv(roc_nix);
34 : :
35 [ # # ]: 0 : if (stats == NULL)
36 : : return NIX_ERR_PARAM;
37 : :
38 : 0 : stats->rx_octs = NIX_RX_STATS(NIX_STAT_LF_RX_RX_OCTS);
39 : 0 : stats->rx_ucast = NIX_RX_STATS(NIX_STAT_LF_RX_RX_UCAST);
40 : 0 : stats->rx_bcast = NIX_RX_STATS(NIX_STAT_LF_RX_RX_BCAST);
41 : 0 : stats->rx_mcast = NIX_RX_STATS(NIX_STAT_LF_RX_RX_MCAST);
42 : 0 : stats->rx_drop = NIX_RX_STATS(NIX_STAT_LF_RX_RX_DROP);
43 : 0 : stats->rx_drop_octs = NIX_RX_STATS(NIX_STAT_LF_RX_RX_DROP_OCTS);
44 : 0 : stats->rx_fcs = NIX_RX_STATS(NIX_STAT_LF_RX_RX_FCS);
45 : 0 : stats->rx_err = NIX_RX_STATS(NIX_STAT_LF_RX_RX_ERR);
46 : 0 : stats->rx_drop_bcast = NIX_RX_STATS(NIX_STAT_LF_RX_RX_DRP_BCAST);
47 : 0 : stats->rx_drop_mcast = NIX_RX_STATS(NIX_STAT_LF_RX_RX_DRP_MCAST);
48 : 0 : stats->rx_drop_l3_bcast = NIX_RX_STATS(NIX_STAT_LF_RX_RX_DRP_L3BCAST);
49 : 0 : stats->rx_drop_l3_mcast = NIX_RX_STATS(NIX_STAT_LF_RX_RX_DRP_L3MCAST);
50 : :
51 : 0 : stats->tx_ucast = NIX_TX_STATS(NIX_STAT_LF_TX_TX_UCAST);
52 : 0 : stats->tx_bcast = NIX_TX_STATS(NIX_STAT_LF_TX_TX_BCAST);
53 : 0 : stats->tx_mcast = NIX_TX_STATS(NIX_STAT_LF_TX_TX_MCAST);
54 : 0 : stats->tx_drop = NIX_TX_STATS(NIX_STAT_LF_TX_TX_DROP);
55 : 0 : stats->tx_octs = NIX_TX_STATS(NIX_STAT_LF_TX_TX_OCTS);
56 : 0 : return 0;
57 : : }
58 : :
59 : : int
60 : 0 : roc_nix_stats_reset(struct roc_nix *roc_nix)
61 : : {
62 : : struct nix *nix = roc_nix_to_nix_priv(roc_nix);
63 : 0 : struct mbox *mbox = mbox_get((&nix->dev)->mbox);
64 : : int rc;
65 : :
66 [ # # ]: 0 : if (mbox_alloc_msg_nix_stats_rst(mbox) == NULL) {
67 : : rc = -ENOMEM;
68 : 0 : goto exit;
69 : : }
70 : :
71 : 0 : rc = mbox_process(mbox);
72 : 0 : exit:
73 : : mbox_put(mbox);
74 : 0 : return rc;
75 : : }
76 : :
77 : : static int
78 : : queue_is_valid(struct nix *nix, uint16_t qid, bool is_rx)
79 : : {
80 : : uint16_t nb_queues;
81 : :
82 [ # # ]: 0 : if (is_rx)
83 : 0 : nb_queues = nix->nb_rx_queues;
84 : : else
85 : 0 : nb_queues = nix->nb_tx_queues;
86 : :
87 [ # # # # ]: 0 : if (qid >= nb_queues)
88 : : return NIX_ERR_QUEUE_INVALID_RANGE;
89 : :
90 : : return 0;
91 : : }
92 : :
93 : : static uint64_t
94 : : inl_qstat_read(struct nix_inl_dev *inl_dev, uint16_t qid, uint32_t off)
95 : : {
96 : : uint64_t reg, val;
97 : : int64_t *addr;
98 : :
99 : : addr = (int64_t *)(inl_dev->nix_base + off);
100 : : reg = (((uint64_t)qid) << 32);
101 : : val = roc_atomic64_add_nosync(reg, addr);
102 : : if (val & BIT_ULL(NIX_CQ_OP_STAT_OP_ERR))
103 : : val = 0;
104 : : return val;
105 : : }
106 : :
107 : : static uint64_t
108 : : qstat_read(struct nix *nix, uint16_t qid, uint32_t off)
109 : : {
110 : : uint64_t reg, val;
111 : : int64_t *addr;
112 : :
113 : : addr = (int64_t *)(nix->base + off);
114 : : reg = (((uint64_t)qid) << 32);
115 : : val = roc_atomic64_add_nosync(reg, addr);
116 : : if (val & BIT_ULL(NIX_CQ_OP_STAT_OP_ERR))
117 : : val = 0;
118 : : return val;
119 : : }
120 : :
121 : : static void
122 : : nix_stat_rx_queue_get(struct nix *nix, uint16_t qid,
123 : : struct roc_nix_stats_queue *qstats)
124 : : {
125 : 0 : qstats->rx_pkts = qstat_read(nix, qid, NIX_LF_RQ_OP_PKTS);
126 : 0 : qstats->rx_octs = qstat_read(nix, qid, NIX_LF_RQ_OP_OCTS);
127 : 0 : qstats->rx_drop_pkts = qstat_read(nix, qid, NIX_LF_RQ_OP_DROP_PKTS);
128 : 0 : qstats->rx_drop_octs = qstat_read(nix, qid, NIX_LF_RQ_OP_DROP_OCTS);
129 : 0 : qstats->rx_error_pkts = qstat_read(nix, qid, NIX_LF_RQ_OP_RE_PKTS);
130 : 0 : }
131 : :
132 : : static void
133 : : nix_stat_tx_queue_get(struct nix *nix, uint16_t qid,
134 : : struct roc_nix_stats_queue *qstats)
135 : : {
136 : 0 : qstats->tx_pkts = qstat_read(nix, qid, NIX_LF_SQ_OP_PKTS);
137 : 0 : qstats->tx_octs = qstat_read(nix, qid, NIX_LF_SQ_OP_OCTS);
138 : 0 : qstats->tx_drop_pkts = qstat_read(nix, qid, NIX_LF_SQ_OP_DROP_PKTS);
139 [ # # ]: 0 : qstats->tx_drop_octs = qstat_read(nix, qid, NIX_LF_SQ_OP_DROP_OCTS);
140 [ # # ]: 0 : if (roc_feature_nix_has_age_drop_stats()) {
141 : 0 : qstats->tx_age_drop_pkts = qstat_read(nix, qid, NIX_LF_SQ_OP_AGE_DROP_PKTS);
142 : 0 : qstats->tx_age_drop_octs = qstat_read(nix, qid, NIX_LF_SQ_OP_AGE_DROP_OCTS);
143 : : }
144 : : }
145 : :
146 : : static int
147 : 0 : nix_stat_rx_queue_reset(struct nix *nix, uint16_t qid)
148 : : {
149 : 0 : struct mbox *mbox = mbox_get((&nix->dev)->mbox);
150 : : int rc;
151 : :
152 [ # # ]: 0 : if (roc_model_is_cn9k()) {
153 : : struct nix_aq_enq_req *aq;
154 : :
155 : 0 : aq = mbox_alloc_msg_nix_aq_enq(mbox);
156 [ # # ]: 0 : if (!aq) {
157 : : rc = -ENOSPC;
158 : 0 : goto exit;
159 : : }
160 : :
161 : 0 : aq->qidx = qid;
162 : 0 : aq->ctype = NIX_AQ_CTYPE_RQ;
163 : 0 : aq->op = NIX_AQ_INSTOP_WRITE;
164 : :
165 : 0 : aq->rq.octs = 0;
166 : 0 : aq->rq.pkts = 0;
167 : 0 : aq->rq.drop_octs = 0;
168 : 0 : aq->rq.drop_pkts = 0;
169 : 0 : aq->rq.re_pkts = 0;
170 : :
171 : 0 : aq->rq_mask.octs = ~(aq->rq_mask.octs);
172 : 0 : aq->rq_mask.pkts = ~(aq->rq_mask.pkts);
173 : 0 : aq->rq_mask.drop_octs = ~(aq->rq_mask.drop_octs);
174 : 0 : aq->rq_mask.drop_pkts = ~(aq->rq_mask.drop_pkts);
175 : 0 : aq->rq_mask.re_pkts = ~(aq->rq_mask.re_pkts);
176 : : } else {
177 : : struct nix_cn10k_aq_enq_req *aq;
178 : :
179 : 0 : aq = mbox_alloc_msg_nix_cn10k_aq_enq(mbox);
180 [ # # ]: 0 : if (!aq) {
181 : : rc = -ENOSPC;
182 : 0 : goto exit;
183 : : }
184 : :
185 : 0 : aq->qidx = qid;
186 : 0 : aq->ctype = NIX_AQ_CTYPE_RQ;
187 : 0 : aq->op = NIX_AQ_INSTOP_WRITE;
188 : :
189 : 0 : aq->rq.octs = 0;
190 : 0 : aq->rq.pkts = 0;
191 : 0 : aq->rq.drop_octs = 0;
192 : 0 : aq->rq.drop_pkts = 0;
193 : 0 : aq->rq.re_pkts = 0;
194 : :
195 : 0 : aq->rq_mask.octs = ~(aq->rq_mask.octs);
196 : 0 : aq->rq_mask.pkts = ~(aq->rq_mask.pkts);
197 : 0 : aq->rq_mask.drop_octs = ~(aq->rq_mask.drop_octs);
198 : 0 : aq->rq_mask.drop_pkts = ~(aq->rq_mask.drop_pkts);
199 : 0 : aq->rq_mask.re_pkts = ~(aq->rq_mask.re_pkts);
200 : : }
201 : :
202 : 0 : rc = mbox_process(mbox);
203 [ # # ]: 0 : rc = rc ? NIX_ERR_AQ_WRITE_FAILED : 0;
204 : 0 : exit:
205 : : mbox_put(mbox);
206 : 0 : return rc;
207 : : }
208 : :
209 : : static int
210 : 0 : nix_stat_tx_queue_reset(struct nix *nix, uint16_t qid)
211 : : {
212 : 0 : struct mbox *mbox = mbox_get((&nix->dev)->mbox);
213 : : int rc;
214 : :
215 [ # # ]: 0 : if (roc_model_is_cn9k()) {
216 : : struct nix_aq_enq_req *aq;
217 : :
218 : 0 : aq = mbox_alloc_msg_nix_aq_enq(mbox);
219 [ # # ]: 0 : if (!aq) {
220 : : rc = -ENOSPC;
221 : 0 : goto exit;
222 : : }
223 : :
224 : 0 : aq->qidx = qid;
225 : 0 : aq->ctype = NIX_AQ_CTYPE_SQ;
226 : 0 : aq->op = NIX_AQ_INSTOP_WRITE;
227 : 0 : aq->sq.octs = 0;
228 : 0 : aq->sq.pkts = 0;
229 : 0 : aq->sq.drop_octs = 0;
230 : 0 : aq->sq.drop_pkts = 0;
231 : :
232 : 0 : aq->sq_mask.octs = ~(aq->sq_mask.octs);
233 : 0 : aq->sq_mask.pkts = ~(aq->sq_mask.pkts);
234 : 0 : aq->sq_mask.drop_octs = ~(aq->sq_mask.drop_octs);
235 : 0 : aq->sq_mask.drop_pkts = ~(aq->sq_mask.drop_pkts);
236 : : } else {
237 : : struct nix_cn10k_aq_enq_req *aq;
238 : :
239 : 0 : aq = mbox_alloc_msg_nix_cn10k_aq_enq(mbox);
240 [ # # ]: 0 : if (!aq) {
241 : : rc = -ENOSPC;
242 : 0 : goto exit;
243 : : }
244 : :
245 : 0 : aq->qidx = qid;
246 : 0 : aq->ctype = NIX_AQ_CTYPE_SQ;
247 : 0 : aq->op = NIX_AQ_INSTOP_WRITE;
248 : 0 : aq->sq.octs = 0;
249 : 0 : aq->sq.pkts = 0;
250 : 0 : aq->sq.drop_octs = 0;
251 : 0 : aq->sq.drop_pkts = 0;
252 : :
253 : 0 : aq->sq_mask.octs = ~(aq->sq_mask.octs);
254 : 0 : aq->sq_mask.pkts = ~(aq->sq_mask.pkts);
255 : 0 : aq->sq_mask.drop_octs = ~(aq->sq_mask.drop_octs);
256 : 0 : aq->sq_mask.drop_pkts = ~(aq->sq_mask.drop_pkts);
257 : 0 : aq->sq_mask.aged_drop_octs = ~(aq->sq_mask.aged_drop_octs);
258 : 0 : aq->sq_mask.aged_drop_pkts = ~(aq->sq_mask.aged_drop_pkts);
259 : : }
260 : :
261 : 0 : rc = mbox_process(mbox);
262 [ # # ]: 0 : rc = rc ? NIX_ERR_AQ_WRITE_FAILED : 0;
263 : 0 : exit:
264 : : mbox_put(mbox);
265 : 0 : return rc;
266 : : }
267 : :
268 : : int
269 : 0 : roc_nix_stats_queue_get(struct roc_nix *roc_nix, uint16_t qid, bool is_rx,
270 : : struct roc_nix_stats_queue *qstats)
271 : : {
272 : : struct nix *nix = roc_nix_to_nix_priv(roc_nix);
273 : : int rc;
274 : :
275 [ # # ]: 0 : if (qstats == NULL)
276 : : return NIX_ERR_PARAM;
277 : :
278 : : rc = queue_is_valid(nix, qid, is_rx);
279 : : if (rc)
280 : 0 : goto fail;
281 : :
282 [ # # ]: 0 : if (is_rx)
283 : : nix_stat_rx_queue_get(nix, qid, qstats);
284 : : else
285 : : nix_stat_tx_queue_get(nix, qid, qstats);
286 : :
287 : : fail:
288 : : return rc;
289 : : }
290 : :
291 : : int
292 [ # # ]: 0 : roc_nix_stats_queue_reset(struct roc_nix *roc_nix, uint16_t qid, bool is_rx)
293 : : {
294 : : struct nix *nix = roc_nix_to_nix_priv(roc_nix);
295 : : int rc;
296 : :
297 [ # # ]: 0 : rc = queue_is_valid(nix, qid, is_rx);
298 : : if (rc)
299 : 0 : goto fail;
300 : :
301 [ # # ]: 0 : if (is_rx)
302 : 0 : rc = nix_stat_rx_queue_reset(nix, qid);
303 : : else
304 : 0 : rc = nix_stat_tx_queue_reset(nix, qid);
305 : :
306 : 0 : fail:
307 : 0 : return rc;
308 : : }
309 : :
310 : : int
311 : 0 : roc_nix_xstats_get(struct roc_nix *roc_nix, struct roc_nix_xstat *xstats,
312 : : unsigned int n)
313 : : {
314 : : struct nix *nix = roc_nix_to_nix_priv(roc_nix);
315 : 0 : struct idev_cfg *idev = idev_get_cfg();
316 : 0 : struct mbox *mbox = (&nix->dev)->mbox;
317 : : struct nix_inl_dev *inl_dev = NULL;
318 : : struct cgx_stats_rsp *cgx_resp;
319 : : struct rpm_stats_rsp *rpm_resp;
320 : : uint64_t i, count = 0;
321 : : struct msg_req *req;
322 : : uint16_t inl_rq_id;
323 : : uint32_t xstat_cnt;
324 : : int rc;
325 : :
326 : 0 : xstat_cnt = roc_nix_xstats_names_get(roc_nix, NULL, 0);
327 [ # # ]: 0 : if (n < xstat_cnt)
328 : : return xstat_cnt;
329 : :
330 [ # # ]: 0 : if (xstats == NULL)
331 : : return -EINVAL;
332 : :
333 : 0 : memset(xstats, 0, (xstat_cnt * sizeof(*xstats)));
334 [ # # ]: 0 : for (i = 0; i < CNXK_NIX_NUM_TX_XSTATS; i++) {
335 : 0 : xstats[count].value = NIX_TX_STATS(nix_tx_xstats[i].offset);
336 : 0 : xstats[count].id = count;
337 : 0 : count++;
338 : : }
339 : :
340 [ # # ]: 0 : for (i = 0; i < CNXK_NIX_NUM_RX_XSTATS; i++) {
341 : 0 : xstats[count].value = NIX_RX_STATS(nix_rx_xstats[i].offset);
342 : 0 : xstats[count].id = count;
343 : 0 : count++;
344 : : }
345 [ # # # # ]: 0 : if (nix->inb_inl_dev && idev) {
346 [ # # ]: 0 : if (idev->nix_inl_dev) {
347 : : inl_dev = idev->nix_inl_dev;
348 [ # # ]: 0 : for (i = 0; i < CNXK_INL_NIX_NUM_RX_XSTATS; i++) {
349 : 0 : xstats[count].value =
350 : 0 : INL_NIX_RX_STATS(inl_nix_rx_xstats[i].offset);
351 : 0 : xstats[count].id = count;
352 : 0 : count++;
353 : : }
354 : : inl_rq_id = inl_dev->nb_rqs > 1 ? roc_nix->port_id : 0;
355 [ # # ]: 0 : for (i = 0; i < CNXK_INL_NIX_RQ_XSTATS; i++) {
356 : 0 : xstats[count].value =
357 : : inl_qstat_read(inl_dev, inl_rq_id,
358 : : inl_nix_rq_xstats[i].offset);
359 : 0 : xstats[count].id = count;
360 : 0 : count++;
361 : : }
362 [ # # ]: 0 : for (i = 0; i < PLT_DIM(inl_sw_xstats); i++) {
363 : : if (!inl_sw_xstats[i].offset)
364 : 0 : xstats[count].value = inl_dev->sso_work_cnt;
365 : 0 : xstats[count].id = count;
366 : 0 : count++;
367 : : }
368 : : }
369 : : }
370 : :
371 : : for (i = 0; i < nix->nb_rx_queues; i++)
372 : : xstats[count].value +=
373 : : qstat_read(nix, i, nix_q_xstats[0].offset);
374 : :
375 : 0 : xstats[count].id = count;
376 [ # # ]: 0 : count++;
377 : :
378 [ # # ]: 0 : if (roc_model_is_cn10k()) {
379 [ # # ]: 0 : for (i = 0; i < CNXK_NIX_NUM_CN10K_RX_XSTATS; i++) {
380 : 0 : xstats[count].value =
381 : 0 : NIX_RX_STATS(nix_cn10k_rx_xstats[i].offset);
382 : 0 : xstats[count].id = count;
383 : 0 : count++;
384 : : }
385 : : }
386 : :
387 [ # # ]: 0 : if (roc_nix_is_vf_or_sdp(roc_nix))
388 : 0 : return count;
389 : :
390 [ # # ]: 0 : if (roc_model_is_cn9k()) {
391 : 0 : req = mbox_alloc_msg_cgx_stats(mbox_get(mbox));
392 [ # # ]: 0 : if (!req) {
393 : : rc = -ENOSPC;
394 : 0 : goto exit;
395 : : }
396 : :
397 : 0 : req->hdr.pcifunc = roc_nix_get_pf_func(roc_nix);
398 : :
399 : : rc = mbox_process_msg(mbox, (void *)&cgx_resp);
400 [ # # ]: 0 : if (rc)
401 : 0 : goto exit;
402 : :
403 [ # # ]: 0 : for (i = 0; i < CNXK_NIX_NUM_RX_XSTATS_CGX; i++) {
404 : 0 : xstats[count].value =
405 : 0 : cgx_resp->rx_stats[nix_rx_xstats_cgx[i].offset];
406 : 0 : xstats[count].id = count;
407 : 0 : count++;
408 : : }
409 : :
410 [ # # ]: 0 : for (i = 0; i < CNXK_NIX_NUM_TX_XSTATS_CGX; i++) {
411 : 0 : xstats[count].value =
412 : 0 : cgx_resp->tx_stats[nix_tx_xstats_cgx[i].offset];
413 : 0 : xstats[count].id = count;
414 : 0 : count++;
415 : : }
416 : : } else {
417 : 0 : req = mbox_alloc_msg_rpm_stats(mbox_get(mbox));
418 [ # # ]: 0 : if (!req) {
419 : : rc = -ENOSPC;
420 : 0 : goto exit;
421 : : }
422 : :
423 : 0 : req->hdr.pcifunc = roc_nix_get_pf_func(roc_nix);
424 : :
425 : : rc = mbox_process_msg(mbox, (void *)&rpm_resp);
426 [ # # ]: 0 : if (rc)
427 : 0 : goto exit;
428 : :
429 [ # # ]: 0 : for (i = 0; i < CNXK_NIX_NUM_RX_XSTATS_RPM; i++) {
430 : 0 : xstats[count].value =
431 : 0 : rpm_resp->rx_stats[nix_rx_xstats_rpm[i].offset];
432 : 0 : xstats[count].id = count;
433 : 0 : count++;
434 : : }
435 : :
436 [ # # ]: 0 : for (i = 0; i < CNXK_NIX_NUM_TX_XSTATS_RPM; i++) {
437 : 0 : xstats[count].value =
438 : 0 : rpm_resp->tx_stats[nix_tx_xstats_rpm[i].offset];
439 : 0 : xstats[count].id = count;
440 : 0 : count++;
441 : : }
442 : : }
443 : :
444 : 0 : rc = count;
445 : 0 : exit:
446 : : mbox_put(mbox);
447 : 0 : return rc;
448 : : }
449 : :
450 : : int
451 : 0 : roc_nix_xstats_names_get(struct roc_nix *roc_nix,
452 : : struct roc_nix_xstat_name *xstats_names,
453 : : unsigned int limit)
454 : : {
455 : : struct nix *nix = roc_nix_to_nix_priv(roc_nix);
456 : 0 : struct idev_cfg *idev = idev_get_cfg();
457 : : uint64_t i, count = 0;
458 : :
459 : : PLT_SET_USED(limit);
460 : :
461 [ # # ]: 0 : for (i = 0; i < CNXK_NIX_NUM_TX_XSTATS; i++) {
462 [ # # ]: 0 : NIX_XSTATS_NAME_PRINT(xstats_names, count, nix_tx_xstats, i);
463 : 0 : count++;
464 : : }
465 : :
466 [ # # ]: 0 : for (i = 0; i < CNXK_NIX_NUM_RX_XSTATS; i++) {
467 [ # # ]: 0 : NIX_XSTATS_NAME_PRINT(xstats_names, count, nix_rx_xstats, i);
468 : 0 : count++;
469 : : }
470 : :
471 [ # # # # ]: 0 : if (nix->inb_inl_dev && idev) {
472 [ # # ]: 0 : if (idev->nix_inl_dev) {
473 [ # # ]: 0 : for (i = 0; i < CNXK_INL_NIX_NUM_RX_XSTATS; i++) {
474 [ # # ]: 0 : NIX_XSTATS_NAME_PRINT(xstats_names, count,
475 : : inl_nix_rx_xstats, i);
476 : 0 : count++;
477 : : }
478 [ # # ]: 0 : for (i = 0; i < CNXK_INL_NIX_RQ_XSTATS; i++) {
479 [ # # ]: 0 : NIX_XSTATS_NAME_PRINT(xstats_names, count,
480 : : inl_nix_rq_xstats, i);
481 : 0 : count++;
482 : : }
483 [ # # ]: 0 : for (i = 0; i < PLT_DIM(inl_sw_xstats); i++) {
484 [ # # ]: 0 : NIX_XSTATS_NAME_PRINT(xstats_names, count, inl_sw_xstats, i);
485 : 0 : count++;
486 : : }
487 : : }
488 : : }
489 : :
490 [ # # ]: 0 : for (i = 0; i < CNXK_NIX_NUM_QUEUE_XSTATS; i++) {
491 [ # # ]: 0 : NIX_XSTATS_NAME_PRINT(xstats_names, count, nix_q_xstats, i);
492 : 0 : count++;
493 : : }
494 : :
495 [ # # ]: 0 : if (roc_model_is_cn10k()) {
496 [ # # ]: 0 : for (i = 0; i < CNXK_NIX_NUM_CN10K_RX_XSTATS; i++) {
497 [ # # ]: 0 : NIX_XSTATS_NAME_PRINT(xstats_names, count,
498 : : nix_cn10k_rx_xstats, i);
499 : 0 : count++;
500 : : }
501 : : }
502 : :
503 [ # # ]: 0 : if (roc_nix_is_vf_or_sdp(roc_nix))
504 : 0 : return count;
505 : :
506 [ # # ]: 0 : if (roc_model_is_cn9k()) {
507 [ # # ]: 0 : for (i = 0; i < CNXK_NIX_NUM_RX_XSTATS_CGX; i++) {
508 [ # # ]: 0 : NIX_XSTATS_NAME_PRINT(xstats_names, count,
509 : : nix_rx_xstats_cgx, i);
510 : 0 : count++;
511 : : }
512 : :
513 [ # # ]: 0 : for (i = 0; i < CNXK_NIX_NUM_TX_XSTATS_CGX; i++) {
514 [ # # ]: 0 : NIX_XSTATS_NAME_PRINT(xstats_names, count,
515 : : nix_tx_xstats_cgx, i);
516 : 0 : count++;
517 : : }
518 : :
519 : : } else {
520 [ # # ]: 0 : for (i = 0; i < CNXK_NIX_NUM_RX_XSTATS_RPM; i++) {
521 [ # # ]: 0 : NIX_XSTATS_NAME_PRINT(xstats_names, count,
522 : : nix_rx_xstats_rpm, i);
523 : 0 : count++;
524 : : }
525 : :
526 [ # # ]: 0 : for (i = 0; i < CNXK_NIX_NUM_TX_XSTATS_RPM; i++) {
527 [ # # ]: 0 : NIX_XSTATS_NAME_PRINT(xstats_names, count,
528 : : nix_tx_xstats_rpm, i);
529 : 0 : count++;
530 : : }
531 : : }
532 : :
533 : 0 : return count;
534 : : }
|