STRUCT NFP_ETH_TABLE(9)
๐ NAME ๐
struct nfp_eth_table โ the ETH table info, bestie. That's it, that's the whole vibe โจ
๐ธ SYNOPSIS ๐ธ
okay so picture it: a big table, and inside it, more tables. it's giving nested-struct main character energy ๐
struct nfp_eth_table {
unsigned int count;
unsigned int max_index;
struct nfp_eth_table_port {
unsigned int eth_index;
unsigned int index;
unsigned int nbi;
unsigned int base;
unsigned int lanes;
unsigned int speed;
unsigned int interface;
enum nfp_eth_media media;
enum nfp_eth_fec fec;
enum nfp_eth_fec act_fec;
enum nfp_eth_aneg aneg;
u8 mac_addr[ETH_ALEN];
u8 label_port;
u8 label_subport;
bool enabled;
bool tx_enabled;
bool rx_enabled;
bool supp_aneg;
bool rx_pause;
bool tx_pause;
bool override_changed;
u8 port_type;
unsigned int port_lanes;
bool is_split;
unsigned int fec_modes_supported;
u64 link_modes_supp[2];
u64 link_modes_ad[2];
} ports[];
};
like, that's the whole thing. the ports[] flex array at the end? iconic. it's literally the main event ๐
๐ฆ Members ๐ฆ
okay bestie, field-by-field, let's go โ and yes you have to read all of them, no skipping ๐
countโ the number of table entries. how many we got.max_indexโ the max of theindexfields across all ports. the biggestindexin the room, lowkey.portsโ the table of ports. the actual lineup, periodt.
and now the port fields, one by one:
ports.eth_indexโ port index according to legacy ethX numbering. retro vibes fr.ports.indexโ chip-wide first channel index.ports.nbiโ NBI index.ports.baseโ first channel index (within NBI).ports.lanesโ number of channels.ports.speedโ interface speed (in Mbps).ports.interfaceโ the interface (module) plugged in.ports.mediaโ media type of the interface.ports.fecโ forward error correction mode.ports.act_fecโ active forward error correction mode. (the one actually doing something โจ)ports.anegโ auto negotiation mode.ports.mac_addrโ interface MAC address.ports.label_portโ port id.ports.label_subportโ id of interface within port (for split ports).ports.enabledโ is enabled? ๐ports.tx_enabledโ is TX enabled?ports.rx_enabledโ is RX enabled?ports.rx_pauseโ Switch of RX pause frame.ports.tx_pauseโ Switch of Tx pause frame.ports.override_changedโ is media reconfig pending? like, are we waiting on a glow-up ๐ports.port_typeโ one ofPORT_*defines for ethtool.ports.port_lanesโ total number of lanes on the port (sum of lanes of all subports). math queen ๐งฎports.is_splitโ is interface part of a split port.ports.fec_modes_supportedโ bitmap of FEC modes supported.ports.link_modes_suppโ bitmap of link modes supported.ports.link_modes_adโ bitmap of link modes advertised.
ngl, supp_aneg is chillin' in the struct up there but it's not in the Members list โ that's just how the page is, don't come for me ๐ซถ
๐ SEE ALSO ๐
- Kernel file
./drivers/net/ethernet/netronome/nfp/nfpcore/nfp_nsp.h struct nfp_nsp_identify(9)
go read those too, iykyk ๐ฅ
okay that's the whole page, bestie โ Kernel API Manual realness, straight from ./drivers/net/ethernet/netrono... (yes it's truncated, that's the source line as given, don't @ me ๐ญ) dated October 2026. mwah, slay, go forth and read your structs ๐๐โญ
๐ฆ 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