Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 94f90656 authored by Chun-Yeow Yeoh's avatar Chun-Yeow Yeoh Committed by John W. Linville
Browse files

{nl,cfg,mac}80211: Add support of setting non-forwarding entity in Mesh



A mesh node that joins the mesh network is by default a forwarding entity. This patch allows
the mesh node to set as non-forwarding entity. Whenever dot11MeshForwarding is set to 0, the
mesh node can prevent itself from forwarding the traffic which is not destined to him.

Signed-off-by: default avatarChun-Yeow Yeoh <yeohchunyeow@gmail.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 2da8f419
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -2104,6 +2104,9 @@ enum nl80211_mntr_flags {
 * TUs) during which a mesh STA can send only one Action frame containing a
 * PERR element.
 *
 * @NL80211_MESHCONF_FORWARDING: set Mesh STA as forwarding or non-forwarding
 * or forwarding entity (default is TRUE - forwarding entity)
 *
 * @NL80211_MESHCONF_ATTR_MAX: highest possible mesh configuration attribute
 *
 * @__NL80211_MESHCONF_ATTR_AFTER_LAST: internal use
@@ -2128,6 +2131,7 @@ enum nl80211_meshconf_params {
	NL80211_MESHCONF_HWMP_RANN_INTERVAL,
	NL80211_MESHCONF_GATE_ANNOUNCEMENTS,
	NL80211_MESHCONF_HWMP_PERR_MIN_INTERVAL,
	NL80211_MESHCONF_FORWARDING,

	/* keep last */
	__NL80211_MESHCONF_ATTR_AFTER_LAST,
+1 −0
Original line number Diff line number Diff line
@@ -798,6 +798,7 @@ struct mesh_config {
	 * mesh gate, but not necessarily using the gate announcement protocol.
	 * Still keeping the same nomenclature to be in sync with the spec. */
	bool  dot11MeshGateAnnouncementProtocol;
	bool dot11MeshForwarding;
};

/**
+2 −0
Original line number Diff line number Diff line
@@ -1346,6 +1346,8 @@ static int ieee80211_update_mesh_config(struct wiphy *wiphy,
		conf->dot11MeshHWMPRannInterval =
			nconf->dot11MeshHWMPRannInterval;
	}
	if (_chg_mesh_attr(NL80211_MESHCONF_FORWARDING, mask))
		conf->dot11MeshForwarding = nconf->dot11MeshForwarding;
	return 0;
}

+1 −0
Original line number Diff line number Diff line
@@ -422,6 +422,7 @@ IEEE80211_IF_FILE(dot11MeshGateAnnouncementProtocol,
		u.mesh.mshcfg.dot11MeshGateAnnouncementProtocol, DEC);
IEEE80211_IF_FILE(dot11MeshHWMPRannInterval,
		u.mesh.mshcfg.dot11MeshHWMPRannInterval, DEC);
IEEE80211_IF_FILE(dot11MeshForwarding, u.mesh.mshcfg.dot11MeshForwarding, DEC);
#endif


+1 −1
Original line number Diff line number Diff line
@@ -575,7 +575,7 @@ static void hwmp_preq_frame_process(struct ieee80211_sub_if_data *sdata,
			ifmsh->mshstats.dropped_frames_ttl++;
	}

	if (forward) {
	if (forward && ifmsh->mshcfg.dot11MeshForwarding) {
		u32 preq_id;
		u8 hopcount, flags;

Loading