qcacld-3.0: Add changes to get/flush scan results

Add changes to get/flush scan results. Also add support to
convert legacy filter and scan entry to converged one and vice
versa.

Change-Id: I590745af3943a8975fb0644d02e58b2133c9f1cb
CRs-Fixed: 2013212
This commit is contained in:
Abhishek Singh 2017-01-25 18:10:31 +05:30 • committed by qcabuildsw
commit 6092fbbd64
9 changed files with 851 additions and 68 deletions

View file

@ -8200,6 +8200,36 @@ out:
}
#ifdef NAPIER_SCAN
/**
*
* hdd_post_cds_enable_config() - HDD post cds start config helper
* @adapter - Pointer to the HDD
*
* Return: None
*/
static inline QDF_STATUS hdd_register_bcn_cb(hdd_context_t *hdd_ctx)
{
QDF_STATUS status;
status = ucfg_scan_register_bcn_cb(hdd_ctx->hdd_psoc,
wlan_cfg80211_inform_bss_frame,
SCAN_CB_TYPE_INFORM_BCN);
if (!QDF_IS_STATUS_SUCCESS(status)) {
hdd_err("failed with status code %08d [x%08x]",
status, status);
return status;
}
return QDF_STATUS_SUCCESS;
}
#else
static inline QDF_STATUS hdd_register_bcn_cb(hdd_context_t *hdd_ctx)
{
return QDF_STATUS_SUCCESS;
}
#endif
/**
* hdd_configure_cds() - Configure cds modules
@ -8250,6 +8280,11 @@ int hdd_configure_cds(hdd_context_t *hdd_ctx, hdd_adapter_t *adapter)
hdd_alert("hdd_post_cds_enable_config failed");
goto cds_disable;
}
status = hdd_register_bcn_cb(hdd_ctx);
if (!QDF_IS_STATUS_SUCCESS(status)) {
hdd_alert("hdd_post_cds_enable_config failed");
goto cds_disable;
}
ret = hdd_features_init(hdd_ctx, adapter);
if (ret)

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 2011-2016 The Linux Foundation. All rights reserved.
* Copyright (c) 2011-2017 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@ -175,7 +175,7 @@ lim_process_beacon_frame(tpAniSirGlobal mac_ctx, uint8_t *rx_pkt_info,
qdf_mem_free(bcn_ptr);
return;
}
#ifndef NAPIER_SCAN
/**---------------------------------------------------------------
\fn lim_process_beacon_frame_no_session
\brief This function is called by limProcessMessageQueue()
@ -256,3 +256,4 @@ lim_process_beacon_frame_no_session(tpAniSirGlobal pMac, uint8_t *pRxPacketInfo)
return;
} /*** end lim_process_beacon_frame_no_session() ***/
#endif

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 2011-2016 The Linux Foundation. All rights reserved.
* Copyright (c) 2011-2017 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@ -329,7 +329,7 @@ lim_process_probe_rsp_frame(tpAniSirGlobal mac_ctx, uint8_t *rx_Packet_info,
/* Ignore Probe Response frame in all other states */
return;
}
#ifndef NAPIER_SCAN
/**
* lim_process_probe_rsp_frame_no_session() - process Probe Response frame
* @mac_ctx: Pointer to Global MAC structure
@ -401,3 +401,4 @@ lim_process_probe_rsp_frame_no_session(tpAniSirGlobal mac_ctx,
qdf_mem_free(probe_rsp);
return;
}
#endif

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 2011-2016 The Linux Foundation. All rights reserved.
* Copyright (c) 2011-2017 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@ -233,6 +233,7 @@ lim_collect_bss_description(tpAniSirGlobal pMac,
return;
} /*** end lim_collect_bss_description() ***/
#ifndef NAPIER_SCAN
/**
* lim_check_and_add_bss_description()
* @mac_ctx: Pointer to Global MAC structure
@ -367,4 +368,4 @@ lim_check_and_add_bss_description(tpAniSirGlobal mac_ctx,
}
qdf_mem_free(bssdescr);
}
#endif

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 2012, 2014-2016 The Linux Foundation. All rights reserved.
* Copyright (c) 2012, 2014-2017 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@ -44,8 +44,15 @@
uint8_t lim_scan_hash_function(tSirMacAddr);
void lim_restore_pre_scan_state(tpAniSirGlobal);
void lim_copy_scan_result(tpAniSirGlobal, uint8_t *);
#ifndef NAPIER_SCAN
void lim_check_and_add_bss_description(tpAniSirGlobal, tpSirProbeRespBeacon,
uint8_t *, bool, uint8_t);
#else
static inline
void lim_check_and_add_bss_description(tpAniSirGlobal mac_ctx,
tpSirProbeRespBeacon bcn, uint8_t *rx_pkt,
bool scanning, uint8_t probe){}
#endif
void lim_collect_bss_description(tpAniSirGlobal pMac,
tSirBssDescription *pBssDescr,
tpSirProbeRespBeacon pBPR,

View file

@ -436,7 +436,13 @@ void lim_process_beacon_frame(tpAniSirGlobal, uint8_t *, tpPESession);
void lim_process_beacon_frame_no_session(tpAniSirGlobal, uint8_t *);
void lim_process_probe_req_frame(tpAniSirGlobal, uint8_t *, tpPESession);
void lim_process_probe_rsp_frame(tpAniSirGlobal, uint8_t *, tpPESession);
#ifndef NAPIER_SCAN
void lim_process_probe_rsp_frame_no_session(tpAniSirGlobal, uint8_t *);
#else
static inline
void lim_process_probe_rsp_frame_no_session(tpAniSirGlobal mac_ctx,
uint8_t *pkt){}
#endif
void lim_process_probe_req_frame_multiple_bss(tpAniSirGlobal, uint8_t *,
tpPESession);

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 2012-2016 The Linux Foundation. All rights reserved.
* Copyright (c) 2012-2017 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@ -300,6 +300,7 @@ static void __sch_beacon_process_no_session(tpAniSirGlobal pMac,
lim_handle_ibss_coalescing(pMac, pBeacon, pRxPacketInfo,
psessionEntry);
}
#ifndef NAPIER_SCAN
/* If station(STA/BT-STA/BT-AP/IBSS) mode, Always save the
* beacon in the scan results, if atleast one session is
* active. sch_beacon_process_no_session will be called only
@ -308,6 +309,7 @@ static void __sch_beacon_process_no_session(tpAniSirGlobal pMac,
*/
lim_check_and_add_bss_description(pMac, pBeacon, pRxPacketInfo, false,
false);
#endif
return;
}

