STRUCT PRUETH(9)
π struct prueth(9) β the kernel API manual, bestie edition π
Okay so this page is from the struct prueth(9) manual, and it's literally the whole glow-up tour of struct prueth β the PRUeth structure. Yes, that's the NAME, and yes, it's an icon π
β¨ NAME β¨
struct prueth β the PRUeth structure. That's it, that's the whole vibe. Main character energy for the TI ICSSG Ethernet driver π¦
πΈ SYNOPSIS πΈ
Bestie, here's the whole struct, character for character. Don't touch anything, just look at it respectfully:
struct prueth {
struct device *dev;
struct pruss *pruss;
struct rproc *pru[PRUSS_NUM_PRUS];
struct rproc *rtu[PRUSS_NUM_PRUS];
struct rproc *txpru[PRUSS_NUM_PRUS];
struct pruss_mem_region shram;
struct gen_pool *sram_pool;
struct pruss_mem_region msmcram;
struct device_node *eth_node[PRUETH_NUM_MACS];
struct prueth_emac *emac[PRUETH_NUM_MACS];
struct net_device *registered_netdevs[PRUETH_NUM_MACS];
struct regmap *miig_rt;
struct regmap *mii_rt;
struct regmap *pa_stats;
enum pruss_pru_id pru_id[PRUSS_NUM_PRUS];
struct platform_device *pdev;
struct prueth_pdata pdata;
u8 icssg_hwcmdseq;
int emacs_initialized;
struct icss_iep *iep0;
struct icss_iep *iep1;
struct prueth_vlan_tbl *vlan_tbl;
struct net_device *hw_bridge_dev;
struct net_device *hsr_dev;
enum hsr_version hsr_prp_version;
u8 br_members;
u8 hsr_members;
struct notifier_block prueth_netdevice_nb;
struct notifier_block prueth_switchdev_nb;
struct notifier_block prueth_switchdev_bl_nb;
bool is_switch_mode;
bool is_hsr_offload_mode;
bool is_switchmode_supported;
unsigned char switch_id[MAX_PHYS_ITEM_ID_LEN];
int default_vlan;
spinlock_t vtbl_lock;
spinlock_t stats_lock;
struct icssg_firmwares icssg_emac_firmwares[PRUETH_NUM_MACS];
struct icssg_firmwares icssg_switch_firmwares[PRUETH_NUM_MACS];
struct icssg_firmwares icssg_hsr_firmwares[PRUETH_NUM_MACS];
struct icssg_firmwares icssg_prp_firmwares[PRUETH_NUM_MACS];
};
That's 40-ish fields of pure slay. Let's go through every single one π
π Members π
Every field, one by one. No skipping, no cap, we're doing the full tour:
devβ the device. Yeah, that one.prussβ the pruss handle.pruβ rproc instances of PRUs.rtuβ rproc instances of RTUs.txpruβ rproc instances of TX_PRUs. (Yes bestie, TX_PRUs are their own thing, don't @ me.)shramβ the PRUSS shared RAM region.sram_poolβ the MSMC RAM pool for buffers.msmcramβ the MSMC RAM region.eth_nodeβ DT node for the port.emacβ the private EMAC data structure. It's giving private. πregistered_netdevsβ list of registered netdevs.miig_rtβ regmap to themii_g_rtblock.mii_rtβ regmap to themii_rtblock.pa_statsβ regmap to thepa_statsblock.pru_idβ ID for each of the PRUs.pdevβ pointer to the ICSSG platform device.pdataβ pointer to platform data for the ICSSG driver.icssg_hwcmdseqβ seq counter or HWQ messages. (That's what it says, fr fr.)emacs_initializedβ num of EMACs/ext ports that are up/running. Count 'em πiep0β pointer to the IEP0 device.iep1β pointer to the IEP1 device. (Sibling energy β¨)vlan_tblβ VLAN-FID table pointer.hw_bridge_devβ pointer to the HW bridge net device.hsr_devβ pointer to the HSR net device.hsr_prp_versionβ enum to store the protocol version of the hsr master.br_membersβ bitmask of bridge member ports.hsr_membersβ bitmask of hsr member ports.prueth_netdevice_nbβ netdevice notifier block.prueth_switchdev_nbβ switchdev notifier block.prueth_switchdev_bl_nbβ switchdev blocking notifier block. (Blocking! Not like that, it's the notifier type π)is_switch_modeβ flag to indicate if the device is in Switch mode.is_hsr_offload_modeβ flag to indicate if the device is in hsr offload mode.is_switchmode_supportedβ indicates platform support for switch mode.switch_idβ ID for mapping switch ports to bridge. SizedMAX_PHYS_ITEM_ID_LEN, iykyk.default_vlanβ Default VLAN for host.vtbl_lockβ Lock for vtbl in shared memory.stats_lockβ Lock for reading icssg stats.icssg_emac_firmwaresβ Firmware names for EMAC mode, indexed per MAC.icssg_switch_firmwaresβ Firmware names for SWITCH mode, indexed per MAC.icssg_hsr_firmwaresβ Firmware names for HSR mode, indexed per MAC.icssg_prp_firmwaresβ Firmware names for PRP mode, indexed per MAC.
Not me listing every single field π but that's literally the whole point of this page β every member matters, bestie. No gatekeeping the struct.
π¦ SEE ALSO π¦
Go peek at these, they're lowkey essential:
- Kernel file
./drivers/net/ethernet/ti/icssg/icssg_prueth.h struct prueth_pdata(9)
β¨ That's the whole page, bestie β¨ This one came from ./drivers/net/ethernet/ti/icssg, dated October 2026, and it's filed under struct prueth(9). Periodt. π«Άπ
π¦ 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