MCPcopy Create free account
hub / github.com/F-Stack/f-stack / sw_xstats_update

Function sw_xstats_update

dpdk/drivers/event/sw/sw_evdev_xstats.c:445–507  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

443}
444
445static int
446sw_xstats_update(struct sw_evdev *sw, enum rte_event_dev_xstats_mode mode,
447 uint8_t queue_port_id, const uint64_t ids[],
448 uint64_t values[], unsigned int n, const uint32_t reset,
449 const uint32_t ret_if_n_lt_nstats)
450{
451 unsigned int i;
452 unsigned int xidx = 0;
453 RTE_SET_USED(mode);
454 RTE_SET_USED(queue_port_id);
455
456 uint32_t xstats_mode_count = 0;
457
458 switch (mode) {
459 case RTE_EVENT_DEV_XSTATS_DEVICE:
460 xstats_mode_count = sw->xstats_count_mode_dev;
461 break;
462 case RTE_EVENT_DEV_XSTATS_PORT:
463 if (queue_port_id >= (signed int)sw->port_count)
464 goto invalid_value;
465 xstats_mode_count = sw->xstats_count_per_port[queue_port_id];
466 break;
467 case RTE_EVENT_DEV_XSTATS_QUEUE:
468 if (queue_port_id >= (signed int)sw->qid_count)
469 goto invalid_value;
470 xstats_mode_count = sw->xstats_count_per_qid[queue_port_id];
471 break;
472 default:
473 SW_LOG_ERR("Invalid mode received in sw_xstats_get()");
474 goto invalid_value;
475 };
476
477 /* this function can check num stats and return them (xstats_get() style
478 * behaviour) or ignore n for reset() of a single stat style behaviour.
479 */
480 if (ret_if_n_lt_nstats && xstats_mode_count > n)
481 return xstats_mode_count;
482
483 for (i = 0; i < n && xidx < xstats_mode_count; i++) {
484 struct sw_xstats_entry *xs = &sw->xstats[ids[i]];
485 if (ids[i] > sw->xstats_count || xs->mode != mode)
486 continue;
487
488 if (mode != RTE_EVENT_DEV_XSTATS_DEVICE &&
489 queue_port_id != xs->obj_idx)
490 continue;
491
492 uint64_t val = xs->fn(sw, xs->obj_idx, xs->stat, xs->extra_arg)
493 - xs->reset_value;
494
495 if (values)
496 values[xidx] = val;
497
498 if (xs->reset_allowed && reset)
499 xs->reset_value += val;
500
501 xidx++;
502 }

Callers 3

sw_xstats_getFunction · 0.85
sw_xstats_reset_queueFunction · 0.85
sw_xstats_reset_portFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected