diff mbox

nl80211: allow the use of DFS channel in mesh

Message ID 1385971550-4892-1-git-send-email-yeohchunyeow@gmail.com (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Chun-Yeow Yeoh Dec. 2, 2013, 8:05 a.m. UTC
This permits the use of DFS channel once the CAC is conducted and
no radar is detected.

Signed-off-by: Chun-Yeow Yeoh <yeohchunyeow@gmail.com>
---
 net/wireless/mesh.c |   13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

Comments

Johannes Berg Dec. 3, 2013, 12:50 p.m. UTC | #1
On Mon, 2013-12-02 at 16:05 +0800, Chun-Yeow Yeoh wrote:
> This permits the use of DFS channel once the CAC is conducted and
> no radar is detected.

This seems pretty pointless right now? There's nothing supporting it, is
there?

johannes

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Chun-Yeow Yeoh Dec. 4, 2013, 1:26 a.m. UTC | #2
> This seems pretty pointless right now? There's nothing supporting it, is
> there?
>
I have currently extended the iw to trigger the CAC on DFC channel
using NL80211_CMD_RADAR_DETECT. But not able to join mesh on DFS even
it is clear.

So this patch at least allows us to trigger beaconing and bring up the
mesh on DFS channel.

-----
Chun-Yeow
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Johannes Berg Dec. 4, 2013, 8:11 a.m. UTC | #3
On Wed, 2013-12-04 at 09:26 +0800, Yeoh Chun-Yeow wrote:
> > This seems pretty pointless right now? There's nothing supporting it, is
> > there?
> >
> I have currently extended the iw to trigger the CAC on DFC channel
> using NL80211_CMD_RADAR_DETECT. But not able to join mesh on DFS even
> it is clear.
> 
> So this patch at least allows us to trigger beaconing and bring up the
> mesh on DFS channel.

Yeah, never mind. I was confused about the "TODO DFS" in the mesh code,
but that's with CSA *to* a radar channel.

I'll apply this.

johannes

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/net/wireless/mesh.c b/net/wireless/mesh.c
index b0e1869..9c7a11a 100644
--- a/net/wireless/mesh.c
+++ b/net/wireless/mesh.c
@@ -99,6 +99,7 @@  int __cfg80211_join_mesh(struct cfg80211_registered_device *rdev,
 			 const struct mesh_config *conf)
 {
 	struct wireless_dev *wdev = dev->ieee80211_ptr;
+	u8 radar_detect_width = 0;
 	int err;
 
 	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))
 		return -EINVAL;
 
-	err = cfg80211_can_use_chan(rdev, wdev, setup->chandef.chan,
-				    CHAN_MODE_SHARED);
+	err = cfg80211_chandef_dfs_required(wdev->wiphy, &setup->chandef);
+	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)
 		return err;