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:

committed by
Madan Koyyalamudi

parent
25778389e8
commit
cde70adc46
@@ -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
|
||||||
*
|
*
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
|
@@ -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)
|
||||||
|
@@ -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];
|
||||||
|
@@ -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,
|
||||||
|
¶ms.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, ¶ms);
|
status = wlan_cfg80211_scan(vdev, request, ¶ms);
|
||||||
hdd_objmgr_put_vdev_by_user(vdev, WLAN_OSIF_SCAN_ID);
|
hdd_objmgr_put_vdev_by_user(vdev, WLAN_OSIF_SCAN_ID);
|
||||||
error:
|
error:
|
||||||
|
Reference in New Issue
Block a user