svn commit: r191582 - projects/mesh11s/sys/net80211
Rui Paulo
rpaulo at FreeBSD.org
Mon Apr 27 18:46:19 UTC 2009
Author: rpaulo
Date: Mon Apr 27 18:46:19 2009
New Revision: 191582
URL: http://svn.freebsd.org/changeset/base/191582
Log:
* sync mesh conf ie with latest draft
* add add_meshconf() function to add this IE to a frame.
* while there, simplify names of mesh conf variables and defines.
Sponsored by: The FreeBSD Foundation
Modified:
projects/mesh11s/sys/net80211/ieee80211_mesh.c
projects/mesh11s/sys/net80211/ieee80211_mesh.h
Modified: projects/mesh11s/sys/net80211/ieee80211_mesh.c
==============================================================================
--- projects/mesh11s/sys/net80211/ieee80211_mesh.c Mon Apr 27 18:39:55 2009 (r191581)
+++ projects/mesh11s/sys/net80211/ieee80211_mesh.c Mon Apr 27 18:46:19 2009 (r191582)
@@ -490,6 +490,33 @@ ieee80211_add_meshid(uint8_t *frm, struc
return frm + vap->iv_meshidlen;
}
+/*
+ * Add a Mesh Configuration element to a frame.
+ * For now just use HWMP routing, Airtime link metric, Null Congestion
+ * Signaling, Null Sync Protocol and Null Authentication.
+ */
+uint8_t *
+ieee80211_add_meshconf(uint8_t *frm, struct ieee80211vap *vap)
+{
+ static const struct ieee80211_meshconf_ie ie = {
+ .conf_ie = IEEE80211_ELEMID_MESHCONF,
+ .conf_len = sizeof(struct ieee80211_meshconf_ie) - 2,
+ .conf_ver = IEEE80211_MESHCONF_VERSION,
+ .conf_pselid = IEEE80211_MESHCONF_HWMP,
+ .conf_pmetid = IEEE80211_MESHCONF_AIRTIME,
+ .conf_ccid = IEEE80211_MESHCONF_NULL,
+ .conf_syncid = IEEE80211_MESHCONF_NULL,
+ .conf_authid = IEEE80211_MESHCONF_NULL,
+ .conf_form = 0, /* XXX */
+ .conf_cap = 1, /* XXX */
+ };
+
+ KASSERT(vap->iv_opmode == IEEE80211_M_MBSS, ("not a mbss vap"));
+ memcpy(frm, &ie, sizeof(ie));
+
+ return frm + sizeof(ie);
+}
+
void
ieee80211_create_mbss(struct ieee80211vap *vap, struct ieee80211_channel *chan)
{
Modified: projects/mesh11s/sys/net80211/ieee80211_mesh.h
==============================================================================
--- projects/mesh11s/sys/net80211/ieee80211_mesh.h Mon Apr 27 18:39:55 2009 (r191581)
+++ projects/mesh11s/sys/net80211/ieee80211_mesh.h Mon Apr 27 18:46:19 2009 (r191582)
@@ -39,23 +39,36 @@ struct ieee80211_meshconf_ie {
uint8_t conf_ie; /* IEEE80211_ELEMID_MESHCONF */
uint8_t conf_len;
uint8_t conf_ver;
- uint32_t conf_apspi; /* Active Path Sel. Proto. ID */
- uint32_t conf_apsmi; /* APS Metric Identifier */
- uint32_t conf_ccmi; /* Congestion Control Mode ID */
- uint8_t conf_finfo; /* Formation Information */
+ uint32_t conf_pselid; /* Active Path Sel. Proto. ID */
+ uint32_t conf_pmetid; /* APS Metric Identifier */
+ uint32_t conf_ccid; /* Congestion Control Mode ID */
+ uint32_t conf_syncid; /* Sync. Protocol ID */
+ uint32_t conf_authid; /* Auth. Protocol ID */
+ uint8_t conf_form; /* Formation Information */
uint8_t conf_cap;
} __packed;
-#define IEEE80211_MESHCONF_APSPI_HWMP_OUI 0x000fac
-#define IEEE80211_MESHCONF_APSPI_HWMP_VALUE 0xff /* XXX Linux */
-#define IEEE80211_MESHCONF_APSMI_AIRTIME_OUI 0x000fac
-#define IEEE80211_MESHCONF_APSMI_AIRTIME_VALUE 0xff /* XXX Linux */
-#define IEEE80211_MESHCONF_CCMI_DEFAULT_OUI 0x000fac
-#define IEEE80211_MESHCONF_CCMI_DEFAULT_VALUE 0xff /* XXX Linux */
-#define IEEE80211_MESHCONF_CCMI_NULL_OUI 0x000fac
-#define IEEE80211_MESHCONF_CCMI_NULL_VALUE 255
+#define IEEE80211_MESHCONF_VERSION 1
+#define IEEE80211_MESHCONF_NULL_OUI 0x000fac /* Null Protocol */
+#define IEEE80211_MESHCONF_NULL_VALUE 255
+#define IEEE80211_MESHCONF_NULL (IEEE80211_MESHCONF_NULL_OUI << 8 | IEEE80211_MESHCONF_NULL_VALUE)
+#define IEEE80211_MESHCONF_HWMP_OUI 0x000fac
+#define IEEE80211_MESHCONF_HWMP_VALUE 0xff /* XXX Linux */
+#define IEEE80211_MESHCONF_HWMP (IEEE80211_MESHCONF_HWMP_OUI << 8 | IEEE80211_MESHCONF_HWMP_VALUE)
+#define IEEE80211_MESHCONF_AIRTIME_OUI 0x000fac
+#define IEEE80211_MESHCONF_AIRTIME_VALUE 0xff /* XXX Linux */
+#define IEEE80211_MESHCONF_AIRTIME (IEEE80211_MESHCONF_AIRTIME_OUI << 8 | IEEE80211_MESHCONF_AIRTIME_VALUE)
+#define IEEE80211_MESHCONF_CCSIG_OUI 0x000fac
+#define IEEE80211_MESHCONF_CCSIG_VALUE 0xff /* XXX Linux */
+#define IEEE80211_MESHCONF_NEIGHOFF_OUI 0x000fac /* Neighbour offset */
+#define IEEE80211_MESHCONF_NEIGHOFF_VALUE 0
+#define IEEE80211_MESHCONF_NEIGHOFF (IEEE80211_MESHCONF_NEIGHOFF_OUI << 8 | IEEE80211_MESHCONF_NEIGHOFF_VALUE)
+#define IEEE80211_MESHCONF_SAE_OUI 0x000fac
+#define IEEE80211_MESHCONF_SAE_VALUE 1
+#define IEEE80211_MESHCONF_SAE (IEEE80211_MESHCONF_SAE_OUI << 8 | IEEE80211_MESHCONF_SAE_VALUE)
#define IEEE80211_MESHCONF_FORM_MP (1 << 1) /* connected to portal */
#define IEEE80211_MESHCONF_FORM_NEIGH (1 << 4) /* no of neighbours */
+/* XXX ... */
/* Mesh Identifier */
struct ieee80211_meshid_ie {
@@ -293,6 +306,7 @@ void ieee80211_mesh_attach(struct ieee8
void ieee80211_mesh_detach(struct ieee80211com *);
void ieee80211_parse_meshid(struct ieee80211_node *, const uint8_t *);
uint8_t * ieee80211_add_meshid(uint8_t *, struct ieee80211vap *);
+uint8_t * ieee80211_add_meshconf(uint8_t *, struct ieee80211vap *);
void ieee80211_create_mbss(struct ieee80211vap *, struct
ieee80211_channel *);
More information about the svn-src-projects
mailing list