ENUM NETDEV_PRIV_FLAGS(9)
π enum netdev_priv_flags(9) β the Kernel API Manual, bestie edition
okay so this is the enum netdev_priv_flags(9) page from the Kernel API Manual and honestly it's giving "backstage pass to the kernel's private business" energy. we're literally looking at &struct net_device priv_flags here. buckle up β¨
πΈ NAME πΈ
enum netdev_priv_flags β the &struct net_device priv_flags, aka the kernel's private little flag stash π
π¦ SYNOPSIS π¦
here's the whole enum, no edits, exactly as it lives:
enum netdev_priv_flags {
IFF_802_1Q_VLAN ,
IFF_EBRIDGE ,
IFF_BONDING ,
IFF_ISATAP ,
IFF_WAN_HDLC ,
IFF_XMIT_DST_RELEASE ,
IFF_DONT_BRIDGE ,
IFF_DISABLE_NETPOLL ,
IFF_MACVLAN_PORT ,
IFF_BRIDGE_PORT ,
IFF_OVS_DATAPATH ,
IFF_TX_SKB_SHARING ,
IFF_UNICAST_FLT ,
IFF_TEAM_PORT ,
IFF_SUPP_NOFCS ,
IFF_LIVE_ADDR_CHANGE ,
IFF_MACVLAN ,
IFF_XMIT_DST_RELEASE_PERM ,
IFF_L3MDEV_MASTER ,
IFF_NO_QUEUE ,
IFF_OPENVSWITCH ,
IFF_L3MDEV_SLAVE ,
IFF_TEAM ,
IFF_PHONY_HEADROOM ,
IFF_MACSEC ,
IFF_NO_RX_HANDLER ,
IFF_FAILOVER ,
IFF_FAILOVER_SLAVE ,
IFF_L3MDEV_RX_HANDLER ,
IFF_NO_ADDRCONF ,
IFF_TX_SKB_NO_LINEAR
};
π CONSTANTS π
every single one, bestie, with the tea on each π
IFF_802_1Q_VLANβ it's an 802.1Q VLAN device πIFF_EBRIDGEβ Ethernet bridging device, classicIFF_BONDINGβ this one's either a bonding master or a slave, it contains multitudesIFF_ISATAPβ ISATAP interface (RFC4214), yes the RFC is cited, we stay scholarly πIFF_WAN_HDLCβ WAN HDLC deviceIFF_XMIT_DST_RELEASEβ big permission energy:dev_hard_start_xmitis allowed to releaseskb->dstπ₯IFF_DONT_BRIDGEβ literally "disallow bridging this ether dev", the flag said no πIFF_DISABLE_NETPOLLβ disables netpoll at run-timeIFF_MACVLAN_PORTβ device is being used as a macvlan portIFF_BRIDGE_PORTβ device is being used as a bridge portIFF_OVS_DATAPATHβ device is used as an Open vSwitch datapath portIFF_TX_SKB_SHARINGβ the interface supports sharing skbs on transmit, generous iconIFF_UNICAST_FLTβ supports unicast filtering π¦IFF_TEAM_PORTβ device is used as a team portIFF_SUPP_NOFCSβ device supports sending custom FCS, fancyIFF_LIVE_ADDR_CHANGEβ device supports hardware address change when it's running, main character energy fr frIFF_MACVLANβ it's a Macvlan deviceIFF_XMIT_DST_RELEASE_PERMβIFF_XMIT_DST_RELEASEbut not taking into account underlying stacked devicesIFF_L3MDEV_MASTERβ device is an L3 master device πIFF_NO_QUEUEβ device can run without a qdisc attachedIFF_OPENVSWITCHβ device is an Open vSwitch masterIFF_L3MDEV_SLAVEβ device is enslaved to an L3 master deviceIFF_TEAMβ device is a team deviceIFF_PHONY_HEADROOMβ the headroom value is controlled by an external entity (i.e. the master device for bridged veth), yeah it's "phony", it said what it said πIFF_MACSECβ device is a MACsec deviceIFF_NO_RX_HANDLERβ device doesn't support therx_handlerhook, no hook no problemIFF_FAILOVERβ device is a failover master deviceIFF_FAILOVER_SLAVEβ device is the lower dev of a failover master deviceIFF_L3MDEV_RX_HANDLERβ only invoke the rx handler of the L3 master deviceIFF_NO_ADDRCONFβ prevent ipv6 addrconf πIFF_TX_SKB_NO_LINEARβ device/driver is capable of xmitting frames withskb_headlen(skb) == 0(data starts from frag0) β
π DESCRIPTION π
so these flags live in the struct net_device, and ngl they are only set internally by drivers and used in the kernel. that's the whole vibe.
these flags are invisible to userspace β which means (and this is the important part, don't skip it) the order of these flags can change during any kernel release π so do not go assuming positions, bestie, the layout is not stable.
and if you were thinking about extending this enum? don't. you should add bitfield booleans after eithernet_device::priv_flags(hotpath) or::threaded(slowpath) instead of extending these flags. periodt π
π§ SEE ALSO π§
Kernel file ./include/linux/netdevice.h β and the whole friend group:
struct gro_node(9)napi_is_scheduled(9)napi_schedule(9)napi_schedule_irqoff(9)napi_complete_done(9)napi_synchronize(9)napi_if_scheduled_mark_missed(9)struct net_device(9)netdev_priv(9)netdev_from_priv(9)netif_napi_add(9)netif_napi_add_config(9)netif_napi_add_tx(9)__netif_napi_del(9)netif_napi_del(9)netif_start_queue(9)netif_wake_queue(9)netif_stop_queue(9)netif_queue_stopped(9)netdev_queue_set_dql_min_limit(9)netdev_txq_bql_enqueue_prefetchw(9)netdev_txq_bql_complete_prefetchw(9)netdev_tx_sent_queue(9)netdev_sent_queue(9)netdev_tx_completed_queue(9)netdev_completed_queue(9)netdev_tx_reset_subqueue(9)netdev_reset_queue(9)netdev_cap_txqueue(9)netif_running(9)netif_start_subqueue(9)netif_stop_subqueue(9)__netif_subqueue_stopped(9)netif_subqueue_stopped(9)netif_wake_subqueue(9)netif_attr_test_mask(9)netif_attr_test_online(9)netif_attrmask_next(9)netif_attrmask_next_and(9)netif_is_multiqueue(9)dev_hold(9)dev_put(9)linkwatch_sync_dev(9)netif_carrier_ok(9)netif_dormant_on(9)netif_dormant_off(9)netif_dormant(9)netif_testing_on(9)netif_testing_off(9)netif_testing(9)netif_oper_up(9)netif_device_present(9)netif_tx_lock(9)__dev_uc_sync(9)__dev_uc_unsync(9)__dev_mc_sync(9)__dev_mc_unsync(9)
π«Ά SIGN-OFF π«Ά
that's the whole page, bestie β brought to you by the source at ./include/linux, dated October 2026, and yeah this is still enum netdev_priv_flags(9) in the Kernel API Manual. go forth and do not touch the flags πβ¨
π¦ 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