qcacld-3.0: Config support to use BSSID in probe request RA

User configuration support to use scan request BSSID value
in Probe Request frame RA during the scan.

Change-Id: Ie0b7620428e1bfbd51e7430b6b7ad23ebede9e67
CRs-Fixed: 3021525
This commit is contained in:
Kiran Kumar Lokere
2021-05-12 23:56:24 -07:00
committed by Madan Koyyalamudi
parent 25778389e8
commit cde70adc46
6 changed files with 120 additions and 0 deletions

View File

@@ -2250,6 +2250,35 @@ wlan_mlme_set_rf_test_mode_enabled(struct wlan_objmgr_psoc *psoc, bool value);
QDF_STATUS QDF_STATUS
wlan_mlme_get_sta_miracast_mcc_rest_time(struct wlan_objmgr_psoc *psoc, wlan_mlme_get_sta_miracast_mcc_rest_time(struct wlan_objmgr_psoc *psoc,
uint32_t *value); uint32_t *value);
/**
* wlan_mlme_get_scan_probe_unicast_ra() - Get scan probe unicast RA cfg
*
* @psoc: pointer to psoc object
* @value: value which needs to filled by API
*
* This API gives scan probe request with unicast RA user config
*
* Return: QDF_STATUS
*/
QDF_STATUS
wlan_mlme_get_scan_probe_unicast_ra(struct wlan_objmgr_psoc *psoc,
bool *value);
/**
* wlan_mlme_set_scan_probe_unicast_ra() - Set scan probe unicast RA cfg
*
* @psoc: pointer to psoc object
* @value: set value
*
* This API sets scan probe request with unicast RA user config
*
* Return: QDF_STATUS
*/
QDF_STATUS
wlan_mlme_set_scan_probe_unicast_ra(struct wlan_objmgr_psoc *psoc,
bool value);
/** /**
* wlan_mlme_get_sap_mcc_chnl_avoid() - Check if SAP MCC needs to be avoided * wlan_mlme_get_sap_mcc_chnl_avoid() - Check if SAP MCC needs to be avoided
* *

View File

@@ -1576,6 +1576,7 @@ enum station_keepalive_method {
* @single_tid: Set replay counter for all TID * @single_tid: Set replay counter for all TID
* @allow_tpc_from_ap: Support for AP power constraint * @allow_tpc_from_ap: Support for AP power constraint
* @usr_disabled_roaming: User config for roaming disable * @usr_disabled_roaming: User config for roaming disable
* @usr_scan_probe_unicast_ra: User config unicast probe req in scan
*/ */
struct wlan_mlme_sta_cfg { struct wlan_mlme_sta_cfg {
uint32_t sta_keep_alive_period; uint32_t sta_keep_alive_period;
@@ -1598,6 +1599,7 @@ struct wlan_mlme_sta_cfg {
bool allow_tpc_from_ap; bool allow_tpc_from_ap;
enum station_keepalive_method sta_keepalive_method; enum station_keepalive_method sta_keepalive_method;
bool usr_disabled_roaming; bool usr_disabled_roaming;
bool usr_scan_probe_unicast_ra;
#ifdef FEATURE_WLAN_DIAG_SUPPORT_CSR #ifdef FEATURE_WLAN_DIAG_SUPPORT_CSR
host_event_wlan_status_payload_type event_payload; host_event_wlan_status_payload_type event_payload;
#endif #endif

View File

@@ -4143,6 +4143,40 @@ QDF_STATUS
ucfg_mlme_set_channel_bonding_5ghz(struct wlan_objmgr_psoc *psoc, ucfg_mlme_set_channel_bonding_5ghz(struct wlan_objmgr_psoc *psoc,
uint32_t value); uint32_t value);
/**
* ucfg_mlme_get_scan_probe_unicast_ra() - Get scan probe unicast RA cfg
*
* @psoc: pointer to psoc object
* @value: value which needs to filled by API
*
* This API gives scan probe request with unicast RA user config
*
* Return: QDF_STATUS
*/
static inline QDF_STATUS
ucfg_mlme_get_scan_probe_unicast_ra(struct wlan_objmgr_psoc *psoc,
bool *value)
{
return wlan_mlme_get_scan_probe_unicast_ra(psoc, value);
}
/**
* ucfg_mlme_set_scan_probe_unicast_ra() - Set scan probe unicast RA cfg
*
* @psoc: pointer to psoc object
* @value: set value
*
* This API sets scan probe request with unicast RA user config
*
* Return: QDF_STATUS
*/
static inline QDF_STATUS
ucfg_mlme_set_scan_probe_unicast_ra(struct wlan_objmgr_psoc *psoc,
bool value)
{
return wlan_mlme_set_scan_probe_unicast_ra(psoc, value);
}
/** /**
* ucfg_mlme_get_peer_phymode() - get phymode of peer * ucfg_mlme_get_peer_phymode() - get phymode of peer
* @psoc: pointer to psoc object * @psoc: pointer to psoc object

View File

@@ -2609,6 +2609,39 @@ wlan_mlme_get_sta_miracast_mcc_rest_time(struct wlan_objmgr_psoc *psoc,
return QDF_STATUS_SUCCESS; return QDF_STATUS_SUCCESS;
} }
QDF_STATUS
wlan_mlme_get_scan_probe_unicast_ra(struct wlan_objmgr_psoc *psoc,
bool *value)
{
struct wlan_mlme_psoc_ext_obj *mlme_obj;
mlme_obj = mlme_get_psoc_ext_obj(psoc);
if (!mlme_obj)
return QDF_STATUS_E_FAILURE;
*value = mlme_obj->cfg.sta.usr_scan_probe_unicast_ra;
mlme_legacy_debug("scan_probe_unicast_ra %d", *value);
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
wlan_mlme_set_scan_probe_unicast_ra(struct wlan_objmgr_psoc *psoc,
bool value)
{
struct wlan_mlme_psoc_ext_obj *mlme_obj;
mlme_obj = mlme_get_psoc_ext_obj(psoc);
if (!mlme_obj)
return QDF_STATUS_E_FAILURE;
mlme_legacy_debug("scan_probe_unicast_ra %d", value);
mlme_obj->cfg.sta.usr_scan_probe_unicast_ra = value;
return QDF_STATUS_SUCCESS;
}
QDF_STATUS QDF_STATUS
wlan_mlme_get_sap_mcc_chnl_avoid(struct wlan_objmgr_psoc *psoc, wlan_mlme_get_sap_mcc_chnl_avoid(struct wlan_objmgr_psoc *psoc,
uint8_t *value) uint8_t *value)

View File

@@ -6976,6 +6976,8 @@ wlan_hdd_wifi_test_config_policy[
.type = NLA_FLAG}, .type = NLA_FLAG},
[QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_HE_TX_SUPPDU] = { [QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_HE_TX_SUPPDU] = {
.type = NLA_U8}, .type = NLA_U8},
[QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_USE_BSSID_IN_PROBE_REQ_RA] = {
.type = NLA_U8},
[QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_HE_HTC_HE_SUPP] = { [QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_HE_HTC_HE_SUPP] = {
.type = NLA_U8}, .type = NLA_U8},
[QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_HE_OMI_TX] = { [QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_HE_OMI_TX] = {
@@ -10238,6 +10240,20 @@ __wlan_hdd_cfg80211_set_wifi_test_config(struct wiphy *wiphy,
cfg_val); cfg_val);
} }
cmd_id =
QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_USE_BSSID_IN_PROBE_REQ_RA;
if (tb[cmd_id]) {
cfg_val = nla_get_u8(tb[cmd_id]);
if (cfg_val)
status = ucfg_mlme_set_scan_probe_unicast_ra(
hdd_ctx->psoc, true);
else
status = ucfg_mlme_set_scan_probe_unicast_ra(
hdd_ctx->psoc, false);
if (!QDF_IS_STATUS_SUCCESS(status))
hdd_err("unable to set unicat probe ra cfg");
}
cmd_id = QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_HE_OMI_TX; cmd_id = QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_HE_OMI_TX;
if (tb[cmd_id]) { if (tb[cmd_id]) {
struct nlattr *tb2[QCA_WLAN_VENDOR_ATTR_HE_OMI_MAX + 1]; struct nlattr *tb2[QCA_WLAN_VENDOR_ATTR_HE_OMI_MAX + 1];

View File

@@ -665,6 +665,12 @@ static int __wlan_hdd_cfg80211_scan(struct wiphy *wiphy,
/* Use default scan priority */ /* Use default scan priority */
params.priority = SCAN_PRIORITY_COUNT; params.priority = SCAN_PRIORITY_COUNT;
status = ucfg_mlme_get_scan_probe_unicast_ra(
hdd_ctx->psoc,
&params.scan_probe_unicast_ra);
if (QDF_IS_STATUS_ERROR(status))
hdd_err("Failed to get unicast probe req ra cfg");
status = wlan_cfg80211_scan(vdev, request, &params); status = wlan_cfg80211_scan(vdev, request, &params);
hdd_objmgr_put_vdev_by_user(vdev, WLAN_OSIF_SCAN_ID); hdd_objmgr_put_vdev_by_user(vdev, WLAN_OSIF_SCAN_ID);
error: error: