Go to the source code of this file.
#define IEEE80211_MESH_HOUSEKEEPING_INTERVAL (60 * HZ) |
Definition at line 204 of file kernel-3.5/mesh.h.
#define IEEE80211_MESH_PEER_INACTIVITY_LIMIT (1800 * HZ) |
Definition at line 203 of file kernel-3.5/mesh.h.
#define mesh_allocated 0 |
Definition at line 350 of file kernel-3.5/mesh.h.
#define MESH_DEFAULT_BEACON_INTERVAL 1000 /* in 1024 us units */ |
Definition at line 206 of file kernel-3.5/mesh.h.
#define MESH_MAX_MPATHS 1024 |
Definition at line 214 of file kernel-3.5/mesh.h.
#define MESH_MAX_PLINKS 256 |
Definition at line 211 of file kernel-3.5/mesh.h.
#define MESH_PATH_EXPIRE (600 * HZ) |
Definition at line 208 of file kernel-3.5/mesh.h.
#define RMC_BUCKETS 256 |
Definition at line 176 of file kernel-3.5/mesh.h.
#define RMC_QUEUE_MAX_LEN 4 |
Definition at line 177 of file kernel-3.5/mesh.h.
#define RMC_TIMEOUT (3 * HZ) |
Definition at line 178 of file kernel-3.5/mesh.h.
enum mesh_config_capab_flags - mesh config IE capability flags
: STA is willing to establish additional mesh peerings with other mesh STAs : the STA forwards MSDUs : TBTT adjustment procedure is ongoing
Definition at line 29 of file kernel-3.5/mesh.h.
enum mesh_deferred_task_flags - mac80211 mesh deferred tasks
: run the periodic mesh housekeeping tasks : the mesh path table is full and needs to grow. : the mesh portals table is full and needs to grow : the mesh root station needs to send a frame : time to compensate for clock drift relative to other mesh nodes
Definition at line 76 of file kernel-3.5/mesh.h.
enum mesh_path_flags |
enum mesh_path_flags - mac80211 mesh path flags
: the mesh path can be used for forwarding : the discovery process is running for this mesh path : the mesh path contains a valid destination sequence number : the mesh path has been manually set and should not be modified : the mesh path can has been resolved : there is an unsent path request for this destination already queued up, waiting for the discovery process to start.
MESH_PATH_RESOLVED is used by the mesh path timer to decide when to stop or cancel the mesh path discovery.
Definition at line 53 of file kernel-3.5/mesh.h.
int ieee80211_fill_mesh_addresses | ( | struct ieee80211_hdr * | hdr, |
__le16 * | fc, | ||
const u8 * | meshda, | ||
const u8 * | meshsa | ||
) |
ieee80211_fill_mesh_addresses - fill addresses of a locally originated mesh frame : 802.11 frame header : frame control field : destination address in the mesh : source address address in the mesh. Same as TA, as frame is locally originated.
Return the length of the 802.11 (does not include a mesh control header)
Definition at line 397 of file kernel-3.2/mesh.c.
void ieee80211_mesh_init_sdata | ( | struct ieee80211_sub_if_data * | sdata | ) |
Definition at line 686 of file kernel-3.2/mesh.c.
static void ieee80211_mesh_notify_scan_completed | ( | struct ieee80211_local * | local | ) | [inline, static] |
Definition at line 352 of file kernel-3.5/mesh.h.
static void ieee80211_mesh_quiesce | ( | struct ieee80211_sub_if_data * | sdata | ) | [inline, static] |
Definition at line 353 of file kernel-3.5/mesh.h.
static void ieee80211_mesh_restart | ( | struct ieee80211_sub_if_data * | sdata | ) | [inline, static] |
Definition at line 355 of file kernel-3.5/mesh.h.
void ieee80211_mesh_root_setup | ( | struct ieee80211_if_mesh * | ifmsh | ) |
Definition at line 376 of file kernel-3.2/mesh.c.
struct ieee80211_mesh_sync_ops* ieee80211_mesh_sync_ops_get | ( | u8 | method | ) | [read] |
Definition at line 304 of file mesh_sync.c.
int ieee80211_new_mesh_header | ( | struct ieee80211s_hdr * | meshhdr, |
struct ieee80211_sub_if_data * | sdata, | ||
char * | addr4or5, | ||
char * | addr6 | ||
) |
ieee80211_new_mesh_header - create a new mesh header : uninitialized mesh header : mesh interface to be used : 1st address in the ae header, which may correspond to address 4 (if addr6 is NULL) or address 5 (if addr6 is present). It may be NULL. : 2nd address in the ae header, which corresponds to addr6 of the mesh frame
Return the header length.
Definition at line 430 of file kernel-3.2/mesh.c.
void ieee80211_start_mesh | ( | struct ieee80211_sub_if_data * | sdata | ) |
Definition at line 513 of file kernel-3.2/mesh.c.
void ieee80211_stop_mesh | ( | struct ieee80211_sub_if_data * | sdata | ) |
Definition at line 535 of file kernel-3.2/mesh.c.
void ieee80211s_init | ( | void | ) |
Definition at line 37 of file kernel-3.2/mesh.c.
void ieee80211s_stop | ( | void | ) |
Definition at line 45 of file kernel-3.2/mesh.c.
void ieee80211s_update_metric | ( | struct ieee80211_local * | local, |
struct sta_info * | stainfo, | ||
struct sk_buff * | skb | ||
) |
Definition at line 297 of file kernel-3.2/mesh_hwmp.c.
void mesh_accept_plinks_update | ( | struct ieee80211_sub_if_data * | sdata | ) |
mesh_accept_plinks_update: update accepting_plink in local mesh beacons
: mesh interface in which mesh beacons are going to be updated
Definition at line 118 of file kernel-3.2/mesh.c.
bool mesh_action_is_path_sel | ( | struct ieee80211_mgmt * | mgmt | ) |
Definition at line 33 of file kernel-3.2/mesh.c.
int mesh_add_ds_params_ie | ( | struct sk_buff * | skb, |
struct ieee80211_sub_if_data * | sdata | ||
) |
Definition at line 323 of file kernel-3.2/mesh.c.
int mesh_add_ht_cap_ie | ( | struct sk_buff * | skb, |
struct ieee80211_sub_if_data * | sdata | ||
) |
Definition at line 368 of file kernel-3.5/mesh.c.
int mesh_add_ht_oper_ie | ( | struct sk_buff * | skb, |
struct ieee80211_sub_if_data * | sdata | ||
) |
Definition at line 389 of file kernel-3.5/mesh.c.
int mesh_add_meshconf_ie | ( | struct sk_buff * | skb, |
struct ieee80211_sub_if_data * | sdata | ||
) |
Definition at line 214 of file kernel-3.2/mesh.c.
int mesh_add_meshid_ie | ( | struct sk_buff * | skb, |
struct ieee80211_sub_if_data * | sdata | ||
) |
Definition at line 253 of file kernel-3.2/mesh.c.
int mesh_add_rsn_ie | ( | struct sk_buff * | skb, |
struct ieee80211_sub_if_data * | sdata | ||
) |
Definition at line 295 of file kernel-3.2/mesh.c.
int mesh_add_vendor_ies | ( | struct sk_buff * | skb, |
struct ieee80211_sub_if_data * | sdata | ||
) |
Definition at line 271 of file kernel-3.2/mesh.c.
int mesh_gate_num | ( | struct ieee80211_sub_if_data * | sdata | ) |
mesh_gate_num - number of gates known to this interface : subif data
Definition at line 517 of file kernel-3.2/mesh_pathtbl.c.
void mesh_ids_set_default | ( | struct ieee80211_if_mesh * | mesh | ) |
bool mesh_matches_local | ( | struct ieee80211_sub_if_data * | sdata, |
struct ieee802_11_elems * | ie | ||
) |
mesh_matches_local - check if the config of a mesh point matches ours
: local mesh subif : information elements of a management frame from the mesh peer
This function checks if the mesh configuration of a mesh point matches the local mesh configuration, i.e. if both nodes belong to the same mesh network.
Definition at line 73 of file kernel-3.5/mesh.c.
void mesh_mgmt_ies_add | ( | struct sk_buff * | skb, |
struct ieee80211_sub_if_data * | sdata | ||
) |
void mesh_mpath_table_grow | ( | void | ) |
Definition at line 622 of file kernel-3.2/mesh_pathtbl.c.
void mesh_mpp_table_grow | ( | void | ) |
Definition at line 643 of file kernel-3.2/mesh_pathtbl.c.
void mesh_neighbour_update | ( | struct ieee80211_sub_if_data * | sdata, |
u8 * | hw_addr, | ||
struct ieee802_11_elems * | ie | ||
) |
Definition at line 394 of file kernel-3.5/mesh_plink.c.
int mesh_nexthop_lookup | ( | struct sk_buff * | skb, |
struct ieee80211_sub_if_data * | sdata | ||
) |
mesh_nexthop_lookup - put the appropriate next hop on a mesh frame
: 802.11 frame to be sent : network subif the frame will be sent through
Returns: 0 if the next hop was found. Nonzero otherwise. If no next hop is found, the function will start a path discovery and queue the frame so it is sent when the path is resolved. This means the caller must not free the skb in this case.
mesh_nexthop_lookup - put the appropriate next hop on a mesh frame. Calling this function is considered "using" the associated mpath, so preempt a path refresh if this mpath expires soon.
: 802.11 frame to be sent : network subif the frame will be sent through
Returns: 0 if the next hop was found. Nonzero otherwise.
Definition at line 986 of file kernel-3.2/mesh_hwmp.c.
int mesh_nexthop_resolve | ( | struct sk_buff * | skb, |
struct ieee80211_sub_if_data * | sdata | ||
) |
Definition at line 1033 of file kernel-3.5/mesh_hwmp.c.
int mesh_path_add | ( | u8 * | dst, |
struct ieee80211_sub_if_data * | sdata | ||
) |
mesh_path_add - allocate and add a new path to the mesh path table : destination address of the path (ETH_ALEN length) : local subif
Returns: 0 on success
State: the initial state of the new path is set to 0
Definition at line 531 of file kernel-3.2/mesh_pathtbl.c.
int mesh_path_add_gate | ( | struct mesh_path * | mpath | ) |
mesh_path_add_gate - add the given mpath to a mesh gate to our path table : gate path to add to table
Definition at line 508 of file kernel-3.2/mesh_pathtbl.c.
void mesh_path_assign_nexthop | ( | struct mesh_path * | mpath, |
struct sta_info * | sta | ||
) |
mesh_path_assign_nexthop - update mesh path next hop
: mesh path to update : next hop to assign
Locking: mpath->state_lock must be held when calling this function
Definition at line 210 of file kernel-3.2/mesh_pathtbl.c.
int mesh_path_del | ( | u8 * | addr, |
struct ieee80211_sub_if_data * | sdata | ||
) |
mesh_path_del - delete a mesh path from the table
: dst address (ETH_ALEN length) : local subif
Returns: 0 if successful
Definition at line 888 of file kernel-3.2/mesh_pathtbl.c.
void mesh_path_discard_frame | ( | struct sk_buff * | skb, |
struct ieee80211_sub_if_data * | sdata | ||
) |
mesh_path_discard_frame - discard a frame whose path could not be resolved
: frame to discard : network subif the frame was to be sent through
If the frame was being forwarded from another MP, a PERR frame will be sent to the precursor. The precursor's address (i.e. the previous hop) was saved in addr1 of the frame-to-be-forwarded, and would only be overwritten once the destination is successfully resolved.
Locking: the function must me called within a rcu_read_lock region
mesh_path_discard_frame - discard a frame whose path could not be resolved
: frame to discard : network subif the frame was to be sent through
Locking: the function must me called within a rcu_read_lock region
Definition at line 1001 of file kernel-3.2/mesh_pathtbl.c.
int mesh_path_error_tx | ( | u8 | ttl, |
u8 * | target, | ||
__le32 | target_sn, | ||
__le16 | target_rcode, | ||
const u8 * | ra, | ||
struct ieee80211_sub_if_data * | sdata | ||
) |
mesh_send_path error - Sends a PERR mesh management frame
: broken destination : SN of the broken destination : reason code for this PERR : node this frame is addressed to
Note: This function may be called with driver locks taken that the driver also acquires in the TX path. To avoid a deadlock we don't transmit the frame directly but add it to the pending queue instead.
Definition at line 238 of file kernel-3.2/mesh_hwmp.c.
void mesh_path_expire | ( | struct ieee80211_sub_if_data * | sdata | ) |
Definition at line 1146 of file kernel-3.2/mesh_pathtbl.c.
void mesh_path_fix_nexthop | ( | struct mesh_path * | mpath, |
struct sta_info * | next_hop | ||
) |
mesh_path_fix_nexthop - force a specific next hop for a mesh path
: the mesh path to modify : the next hop to force
Locking: this function must be called holding mpath->state_lock
Definition at line 1053 of file kernel-3.2/mesh_pathtbl.c.
static void mesh_path_flush_by_iface | ( | struct ieee80211_sub_if_data * | sdata | ) | [inline, static] |
Definition at line 361 of file kernel-3.5/mesh.h.
void mesh_path_flush_by_nexthop | ( | struct sta_info * | sta | ) |
mesh_path_flush_by_nexthop - Deletes mesh paths if their next hop matches
- mesh peer to match
RCU notes: this function is called when a mesh plink transitions from PLINK_ESTAB to any other state, since PLINK_ESTAB state is the only one that allows path creation. This will happen before the sta can be freed (because sta_info_destroy() calls this) so any reader in a rcu read block will be protected against the plink disappearing.
Definition at line 816 of file kernel-3.2/mesh_pathtbl.c.
void mesh_path_flush_pending | ( | struct mesh_path * | mpath | ) |
mesh_path_flush_pending - free the pending queue of a mesh path
: mesh path whose queue has to be freed
Locking: the function must me called within a rcu_read_lock region
Definition at line 1037 of file kernel-3.2/mesh_pathtbl.c.
struct mesh_path* mesh_path_lookup | ( | u8 * | dst, |
struct ieee80211_sub_if_data * | sdata | ||
) | [read] |
mesh_path_lookup - look up a path in the mesh path table : hardware address (ETH_ALEN length) of destination : local subif
Returns: pointer to the mesh path structure, or NULL if not found
Locking: must be called within a read rcu section.
Definition at line 375 of file kernel-3.2/mesh_pathtbl.c.
struct mesh_path* mesh_path_lookup_by_idx | ( | int | idx, |
struct ieee80211_sub_if_data * | sdata | ||
) | [read] |
mesh_path_lookup_by_idx - look up a path in the mesh path table by its index : index : local subif, or NULL for all entries
Returns: pointer to the mesh path structure, or NULL if not found.
Locking: must be called within a read rcu section.
Definition at line 395 of file kernel-3.2/mesh_pathtbl.c.
void mesh_path_quiesce | ( | struct ieee80211_sub_if_data * | sdata | ) |
void mesh_path_restart | ( | struct ieee80211_sub_if_data * | sdata | ) |
static bool mesh_path_sel_is_hwmp | ( | struct ieee80211_sub_if_data * | sdata | ) | [inline, static] |
Definition at line 359 of file kernel-3.5/mesh.h.
int mesh_path_send_to_gates | ( | struct mesh_path * | mpath | ) |
mesh_path_send_to_gates - sends pending frames to all known mesh gates
: mesh path whose queue will be emptied
If there is only one gate, the frames are transferred from the failed mpath queue to that gate's queue. If there are more than one gates, the frames are copied from each gate to the next. After frames are copied, the mpath queues are emptied onto the transmission queue.
Definition at line 946 of file kernel-3.2/mesh_pathtbl.c.
void mesh_path_start_discovery | ( | struct ieee80211_sub_if_data * | sdata | ) |
mesh_path_start_discovery - launch a path discovery from the PREQ queue
: local mesh subif
Definition at line 896 of file kernel-3.2/mesh_hwmp.c.
void mesh_path_timer | ( | unsigned long | data | ) |
Definition at line 1047 of file kernel-3.2/mesh_hwmp.c.
void mesh_path_tx_pending | ( | struct mesh_path * | mpath | ) |
mesh_path_tx_pending - sends pending frames in a mesh path queue
: mesh path to activate
Locking: the state_lock of the mpath structure must NOT be held when calling this function.
Definition at line 929 of file kernel-3.2/mesh_pathtbl.c.
void mesh_path_tx_root_frame | ( | struct ieee80211_sub_if_data * | sdata | ) |
Definition at line 1080 of file kernel-3.2/mesh_hwmp.c.
int mesh_pathtbl_init | ( | void | ) |
Definition at line 1099 of file kernel-3.2/mesh_pathtbl.c.
void mesh_pathtbl_unregister | ( | void | ) |
Definition at line 1168 of file kernel-3.2/mesh_pathtbl.c.
bool mesh_peer_accepts_plinks | ( | struct ieee802_11_elems * | ie | ) |
mesh_peer_accepts_plinks - check if an mp is willing to establish peer links
: information elements of a management frame from the mesh peer
Definition at line 107 of file kernel-3.2/mesh.c.
void mesh_plink_block | ( | struct sta_info * | sta | ) |
Definition at line 408 of file kernel-3.2/mesh_plink.c.
void mesh_plink_broken | ( | struct sta_info * | sta | ) |
mesh_plink_broken - deactivates paths and sends perr when a link breaks
: broken peer link
This function must be called from the rate control algorithm if enough delivery errors suggest that a peer link is no longer usable.
Definition at line 749 of file kernel-3.2/mesh_pathtbl.c.
void mesh_plink_deactivate | ( | struct sta_info * | sta | ) |
mesh_plink_deactivate - deactivate mesh peer link
: mesh peer link to deactivate
All mesh paths with this peer as next hop will be flushed
Definition at line 135 of file kernel-3.2/mesh_plink.c.
int mesh_plink_open | ( | struct sta_info * | sta | ) |
Definition at line 383 of file kernel-3.2/mesh_plink.c.
static void mesh_plink_quiesce | ( | struct sta_info * | sta | ) | [inline, static] |
Definition at line 357 of file kernel-3.5/mesh.h.
static void mesh_plink_restart | ( | struct sta_info * | sta | ) | [inline, static] |
Definition at line 358 of file kernel-3.5/mesh.h.
int mesh_rmc_check | ( | u8 * | sa, |
struct ieee80211s_hdr * | mesh_hdr, | ||
struct ieee80211_sub_if_data * | sdata | ||
) |
mesh_rmc_check - Check frame in recent multicast cache and add if absent.
Returns: 0 if the frame is not in the cache, nonzero otherwise.
Checks using the source address and the mesh sequence number if we have received this frame lately. If the frame is not in the cache, it is added to it.
Definition at line 178 of file kernel-3.2/mesh.c.
void mesh_rmc_free | ( | struct ieee80211_sub_if_data * | sdata | ) |
Definition at line 147 of file kernel-3.2/mesh.c.
int mesh_rmc_init | ( | struct ieee80211_sub_if_data * | sdata | ) |
Definition at line 134 of file kernel-3.2/mesh.c.
void mesh_rx_path_sel_frame | ( | struct ieee80211_sub_if_data * | sdata, |
struct ieee80211_mgmt * | mgmt, | ||
size_t | len | ||
) |
Definition at line 785 of file kernel-3.2/mesh_hwmp.c.
void mesh_rx_plink_frame | ( | struct ieee80211_sub_if_data * | sdata, |
struct ieee80211_mgmt * | mgmt, | ||
size_t | len, | ||
struct ieee80211_rx_status * | rx_status | ||
) |
Definition at line 423 of file kernel-3.2/mesh_plink.c.
int mpp_path_add | ( | u8 * | dst, |
u8 * | mpp, | ||
struct ieee80211_sub_if_data * | sdata | ||
) |
Definition at line 663 of file kernel-3.2/mesh_pathtbl.c.
struct mesh_path* mpp_path_lookup | ( | u8 * | dst, |
struct ieee80211_sub_if_data * | sdata | ||
) | [read] |
Definition at line 380 of file kernel-3.2/mesh_pathtbl.c.
Definition at line 49 of file kernel-3.2/mesh_pathtbl.c.