netdev_ioctl(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… netdev_ioctl(9) πŸ’…

okay so bestie, welcome to the kernel API manual, section 9 β€” yes we're in the networking driver girlies corner of <pink>Kernel API Manual</pink> and honestly? iconic. this one's short and sweet, so hydrate and let's go 🫢


✨ NAME ✨

netdev_ioctl β€” I/O control processing 🌸

the whole vibe: it handles ioctl stuff. that's the gig. periodt.


πŸŽ€ SYNOPSIS πŸŽ€

int netdev_ioctl (struct net_device *dev , struct ifreq *ifr , int cmd
);

look at her. three args, returns an int, no notes πŸ’…


πŸ’– ARGUMENTS πŸ’–

  • dev β€” the network device, aka the main character of this whole situation πŸ¦‹
  • ifr β€” the interface request structure. yes it's called ifr, yes you'll type it a million times, iykyk 😭
  • cmd β€” the I/O control code, aka the little number that tells everyone what we're actually doing here ⭐

🌈 DESCRIPTION 🌈

so this function is literally the function you use to process I/O control calls. that's it, that's the job πŸŽ€

and here's the part you actually need for the vibe check: return 0 to indicate success ✨

fr fr, 0 means slay, anything else means something went sideways. do not forget this, i'm begging πŸ™ˆ

πŸ‘‘ SEE ALSO πŸ‘‘

bestie. sit down. the SEE ALSO section on this page is not a normal SEE ALSO section. it's giving extended cinematic universe, it's giving the whole friend group showed up to the party, it's giving every single symbol in this driver 🌈

so instead of me trying to make 150 bullet points cute (i would simply pass away 😭), here's the entire list preserved verbatim so nothing gets lost β€” and it all lives in the kernel file ./drivers/net/ethernet/micrel/ksz884x.c πŸ’œ

       Kernel file ./drivers/net/ethernet/micrel/ksz884x.c struct
       ksz_hw_desc(9), struct ksz_sw_desc(9), struct ksz_dma_buf(9), struct
       ksz_desc(9), struct ksz_desc_info(9), struct ksz_mac_table(9), struct
       ksz_vlan_table(9), struct ksz_port_mib(9), struct ksz_port_cfg(9),
       struct ksz_switch(9), struct ksz_port_info(9), struct ksz_hw(9), struct
       ksz_port(9), struct ksz_timer_info(9), struct ksz_shared_mem(9), struct
       ksz_counter_info(9), struct dev_info(9), struct dev_priv(9),
       hw_turn_on_intr(9), hw_block_intr(9), sw_r_table(9), sw_w_table_64(9),
       sw_w_sta_mac_table(9), sw_r_vlan_table(9), port_r_mib_cnt(9),
       port_r_mib_pkt(9), port_r_cnt(9), port_init_cnt(9), port_cfg(9),
       port_r8(9), port_r16(9), port_w16(9), sw_chk(9), sw_cfg(9),
       sw_cfg_broad_storm(9), sw_get_broad_storm(9), sw_dis_broad_storm(9),
       sw_ena_broad_storm(9), sw_init_broad_storm(9), hw_cfg_broad_storm(9),
       sw_dis_prio_rate(9), sw_init_prio_rate(9), sw_dis_diffserv(9),
       sw_dis_802_1p(9), sw_cfg_replace_null_vid(9), sw_cfg_replace_vid(9),
       sw_cfg_port_based(9), sw_dis_multi_queue(9), sw_init_prio(9),
       port_get_def_vid(9), sw_init_vlan(9), sw_cfg_port_base_vlan(9),
       sw_set_addr(9), sw_set_global_ctrl(9), port_set_stp_state(9),
       sw_clr_sta_mac_table(9), sw_init_stp(9), sw_block_addr(9), hw_r_phy(9),
       hw_w_phy(9), eeprom_read(9), eeprom_write(9), port_get_link_speed(9),
       port_set_link_speed(9), port_force_link_speed(9),
       hw_chk_wol_pme_status(9), hw_clr_wol_pme_status(9), hw_cfg_wol_pme(9),
       hw_cfg_wol(9), hw_set_wol_frame(9), hw_add_wol_arp(9),
       hw_add_wol_bcast(9), hw_add_wol_mcast(9), hw_add_wol_ucast(9),
       hw_enable_wol(9), hw_init(9), hw_reset(9), hw_setup(9),
       hw_setup_intr(9), hw_set_desc_base(9), hw_start_rx(9), hw_stop_rx(9),
       hw_start_tx(9), hw_stop_tx(9), hw_disable(9), hw_enable(9),
       hw_alloc_pkt(9), hw_send_pkt(9), hw_set_addr(9), hw_read_addr(9),
       hw_clr_multicast(9), hw_set_grp_addr(9), hw_set_multicast(9),
       hw_set_promiscuous(9), sw_enable(9), sw_setup(9), ksz_start_timer(9),
       ksz_stop_timer(9), ksz_alloc_soft_desc(9), ksz_alloc_desc(9),
       free_dma_buf(9), ksz_init_rx_buffers(9), ksz_alloc_mem(9),
       ksz_free_desc(9), ksz_free_buffers(9), ksz_free_mem(9), send_packet(9),
       transmit_cleanup(9), tx_done(9), netdev_tx(9), netdev_tx_timeout(9),
       netdev_intr(9), netdev_close(9), netdev_open(9),
       netdev_query_statistics(9), netdev_set_mac_address(9),
       netdev_set_rx_mode(9), mdio_read(9), mdio_write(9),
       netdev_get_link_ksettings(9), netdev_set_link_ksettings(9),
       netdev_nway_reset(9), netdev_get_link(9), netdev_get_drvinfo(9),
       netdev_get_regs_len(9), netdev_get_regs(9), netdev_get_wol(9),
       netdev_set_wol(9), netdev_get_msglevel(9), netdev_set_msglevel(9),
       netdev_get_eeprom_len(9), netdev_get_eeprom(9), netdev_set_eeprom(9),
       netdev_get_pauseparam(9), netdev_set_pauseparam(9),
       netdev_get_ringparam(9), netdev_get_strings(9),
       netdev_get_sset_count(9), netdev_get_ethtool_stats(9),
       netdev_set_features(9), dev_monitor(9), netdev_init(9)

like. hw_add_wol_arp(9), hw_add_wol_bcast(9), hw_add_wol_mcast(9), hw_add_wol_ucast(9) β€” the wol squad ate tbh πŸ”₯ and netdev_set_features(9) is right there at the end being all mysterious. obsessed πŸ’–


that's the whole page, bestie β€” no hidden lore, no extra flags, no drama. this manual page came from ./drivers/net/ethernet/micrel and it's dated October 2026, so go forth and process those I/O control calls responsibly πŸŒΈβœ¨πŸ’…

πŸ“¦ where this page comes from