*
  * @ASSOC_REQ_DISABLE_HT:  Disable HT (802.11n)
  * @ASSOC_REQ_DISABLE_VHT:  Disable VHT
+ * @ASSOC_REQ_USE_RRM: Declare RRM capability in this association
  */
 enum cfg80211_assoc_req_flags {
        ASSOC_REQ_DISABLE_HT            = BIT(0),
        ASSOC_REQ_DISABLE_VHT           = BIT(1),
+       ASSOC_REQ_USE_RRM               = BIT(2),
 };
 
 /**
 
  * @NL80211_ATTR_TDLS_INITIATOR: flag attribute indicating the current end is
  *     the TDLS link initiator.
  *
+ * @NL80211_ATTR_USE_RRM: flag for indicating whether the current connection
+ *     shall support Radio Resource Measurements (11k). This attribute can be
+ *     used with %NL80211_CMD_ASSOCIATE and %NL80211_CMD_CONNECT requests.
+ *     User space applications are expected to use this flag only if the
+ *     underlying device supports these minimal RRM features:
+ *             %NL80211_FEATURE_DS_PARAM_SET_IE_IN_PROBES,
+ *             %NL80211_FEATURE_QUIET,
+ *     If this flag is used, driver must add the Power Capabilities IE to the
+ *     association request. In addition, it must also set the RRM capability
+ *     flag in the association request's Capability Info field.
+ *
  * @NL80211_ATTR_MAX: highest attribute number currently defined
  * @__NL80211_ATTR_AFTER_LAST: internal use
  */
 
        NL80211_ATTR_TDLS_INITIATOR,
 
+       NL80211_ATTR_USE_RRM,
+
        /* add attributes here, update the policy in nl80211.c */
 
        __NL80211_ATTR_AFTER_LAST,
 
        [NL80211_ATTR_TDLS_PEER_CAPABILITY] = { .type = NLA_U32 },
        [NL80211_ATTR_IFACE_SOCKET_OWNER] = { .type = NLA_FLAG },
        [NL80211_ATTR_CSA_C_OFFSETS_TX] = { .type = NLA_BINARY },
+       [NL80211_ATTR_USE_RRM] = { .type = NLA_FLAG },
 };
 
 /* policy for the key attributes */
                       sizeof(req.vht_capa));
        }
 
+       if (nla_get_flag(info->attrs[NL80211_ATTR_USE_RRM])) {
+               if (!(rdev->wiphy.features &
+                     NL80211_FEATURE_DS_PARAM_SET_IE_IN_PROBES) ||
+                   !(rdev->wiphy.features & NL80211_FEATURE_QUIET))
+                       return -EINVAL;
+               req.flags |= ASSOC_REQ_USE_RRM;
+       }
+
        err = nl80211_crypto_settings(rdev, info, &req.crypto, 1);
        if (!err) {
                wdev_lock(dev->ieee80211_ptr);
                       sizeof(connect.vht_capa));
        }
 
+       if (nla_get_flag(info->attrs[NL80211_ATTR_USE_RRM])) {
+               if (!(rdev->wiphy.features &
+                     NL80211_FEATURE_DS_PARAM_SET_IE_IN_PROBES) ||
+                   !(rdev->wiphy.features & NL80211_FEATURE_QUIET))
+                       return -EINVAL;
+               connect.flags |= ASSOC_REQ_USE_RRM;
+       }
+
        wdev_lock(dev->ieee80211_ptr);
        err = cfg80211_connect(rdev, dev, &connect, connkeys, NULL);
        wdev_unlock(dev->ieee80211_ptr);