ice_fix_features(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ ice_fix_features ✨

okay so this is ice_fix_features(9) from the Kernel API Manual, section 9, and it's basically the vibe-check bouncer for netdev feature flags πŸ’…


🌸 NAME 🌸

ice_fix_features β€” fix the netdev features flags based on device limitations


πŸŽ€ SYNOPSIS πŸŽ€

netdev_features_t ice_fix_features (struct net_device *netdev ,
       netdev_features_t features );

πŸ¦‹ ARGUMENTS πŸ¦‹

  • netdev β€” ptr to the netdev that flags are being fixed on
  • features β€” features that need to be checked and possibly fixed

πŸ’– DESCRIPTION πŸ’–

So the whole point, bestie: this callback is where you make sure any fixups are made to features. That's it. That's the assignment. ✨

And the reason it's a callback at all is lowkey genius β€” it means the driver does not have to keep checking for unsupported configurations all over the place, because that's the responsibility of this callback. One spot. One job. main character energy fr fr.


πŸ‘‘ Single VLAN Mode (SVM) Supported Features

  • NETIF_F_HW_VLAN_CTAG_FILTER
  • NETIF_F_HW_VLAN_CTAG_RX
  • NETIF_F_HW_VLAN_CTAG_TX

πŸ”₯ Double VLAN Mode (DVM) Supported Features

  • NETIF_F_HW_VLAN_CTAG_FILTER
  • NETIF_F_HW_VLAN_CTAG_RX
  • NETIF_F_HW_VLAN_CTAG_TX
  • NETIF_F_HW_VLAN_STAG_FILTER
  • NETIF_HW_VLAN_STAG_RX
  • NETIF_HW_VLAN_STAG_TX

🚨 Features that need fixing

not me gatekeeping VLAN offloads but here we are 😭

CTAG + STAG stripping and/or insertion cannot be enabled at the same time. They are mutually exclusive, periodt β€” because the VSI context literally cannot support multiple VLAN ethertypes simultaneously for stripping and/or insertion. If this isn't done, then default to clearing the requested STAG offload settings.

All supported filtering has to be enabled or disabled together. For example, in DVM, CTAG and STAG filtering have to be enabled and disabled together. If this is not done, then default to VLAN filtering disabled. These are mutually exclusive as there is currently no way to enable/disable VLAN filtering based on VLAN ethertype when using VLAN prune rules. πŸ’€


🌈 SEE ALSO 🌈

The kernel file this lives in:

  • ./drivers/net/ethernet/intel/ice/ice_main.c

And the whole ice family, alphabetically-adjacent besties edition 🫢:


okay that's literally everybody πŸ§šπŸ’œ that entire list lives under ./drivers/net/ethernet/intel/ice, and this page is brought to you by the October 2026 era of the docs β€” that's the source and the date, bestie, so now you know πŸŽ€βœ¨ slay and good luck with your feature flags πŸ«ΆπŸ’–

πŸ“¦ where this page comes from