qcacld-3.0: Keep IBSS code under feature flag in LIM

IBSS code is placed under QCA_IBSS_SUPPORT feature flag.

Change-Id: Ib19f955daea1ccfee860fcbd36a0cfb8392906aa
CRs-Fixed: 2537006
This commit is contained in:
Abhishek Ambure 2019-09-27 18:54:38 +05:30 committed by nshrivas
parent 87ddf110ec
commit dddf428b7a
10 changed files with 459 additions and 126 deletions

View File

@ -189,13 +189,46 @@ QDF_STATUS lim_post_msg_high_priority(struct mac_context *mac,
*/
void lim_message_processor(struct mac_context *, struct scheduler_msg *);
#ifdef QCA_IBSS_SUPPORT
/**
* Function to handle IBSS coalescing.
* Beacon Processing module to call this.
* lim_handle_ibss_coalescing() - Function to handle IBSS coalescing.
* @param mac - Pointer to Global MAC structure
* @param pBeacon - Parsed Beacon Frame structure
* @param pRxPacketInfo - Pointer to RX packet info structure
* @pe_session - pointer to pe session
*
* This function is called upon receiving Beacon/Probe Response
* while operating in IBSS mode.
*
* @return Status whether to process or ignore received Beacon Frame
*/
QDF_STATUS lim_handle_ibss_coalescing(struct mac_context *,
tpSchBeaconStruct,
uint8_t *, struct pe_session *);
QDF_STATUS
lim_handle_ibss_coalescing(struct mac_context *mac,
tpSchBeaconStruct pBeacon,
uint8_t *pRxPacketInfo,
struct pe_session *pe_session);
#else
/**
* lim_handle_ibss_coalescing() - Function to handle IBSS coalescing.
* @param mac - Pointer to Global MAC structure
* @param pBeacon - Parsed Beacon Frame structure
* @param pRxPacketInfo - Pointer to RX packet info structure
* @pe_session - pointer to pe session
*
* This function is dummy
*
* @return Status whether to process or ignore received Beacon Frame
*/
static inline QDF_STATUS
lim_handle_ibss_coalescing(struct mac_context *mac,
tpSchBeaconStruct pBeacon,
uint8_t *pRxPacketInfo,
struct pe_session *pe_session)
{
return QDF_STATUS_SUCCESS;
}
#endif
/* / Function used by other Sirius modules to read global SME state */
static inline tLimSmeStates lim_get_sme_state(struct mac_context *mac)
{

View File

@ -1389,22 +1389,15 @@ lim_update_overlap_sta_param(struct mac_context *mac, tSirMacAddr bssId,
}
}
#ifdef QCA_IBSS_SUPPORT
/**
* lim_ibss_enc_type_matched
*
***FUNCTION:
* This function compares the encryption type of the peer with self
* while operating in IBSS mode and detects mismatch.
*
***LOGIC:
*
***ASSUMPTIONS:
*
***NOTE:
*
* lim_ibss_enc_type_matched() - API to check enc type match
* @param pBeacon - Parsed Beacon Frame structure
* @param pSession - Pointer to the PE session
*
* This function compares the encryption type of the peer with self
* while operating in IBSS mode and detects mismatch.
*
* @return true if encryption type is matched; false otherwise
*/
static bool lim_ibss_enc_type_matched(tpSchBeaconStruct pBeacon,
@ -1437,26 +1430,6 @@ static bool lim_ibss_enc_type_matched(tpSchBeaconStruct pBeacon,
return false;
}
/**
* lim_handle_ibs_scoalescing()
*
***FUNCTION:
* This function is called upon receiving Beacon/Probe Response
* while operating in IBSS mode.
*
***LOGIC:
*
***ASSUMPTIONS:
*
***NOTE:
*
* @param mac - Pointer to Global MAC structure
* @param pBeacon - Parsed Beacon Frame structure
* @param pRxPacketInfo - Pointer to RX packet info structure
*
* @return Status whether to process or ignore received Beacon Frame
*/
QDF_STATUS
lim_handle_ibss_coalescing(struct mac_context *mac,
tpSchBeaconStruct pBeacon,
@ -1499,6 +1472,7 @@ lim_handle_ibss_coalescing(struct mac_context *mac,
}
return retCode;
} /*** end lim_handle_ibs_scoalescing() ***/
#endif
/**
* lim_enc_type_matched() - matches security type of incoming beracon with

View File

@ -863,52 +863,11 @@ lim_ibss_decide_protection(struct mac_context *mac, tpDphHashNode sta,
return;
}
/**
* lim_ibss_peer_find()
*
***FUNCTION:
* This function is called while adding a context at
* DPH & Polaris for a peer in IBSS.
* If peer is found in the list, capabilities from the
* returned BSS description are used at DPH node & Polaris.
*
***LOGIC:
*
***ASSUMPTIONS:
*
***NOTE:
*
* @param macAddr - MAC address of the peer
*
* @return Pointer to peer node if found, else NULL
*/
tLimIbssPeerNode *lim_ibss_peer_find(struct mac_context *mac, tSirMacAddr macAddr)
{
return ibss_peer_find(mac, macAddr);
}
/**
* lim_ibss_sta_add()
*
***FUNCTION:
* This function is called to add an STA context in IBSS role
* whenever a data frame is received from/for a STA that failed
* hash lookup at DPH.
*
***LOGIC:
*
***ASSUMPTIONS:
* NA
*
***NOTE:
* NA
*
* @param mac Pointer to Global MAC structure
* @param peerAdddr MAC address of the peer being added
* @return retCode Indicates success or failure return code
* @return
*/
QDF_STATUS
lim_ibss_sta_add(struct mac_context *mac, void *pBody, struct pe_session *pe_session)
{
@ -1340,26 +1299,6 @@ static void lim_ibss_bss_delete(struct mac_context *mac,
pe_err("Deliver WLAN_VDEV_SM_EV_DOWN failed");
}
/**
* lim_ibss_coalesce()
*
***FUNCTION:
* This function is called upon receiving Beacon/Probe Response
* while operating in IBSS mode.
*
***LOGIC:
*
***ASSUMPTIONS:
*
***NOTE:
*
* @param mac - Pointer to Global MAC structure
* @param pBeacon - Parsed Beacon Frame structure
* @param pBD - Pointer to received BD
*
* @return Status whether to process or ignore received Beacon Frame
*/
QDF_STATUS
lim_ibss_coalesce(struct mac_context *mac,
tpSirMacMgmtHdr pHdr,
@ -1520,16 +1459,6 @@ lim_ibss_coalesce(struct mac_context *mac,
return QDF_STATUS_SUCCESS;
} /*** end lim_handle_ibs_scoalescing() ***/
/**
* lim_ibss_heart_beat_handle() - handle IBSS hearbeat failure
*
* @mac_ctx: global mac context
* @session: PE session entry
*
* Hanlde IBSS hearbeat failure.
*
* Return: None.
*/
void lim_ibss_heart_beat_handle(struct mac_context *mac_ctx, struct pe_session *session)
{
tLimIbssPeerNode *tempnode, *prevnode;
@ -1645,18 +1574,6 @@ void lim_ibss_heart_beat_handle(struct mac_context *mac_ctx, struct pe_session *
}
}
/**
* lim_ibss_decide_protection_on_delete() - decides protection related info.
*
* @mac_ctx: global mac context
* @stads: station hash node
* @bcn_param: beacon parameters
* @session: PE session entry
*
* Decides all the protection related information.
*
* Return: None
*/
void lim_ibss_decide_protection_on_delete(struct mac_context *mac_ctx,
tpDphHashNode stads,
tpUpdateBeaconParams bcn_param,

View File

@ -30,8 +30,9 @@
#include "sir_common.h"
#include "lim_utils.h"
#ifdef QCA_IBSS_SUPPORT
/**
* ibss_bss_delete()- start the ibss
* ibss_bss_add()- add the ibss
* @mac_ctx: Pointer to Global MAC structure
* @session: pe session
*
@ -49,7 +50,7 @@ void ibss_bss_add(struct mac_context *mac_ctx, struct pe_session *session);
void ibss_bss_delete(struct mac_context *mac_ctx, struct pe_session *session);
/**
* lim_ibss_delete_all_peers: delete all IBSS peers.
* lim_ibss_delete_all_peers() - delete all IBSS peers.
* @mac_ctx: Pointer to Global MAC structure
* @session: pe session
*
@ -57,6 +58,12 @@ void ibss_bss_delete(struct mac_context *mac_ctx, struct pe_session *session);
*/
void lim_ibss_delete_all_peers(struct mac_context *mac_ctx, struct pe_session *session);
/**
* lim_ibss_init() - API to init IBSS
* @mac_ctx: Pointer to Global MAC structure
*
* Return: None
*/
void lim_ibss_init(struct mac_context *);
/**
@ -69,16 +76,50 @@ void lim_ibss_init(struct mac_context *);
*/
void lim_ibss_delete(struct mac_context *, struct pe_session *pe_session);
/**
* lim_ibss_coalesce() - API to process IBSS Beacon/Probe Response
* @param mac - Pointer to Global MAC structure
* @param pBeacon - Parsed Beacon Frame structure
* @param pBD - Pointer to received BD
*
* This function is called upon receiving Beacon/Probe Response
* while operating in IBSS mode.
*
* @return Status whether to process or ignore received Beacon Frame
*/
QDF_STATUS lim_ibss_coalesce(struct mac_context *, tpSirMacMgmtHdr,
tpSchBeaconStruct, uint8_t *, uint32_t, uint16_t,
struct pe_session *);
/**
* lim_ibss_sta_add() - API to add an STA context in IBSS role
* @param mac Pointer to Global MAC structure
* @param peerAdddr MAC address of the peer being added
*
* This function is called to add an STA context in IBSS role
* whenever a data frame is received from/for a STA that failed
* hash lookup at DPH.
*
* @return retCode Indicates success or failure return code
*/
QDF_STATUS lim_ibss_sta_add(struct mac_context *, void *, struct pe_session *);
/**
* lim_ibss_add_sta_rsp() - API to process STA add response in IBSS role
* @param mac Pointer to Global MAC structure
* @param peerAdddr MAC address of the peer being added
*
* This function is called to add an STA context in IBSS role
* whenever a data frame is received from/for a STA that failed
* hash lookup at DPH.
*
* @return retCode Indicates success or failure return code
*/
QDF_STATUS lim_ibss_add_sta_rsp(struct mac_context *, void *, struct pe_session *);
/**
* lim_process_ibss_del_sta_rsp()- Handle ibss delete
* peer resp from firmware
*
* @mac_ptr: Pointer to Global MAC structure
* @lim_msg: delete sta response
* @pe_session: pe session
@ -90,12 +131,23 @@ void lim_process_ibss_del_sta_rsp(struct mac_context *mac_ctx,
struct scheduler_msg *lim_msg,
struct pe_session *pe_session);
/**
* lim_ibss_peer_find() - API to find IBSS peer
* @mac: pointer to mac context
* @param macAddr - MAC address of the peer
*
* This function is called while adding a context at
* DPH & Polaris for a peer in IBSS.
* If peer is found in the list, capabilities from the
* returned BSS description are used at DPH node & Polaris.
*
* @return Pointer to peer node if found, else NULL
*/
tLimIbssPeerNode *lim_ibss_peer_find(struct mac_context *mac, tSirMacAddr macAddr);
/**
* lim_ibss_del_bss_rsp() - Handle ibss delete
* response
*
* @mac: Pointer to Global MAC structure
* @vdev_stop_rsp: pointer to del bss response
* @pe_session: pointer to pe session
@ -110,7 +162,6 @@ void lim_ibss_del_bss_rsp(struct mac_context *mac,
/**
* lim_ibss_del_bss_rsp_when_coalescing() - Handle ibss delete
* response when coalescing
*
* @mac: Pointer to Global MAC structure
* @vdev_stop_rsp: pointer to del bss response
* @pe_session: pointer to pe session
@ -133,8 +184,288 @@ void lim_ibss_del_bss_rsp_when_coalescing(struct mac_context *mac,
void lim_ibss_add_bss_rsp_when_coalescing(struct mac_context *mac,
uint32_t op_chan_freq,
struct pe_session *pe_session);
/**
* lim_ibss_decide_protection_on_delete() - decides protection related info.
* @mac_ctx: global mac context
* @stads: station hash node
* @bcn_param: beacon parameters
* @session: PE session entry
*
* Decides all the protection related information.
*
* Return: None
*/
void lim_ibss_decide_protection_on_delete(struct mac_context *mac, tpDphHashNode sta,
tpUpdateBeaconParams pBeaconParams,
struct pe_session *pe_session);
/**
* lim_ibss_heart_beat_handle() - handle IBSS hearbeat failure
* @mac_ctx: global mac context
* @session: PE session entry
*
* Hanlde IBSS hearbeat failure.
*
* Return: None.
*/
void lim_ibss_heart_beat_handle(struct mac_context *mac, struct pe_session *pe_session);
/**
* lim_process_ibss_peer_inactivity() - Handle inactive IBSS peer
* @mac: Global MAC context
* @buf: pointer to buffer
*
* Internal function. Deletes FW indicated peer which is inactive
*
* Return: None
*/
void lim_process_ibss_peer_inactivity(struct mac_context *mac, void *buf);
#else
/**
* ibss_bss_add()- api to add ibss
* @mac_ctx: Pointer to Global MAC structure
* @session: pe session
*
* Return: None
*/
static inline
void ibss_bss_add(struct mac_context *mac_ctx, struct pe_session *session)
{
}
/**
* ibss_bss_delete()- delete the current BSS
* @mac_ctx: Pointer to Global MAC structure
* @session: pe session
*
* Return: None
*/
static inline
void ibss_bss_delete(struct mac_context *mac_ctx, struct pe_session *session)
{
}
/**
* lim_ibss_delete_all_peers: delete all IBSS peers.
* @mac_ctx: Pointer to Global MAC structure
* @session: pe session
*
* Return: None
*/
static inline
void lim_ibss_delete_all_peers(struct mac_context *mac_ctx,
struct pe_session *session)
{
}
/**
* lim_ibss_init() - API to init IBSS
* @mac_ctx: Pointer to Global MAC structure
*
* This function is dummy.
*
* Return: None
*/
static inline
void lim_ibss_init(struct mac_context *mac)
{
}
/**
* lim_ibss_delete() - Delete ibss while tearing down an IBSS
* @mac: Pointer to Global MAC structure
* @session: Pointer to session entry
*
* Return: none
*/
static inline
void lim_ibss_delete(struct mac_context *mac, struct pe_session *session)
{
}
/**
* lim_ibss_coalesce() - API to process IBSS Beacon/Probe Response
* @param mac - Pointer to Global MAC structure
* @param pBeacon - Parsed Beacon Frame structure
* @param pBD - Pointer to received BD
*
* This function is dummy.
*
* @return Status whether to process or ignore received Beacon Frame
*/
static inline
QDF_STATUS lim_ibss_coalesce(struct mac_context *mac,
tpSirMacMgmtHdr pHdr,
tpSchBeaconStruct pBeacon,
uint8_t *pIEs,
uint32_t ieLen, uint16_t fTsfLater,
struct pe_session *pe_session)
{
return QDF_STATUS_SUCCESS;
}
/**
* lim_ibss_sta_add() - API to add an STA context in IBSS role
* @param mac Pointer to Global MAC structure
* @param peerAdddr MAC address of the peer being added
*
* This function is dummy.
*
* @return retCode Indicates success or failure return code
*/
static inline
QDF_STATUS lim_ibss_sta_add(struct mac_context *mac, void *pBody,
struct pe_session *pe_session)
{
return QDF_STATUS_SUCCESS;
}
/**
* lim_ibss_add_sta_rsp() - API to process STA add response in IBSS role
* @param mac Pointer to Global MAC structure
* @param peerAdddr MAC address of the peer being added
*
* This function is funny.
*
* @return retCode Indicates success or failure return code
*/
static inline
QDF_STATUS lim_ibss_add_sta_rsp(struct mac_context *mac,
void *msg, struct pe_session *pe_session)
{
return QDF_STATUS_SUCCESS;
}
/**
* lim_process_ibss_del_sta_rsp()- Handle ibss delete
* peer resp from firmware
* @mac_ptr: Pointer to Global MAC structure
* @lim_msg: delete sta response
* @pe_session: pe session
*
* This function is dymmy.
*
* Return: None
*/
static inline
void lim_process_ibss_del_sta_rsp(struct mac_context *mac_ctx,
struct scheduler_msg *lim_msg,
struct pe_session *pe_session)
{
}
/**
* lim_ibss_peer_find() - API to find IBSS peer
* @mac: pointer to mac context
* @param macAddr - MAC address of the peer
*
* This function is dymmy.
*
* @return Pointer to peer node if found, else NULL
*/
static inline
tLimIbssPeerNode *lim_ibss_peer_find(struct mac_context *mac,
tSirMacAddr macAddr)
{
return NULL;
}
/**
* lim_ibss_del_bss_rsp() - Handle ibss delete
* response
* @mac: Pointer to Global MAC structure
* @vdev_stop_rsp: pointer to del bss response
* @pe_session: pointer to pe session
*
* This function is dymmy.
*
* Return: None
*/
static inline
void lim_ibss_del_bss_rsp(struct mac_context *mac,
struct del_bss_resp *vdev_stop_rsp,
struct pe_session *pe_session)
{
}
/**
* lim_ibss_del_bss_rsp_when_coalescing() - Handle ibss delete
* response when coalescing
* @mac: Pointer to Global MAC structure
* @vdev_stop_rsp: pointer to del bss response
* @pe_session: pointer to pe session
*
* Return: None
*
*/
static inline
void lim_ibss_del_bss_rsp_when_coalescing(struct mac_context *mac,
struct del_bss_resp *vdev_stop_rsp,
struct pe_session *pe_session)
{
}
/**
* lim_ibss_add_bss_rsp_when_coalescing()- Handle ADD BSS rsp of IBSS coalescing
* @mac_ptr: Pointer to Global MAC structure
* @op_chan_freq: operating chan freq
* @pe_session: PE session pointer
*
* Return: None
*/
static inline
void lim_ibss_add_bss_rsp_when_coalescing(struct mac_context *mac,
uint32_t op_chan_freq,
struct pe_session *pe_session)
{
}
/**
* lim_ibss_decide_protection_on_delete() - decides protection related info.
* @mac_ctx: global mac context
* @stads: station hash node
* @bcn_param: beacon parameters
* @session: PE session entry
*
* This function is dummy.
*
* Return: None
*/
static inline
void lim_ibss_decide_protection_on_delete(struct mac_context *mac,
tpDphHashNode sta,
tpUpdateBeaconParams pBeaconParams,
struct pe_session *pe_session)
{
}
/**
* lim_ibss_heart_beat_handle() - handle IBSS hearbeat failure
* @mac_ctx: global mac context
* @session: PE session entry
*
* This function is dummy.
*
* Return: None.
*/
static inline
void lim_ibss_heart_beat_handle(struct mac_context *mac,
struct pe_session *pe_session)
{
}
/**
* lim_process_ibss_peer_inactivity() - Handle inactive IBSS peer
* @mac: Global MAC context
* @buf: pointer to buffer
*
* This function is dummy.
*
* Return: None
*/
static inline
void lim_process_ibss_peer_inactivity(struct mac_context *mac, void *buf)
{
}
#endif

View File

@ -2026,6 +2026,15 @@ static void lim_process_ap_mlm_add_bss_rsp(struct mac_context *mac,
lim_send_start_bss_confirm(mac, &mlmStartCnf);
}
#ifdef QCA_IBSS_SUPPORT
/*
* lim_process_ibss_mlm_add_bss_rsp: API to process add bss response
* in IBSS role
* @session_entry: pe session entry
* @auth_mode: auth mode needs to be updated
*
* Return: None
*/
static void
lim_process_ibss_mlm_add_bss_rsp(struct mac_context *mac,
struct add_bss_rsp *add_bss_rsp,
@ -2080,6 +2089,14 @@ lim_process_ibss_mlm_add_bss_rsp(struct mac_context *mac,
mlmStartCnf.sessionId = pe_session->peSessionId;
lim_send_start_bss_confirm(mac, &mlmStartCnf);
}
#else
static inline void
lim_process_ibss_mlm_add_bss_rsp(struct mac_context *mac,
struct add_bss_rsp *add_bss_rsp,
struct pe_session *pe_session)
{
}
#endif
#ifdef WLAN_FEATURE_FILS_SK
/*

View File

@ -5199,6 +5199,7 @@ lim_update_add_ie_buffer(struct mac_context *mac,
}
#ifdef QCA_IBSS_SUPPORT
/**
* lim_update_ibss_prop_add_ies() - update IBSS prop IE
* @mac : Pointer to Global MAC structure
@ -5269,7 +5270,14 @@ lim_update_ibss_prop_add_ies(struct mac_context *mac, uint8_t **pDstData_buff,
}
return true;
}
#else
static bool
lim_update_ibss_prop_add_ies(struct mac_context *mac, uint8_t **pDstData_buff,
uint16_t *pDstDataLen, tSirModifyIE *pModifyIE)
{
return false;
}
#endif
/*
* lim_process_modify_add_ies() - process modify additional IE req.
*

View File

@ -1397,6 +1397,7 @@ void lim_send_sme_pe_ese_tsm_rsp(struct mac_context *mac,
#endif /* FEATURE_WLAN_ESE */
#ifdef QCA_IBSS_SUPPORT
void
lim_send_sme_ibss_peer_ind(struct mac_context *mac,
tSirMacAddr peerMacAddr,
@ -1430,6 +1431,7 @@ lim_send_sme_ibss_peer_ind(struct mac_context *mac,
lim_sys_process_mmh_msg_api(mac, &mmhMsg);
}
#endif
/**
* lim_process_csa_wbw_ie() - Process CSA Wide BW IE

View File

@ -226,10 +226,36 @@ void lim_send_sme_delts_ind(struct mac_context *mac,
void lim_send_sme_pe_ese_tsm_rsp(struct mac_context *mac, tAniGetTsmStatsRsp *pStats);
#endif
#ifdef QCA_IBSS_SUPPORT
/*
* lim_send_sme_ibss_peer_ind() - API to send ibss peer ind to sme
* @mac_ctx: Global mac_ctx
* @peerMacAddr: peer mac address
* @staIndex: sta index
* @beacon: pionter to beacon
* @beaconLen: length of beacon buffer
* @msg_type: msg_type
* @sessionId: session id
*
*
* Return: none
*/
void lim_send_sme_ibss_peer_ind(struct mac_context *mac, tSirMacAddr peerMacAddr,
uint16_t staIndex, uint8_t *beacon,
uint16_t beaconLen, uint16_t msgType,
uint8_t sessionId);
#else
static inline void
lim_send_sme_ibss_peer_ind(struct mac_context *mac,
tSirMacAddr peerMacAddr,
uint16_t staIndex,
uint8_t *beacon,
uint16_t beaconLen, uint16_t msgType,
uint8_t sessionId)
{
}
#endif
void lim_send_sme_max_assoc_exceeded_ntf(struct mac_context *mac, tSirMacAddr peerMacAddr,
uint8_t smesessionId);

View File

@ -4807,6 +4807,7 @@ void lim_handle_heart_beat_failure_timeout(struct mac_context *mac_ctx)
*/
}
#ifdef QCA_IBSS_SUPPORT
/*
* This function assumes there will not be more than one IBSS session active at any time.
*/
@ -4823,6 +4824,7 @@ struct pe_session *lim_is_ibss_session_active(struct mac_context *mac)
return NULL;
}
#endif
struct pe_session *lim_is_ap_session_active(struct mac_context *mac)
{

View File

@ -558,7 +558,30 @@ void lim_process_ap_mlm_del_sta_rsp(struct mac_context *mac,
struct scheduler_msg *limMsgQ,
struct pe_session *pe_session);
#ifdef QCA_IBSS_SUPPORT
/**
* lim_is_ibss_session_active() - API to check IBSS session active
* @mac: Pointer to Global MAC structure
*
* Return: Pointer to active IBSS pe_session else NULL
*/
struct pe_session *lim_is_ibss_session_active(struct mac_context *mac);
#else
/**
* lim_is_ibss_session_active() - API to check IBSS session active
* @mac: Pointer to Global MAC structure
*
* This function is dummy.
*
* Return: NULL
*/
static inline
struct pe_session *lim_is_ibss_session_active(struct mac_context *mac)
{
return NULL;
}
#endif
struct pe_session *lim_is_ap_session_active(struct mac_context *mac);
void lim_handle_heart_beat_failure_timeout(struct mac_context *mac);