Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 1 May 2012 16:14:18 +0000 (UTC)
From:      Monthadar Al Jaberi <monthadar@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r234892 - head/sys/net80211
Message-ID:  <201205011614.q41GEISi034191@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: monthadar
Date: Tue May  1 16:14:18 2012
New Revision: 234892
URL: http://svn.freebsd.org/changeset/base/234892

Log:
  Net80211s update: Mesh Gate Announcement and removal of Portal Announcement.
  
   * Renamed IEEE80211_ELEMID_MESHPANN to IEEE80211_ELEMID_MESHGANN according to
   amendment;
   * Added IEEE80211_IOC_MESH_GATE that controls whether Mesh Gate Announcement
   is activated or not;
   * Renamed all flags from Portal to Gate in HWMP frames;
   * Removed IEEE80211_ACTION_MESHPANN enum cause its part of the Mesh Action
   category now as per amendment;
   * Renamed IEEE80211_MESHFLAGS_PORTAL to IEEE80211_MESHFLAGS_GATE in
   ieee80211_mesh_state flags;
   * Modified ieee80211_hwmp.c/ieee80211_mesh.c to use new GATE flags;
  
  Approved by: adrian

Modified:
  head/sys/net80211/ieee80211.h
  head/sys/net80211/ieee80211_hwmp.c
  head/sys/net80211/ieee80211_ioctl.h
  head/sys/net80211/ieee80211_mesh.c
  head/sys/net80211/ieee80211_mesh.h

Modified: head/sys/net80211/ieee80211.h
==============================================================================
--- head/sys/net80211/ieee80211.h	Tue May  1 16:13:22 2012	(r234891)
+++ head/sys/net80211/ieee80211.h	Tue May  1 16:14:18 2012	(r234892)
@@ -734,7 +734,7 @@ enum {
 	IEEE80211_ELEMID_MESHAWAKEW	= 119,
 	IEEE80211_ELEMID_MESHBEACONT	= 120,
 	/* 121-124 MMCAOP not implemented yet */
-	IEEE80211_ELEMID_MESHPANN	= 125, /* XXX: is GANN now, not used */
+	IEEE80211_ELEMID_MESHGANN	= 125,
 	IEEE80211_ELEMID_MESHRANN	= 126,
 	/* 127 Extended Capabilities */
 	/* 128-129 reserved */

Modified: head/sys/net80211/ieee80211_hwmp.c
==============================================================================
--- head/sys/net80211/ieee80211_hwmp.c	Tue May  1 16:13:22 2012	(r234891)
+++ head/sys/net80211/ieee80211_hwmp.c	Tue May  1 16:14:18 2012	(r234892)
@@ -840,9 +840,9 @@ hwmp_rootmode_cb(void *arg)
 	IEEE80211_NOTE(vap, IEEE80211_MSG_HWMP, vap->iv_bss,
 	    "%s", "send broadcast PREQ");
 
-	preq.preq_flags = 0;
-	if (ms->ms_flags & IEEE80211_MESHFLAGS_PORTAL)
-		preq.preq_flags |= IEEE80211_MESHPREQ_FLAGS_PR;
+	preq.preq_flags = IEEE80211_MESHPREQ_FLAGS_AM;
+	if (ms->ms_flags & IEEE80211_MESHFLAGS_GATE)
+		preq.preq_flags |= IEEE80211_MESHPREQ_FLAGS_GATE;
 	if (hs->hs_rootmode == IEEE80211_HWMP_ROOTMODE_PROACTIVE)
 		preq.preq_flags |= IEEE80211_MESHPREQ_FLAGS_PP;
 	preq.preq_hopcount = 0;
@@ -882,8 +882,8 @@ hwmp_rootmode_rann_cb(void *arg)
 	    "%s", "send broadcast RANN");
 
 	rann.rann_flags = 0;
-	if (ms->ms_flags & IEEE80211_MESHFLAGS_PORTAL)
-		rann.rann_flags |= IEEE80211_MESHRANN_FLAGS_PR;
+	if (ms->ms_flags & IEEE80211_MESHFLAGS_GATE)
+		rann.rann_flags |= IEEE80211_MESHFLAGS_GATE;
 	rann.rann_hopcount = 0;
 	rann.rann_ttl = ms->ms_ttl;
 	IEEE80211_ADDR_COPY(rann.rann_addr, vap->iv_myaddr);

