hw_set_promiscuous(9)
π hw_set_promiscuous β enable or disable promiscuous receiving
okay so bestie, this one's straight out of the Kernel API Manual, section 9, and it's genuinely one of the simplest little functions you'll ever meet π«Ά it's just a switch-flip for promiscuous mode, no cap.
β¨ SYNOPSIS β¨
void hw_set_promiscuous (struct ksz_hw *hw , u8 prom );
likeβ¦ that's it. that's the whole signature. icon behavior π
π ARGUMENTS π
hwβ the hardware instance. your actual NIC-ish thing. the main character of this story πpromβ the on/off switch for the promiscuous feature. flip it one way, feature on; flip it the other, feature off. that's the whole vibe.
πΈ DESCRIPTION πΈ
This routine enables/disables the hardware to accept all packets β¨
so yeah β it's giving "let the hardware grab everything", not just the stuff addressed to it. you wanna turn that on? pass the right prom. you wanna turn it off? same function, different prom. one routine, both directions, extremely efficient of it tbh π¦
heads up: promiscuous receiving means the hardware accepts all packets β that's literally what the page says, and it's the entire point. not me being dramatic, that's just the feature π₯
π§ SEE ALSO π§
first up, the actual kernel file this whole situation lives in, iykyk:
./drivers/net/ethernet/micrel/ksz884x.c
and now the extended fam β every single one of these is sibling-coded with our girl π
the structs (the whole struct gang):
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)
and the functions (yes, all of them, I'm not skipping a single one π):
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),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),netdev_ioctl(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, that's a whole friend group. slay π
and that's the page, bestie π this one shipped from ./drivers/net/ethernet/micrel with an October 2026 date stamp, so go forth and toggle promiscuous mode responsibly β¨π
π¦ 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