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

Commit dca7e943 authored by Thomas Pedersen's avatar Thomas Pedersen Committed by John W. Linville
Browse files

{nl,cfg,mac}80211: implement dot11MeshHWMPperrMinInterval



As per 802.11mb 13.9.11.3

Signed-off-by: default avatarThomas Pedersen <thomas@cozybit.com>
Signed-off-by: default avatarJavier Cardona <javier@cozybit.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent d3c1597b
Loading
Loading
Loading
Loading
+5 −0
Original line number Original line Diff line number Diff line
@@ -2094,6 +2094,10 @@ enum nl80211_mntr_flags {
 * access to a broader network beyond the MBSS.  This is done via Root
 * access to a broader network beyond the MBSS.  This is done via Root
 * Announcement frames.
 * Announcement frames.
 *
 *
 * @NL80211_MESHCONF_HWMP_PERR_MIN_INTERVAL: The minimum interval of time (in
 * TUs) during which a mesh STA can send only one Action frame containing a
 * PERR element.
 *
 * @NL80211_MESHCONF_ATTR_MAX: highest possible mesh configuration attribute
 * @NL80211_MESHCONF_ATTR_MAX: highest possible mesh configuration attribute
 *
 *
 * @__NL80211_MESHCONF_ATTR_AFTER_LAST: internal use
 * @__NL80211_MESHCONF_ATTR_AFTER_LAST: internal use
@@ -2117,6 +2121,7 @@ enum nl80211_meshconf_params {
	NL80211_MESHCONF_ELEMENT_TTL,
	NL80211_MESHCONF_ELEMENT_TTL,
	NL80211_MESHCONF_HWMP_RANN_INTERVAL,
	NL80211_MESHCONF_HWMP_RANN_INTERVAL,
	NL80211_MESHCONF_GATE_ANNOUNCEMENTS,
	NL80211_MESHCONF_GATE_ANNOUNCEMENTS,
	NL80211_MESHCONF_HWMP_PERR_MIN_INTERVAL,


	/* keep last */
	/* keep last */
	__NL80211_MESHCONF_ATTR_AFTER_LAST,
	__NL80211_MESHCONF_ATTR_AFTER_LAST,
+1 −0
Original line number Original line Diff line number Diff line
@@ -782,6 +782,7 @@ struct mesh_config {
	u16 min_discovery_timeout;
	u16 min_discovery_timeout;
	u32 dot11MeshHWMPactivePathTimeout;
	u32 dot11MeshHWMPactivePathTimeout;
	u16 dot11MeshHWMPpreqMinInterval;
	u16 dot11MeshHWMPpreqMinInterval;
	u16 dot11MeshHWMPperrMinInterval;
	u16 dot11MeshHWMPnetDiameterTraversalTime;
	u16 dot11MeshHWMPnetDiameterTraversalTime;
	u8  dot11MeshHWMPRootMode;
	u8  dot11MeshHWMPRootMode;
	u16 dot11MeshHWMPRannInterval;
	u16 dot11MeshHWMPRannInterval;
+3 −0
Original line number Original line Diff line number Diff line
@@ -1272,6 +1272,9 @@ static int ieee80211_update_mesh_config(struct wiphy *wiphy,
	if (_chg_mesh_attr(NL80211_MESHCONF_HWMP_PREQ_MIN_INTERVAL, mask))
	if (_chg_mesh_attr(NL80211_MESHCONF_HWMP_PREQ_MIN_INTERVAL, mask))
		conf->dot11MeshHWMPpreqMinInterval =
		conf->dot11MeshHWMPpreqMinInterval =
			nconf->dot11MeshHWMPpreqMinInterval;
			nconf->dot11MeshHWMPpreqMinInterval;
	if (_chg_mesh_attr(NL80211_MESHCONF_HWMP_PERR_MIN_INTERVAL, mask))
		conf->dot11MeshHWMPperrMinInterval =
			nconf->dot11MeshHWMPperrMinInterval;
	if (_chg_mesh_attr(NL80211_MESHCONF_HWMP_NET_DIAM_TRVS_TIME,
	if (_chg_mesh_attr(NL80211_MESHCONF_HWMP_NET_DIAM_TRVS_TIME,
			   mask))
			   mask))
		conf->dot11MeshHWMPnetDiameterTraversalTime =
		conf->dot11MeshHWMPnetDiameterTraversalTime =
+3 −0
Original line number Original line Diff line number Diff line
@@ -405,6 +405,8 @@ IEEE80211_IF_FILE(dot11MeshHWMPactivePathTimeout,
		u.mesh.mshcfg.dot11MeshHWMPactivePathTimeout, DEC);
		u.mesh.mshcfg.dot11MeshHWMPactivePathTimeout, DEC);
IEEE80211_IF_FILE(dot11MeshHWMPpreqMinInterval,
IEEE80211_IF_FILE(dot11MeshHWMPpreqMinInterval,
		u.mesh.mshcfg.dot11MeshHWMPpreqMinInterval, DEC);
		u.mesh.mshcfg.dot11MeshHWMPpreqMinInterval, DEC);
IEEE80211_IF_FILE(dot11MeshHWMPperrMinInterval,
		u.mesh.mshcfg.dot11MeshHWMPperrMinInterval, DEC);
IEEE80211_IF_FILE(dot11MeshHWMPnetDiameterTraversalTime,
IEEE80211_IF_FILE(dot11MeshHWMPnetDiameterTraversalTime,
		u.mesh.mshcfg.dot11MeshHWMPnetDiameterTraversalTime, DEC);
		u.mesh.mshcfg.dot11MeshHWMPnetDiameterTraversalTime, DEC);
IEEE80211_IF_FILE(dot11MeshHWMPmaxPREQretries,
IEEE80211_IF_FILE(dot11MeshHWMPmaxPREQretries,
@@ -534,6 +536,7 @@ static void add_mesh_config(struct ieee80211_sub_if_data *sdata)
	MESHPARAMS_ADD(dot11MeshMaxPeerLinks);
	MESHPARAMS_ADD(dot11MeshMaxPeerLinks);
	MESHPARAMS_ADD(dot11MeshHWMPactivePathTimeout);
	MESHPARAMS_ADD(dot11MeshHWMPactivePathTimeout);
	MESHPARAMS_ADD(dot11MeshHWMPpreqMinInterval);
	MESHPARAMS_ADD(dot11MeshHWMPpreqMinInterval);
	MESHPARAMS_ADD(dot11MeshHWMPperrMinInterval);
	MESHPARAMS_ADD(dot11MeshHWMPnetDiameterTraversalTime);
	MESHPARAMS_ADD(dot11MeshHWMPnetDiameterTraversalTime);
	MESHPARAMS_ADD(dot11MeshHWMPmaxPREQretries);
	MESHPARAMS_ADD(dot11MeshHWMPmaxPREQretries);
	MESHPARAMS_ADD(path_refresh_time);
	MESHPARAMS_ADD(path_refresh_time);
+3 −1
Original line number Original line Diff line number Diff line
@@ -514,7 +514,9 @@ struct ieee80211_if_mesh {
	atomic_t mpaths;
	atomic_t mpaths;
	/* Timestamp of last SN update */
	/* Timestamp of last SN update */
	unsigned long last_sn_update;
	unsigned long last_sn_update;
	/* Timestamp of last SN sent */
	/* Time when it's ok to send next PERR */
	unsigned long next_perr;
	/* Timestamp of last PREQ sent */
	unsigned long last_preq;
	unsigned long last_preq;
	struct mesh_rmc *rmc;
	struct mesh_rmc *rmc;
	spinlock_t mesh_preq_queue_lock;
	spinlock_t mesh_preq_queue_lock;
Loading