Modified: head/sys/net80211/ieee80211_ioctl.h
==============================================================================
--- head/sys/net80211/ieee80211_ioctl.h	Tue May  1 16:13:22 2012	(r234891)
+++ head/sys/net80211/ieee80211_ioctl.h	Tue May  1 16:14:18 2012	(r234892)
@@ -709,6 +709,7 @@ struct ieee80211req {
 #define	IEEE80211_IOC_MESH_PR_SIG	178	/* mesh sig protocol */
 #define	IEEE80211_IOC_MESH_PR_CC	179	/* mesh congestion protocol */
 #define	IEEE80211_IOC_MESH_PR_AUTH	180	/* mesh auth protocol */
+#define	IEEE80211_IOC_MESH_GATE		181	/* mesh gate XXX: 173? */
 
 #define	IEEE80211_IOC_HWMP_ROOTMODE	190	/* HWMP root mode */
 #define	IEEE80211_IOC_HWMP_MAXHOPS	191	/* number of hops before drop */

Modified: head/sys/net80211/ieee80211_mesh.c
==============================================================================
--- head/sys/net80211/ieee80211_mesh.c	Tue May  1 16:13:22 2012	(r234891)
+++ head/sys/net80211/ieee80211_mesh.c	Tue May  1 16:14:18 2012	(r234892)
@@ -1262,7 +1262,7 @@ mesh_recv_group_data(struct ieee80211vap
 			 * This happens by delivering the packet, and a bridge
 			 * will sent it on another port member.
 			 */
-			if (ms->ms_flags & IEEE80211_MESHFLAGS_PORTAL &&
+			if (ms->ms_flags & IEEE80211_MESHFLAGS_GATE &&
 			    ms->ms_flags & IEEE80211_MESHFLAGS_FWD)
 				IEEE80211_NOTE_MAC(vap, IEEE80211_MSG_MESH,
 				    MC01(mc)->mc_addr4, "%s",
@@ -2768,8 +2768,8 @@ ieee80211_add_meshconf(uint8_t *frm, str
 	/* NB: set the number of neighbors before the rest */
 	*frm = (ms->ms_neighbors > IEEE80211_MESH_MAX_NEIGHBORS ?
 	    IEEE80211_MESH_MAX_NEIGHBORS : ms->ms_neighbors) << 1;
-	if (ms->ms_flags & IEEE80211_MESHFLAGS_PORTAL)
-		*frm |= IEEE80211_MESHCONF_FORM_MP;
+	if (ms->ms_flags & IEEE80211_MESHFLAGS_GATE)
+		*frm |= IEEE80211_MESHCONF_FORM_GATE;
 	frm += 1;
 	caps = 0;
 	if (ms->ms_flags & IEEE80211_MESHFLAGS_AP)
@@ -2961,6 +2961,9 @@ mesh_ioctl_get80211(struct ieee80211vap 
 	case IEEE80211_IOC_MESH_FWRD:
 		ireq->i_val = (ms->ms_flags & IEEE80211_MESHFLAGS_FWD) != 0;
 		break;
+	case IEEE80211_IOC_MESH_GATE:
+		ireq->i_val = (ms->ms_flags & IEEE80211_MESHFLAGS_GATE) != 0;
+		break;
 	case IEEE80211_IOC_MESH_TTL:
 		ireq->i_val = ms->ms_ttl;
 		break;
@@ -3076,6 +3079,12 @@ mesh_ioctl_set80211(struct ieee80211vap 
 		else
 			ms->ms_flags &= ~IEEE80211_MESHFLAGS_FWD;
 		break;
+	case IEEE80211_IOC_MESH_GATE:
+		if (ireq->i_val)
+			ms->ms_flags |= IEEE80211_MESHFLAGS_GATE;
+		else
+			ms->ms_flags &= ~IEEE80211_MESHFLAGS_GATE;
+		break;
 	case IEEE80211_IOC_MESH_TTL:
 		ms->ms_ttl = (uint8_t) ireq->i_val;
 		break;

Modified: head/sys/net80211/ieee80211_mesh.h
==============================================================================
--- head/sys/net80211/ieee80211_mesh.h	Tue May  1 16:13:22 2012	(r234891)
+++ head/sys/net80211/ieee80211_mesh.h	Tue May  1 16:14:18 2012	(r234892)
@@ -98,7 +98,7 @@ enum {
 };
 
 /* Mesh Formation Info */
-#define	IEEE80211_MESHCONF_FORM_MP	0x01 	/* Connected to Portal */
+#define	IEEE80211_MESHCONF_FORM_GATE	0x01 	/* Connected to Gate */
 #define	IEEE80211_MESHCONF_FORM_NNEIGH_MASK 0x7E /* Number of Neighbours */
 #define	IEEE80211_MESHCONF_FORM_SA	0xF0 	/* indicating 802.1X auth */
 
@@ -193,9 +193,9 @@ struct ieee80211_meshbeacont_ie {
 } __packed;
 #endif
 
-/* Portal (MP) Annoucement */
-struct ieee80211_meshpann_ie {
-	uint8_t		pann_ie;		/* IEEE80211_ELEMID_MESHPANN */
+/* Gate (GANN) Annoucement */
+struct ieee80211_meshgann_ie {
+	uint8_t		pann_ie;		/* IEEE80211_ELEMID_MESHGANN */
 	uint8_t		pann_len;
 	uint8_t		pann_flags;
 	uint8_t		pann_hopcount;
@@ -210,7 +210,7 @@ struct ieee80211_meshrann_ie {
 	uint8_t		rann_ie;		/* IEEE80211_ELEMID_MESHRANN */
 	uint8_t		rann_len;
 	uint8_t		rann_flags;
-#define	IEEE80211_MESHRANN_FLAGS_PR	0x01	/* Portal Role */
+#define	IEEE80211_MESHRANN_FLAGS_GATE	0x01	/* Mesh Gate */
 	uint8_t		rann_hopcount;
 	uint8_t		rann_ttl;
 	uint8_t		rann_addr[IEEE80211_ADDR_LEN];
@@ -229,7 +229,7 @@ struct ieee80211_meshpreq_ie {
 	uint8_t		preq_ie;	/* IEEE80211_ELEMID_MESHPREQ */
 	uint8_t		preq_len;
 	uint8_t		preq_flags;
-#define	IEEE80211_MESHPREQ_FLAGS_PR	0x01	/* Portal Role */
+#define	IEEE80211_MESHPREQ_FLAGS_GATE	0x01	/* Mesh Gate */
 #define	IEEE80211_MESHPREQ_FLAGS_AM	0x02	/* 0 = bcast / 1 = ucast */
 #define	IEEE80211_MESHPREQ_FLAGS_PP	0x04	/* Proactive PREP */
 #define	IEEE80211_MESHPREQ_FLAGS_AE	0x40	/* Address Extension */
@@ -360,14 +360,6 @@ enum {
 };
 
 /*
- * Mesh Portal Annoucement Action codes.
- */
-enum {
-	IEEE80211_ACTION_MESHPANN	= 0,
-	/* 1-255 reserved */
-};
-
-/*
  * Different mesh control structures based on the AE
  * (Address Extension) bits.
  */
@@ -498,7 +490,7 @@ struct ieee80211_mesh_state {
 	uint16_t			ms_neighbors;
 	uint8_t				ms_ttl;	/* mesh ttl set in packets */
 #define IEEE80211_MESHFLAGS_AP		0x01	/* accept peers */
-#define IEEE80211_MESHFLAGS_PORTAL	0x02	/* mesh portal role */
+#define IEEE80211_MESHFLAGS_GATE	0x02	/* mesh gate role */
 #define IEEE80211_MESHFLAGS_FWD		0x04	/* forward packets */
 	uint8_t				ms_flags;
 	struct mtx			ms_rt_lock;
@@ -556,7 +548,7 @@ ieee80211_mesh_isproxyena(struct ieee802
 {
 	struct ieee80211_mesh_state *ms = vap->iv_mesh;
 	return (ms->ms_flags &
-	    (IEEE80211_MESHFLAGS_AP | IEEE80211_MESHFLAGS_PORTAL)) != 0;
+	    (IEEE80211_MESHFLAGS_AP | IEEE80211_MESHFLAGS_GATE)) != 0;
 }
 
 /*



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201205011614.q41GEISi034191>