STRUCT ETHTOOL_MMSV_OPS(9)
π struct ethtool_mmsv_ops(9) β like, the Kernel API Manual, but make it make sense β¨
okay so bestie, gather round, because today we're talking about struct ethtool_mmsv_ops from the kernel API manual (section 9, iykyk) β it's Operations for MAC Merge Software Verification π and honestly? iconic little struct. no cap.
πΈ SYNOPSIS πΈ
here's the whole vibe, literally character for character, don't @ me:
struct ethtool_mmsv_ops {
void (*configure_tx)(struct ethtool_mmsv *mmsv, bool tx_active);
void (*configure_pmac)(struct ethtool_mmsv *mmsv, bool pmac_enabled);
void (*send_mpacket)(struct ethtool_mmsv *mmsv, enum ethtool_mpacket mpacket);
};
three function pointers. three. it's giving minimal, it's giving main character energy, we stan π«Ά
π Members π
okay so these are the little callbacks you (yes YOU, driver bestie) get to fill in. let's do a vibe check on each one π
configure_txβ Driver callback for the event where the preemptible TX becomes active or inactive. β¨ and like, important detail here: preemptible traffic classes must be committed to hardware only while preemptible TX is active β that's a hard rule, not a suggestion, fr fr. so don't be out here committing classes while TX is off, that's not the moment πconfigure_pmacβ Driver callback for the event where the pMAC state changes as a result of an administrative setting (ethtool) or a call toethtool_mmsv_link_state_handle. so basically: somebody poked the pMAC state, either through ethtool or through that function call, and your driver gets the heads-up. slay πsend_mpacketβ Driver-provided method for sending a Verify or a Response mPacket. π¦ that's it, that's the job β you send the mPacket, the mPacket gets sent, periodt.
ngl these are callbacks, so if you're the driver author, you're the one implementing them. the struct is just sitting there holding space for you π
π¦ SEE ALSO π¦
this list is LONG bestie, like a group chat with 40 unread messages, but every single one matters so here we go, no skipping, i promised π
- Kernel file
./include/linux/ethtool.h enum ethtool_phys_id_state(9)struct kernel_ethtool_ringparam(9)enum ethtool_supported_ring_param(9)ethtool_rxfh_indir_default(9)struct ethtool_rxfh_context(9)ethtool_link_ksettings_zero_link_mode(9)ethtool_link_ksettings_add_link_mode(9)ethtool_link_ksettings_del_link_mode(9)ethtool_link_ksettings_test_link_mode(9)ethtool_intersect_link_masks(9)struct ethtool_phy_stats(9)struct ethtool_pause_stats(9)struct ethtool_fec_hist_range(9)struct ethtool_fec_stats(9)struct ethtool_rmon_hist_range(9)struct ethtool_rmon_stats(9)struct ethtool_ts_stats(9)struct ethtool_module_eeprom(9)struct ethtool_module_power_mode_params(9)struct ethtool_mm_state(9)struct ethtool_mm_cfg(9)struct ethtool_mm_stats(9)struct ethtool_mmsv(9)struct ethtool_rxfh_param(9)struct ethtool_rxfh_fields(9)struct kernel_ethtool_ts_info(9)struct ethtool_ops(9)struct ethtool_netdev_state(9)struct ethtool_phy_ops(9)ethtool_set_ethtool_phy_ops(9)ethtool_params_from_link_mode(9)ethtool_get_phc_vclocks(9)ethtool_mm_frag_size_add_to_min(9)ethtool_mm_frag_size_min_to_add(9)ethtool_get_ts_info_by_layer(9)ethtool_sprintf(9)ethtool_puts(9)ethtool_cpy(9)
like?? that's a whole ecosystem π but that's how you know ethtool is thriving, okay? obsessed. π₯
and that's the whole page bestie, you ate it up π
cute little sign-off: this one lives in ./include/linux and the page is dated October 2026, and it's struct ethtool_mmsv_ops(9) all the way down. go forth and verify those MAC merges, mwah ππ
π¦ 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