STRUCT MESH_PATH(9)
π struct mesh_path(9) π
okay bestie, welcome to the Kernel API Manual entry for struct mesh_path(9) β the mac80211 mesh path structure. this is the whole vibe: one struct tracking a mesh path, with all its fields, flags, timers, locks, and lil bookkeeping details. no cap, we are keeping every single one. π«Ά
πΈ NAME πΈ
struct mesh_path β the mac80211 mesh path structure. itβs giving βone struct to track a destination through the meshβ energy. π
β¨ SYNOPSIS β¨
hereβs the struct, exactly, no edits, no βfixingβ the names, just the whole thing:
struct mesh_path {
u8 dst[ETH_ALEN];
u8 mpp[ETH_ALEN];
struct rhash_head rhash;
struct hlist_node walk_list;
struct hlist_node gate_list;
struct ieee80211_sub_if_data *sdata;
struct sta_info *next_hop;
struct timer_list timer;
struct sk_buff_head frame_queue;
struct rcu_head rcu;
u32 sn;
u32 metric;
u8 hop_count;
unsigned long exp_time;
u32 discovery_timeout;
u8 discovery_retries;
enum mesh_path_flags flags;
spinlock_t state_lock;
u8 rann_snd_addr[ETH_ALEN];
u32 rann_metric;
unsigned long last_preq_to_root;
unsigned long fast_tx_check;
bool is_root;
bool is_gate;
u32 path_change_count;
};
π«Ά Members π«Ά
okay so every field gets its moment. main character energy for each one:
dstβ mesh path destination mac address.mppβ mesh proxy mac address.rhashβ rhashtable list pointer.walk_listβ linked list containing allmesh_pathobjects.gate_listβ list pointer for known gates list.sdataβ mesh subif.next_hopβ mesh neighbor to which frames for this destination will be forwarded.timerβ mesh path discovery timer.frame_queueβ pending queue for frames sent to this destination while the path is unresolved.rcuβ rcu head for freeing mesh path.snβ target sequence number.metricβ current metric to this destination.hop_countβ hops to destination.exp_timeβ in jiffies, when the path will expire or when it expired.discovery_timeoutβ timeout (lapse in jiffies) used for the last discovery retry.discovery_retriesβ number of discovery retries.flagsβ mesh path flags, as specified onenum mesh_path_flags.state_lockβ mesh path state lock used to protect changes to the mpath itself. No need to take this lock when adding or removing an mpath to a hash bucket on a path table.rann_snd_addrβ the RANN sender address.rann_metricβ the aggregated path metric towards the root node.last_preq_to_rootβ Timestamp of last PREQ sent to root.fast_tx_checkβ timestamp of last fast-xmit enable attempt.is_rootβ the destination station of this path is a root node.is_gateβ the destination station of this path is a mesh gate.path_change_countβ the number of path changes to destination.
π Description π
The dst address is unique in the mesh path table. Since the mesh_path is protected by RCU, deleting the next_hop STA must remove / substitute the mesh_path structure and wait until that is no longer reachable before destroying the STA completely.
ngl that last bit is important: RCU is the vibe, and thenext_hopSTA cannot be fully destroyed until themesh_pathis no longer reachable. periodt. π«Ά
π SEE ALSO π
- Kernel file
./net/mac80211/mesh.h enum mesh_path_flags(9)enum mesh_deferred_task_flags(9)enum ieee80211_mesh_fast_tx_type(9)struct ieee80211_mesh_fast_tx_key(9)struct ieee80211_mesh_fast_tx(9)struct rmc_entry(9)
and thatβs the page, bestie β catch u later. this one came from the ./net/mac80211 source/version, October 2026 edition, and yes thatβs the footer energy πβ¨
π¦ 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