summaryrefslogtreecommitdiffstats
path: root/sys/net80211/ieee80211_mesh.h
diff options
context:
space:
mode:
authoradrian <adrian@FreeBSD.org>2012-03-04 05:49:39 +0000
committeradrian <adrian@FreeBSD.org>2012-03-04 05:49:39 +0000
commit8d7335fa92b63c3acd810fb4432ac1d312739f25 (patch)
treea5fc6ce807c0d87dbd87d4f0b33c75c01fdb8b0d /sys/net80211/ieee80211_mesh.h
parent77002eeb6cfd162e6ae4999ec8029a1079f7344f (diff)
downloadFreeBSD-src-8d7335fa92b63c3acd810fb4432ac1d312739f25.zip
FreeBSD-src-8d7335fa92b63c3acd810fb4432ac1d312739f25.tar.gz
* Added IEEE80211_ACTION_CAT_MESH in ieee80211.h as specified amendment spec;
* Moved old categories as specified by D4.0 to be action fields of MESH category as specified in amendment spec; * Modified functions to use MESH category and its action fields: + ieee80211_send_action_register + ieee80211_send_action + ieee80211_recv_action_register +ieee80211_recv_action; * Modified ieee80211_hwmp_init and hwmp_send_action so they uses correct action fields as specified in amendment spec; * Modified ieee80211_parse_action so that it verifies MESH frames. * Change Mesh Link Metric to use one information element as amendment spec. Draft 4.0 defined two different information elements for request and response. Submitted by: monthadar@gmail.com
Diffstat (limited to 'sys/net80211/ieee80211_mesh.h')
-rw-r--r--sys/net80211/ieee80211_mesh.h38
1 files changed, 22 insertions, 16 deletions
diff --git a/sys/net80211/ieee80211_mesh.h b/sys/net80211/ieee80211_mesh.h
index 85ee6a7..fde8859 100644
--- a/sys/net80211/ieee80211_mesh.h
+++ b/sys/net80211/ieee80211_mesh.h
@@ -119,8 +119,14 @@ struct ieee80211_meshid_ie {
/* Link Metric Report */
struct ieee80211_meshlmetric_ie {
- uint8_t lm_ie; /* IEEE80211_ELEMID_MESHLINK */
+ uint8_t lm_ie; /* IEEE80211_ACTION_MESH_LMETRIC */
uint8_t lm_len;
+ uint8_t lm_flags;
+#define IEEE80211_MESH_LMETRIC_FLAGS_REQ 0x01 /* Request */
+ /*
+ * XXX: this field should be variable in size and depend on
+ * the active active path selection metric identifier
+ */
uint32_t lm_metric;
#define IEEE80211_MESHLMETRIC_INITIALVAL 0
} __packed;
@@ -307,8 +313,7 @@ struct ieee80211_meshpuc_ie {
* 802.11s Action Frames
*/
#define IEEE80211_ACTION_CAT_MESHPEERING 30 /* XXX Linux */
-#define IEEE80211_ACTION_CAT_MESHLMETRIC 13
-#define IEEE80211_ACTION_CAT_MESHPATH 32 /* XXX Linux */
+/* XXX: these need to be looked into */
#define IEEE80211_ACTION_CAT_INTERWORK 15
#define IEEE80211_ACTION_CAT_RESOURCE 16
#define IEEE80211_ACTION_CAT_PROXY 17
@@ -324,20 +329,21 @@ enum {
};
/*
- * Mesh Path Selection Action code.
+ * Mesh Action code.
*/
enum {
- IEEE80211_ACTION_MESHPATH_SEL = 0,
- /* 1-255 reserved */
-};
-
-/*
- * Mesh Link Metric Action codes.
- */
-enum {
- IEEE80211_ACTION_MESHLMETRIC_REQ = 0, /* Link Metric Request */
- IEEE80211_ACTION_MESHLMETRIC_REP = 1, /* Link Metric Report */
- /* 2-255 reserved */
+ IEEE80211_ACTION_MESH_LMETRIC = 0, /* Mesh Link Metric Report */
+ IEEE80211_ACTION_MESH_HWMP = 1, /* HWMP Mesh Path Selection */
+ IEEE80211_ACTION_MESH_GANN = 2, /* Gate Announcement */
+ IEEE80211_ACTION_MESH_CC = 3, /* Congestion Control */
+ IEEE80211_ACTION_MESH_MCCA_SREQ = 4, /* MCCA Setup Request */
+ IEEE80211_ACTION_MESH_MCCA_SREP = 5, /* MCCA Setup Reply */
+ IEEE80211_ACTION_MESH_MCCA_AREQ = 6, /* MCCA Advertisement Req. */
+ IEEE80211_ACTION_MESH_MCCA_ADVER =7, /* MCCA Advertisement */
+ IEEE80211_ACTION_MESH_MCCA_TRDOWN = 8, /* MCCA Teardown */
+ IEEE80211_ACTION_MESH_TBTT_REQ = 9, /* TBTT Adjustment Request */
+ IEEE80211_ACTION_MESH_TBTT_RES = 10, /* TBTT Adjustment Response */
+ /* 11-255 reserved */
};
/*
@@ -496,7 +502,7 @@ uint8_t * ieee80211_add_meshid(uint8_t *, struct ieee80211vap *);
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 *, uint32_t);
+uint8_t * ieee80211_add_meshlmetric(uint8_t *, uint8_t, uint32_t);
void ieee80211_mesh_node_init(struct ieee80211vap *,
struct ieee80211_node *);
OpenPOWER on IntegriCloud