UNION DPNI_STATISTICS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… union dpni_statistics(9) β€” Kernel API Manual πŸŽ€

okay so bestie, welcome to the glow-up of union dpni_statistics πŸ’– this is a Kernel API Manual page, and it's literally the union that describes all the DPNI statistics β€” like the group chat where every counter comes to spill its numbers ✨


🌸 NAME 🌸

union dpni_statistics β€” a union describing the DPNI statistics. that's it, that's the vibe 🫢


✨ SYNOPSIS ✨

here's the whole struct, copied exactly, no cap β€” every field is iconic in its own way πŸ‘‘

union dpni_statistics {
    struct {
      u64 ingress_all_frames;
      u64 ingress_all_bytes;
      u64 ingress_multicast_frames;
      u64 ingress_multicast_bytes;
      u64 ingress_broadcast_frames;
      u64 ingress_broadcast_bytes;
    } page_0;
    struct {
      u64 egress_all_frames;
      u64 egress_all_bytes;
      u64 egress_multicast_frames;
      u64 egress_multicast_bytes;
      u64 egress_broadcast_frames;
      u64 egress_broadcast_bytes;
    } page_1;
    struct {
      u64 ingress_filtered_frames;
      u64 ingress_discarded_frames;
      u64 ingress_nobuffer_discards;
      u64 egress_discarded_frames;
      u64 egress_confirmed_frames;
    } page_2;
    struct {
      u64 egress_dequeue_bytes;
      u64 egress_dequeue_frames;
      u64 egress_reject_bytes;
      u64 egress_reject_frames;
    } page_3;
    struct {
      u64 cgr_reject_frames;
      u64 cgr_reject_bytes;
    } page_4;
    struct {
      u64 policer_cnt_red;
      u64 policer_cnt_yellow;
      u64 policer_cnt_green;
      u64 policer_cnt_re_red;
      u64 policer_cnt_re_yellow;
    } page_5;
    struct {
      u64 tx_pending_frames;
    } page_6;
    struct {
      u64 counter[DPNI_STATISTICS_CNT];
    } raw;
  };

πŸ¦‹ Members πŸ¦‹

πŸ“ page_0

page_0 β€” the Page_0 statistics structure. she's the ingress girlie, first page energy πŸ’…

  • page_0.ingress_all_frames β€” ingress frame count, all of them, every single one πŸ’–
  • page_0.ingress_all_bytes β€” ingress byte count, the bytes are byte-ing πŸ”₯
  • page_0.ingress_multicast_frames β€” ingress multicast frame count 🌈
  • page_0.ingress_multicast_bytes β€” ingress multicast byte count ✨
  • page_0.ingress_broadcast_frames β€” ingress broadcast frame count πŸ“£
  • page_0.ingress_broadcast_bytes β€” ingress broadcast byte count πŸŽ€

πŸ“ page_1

page_1 β€” the Page_1 statistics structure. now we're on the egress side, main character shift πŸ’«

  • page_1.egress_all_frames β€” egress frame count πŸ‘‘
  • page_1.egress_all_bytes β€” egress byte count πŸ’œ
  • page_1.egress_multicast_frames β€” egress multicast frame count 🌸
  • page_1.egress_multicast_bytes β€” egress multicast byte count 🧚
  • page_1.egress_broadcast_frames β€” egress broadcast frame count πŸ“’
  • page_1.egress_broadcast_bytes β€” egress broadcast byte count ⭐

πŸ“ page_2

page_2 β€” the Page_2 statistics structure. this one's the filtered/discarded lore, kind of dramatic ngl 😭

  • page_2.ingress_filtered_frames β€” ingress filtered frame count 🫧
  • page_2.ingress_discarded_frames β€” ingress discarded frame count πŸ’€
  • page_2.ingress_nobuffer_discards β€” ingress discarded frame count due to lack of buffers. yeah, no buffers, tragic πŸ™ˆ
  • page_2.egress_discarded_frames β€” egress discarded frame count πŸ˜”
  • page_2.egress_confirmed_frames β€” egress confirmed frame count βœ…

πŸ“ page_3

page_3 β€” the Page_3 statistics structure. queue math, we love to see it πŸ“Š

  • page_3.egress_dequeue_bytes β€” cumulative count of the number of bytes dequeued from egress FQs πŸ”₯
  • page_3.egress_dequeue_frames β€” cumulative count of the number of frames dequeued from egress FQs ✨
  • page_3.egress_reject_bytes β€” cumulative count of the number of bytes in egress frames whose enqueue was rejected. rejected, not accepted, moving on πŸ’…
  • page_3.egress_reject_frames β€” cumulative count of the number of egress frames whose enqueue was rejected 🚫

