summaryrefslogtreecommitdiffstats
path: root/sys/net80211/ieee80211_mesh.h
diff options
context:
space:
mode:
authormonthadar <monthadar@FreeBSD.org>2013-02-07 21:23:43 +0000
committermonthadar <monthadar@FreeBSD.org>2013-02-07 21:23:43 +0000
commit27872c71696d2fef9b9c17db2905ce394ef1b3c9 (patch)
tree8511aa3a39b7b3e4a4386ec4475132b15c0449d7 /sys/net80211/ieee80211_mesh.h
parentacc555bdc8162ef5e4a40e651817982593532967 (diff)
downloadFreeBSD-src-27872c71696d2fef9b9c17db2905ce394ef1b3c9.zip
FreeBSD-src-27872c71696d2fef9b9c17db2905ce394ef1b3c9.tar.gz
Mesh update: add base Mesh Gate functionality.
A Mesh Gate should transmit a Mesh Action frame containing ieee80211_meshgann_ie as its only information element periodically every ieee80211_mesh_gateint ms. Unless the mesh gate is also configure as a ROOT, then these frames should not be send. This is according to 802.11 2012 standard; * Introduce new SYSCTL net.wlan.mesh.gateint, with 10s default; * Add two new functions mesh_gatemode_setup and mesh_gatemode_cb. This is similar to how HWMP setups up a callout; * Add two new action handlers mesh_recv_action_meshgate and mesh_send_action_meshgate; * Added ieee80211_add_meshgate to ieee80211_mesh.h; * Modified mesh_send_action to look similar to hwmp_send_action. This is because we need to send out broadcast management frames. * Introduced a new flag for mesh state IEEE80211_MESHFLAGS_ROOT. This flag is now set by HWMP code when a mesh STA is configured as a ROOT. This is then checked by mesh_gatemode_cb before scheduling a new callout; * Added to new field to ieee80211_mesh_state: + struct callout ms_gatetimer + ieee80211_mesh_seq ms_gateseq; Approved by: adrian (mentor)
Diffstat (limited to 'sys/net80211/ieee80211_mesh.h')
-rw-r--r--sys/net80211/ieee80211_mesh.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/sys/net80211/ieee80211_mesh.h b/sys/net80211/ieee80211_mesh.h
index 1e14357..4447a3f 100644
--- a/sys/net80211/ieee80211_mesh.h
+++ b/sys/net80211/ieee80211_mesh.h
@@ -502,9 +502,12 @@ struct ieee80211_mesh_state {
#define IEEE80211_MESHFLAGS_AP 0x01 /* accept peers */
#define IEEE80211_MESHFLAGS_GATE 0x02 /* mesh gate role */
#define IEEE80211_MESHFLAGS_FWD 0x04 /* forward packets */
+#define IEEE80211_MESHFLAGS_ROOT 0x08 /* configured as root */
uint8_t ms_flags;
struct mtx ms_rt_lock;
struct callout ms_cleantimer;
+ struct callout ms_gatetimer;
+ ieee80211_mesh_seq ms_gateseq;
TAILQ_HEAD(, ieee80211_mesh_route) ms_routes;
struct ieee80211_mesh_proto_metric *ms_pmetric;
struct ieee80211_mesh_proto_path *ms_ppath;
@@ -537,6 +540,8 @@ uint8_t * ieee80211_add_meshconf(uint8_t *, struct ieee80211vap *);
uint8_t * ieee80211_add_meshpeer(uint8_t *, uint8_t, uint16_t, uint16_t,
uint16_t);
uint8_t * ieee80211_add_meshlmetric(uint8_t *, uint8_t, uint32_t);
+uint8_t * ieee80211_add_meshgate(uint8_t *,
+ struct ieee80211_meshgann_ie *);
void ieee80211_mesh_node_init(struct ieee80211vap *,
struct ieee80211_node *);
OpenPOWER on IntegriCloud