add/remove NAN function is not supposed to be called/implemented for devices that uses user space DE. Reviewed-by: Johannes Berg Signed-off-by: Miri Korenblit --- net/wireless/core.c | 3 ++- net/wireless/nl80211.c | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/net/wireless/core.c b/net/wireless/core.c index 9f858a83e912..56c0e2e4bcb1 100644 --- a/net/wireless/core.c +++ b/net/wireless/core.c @@ -760,7 +760,8 @@ int wiphy_register(struct wiphy *wiphy) if (WARN_ON((wiphy->interface_modes & BIT(NL80211_IFTYPE_NAN)) && (!rdev->ops->start_nan || !rdev->ops->stop_nan || - !rdev->ops->add_nan_func || !rdev->ops->del_nan_func || + ((wiphy->nan_capa.flags & WIPHY_NAN_FLAGS_USERSPACE_DE) && + (!rdev->ops->add_nan_func || !rdev->ops->del_nan_func)) || !(wiphy->nan_supported_bands & BIT(NL80211_BAND_2GHZ))))) return -EINVAL; diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index 2187e148389d..61d5cc6622b4 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c @@ -15822,6 +15822,9 @@ static int nl80211_nan_add_func(struct sk_buff *skb, if (wdev->iftype != NL80211_IFTYPE_NAN) return -EOPNOTSUPP; + if (wdev->wiphy->nan_capa.flags & WIPHY_NAN_FLAGS_USERSPACE_DE) + return -EOPNOTSUPP; + if (!wdev_running(wdev)) return -ENOTCONN; @@ -16056,6 +16059,9 @@ static int nl80211_nan_del_func(struct sk_buff *skb, if (wdev->iftype != NL80211_IFTYPE_NAN) return -EOPNOTSUPP; + if (wdev->wiphy->nan_capa.flags & WIPHY_NAN_FLAGS_USERSPACE_DE) + return -EINVAL; + if (!wdev_running(wdev)) return -ENOTCONN; -- 2.34.1