πŸ“ page_4

page_4 β€” the Page_4 statistics structure: congestion points. congested but make it cute 🚦

  • page_4.cgr_reject_frames β€” number of rejected frames due to congestion point πŸ’”
  • page_4.cgr_reject_bytes β€” number of rejected bytes due to congestion point 😡

πŸ“ page_5

page_5 β€” the Page_5 statistics structure: policer. traffic-light couture, honestly iconic πŸš₯

  • page_5.policer_cnt_red β€” number of red colored frames ❀️
  • page_5.policer_cnt_yellow β€” number of yellow colored frames πŸ’›
  • page_5.policer_cnt_green β€” number of green colored frames πŸ’š
  • page_5.policer_cnt_re_red β€” number of recolored red frames 🎨
  • page_5.policer_cnt_re_yellow β€” number of recolored yellow frames 🌟

πŸ“ page_6

page_6 β€” the Page_6 statistics structure. one field, one moment, one legend 🫢

  • page_6.tx_pending_frames β€” total number of frames pending in egress FQs ⏳

πŸ“ raw

  • raw β€” raw statistics structure, used to index counters πŸ”’ like the index of the whole friend group fr fr

🌈 SEE ALSO 🌈

the whole extended universe, bestie β€” go read these too, iykyk πŸ’–

Kernel file ./drivers/net/ethernet/freescale/dpaa2/dpni.h

DPNI_MAX_TC(9), DPNI_MAX_DPBP(9), DPNI_ALL_TCS(9), DPNI_ALL_TC_FLOWS(9), DPNI_NEW_FLOW_ID(9), DPNI_OPT_TX_FRM_RELEASE(9), DPNI_OPT_NO_MAC_FILTER(9), DPNI_OPT_HAS_POLICING(9), DPNI_OPT_SHARED_CONGESTION(9), DPNI_OPT_HAS_KEY_MASKING(9), DPNI_OPT_NO_FS(9), DPNI_OPT_SHARED_FS(9), struct dpni_pools_cfg(9), struct dpni_attr(9), DPNI_ERROR_EOFHE(9), DPNI_ERROR_FLE(9), DPNI_ERROR_FPE(9), DPNI_ERROR_PHE(9), DPNI_ERROR_L3CE(9), DPNI_ERROR_L4CE(9), enum dpni_error_action(9), struct dpni_error_cfg(9), DPNI_BUF_LAYOUT_OPT_TIMESTAMP(9), DPNI_BUF_LAYOUT_OPT_PARSER_RESULT(9), DPNI_BUF_LAYOUT_OPT_FRAME_STATUS(9), DPNI_BUF_LAYOUT_OPT_PRIVATE_DATA_SIZE(9), DPNI_BUF_LAYOUT_OPT_DATA_ALIGN(9), DPNI_BUF_LAYOUT_OPT_DATA_HEAD_ROOM(9), DPNI_BUF_LAYOUT_OPT_DATA_TAIL_ROOM(9), struct dpni_buffer_layout(9), enum dpni_queue_type(9), enum dpni_offload(9), struct dpni_link_cfg(9), struct dpni_link_state(9), enum dpni_dist_mode(9), enum dpni_fs_miss_action(9), struct dpni_fs_tbl_cfg(9), struct dpni_rx_tc_dist_cfg(9), DPNI_FS_MISS_DROP(9), struct dpni_rx_dist_cfg(9), struct dpni_qos_tbl_cfg(9), enum dpni_dest(9), struct dpni_queue(9), struct dpni_queue_id(9), enum dpni_congestion_unit(9), enum dpni_congestion_point(9), struct dpni_dest_cfg(9), DPNI_CONG_OPT_FLOW_CONTROL(9), struct dpni_congestion_notification_cfg(9), struct dpni_taildrop(9), struct dpni_rule_cfg(9), DPNI_FS_OPT_DISCARD(9), DPNI_FS_OPT_SET_FLC(9), DPNI_FS_OPT_SET_STASH_CONTROL(9), struct dpni_fs_action_cfg(9), struct dpni_tx_shaping_cfg(9), struct dpni_single_step_cfg(9)


okay that's the whole page, you ate that 🫢 source is ./drivers/net/ethernet/freesca... and it's dated October 2026, and yes it's still union dpni_statistics(9) β€” bye bestie, go count some frames πŸ’…βœ¨πŸŽ€

πŸ“¦ where this page comes from