File diff suppressed because it is too large Load diff

View file

@ -295,14 +295,6 @@ QDF_STATUS csr_abort_scan_from_active_list(tpAniSirGlobal pMac,
uint32_t sessionId, uint32_t scan_id,
eSmeCommandType scan_cmd_type, eCsrAbortReason abort_reason);
/* To age out scan results base. tSmeGetScanChnRsp is a pointer returned by LIM that */
/* has the information regarding scanned channels. */
/* The logic is that whenever CSR add a BSS to scan result, it set the age count to */
/* a value. This function deduct the age count if channelId matches the BSS' channelId */
/* The BSS is remove if the count reaches 0. */
QDF_STATUS csr_scan_age_results(tpAniSirGlobal pMac,
tSmeGetScanChnRsp *pScanChnInfo);
/* If fForce is true we will save the new String that is learn't. */
/* Typically it will be true in case of Join or user initiated ioctl */
bool csr_learn_11dcountry_information(tpAniSirGlobal pMac,
@ -1065,6 +1057,16 @@ void csr_roam_prepare_bss_params(tpAniSirGlobal mac_ctx, uint32_t session_id,
tCsrRoamProfile *profile, tSirBssDescription *bss_desc,
tBssConfigParam *bss_cfg, tDot11fBeaconIEs *ies);
/**
* csr_remove_bssid_from_scan_list() - remove the bssid from
* scan list
* @mac_tx: mac context.
* @bssid: bssid to be removed
*
* This function remove the given bssid from scan list.
*
* Return: void.
*/
void csr_remove_bssid_from_scan_list(tpAniSirGlobal mac_ctx,
tSirMacAddr bssid);