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

Commit 33dde2bf authored by Chun-Yeow Yeoh's avatar Chun-Yeow Yeoh Committed by Johannes Berg
Browse files

nl80211: allow the use of DFS channel in mesh



This permits the use of DFS channel once the CAC is conducted and
no radar is detected.

Signed-off-by: default avatarChun-Yeow Yeoh <yeohchunyeow@gmail.com>
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent ad7e718c
Loading
Loading
Loading
Loading
+11 −2
Original line number Original line Diff line number Diff line
@@ -99,6 +99,7 @@ int __cfg80211_join_mesh(struct cfg80211_registered_device *rdev,
			 const struct mesh_config *conf)
			 const struct mesh_config *conf)
{
{
	struct wireless_dev *wdev = dev->ieee80211_ptr;
	struct wireless_dev *wdev = dev->ieee80211_ptr;
	u8 radar_detect_width = 0;
	int err;
	int err;


	BUILD_BUG_ON(IEEE80211_MAX_SSID_LEN != IEEE80211_MAX_MESH_ID_LEN);
	BUILD_BUG_ON(IEEE80211_MAX_SSID_LEN != IEEE80211_MAX_MESH_ID_LEN);
@@ -177,8 +178,16 @@ int __cfg80211_join_mesh(struct cfg80211_registered_device *rdev,
	if (!cfg80211_reg_can_beacon(&rdev->wiphy, &setup->chandef))
	if (!cfg80211_reg_can_beacon(&rdev->wiphy, &setup->chandef))
		return -EINVAL;
		return -EINVAL;


	err = cfg80211_can_use_chan(rdev, wdev, setup->chandef.chan,
	err = cfg80211_chandef_dfs_required(wdev->wiphy, &setup->chandef);
				    CHAN_MODE_SHARED);
	if (err < 0)
		return err;
	if (err)
		radar_detect_width = BIT(setup->chandef.width);

	err = cfg80211_can_use_iftype_chan(rdev, wdev, wdev->iftype,
					   setup->chandef.chan,
					   CHAN_MODE_SHARED,
					   radar_detect_width);
	if (err)
	if (err)
		return err;
		return err;