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

Commit 1d5e41a3 authored by Ajit Vaishya's avatar Ajit Vaishya
Browse files

prima: Add new Vendor command to configured ext Roam Params

Add new Vendor command i.e. QCA_NL80211_VENDOR_SUBCMD_ROAM
and its attribute to configured extended roam parameter
such Blacklist Bssid and Whitelist ssid.
Advertise control roaming feature i.e.
WIFI_FEATURE_CONTROL_ROAMING based firmware capability
such as BLACKLIST_BSSID.

Change-Id: I1bc676788d22823cbf72fcd0b47582042fc9eb5f
CRs-Fixed: 2667163
parent 4b039f81
Loading
Loading
Loading
Loading
+185 −0
Original line number Diff line number Diff line
@@ -210,6 +210,8 @@ enum qca_nl80211_vendor_subcmds {
    /* Get Wifi Specific Info */
    QCA_NL80211_VENDOR_SUBCMD_GET_WIFI_INFO = 61,

    /* Update Roam Config Parameter */
    QCA_NL80211_VENDOR_SUBCMD_ROAM = 64,
    /*
     * APIs corresponding to the sub commands 65-68 are deprecated.
     * These sub commands are reserved and not supposed to be used
@@ -1498,6 +1500,8 @@ enum qca_wlan_vendor_attr_get_logger_features {

#define WIFI_FEATURE_RTT3               0x20000  /* RTT3 */

#define WIFI_FEATURE_CONTROL_ROAMING    0x800000  /* Enable/Disable roaming */

/* WIFI CONFIG Parameter defines */
#define WIFI_CONFIG_SET_AVG_STATS_FACTOR 0x0001  /* Average stats factor */
#define WIFI_CONFIG_SET_GUARD_TIME      0x0002  /* Guard Time */
@@ -1656,6 +1660,187 @@ enum wifi_logger_supported_features {
    WIFI_LOGGER_WATCHDOG_TIMER_SUPPORTED = (1 << (6)),
};

/**
 * enum qca_wlan_vendor_attr_roaming_config_params: Attributes for data used by
 * QCA_NL80211_VENDOR_SUBCMD_ROAM sub command.
 *
 * @QCA_WLAN_VENDOR_ATTR_ROAMING_SUBCMD: Unsigned 32-bit value.
 *      Represents the different roam sub commands referred by
 *      enum qca_wlan_vendor_roaming_subcmd.
 *
 * @QCA_WLAN_VENDOR_ATTR_ROAMING_REQ_ID: Unsigned 32-bit value.
 *      Represents the Request ID for the specific set of commands.
 *      This also helps to map specific set of commands to the respective
 *      ID / client. e.g., helps to identify the user entity configuring the
 *      Blacklist BSSID and accordingly clear the respective ones with the
 *      matching ID.
 *
 * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_WHITE_LIST_SSID_NUM_NETWORKS: Unsigned
 *      32-bit value.Represents the number of whitelist SSIDs configured.
 *
 * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_WHITE_LIST_SSID_LIST: Nested attribute
 *      to carry the list of Whitelist SSIDs.
 *
 * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_WHITE_LIST_SSID: SSID (binary attribute,
 *      0..32 octets). Represents the white list SSID. Whitelist SSIDs
 *      represent the list of SSIDs to which the firmware/driver can consider
 *      to roam to.
 *
 * The following PARAM_A_BAND_XX attributes are applied to 5GHz BSSIDs when
 * comparing with a 2.4GHz BSSID. They are not applied when comparing two
 * 5GHz BSSIDs.The following attributes are set through the Roaming SUBCMD -
 * QCA_WLAN_VENDOR_ROAMING_SUBCMD_SET_EXTSCAN_ROAM_PARAMS.
 *
 * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_A_BAND_BOOST_THRESHOLD: Signed 32-bit
 *      value, RSSI threshold above which 5GHz RSSI is favored.
 *
 * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_A_BAND_PENALTY_THRESHOLD: Signed 32-bit
 *      value, RSSI threshold below which 5GHz RSSI is penalized.
 *
 * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_A_BAND_BOOST_FACTOR: Unsigned 32-bit
 *      value, factor by which 5GHz RSSI is boosted.
 *      boost=(RSSI_measured-5GHz_boost_threshold)*5GHz_boost_factor
 *
 * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_A_BAND_PENALTY_FACTOR: Unsigned 32-bit
 *      value, factor by which 5GHz RSSI is penalized.
 *      penalty=(5GHz_penalty_threshold-RSSI_measured)*5GHz_penalty_factor
 *
 * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_A_BAND_MAX_BOOST: Unsigned 32-bit
 *      value, maximum boost that can be applied to a 5GHz RSSI.
 *
 * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_LAZY_ROAM_HISTERESYS: Unsigned 32-bit
 *      value, boost applied to current BSSID to ensure the currently
 *      associated BSSID is favored so as to prevent ping-pong situations.
 *
 * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_ALERT_ROAM_RSSI_TRIGGER: Signed 32-bit
 *      value, RSSI below which "Alert" roam is enabled.
 *      "Alert" mode roaming - firmware is "urgently" hunting for another BSSID
 *      because the RSSI is low, or because many successive beacons have been
 *      lost or other bad link conditions.
 *
 * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_LAZY_ROAM_ENABLE: Unsigned 32-bit
 *      value. 1-Enable, 0-Disable. Represents "Lazy" mode, where
 *      firmware is hunting for a better BSSID or white listed SSID even though
 *      the RSSI of the link is good. The parameters enabling the roaming are
 *      configured through the PARAM_A_BAND_XX attrbutes.
 *
 * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_BSSID_PREFS: Nested attribute,
 *      represents the BSSIDs preferred over others while evaluating them
 *      for the roaming.
 *
 * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_LAZY_ROAM_NUM_BSSID: Unsigned
 *      32-bit value. Represents the number of preferred BSSIDs set.
 *
 * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_LAZY_ROAM_BSSID: 6-byte MAC
 *      address representing the BSSID to be preferred.
 *
 * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_LAZY_ROAM_RSSI_MODIFIER: Signed
 *      32-bit value, representing the modifier to be applied to the RSSI of
 *      the BSSID for the purpose of comparing it with other roam candidate.
 *
 * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_BSSID_PARAMS: Nested attribute,
 *      represents the BSSIDs to get blacklisted for roaming.
 *
 * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_BSSID_PARAMS_NUM_BSSID: Unsigned
 *      32-bit value, represents the number of blacklisted BSSIDs.
 *
 * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_BSSID_PARAMS_BSSID: 6-byte MAC
 *      address representing the Blacklisted BSSID.
 *
 * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_AFTER_LAST: After last
 * @QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_MAX: Max
 */
enum qca_wlan_vendor_attr_roaming_config_params {
    QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_INVALID = 0,

    QCA_WLAN_VENDOR_ATTR_ROAMING_SUBCMD = 1,
    QCA_WLAN_VENDOR_ATTR_ROAMING_REQ_ID = 2,
    QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_WHITE_LIST_SSID_NUM_NETWORKS = 3,
    QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_WHITE_LIST_SSID_LIST = 4,
    QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_WHITE_LIST_SSID = 5,
    QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_A_BAND_BOOST_THRESHOLD = 6,
    QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_A_BAND_PENALTY_THRESHOLD = 7,
    QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_A_BAND_BOOST_FACTOR = 8,
    QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_A_BAND_PENALTY_FACTOR = 9,
    QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_A_BAND_MAX_BOOST = 10,
    QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_LAZY_ROAM_HISTERESYS = 11,
    QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_ALERT_ROAM_RSSI_TRIGGER = 12,
    QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_LAZY_ROAM_ENABLE = 13,
    QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_BSSID_PREFS = 14,
    QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_LAZY_ROAM_NUM_BSSID = 15,
    QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_LAZY_ROAM_BSSID = 16,
    QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_LAZY_ROAM_RSSI_MODIFIER = 17,
    QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_BSSID_PARAMS = 18,
    QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_BSSID_PARAMS_NUM_BSSID = 19,
    QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_BSSID_PARAMS_BSSID = 20,

    /* keep last */
    QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_AFTER_LAST,
    QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_MAX =
    QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_AFTER_LAST - 1,
};

/**
 * enum qca_wlan_vendor_roaming_subcmd: Referred by
 * QCA_WLAN_VENDOR_ATTR_ROAMING_SUBCMD.
 *
 * @QCA_WLAN_VENDOR_ROAMING_SUBCMD_SSID_WHITE_LIST: Sub command to
 *      configure the white list SSIDs. These are configured through
 *      the following attributes.
 *      QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_WHITE_LIST_SSID_NUM_NETWORKS,
 *      QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_WHITE_LIST_SSID_LIST,
 *      QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_WHITE_LIST_SSID
 *
 * @QCA_WLAN_VENDOR_ROAMING_SUBCMD_SET_EXTSCAN_ROAM_PARAMS: Sub command to
 *      configure the Roam params. These parameters are evaluated on the extscan
 *      results. Refers the attributes PARAM_A_BAND_XX above to configure the
 *      params.
 *
 * @QCA_WLAN_VENDOR_ROAMING_SUBCMD_SET_LAZY_ROAM: Sets the Lazy roam. Uses
 *      the attribute QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_LAZY_ROAM_ENABLE
 *      to enable/disable Lazy roam.
 *
 * @QCA_WLAN_VENDOR_ROAMING_SUBCMD_SET_BSSID_PREFS: Sets the BSSID
 *      preference. Contains the attribute
 *      QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_BSSID_PREFS to set the BSSID
 *      preference.
 *
 * @QCA_WLAN_VENDOR_ROAMING_SUBCMD_SET_BSSID_PARAMS: set bssid params
 *
 * @QCA_WLAN_VENDOR_ROAMING_SUBCMD_SET_BLACKLIST_BSSID: Sets the Blacklist
 *      BSSIDs. Refers QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_BSSID_PARAMS to
 *      set the same.
 *
 * @QCA_WLAN_VENDOR_ROAMING_SUBCMD_CONTROL_SET: Command to set the
 *      roam control config to the driver with the attribute
 *      QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_CONTROL.
 *
 * @QCA_WLAN_VENDOR_ROAMING_SUBCMD_CONTROL_GET: Command to obtain the
 *      roam control config from driver with the attribute
 *      QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_CONTROL.
 *      For the get, the attribute for the configuration to be queried shall
 *      carry any of its acceptable value to the driver. In return, the driver
 *      shall send the configured values within the same attribute to the user
 *      space.
 *
 * @QCA_WLAN_VENDOR_ROAMING_SUBCMD_CONTROL_CLEAR: Command to clear the
 *      roam control config in the driver with the attribute
 *      QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_CONTROL.
 *      The driver shall continue with its default roaming behavior when data
 *      corresponding to an attribute is cleared.
 */
enum qca_wlan_vendor_roaming_subcmd {
    QCA_WLAN_VENDOR_ROAMING_SUBCMD_SSID_WHITE_LIST = 1,
    QCA_WLAN_VENDOR_ROAMING_SUBCMD_SET_EXTSCAN_ROAM_PARAMS = 2,
    QCA_WLAN_VENDOR_ROAMING_SUBCMD_SET_LAZY_ROAM = 3,
    QCA_WLAN_VENDOR_ROAMING_SUBCMD_SET_BSSID_PREFS = 4,
    QCA_WLAN_VENDOR_ROAMING_SUBCMD_SET_BSSID_PARAMS = 5,
    QCA_WLAN_VENDOR_ROAMING_SUBCMD_SET_BLACKLIST_BSSID = 6,
    QCA_WLAN_VENDOR_ROAMING_SUBCMD_CONTROL_SET = 7,
    QCA_WLAN_VENDOR_ROAMING_SUBCMD_CONTROL_GET = 8,
    QCA_WLAN_VENDOR_ROAMING_SUBCMD_CONTROL_CLEAR = 9,
};

struct cfg80211_bss* wlan_hdd_cfg80211_update_bss_db( hdd_adapter_t *pAdapter,
                                      tCsrRoamInfo *pRoamInfo
                                      );
+217 −0
Original line number Diff line number Diff line
@@ -6131,6 +6131,13 @@ __wlan_hdd_cfg80211_get_supported_features(struct wiphy *wiphy,
    fset |= WIFI_FEATURE_AP_STA;
#endif
#ifdef FEATURE_WLAN_LFR
    if (sme_IsFeatureSupportedByFW(BSSID_BLACKLIST)) {
        fset |= WIFI_FEATURE_CONTROL_ROAMING;
        hddLog(LOG1, FL("CONTROL_ROAMING supported by driver"));
    }
#endif
#ifdef WLAN_FEATURE_LINK_LAYER_STATS
   if ((TRUE == pHddCtx->cfg_ini->fEnableLLStats) &&
       (TRUE == sme_IsFeatureSupportedByFW(LINK_LAYER_STATS_MEAS))) {
@@ -6743,6 +6750,208 @@ wlan_hdd_cfg80211_get_wifi_info(struct wiphy *wiphy,
    return ret;
}
#define PARAM_SET_BSSID \
    QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_BSSID_PARAMS_BSSID
#define PARAMS_NUM_BSSID \
    QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_BSSID_PARAMS_NUM_BSSID
#define MAX_ROAMING_PARAM \
    QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_MAX
#define PARAM_BSSID_PARAMS \
    QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_BSSID_PARAMS
static const struct
nla_policy
wlan_hdd_set_roam_param_policy[MAX_ROAMING_PARAM + 1] = {
    [QCA_WLAN_VENDOR_ATTR_ROAMING_SUBCMD] = {.type = NLA_U32 },
    [QCA_WLAN_VENDOR_ATTR_ROAMING_REQ_ID] = {.type = NLA_U32 },
    [PARAMS_NUM_BSSID] = { .type = NLA_U32 },
    [PARAM_SET_BSSID]       = {
        .type = NLA_UNSPEC,
        .len = HDD_MAC_ADDR_LEN},
};
/**
 * hdd_set_blacklist_bssid() - parse set blacklist bssid
 * @hHal:       HAL Handle
 * @tb:            list of attributes
 * @session_id:    session id
 *
 * Return: 0 on success; error number on failure
 */
static int hdd_set_blacklist_bssid(tHalHandle hHal,
                                   struct nlattr **tb,
                                   uint8_t session_id)
{
    int rem, i;
    uint32_t count;
    struct nlattr *tb2[MAX_ROAMING_PARAM + 1];
    struct nlattr *curr_attr = NULL;
    struct roam_ext_params *roam_params = NULL;
    roam_params = vos_mem_malloc(sizeof(struct roam_ext_params));
    if (NULL == roam_params) {
        hddLog(LOGE, FL("vos_mem_alloc failed "));
        return eHAL_STATUS_FAILED_ALLOC;
    }
    /* Parse and fetch number of blacklist BSSID */
    if (!tb[PARAMS_NUM_BSSID]) {
        hddLog(LOGE, FL("attr num of blacklist bssid failed"));
        goto fail;
    }
    count = nla_get_u32(tb[PARAMS_NUM_BSSID]);
    if (count > MAX_BSSID_AVOID_LIST) {
        hddLog(LOGE, FL("Blacklist BSSID count %u exceeds max %u"),
               count, MAX_BSSID_AVOID_LIST);
        goto fail;
    }
    roam_params->blacklist_timedout = 0;
    hddLog(LOG1, FL("Num of blacklist BSSID (%d)"), count);
    i = 0;
    if (count && tb[PARAM_BSSID_PARAMS]) {
        nla_for_each_nested(curr_attr,
                tb[PARAM_BSSID_PARAMS], rem) {
                if (i == count) {
                    hddLog(LOGE, FL("Ignoring excess Blacklist BSSID"));
                    break;
                }
                if (nla_parse(tb2,
                    QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_MAX,
                    nla_data(curr_attr),
                    nla_len(curr_attr),
                    wlan_hdd_set_roam_param_policy)) {
                        hddLog(LOGE, FL("nla_parse failed"));
                        goto fail;
                }
                /* Parse and fetch MAC address */
                if (!tb2[PARAM_SET_BSSID]) {
                        hddLog(LOGE, FL("attr blacklist addr failed"));
                        goto fail;
                }
                nla_memcpy(roam_params->bssid_avoid_list[i].bytes,
                           tb2[PARAM_SET_BSSID], VOS_MAC_ADDR_SIZE);
                hddLog(VOS_TRACE_LEVEL_INFO, FL(MAC_ADDRESS_STR),
                       MAC_ADDR_ARRAY(roam_params->bssid_avoid_list[i].bytes));
                i++;
        }
    }
    if (i < count)
        hddLog(LOG1, FL("Num Blacklist BSSID %u less than expected %u"),
               i, count);
    roam_params->num_bssid_avoid_list = i;
    hddLog(LOG1, FL("session  id %d "), session_id);
    return 0;
fail:
    if (roam_params)
        vos_mem_free(roam_params);
    return -EINVAL;
}
/**
 * __wlan_hdd_cfg80211_set_ext_roam_params() - Settings for roaming parameters
 * @wiphy:                 The wiphy structure
 * @wdev:                  The wireless device
 * @data:                  Data passed by framework
 * @data_len:              Parameters to be configured passed as data
 *
 * The roaming related parameters are configured by the framework
 * using this interface.
 *
 * Return: Return either success or failure code.
 */
static int
__wlan_hdd_cfg80211_set_ext_roam_params(struct wiphy *wiphy,
                                        struct wireless_dev *wdev,
                                        const void *data, int data_len)
{
    struct net_device *dev = wdev->netdev;
    hdd_adapter_t *pAdapter = WLAN_HDD_GET_PRIV_PTR(dev);
    hdd_context_t *hdd_ctx = wiphy_priv(wiphy);
    tHalHandle hHal = WLAN_HDD_GET_HAL_CTX(pAdapter);
    uint32_t cmd_type, req_id;
    struct nlattr *tb_vendor[MAX_ROAMING_PARAM + 1];
    int ret = 0;
    ENTER();
    if (VOS_FTM_MODE == hdd_get_conparam()) {
        hddLog(LOGE, FL("Command not allowed in FTM mode"));
        return -EINVAL;
    }
    ret = wlan_hdd_validate_context(hdd_ctx);
    if (0 != ret) {
        hddLog(LOGE, FL("HDD context is not valid"));
        return -EINVAL;
    }
    if (nla_parse(tb_vendor, QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_MAX, data,
        data_len, wlan_hdd_set_roam_param_policy)) {
        hddLog(LOGE, FL("ROAM PARAMS NL CMD parsing failed"));
        return -EINVAL;
    }
    /* Parse and fetch Command Type */
    if (!tb_vendor[QCA_WLAN_VENDOR_ATTR_ROAMING_SUBCMD]) {
        hddLog(LOGE, FL("roam cmd type failed"));
        return -EINVAL;
    }
    cmd_type = nla_get_u32(tb_vendor[QCA_WLAN_VENDOR_ATTR_ROAMING_SUBCMD]);
    if (!tb_vendor[QCA_WLAN_VENDOR_ATTR_ROAMING_REQ_ID]) {
        hddLog(LOGE, FL("attr request id failed"));
        return -EINVAL;
    }
    req_id = nla_get_u32(
         tb_vendor[QCA_WLAN_VENDOR_ATTR_ROAMING_REQ_ID]);
    hddLog(LOG1, FL("Req Id: %u Cmd Type: %u"), req_id, cmd_type);
    switch (cmd_type) {
    case QCA_WLAN_VENDOR_ROAMING_SUBCMD_SET_BLACKLIST_BSSID:
         ret = hdd_set_blacklist_bssid(hHal,
                   tb_vendor, pAdapter->sessionId);
         if (ret)
             return ret;
         break;
    default:
         break;
    }
    EXIT();
    return ret;
}
/**
 * wlan_hdd_cfg80211_set_ext_roam_params() - set ext scan roam params
 * @wiphy:   pointer to wireless wiphy structure.
 * @wdev:    pointer to wireless_dev structure.
 * @data:    Pointer to the data to be passed via vendor interface
 * @data_len:Length of the data to be passed
 *
 * Return:   Return the Success or Failure code.
 */
static int
wlan_hdd_cfg80211_set_ext_roam_params(struct wiphy *wiphy,
                              struct wireless_dev *wdev,
                              const void *data,
                              int data_len)
{
    int ret = 0;
    vos_ssr_protect(__func__);
    ret = __wlan_hdd_cfg80211_set_ext_roam_params(wiphy,
          wdev, data, data_len);
    vos_ssr_unprotect(__func__);
    return ret;
}
/*
 * define short names for the global vendor params
@@ -8717,6 +8926,14 @@ const struct wiphy_vendor_command hdd_wiphy_vendor_commands[] =
                  WIPHY_VENDOR_CMD_NEED_RUNNING,
        .doit = wlan_hdd_cfg80211_get_wifi_info
    },
    {
        .info.vendor_id = QCA_NL80211_VENDOR_ID,
        .info.subcmd = QCA_NL80211_VENDOR_SUBCMD_ROAM,
        .flags = WIPHY_VENDOR_CMD_NEED_WDEV |
                 WIPHY_VENDOR_CMD_NEED_NETDEV|
                  WIPHY_VENDOR_CMD_NEED_RUNNING,
        .doit = wlan_hdd_cfg80211_set_ext_roam_params
    },
    {
        .info.vendor_id = QCA_NL80211_VENDOR_ID,
        .info.subcmd = QCA_NL80211_VENDOR_SUBCMD_GET_RING_DATA,
+3 −0
Original line number Diff line number Diff line
@@ -159,6 +159,9 @@ typedef enum {
   /*70 reserved for WIFI_DUAL_BAND_ENABLE */
   PROBE_RSP_TEMPLATE_VER1 = 71,
   STA_MONITOR_SCC = 72,
#ifdef FEATURE_WLAN_LFR
   BSSID_BLACKLIST = 73,
#endif
   //MAX_FEATURE_SUPPORTED = 128
} placeHolderInCapBitmap;

+8 −0
Original line number Diff line number Diff line
@@ -4146,4 +4146,12 @@ static inline eHalStatus sme_handle_sae_msg(tHalHandle hal, uint8_t session_id,
}
#endif

#define MAX_BSSID_AVOID_LIST 16

struct roam_ext_params {
    uint8_t blacklist_timedout;
    uint8_t num_bssid_avoid_list;
    v_MACADDR_t bssid_avoid_list[MAX_BSSID_AVOID_LIST];
};

#endif //#if !defined( __SME_API_H )
+1 −0
Original line number Diff line number Diff line
@@ -6934,6 +6934,7 @@ typedef enum {
    /* 70 reserved for WIFI_DUAL_BAND_ENABLE */
    PROBE_RSP_TEMPLATE_VER1 = 71,
    STA_MONITOR_SCC         = 72,
    BSSID_BLACKLIST         = 73,
    MAX_FEATURE_SUPPORTED  = 128,
} placeHolderInCapBitmap;