idpf_tx_read_tstamp(9)
π idpf_tx_read_tstamp(9) β from the Kernel API Manual, bestie π
okay so picture this: it's the Intel idpf driver, it's in the kernel API manual, and there's exactly one little function whose whole job is scheduling a work item to go fetch the Tx timestamp value. That's it. That's the whole gig. Let's get into it β¨
πΈ NAME πΈ
idpf_tx_read_tstamp β schedule a work to read Tx timestamp value ππ«Ά
Like, it doesn't even read the timestamp itself. It schedules a work to read the Tx timestamp value. Delegation icon. Main character energy is outsourcing.
β¨ SYNOPSIS β¨
void idpf_tx_read_tstamp(struct idpf_tx_queue *txq, struct sk_buff *skb);
Returns void, meaning it gives you absolutely nothing back and expects you to be cool with that π no return value, no drama, no notes.
π¦ ARGUMENTS π¦
txqβ the queue to read the timestamp from. This is yourstruct idpf_tx_queue *, the actual transmitter queue in question πskbβ the socket buffer that provides the Tx timestamp value. This is yourstruct sk_buff *, the packet's little luggage tag π
Both pointers, both required, no defaults, no shortcuts. Slay.
π DESCRIPTION π
So here's the vibe: this function schedules a work to read the Tx timestamp value, and that value is generated once the packet is transmitted πβ¨
Read that again, bestie, because the ordering is the whole point β the timestamp literally does not exist yet at the moment you'd be tempted to grab it. The packet has to actually go out the door first. So instead of standing there refreshing the page like a maniac, idpf_tx_read_tstamp hands the whole "go get it later" job off to a work item. Lowkey the most emotionally mature function in the file π«Ά
ngl, there's no return value here, so don't go checking for an error code that will never arrive. It's void. It said what it said π
π SEE ALSO π
First up, the actual source, all pretty in its natural habitat:
Kernel file ./drivers/net/ethernet/intel/idpf/idpf_txrx.c
And now the friend group. Every single one of these, no cap, in order:
idpf_chk_linearize(9), idpf_tx_timeout(9), idpf_tx_buf_rel_all(9),
idpf_tx_desc_rel(9), idpf_compl_desc_rel(9), idpf_tx_desc_rel_all(9),
idpf_tx_buf_alloc_all(9), idpf_tx_desc_alloc(9),
idpf_compl_desc_alloc(9), idpf_tx_desc_alloc_all(9),
idpf_rx_page_rel(9), idpf_rx_hdr_buf_rel_all(9),
idpf_rx_buf_rel_bufq(9), idpf_rx_buf_rel_all(9), idpf_rx_desc_rel(9),
idpf_rx_desc_rel_bufq(9), idpf_rx_desc_rel_all(9),
idpf_rx_buf_hw_update(9), idpf_rx_hdr_buf_alloc_all(9),
idpf_post_buf_refill(9), idpf_rx_post_buf_desc(9),
idpf_rx_post_init_bufs(9), idpf_rx_buf_alloc_singleq(9),
idpf_rx_bufs_init_singleq(9), idpf_rx_buf_alloc_all(9),
idpf_rx_bufs_init(9), idpf_rx_bufs_init_all(9), idpf_rx_desc_alloc(9),
idpf_bufq_desc_alloc(9), idpf_rx_desc_alloc_all(9),
idpf_vector_to_queue_set(9), idpf_qp_switch(9), idpf_txq_group_rel(9),
idpf_rxq_sw_queue_rel(9), idpf_rxq_group_rel(9),
idpf_vport_queue_grp_rel_all(9), idpf_vport_queues_rel(9),
idpf_vport_init_fast_path_txqs(9), idpf_vport_init_num_qs(9),
idpf_vport_calc_num_q_desc(9), idpf_vport_calc_total_qs(9),
idpf_vport_calc_num_q_groups(9), idpf_vport_calc_numq_per_grp(9),
idpf_rxq_set_descids(9), idpf_txq_group_alloc(9),
idpf_rxq_group_alloc(9), idpf_vport_queue_grp_alloc_all(9),
idpf_vport_queues_alloc(9), idpf_tx_splitq_clean(9),
idpf_tx_clean_bufs(9), idpf_tx_handle_rs_completion(9),
idpf_tx_clean_complq(9), idpf_wait_for_sw_marker_completion(9),
idpf_tx_splitq_build_ctb(9), idpf_tx_splitq_build_flow_desc(9),
idpf_txq_has_room(9), idpf_tx_maybe_stop_splitq(9),
idpf_tx_buf_hw_update(9), idpf_tx_res_count_required(9),
idpf_tx_splitq_bump_ntu(9), idpf_tx_get_free_buf_id(9),
idpf_tx_splitq_pkt_err_unmap(9), idpf_tx_splitq_map(9), idpf_tso(9),
idpf_tx_splitq_get_ctx_desc(9), idpf_tx_drop_skb(9), idpf_tx_tstamp(9),
idpf_tx_set_tstamp_desc(9), idpf_tx_splitq_need_re(9),
idpf_tx_splitq_frame(9), idpf_tx_start(9), idpf_rx_hash(9),
idpf_rx_csum(9), idpf_rx_splitq_extract_csum_bits(9), idpf_rx_rsc(9),
idpf_rx_hwtstamp(9), __idpf_rx_process_skb_fields(9),
idpf_rx_hsplit_wa(9), idpf_rx_splitq_test_staterr(9),
idpf_rx_splitq_is_eop(9), idpf_rx_splitq_clean(9),
idpf_rx_update_bufq_desc(9), idpf_rx_clean_refillq(9),
idpf_rx_clean_refillq_all(9), idpf_vport_intr_clean_queues(9),
idpf_vport_intr_napi_del_all(9), idpf_vport_intr_napi_dis_all(9),
idpf_vport_intr_rel(9), idpf_vport_intr_rel_irq(9),
idpf_vport_intr_dis_irq_all(9), idpf_vport_intr_buildreg_itr(9),
idpf_update_dim_sample(9), idpf_net_dim(9),
idpf_vport_intr_update_itr_ena_irq(9), idpf_vport_intr_req_irq(9),
idpf_vport_intr_write_itr(9), idpf_vport_intr_ena_irq_all(9),
idpf_vport_intr_dis_dim_all(9), idpf_vport_intr_deinit(9),
idpf_tx_dim_work(9), idpf_rx_dim_work(9), idpf_init_dim(9),
idpf_vport_intr_napi_ena_all(9), idpf_tx_splitq_clean_all(9),
idpf_rx_splitq_clean_all(9), idpf_vport_splitq_napi_poll(9),
idpf_vport_intr_map_vector_to_qs(9), idpf_vport_intr_init_vec_idx(9),
idpf_vport_intr_napi_add_all(9), idpf_vport_intr_alloc(9),
idpf_vport_intr_init(9), idpf_config_rss(9), idpf_fill_dflt_rss_lut(9),
idpf_init_rss_lut(9), idpf_deinit_rss_lut(9)
That's the whole squad, iykyk π And if you actually read all of them: obsessed, you ate, no crumbs left π
and that's the page!! π
source and version live at ./drivers/net/ethernet/intel/idpf, dated October 2026 β stamp it, timestamp it, whatever, it's been scheduled ππ
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms