Also, disallow joining a secure mesh if the wiphy does not support authentication. Signed-off-by: Thomas Pedersen <thomas@xxxxxxxxxxx> --- net/mac80211/main.c | 4 ++++ net/wireless/mesh.c | 4 ++++ 2 files changed, 8 insertions(+), 0 deletions(-) diff --git a/net/mac80211/main.c b/net/mac80211/main.c index 562d298..0d3c16e 100644 --- a/net/mac80211/main.c +++ b/net/mac80211/main.c @@ -759,6 +759,10 @@ int ieee80211_register_hw(struct ieee80211_hw *hw) /* mesh depends on Kconfig, but drivers should set it if they want */ local->hw.wiphy->interface_modes &= ~BIT(NL80211_IFTYPE_MESH_POINT); #endif + /* if the underlying driver supports mesh, mac80211 will (at least) + * provide routing of mesh authentication frames to userspace */ + if (local->hw.wiphy->interface_modes & BIT(NL80211_IFTYPE_MESH_POINT)) + local->hw.wiphy->flags |= WIPHY_FLAG_MESH_AUTH; /* mac80211 supports control port protocol changing */ local->hw.wiphy->flags |= WIPHY_FLAG_CONTROL_PORT_PROTOCOL; diff --git a/net/wireless/mesh.c b/net/wireless/mesh.c index 0d4b226..0e5c122 100644 --- a/net/wireless/mesh.c +++ b/net/wireless/mesh.c @@ -72,6 +72,10 @@ int __cfg80211_join_mesh(struct cfg80211_registered_device *rdev, if (dev->ieee80211_ptr->iftype != NL80211_IFTYPE_MESH_POINT) return -EOPNOTSUPP; + if (!(rdev->wiphy.flags & WIPHY_FLAG_MESH_AUTH) && + setup->is_secure) + return -EOPNOTSUPP; + if (wdev->mesh_id_len) return -EALREADY; -- 1.7.4.1 -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html