STRUCT QLINK_STA_STATS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

okay so this is straight out of the Kernel API Manual (section 9, kernel API, iykyk) and bestie… it's giving wireless driver tea. it's a struct that carries the whole stats card of a STA (a station, aka a client device) in the Quantenna/qtnfmac qlink world. let's get into it πŸŽ€


🌸 NAME 🌸

struct qlink_sta_stats β€” literally the data for QTN_TLV_ID_STA_STATS. that's the whole name, that's the whole vibe ✨


✨ SYNOPSIS ✨

struct qlink_sta_stats {
    __le64 rx_bytes;
    __le64 tx_bytes;
    __le64 rx_beacon;
    __le64 rx_duration;
    __le64 t_offset;
    __le32 connected_time;
    __le32 inactive_time;
    __le32 rx_packets;
    __le32 tx_packets;
    __le32 tx_retries;
    __le32 tx_failed;
    __le32 rx_dropped_misc;
    __le32 beacon_loss_count;
    __le32 expected_throughput;
    struct qlink_sta_info_state sta_flags;
    struct qlink_sta_info_rate txrate;
    struct qlink_sta_info_rate rxrate;
    __le16 llid;
    __le16 plid;
    u8 local_pm;
    u8 peer_pm;
    u8 nonpeer_pm;
    u8 rx_beacon_signal_avg;
    u8 plink_state;
    u8 signal;
    u8 signal_avg;
    u8 rsvd[1];
};

look at all those little fields, they're literally a whole personality test for your wireless link πŸ¦‹


πŸŽ€ Members πŸŽ€

no cap, the page just has the heading and then moves on 😭 the real content is right below, keep scrolling bestie πŸ’–


🫢 Description 🫢

so this struct carries statistics of a STA. that's the job. that's the assignment. and it ate πŸ’…

but here's the important caveat you need to internalise: not all fields may be filled with valid values. which fields are real and which are just vibes needs to be signalled separately β€” valid fields should be indicated as such using a bitmap of enum qlink_sta_info. and where does that bitmap live? carried separately in a payload of QTN_TLV_ID_BITMAP. so don't go reading raw numbers and assuming they mean something, bestie, check the bitmap first πŸ™ˆ


πŸ”₯ SEE ALSO πŸ”₯

okay this is a huge friend group, but every single one of them is invited, so here's the whole roster πŸ’œ

  • kernel file ./drivers/net/wireless/quantenna/qtnfmac/qlink.h
  • enum qlink_msg_type(9)
  • struct qlink_msg_header(9)
  • enum qlink_hw_capab(9)
  • enum qlink_driver_capab(9)
  • struct qlink_intf_info(9)
  • struct qlink_channel(9)
  • struct qlink_chandef(9)
  • struct qlink_sta_info_state(9)
  • enum qlink_sr_ctrl_flags(9)
  • struct qlink_sr_params(9)
  • enum qlink_cmd_type(9)
  • struct qlink_cmd(9)
  • struct qlink_cmd_init_fw(9)
  • struct qlink_cmd_manage_intf(9)
  • struct qlink_cmd_mgmt_frame_register(9)
  • struct qlink_cmd_frame_tx(9)
  • struct qlink_cmd_get_sta_info(9)
  • struct qlink_cmd_add_key(9)
  • struct qlink_cmd_set_def_key(9)
  • struct qlink_cmd_set_def_mgmt_key(9)
  • struct qlink_cmd_change_sta(9)
  • struct qlink_cmd_del_sta(9)
  • struct qlink_cmd_connect(9)
  • struct qlink_cmd_external_auth(9)
  • struct qlink_cmd_disconnect(9)
  • struct qlink_cmd_updown(9)
  • enum qlink_band(9)
  • struct qlink_cmd_band_info_get(9)
  • struct qlink_cmd_get_chan_stats(9)
  • enum qlink_reg_initiator(9)
  • enum qlink_user_reg_hint_type(9)
  • struct qlink_cmd_reg_notify(9)
  • enum qlink_chan_sw_flags(9)
  • struct qlink_cmd_chan_switch(9)
  • enum qlink_hidden_ssid(9)
  • struct qlink_cmd_start_ap(9)
  • struct qlink_cmd_start_cac(9)
  • struct qlink_acl_data(9)
  • enum qlink_pm_mode(9)
  • struct qlink_cmd_pm_set(9)
  • enum qlink_txpwr_op(9)
  • struct qlink_cmd_txpwr(9)
  • enum qlink_wowlan_trigger(9)
  • struct qlink_cmd_wowlan_set(9)
  • struct qlink_cmd_ndev_event(9)
  • struct qlink_cmd_ndev_changeupper(9)
  • enum qlink_scan_flags(9)
  • struct qlink_cmd_scan(9)
  • struct qlink_cmd_update_owe(9)
  • struct qlink_resp(9)
  • struct qlink_resp_init_fw(9)
  • enum qlink_dfs_regions(9)
  • struct qlink_resp_get_mac_info(9)
  • struct qlink_resp_get_hw_info(9)
  • struct qlink_resp_manage_intf(9)
  • struct qlink_resp_get_sta_info(9)
  • struct qlink_resp_band_info_get(9)
  • struct qlink_resp_get_chan_stats(9)
  • struct qlink_resp_channel_get(9)
  • struct qlink_resp_txpwr(9)
  • struct qlink_event(9)
  • struct qlink_event_sta_assoc(9)
  • struct qlink_event_sta_deauth(9)
  • struct qlink_event_bss_join(9)
  • struct qlink_event_bss_leave(9)
  • struct qlink_event_freq_change(9)
  • struct qlink_event_rxmgmt(9)
  • struct qlink_event_scan_result(9)
  • enum qlink_scan_complete_flags(9)
  • struct qlink_event_scan_complete(9)
  • struct qlink_event_radar(9)
  • struct qlink_event_external_auth(9)
  • struct qlink_event_mic_failure(9)
  • struct qlink_event_update_owe(9)
  • enum qlink_tlv_id(9)
  • enum qlink_reg_rule_flags(9)
  • struct qlink_tlv_reg_rule(9)
  • struct qlink_tlv_channel(9)
  • struct qlink_tlv_chandef(9)
  • struct qlink_tlv_ie_set(9)
  • struct qlink_tlv_ext_ie(9)
  • struct qlink_tlv_iftype_data(9)
  • enum qlink_chan_stat(9)
  • struct qlink_chan_stats(9)
  • enum qlink_sta_info(9)
  • struct qlink_sta_info_rate(9)
  • struct qlink_random_mac_addr(9)
  • struct qlink_wowlan_capab_data(9)
  • struct qlink_wowlan_support(9)

like I said. huge friend group. every one of them iconic, every one of them linked πŸ‘‘


okay that's the whole page, bestie β€” sourced from ./drivers/net/wireless/quanten... (that's how it's written in the footer, not me being lazy, I promise 😭) and dated October 2026, closing out as struct qlink_sta_stats(9). go forth and read those STA stats responsibly πŸ’…βœ¨πŸŒΈ

πŸ“¦ where this page comes from