Commit 407bc77b authored by Roopni Devanathan's avatar Roopni Devanathan Committed by Johannes Berg
Browse files

wifi: mac80211: Set RTS threshold on per-radio basis



Add support to get the radio for which RTS threshold needs to be changed
from userspace. Pass on this radio index to underlying drivers as an
additional argument.

A value of -1 indicates radio index is not mentioned and that the
configuration applies to all radio(s) of the wiphy.

Signed-off-by: default avatarRoopni Devanathan <quic_rdevanat@quicinc.com>
Link: https://patch.msgid.link/20250615082312.619639-5-quic_rdevanat@quicinc.com


Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 89595190
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -3077,8 +3077,15 @@ static int ieee80211_set_wiphy_params(struct wiphy *wiphy, int radio_idx,
	}

	if (changed & WIPHY_PARAM_RTS_THRESHOLD) {
		err = drv_set_rts_threshold(local, radio_idx,
					    wiphy->rts_threshold);
		u32 rts_threshold;

		if ((radio_idx == -1) || (radio_idx >= wiphy->n_radio))
			rts_threshold = wiphy->rts_threshold;
		else
			rts_threshold =
				wiphy->radio_cfg[radio_idx].rts_threshold;

		err = drv_set_rts_threshold(local, radio_idx, rts_threshold);

		if (err)
			return err;
+9 −1
Original line number Diff line number Diff line
@@ -1756,6 +1756,7 @@ int ieee80211_reconfig(struct ieee80211_local *local)
	bool sched_scan_stopped = false;
	bool suspended = local->suspended;
	bool in_reconfig = false;
	u32 rts_threshold;

	lockdep_assert_wiphy(local->hw.wiphy);

@@ -1829,7 +1830,14 @@ int ieee80211_reconfig(struct ieee80211_local *local)
	drv_set_frag_threshold(local, -1, hw->wiphy->frag_threshold);

	/* setup RTS threshold */
	if (hw->wiphy->n_radio > 0) {
		for (i = 0; i < hw->wiphy->n_radio; i++) {
			rts_threshold = hw->wiphy->radio_cfg[i].rts_threshold;
			drv_set_rts_threshold(local, i, rts_threshold);
		}
	} else {
		drv_set_rts_threshold(local, -1, hw->wiphy->rts_threshold);
	}

	/* reset coverage class */
	drv_set_coverage_class(local, -1, hw->wiphy->coverage_class);