qcacld-2.0: Send p2p ack indication directly to HDD from PE

During P2P functionality, Host will send GO NEG REQ and
receives ACK completion from firmware which will be queued
to indicate HDD. Meanwhile if host receives GO-NEG RESP it
will be sent directly to HDD via function callback. In HDD as
we  got GO NEG RESP before ACK completion for GO-NEG REQ, HDD
will generate pkt completion for GO NEG Request.
Now GO NEG CONFORMATION frame will be sent and driver will be
expecting completion for this. The GO NEG REQ ACK completion
which got buffered in PE will be delivered to Supplicant and
Supplicant assumes that this is the ACK for GO NEG CONF frame.
This causes early termination of remain on channel due to which
firmware may drop the GO NEG CONF frame and may not retry as ROC
is terminated.
Fix this by making ACK Completion indication to HDD via function
callback.

Change-Id: I0dd3acb236b270839649d2becfdc007e7aae9fdd
CRs-Fixed: 1012547
This commit is contained in:
Masti, Narayanraddi 2016-05-06 16:35:17 +05:30 committed by L R
parent 2edeb9e6fe
commit c813666e60
23 changed files with 157 additions and 84 deletions

View File

@ -134,6 +134,7 @@ void __hdd_indicate_mgmt_frame(hdd_adapter_t *pAdapter,
void hdd_remainChanReadyHandler( hdd_adapter_t *pAdapter );
void hdd_sendActionCnf( hdd_adapter_t *pAdapter, tANI_BOOLEAN actionSendSuccess );
void hdd_send_action_cnf_cb(uint32_t session_id, bool status);
int wlan_hdd_check_remain_on_channel(hdd_adapter_t *pAdapter);
void wlan_hdd_cancel_existing_remain_on_channel(hdd_adapter_t *pAdapter);

View File

@ -4051,10 +4051,6 @@ hdd_smeRoamCallback(void *pContext, tCsrRoamInfo *pRoamInfo, tANI_U32 roamId,
case eCSR_ROAM_REMAIN_CHAN_READY:
hdd_remainChanReadyHandler( pAdapter );
break;
case eCSR_ROAM_SEND_ACTION_CNF:
hdd_sendActionCnf( pAdapter,
(roamResult == eCSR_ROAM_RESULT_NONE) ? TRUE : FALSE );
break;
#ifdef FEATURE_WLAN_TDLS
case eCSR_ROAM_TDLS_STATUS_UPDATE:
halStatus = hdd_RoamTdlsStatusUpdateHandler( pAdapter, pRoamInfo,

View File

@ -10420,6 +10420,9 @@ void wlan_hdd_cfg80211_register_frames(hdd_adapter_t* pAdapter)
/* Register frame indication call back */
sme_register_mgmt_frame_ind_callback(hHal, hdd_indicate_mgmt_frame);
/* Register for p2p ack indication */
sme_register_p2p_ack_ind_callback(hHal, hdd_send_action_cnf_cb);
/* Right now we are registering these frame when driver is getting
initialized. Once we will move to 2.6.37 kernel, in which we have
frame register ops, we will move this code as a part of that */

View File

@ -75,6 +75,7 @@
#ifdef IPA_OFFLOAD
#include <wlan_hdd_ipa.h>
#endif
#include <wlan_hdd_p2p.h>
/**-----------------------------------------------------------------------------
* Preprocessor definitions and constants
@ -2208,6 +2209,9 @@ VOS_STATUS hdd_wlan_re_init(void *hif_sc)
sme_register_mgmt_frame_ind_callback(pHddCtx->hHal, hdd_indicate_mgmt_frame);
/* Register for p2p ack indication */
sme_register_p2p_ack_ind_callback(pHddCtx->hHal, hdd_send_action_cnf_cb);
#ifdef FEATURE_WLAN_EXTSCAN
sme_ExtScanRegisterCallback(pHddCtx->hHal,
wlan_hdd_cfg80211_extscan_callback);

View File

@ -2104,12 +2104,6 @@ VOS_STATUS hdd_hostapd_SAPEventCB( tpSap_Event pSapEvent, v_PVOID_t usrDataForCa
case eSAP_REMAIN_CHAN_READY:
hdd_remainChanReadyHandler( pHostapdAdapter );
return VOS_STATUS_SUCCESS;
case eSAP_SEND_ACTION_CNF:
hdd_sendActionCnf( pHostapdAdapter,
( eSAP_STATUS_SUCCESS ==
pSapEvent->sapevt.sapActionCnf.actionSendSuccess ) ?
TRUE : FALSE );
return VOS_STATUS_SUCCESS;
case eSAP_UNKNOWN_STA_JOIN:
snprintf(unknownSTAEvent, IW_CUSTOM_MAX, "JOIN_UNKNOWN_STA-%02x:%02x:%02x:%02x:%02x:%02x",
pSapEvent->sapevt.sapUnknownSTAJoin.macaddr.bytes[0],

View File

@ -1924,6 +1924,48 @@ void hdd_sendActionCnf( hdd_adapter_t *pAdapter, tANI_BOOLEAN actionSendSuccess
complete(&pAdapter->tx_action_cnf_event);
}
/**
* hdd_send_action_cnf_cb - action confirmation callback
* @session_id: SME session ID
* @tx_completed: ack status
*
* This function invokes hdd_sendActionCnf to update ack status to
* supplicant.
*/
void hdd_send_action_cnf_cb(uint32_t session_id, bool tx_completed)
{
v_CONTEXT_t vos_context;
hdd_context_t *hdd_ctx;
hdd_adapter_t *adapter;
ENTER();
/* Get the global VOSS context */
vos_context = vos_get_global_context(VOS_MODULE_ID_SYS, NULL);
if (!vos_context) {
hddLog(LOGE, FL("Global VOS context is Null"));
return;
}
/* Get the HDD context.*/
hdd_ctx = vos_get_context(VOS_MODULE_ID_HDD, vos_context);
if (0 != wlan_hdd_validate_context(hdd_ctx))
return;
adapter = hdd_get_adapter_by_sme_session_id(hdd_ctx, session_id);
if (NULL == adapter) {
hddLog(LOGE, FL("adapter not found"));
return;
}
if (WLAN_HDD_ADAPTER_MAGIC != adapter->magic) {
hddLog(LOGE, FL("adapter has invalid magic"));
return;
}
hdd_sendActionCnf(adapter, tx_completed) ;
}
/**
* hdd_setP2pNoa
*

View File

@ -1263,6 +1263,7 @@ typedef struct sAniSirGlobal
bool first_scan_done;
int8_t first_scan_bucket_threshold;
sir_mgmt_frame_ind_callback mgmt_frame_ind_cb;
sir_p2p_ack_ind_callback p2p_ack_ind_cb;
} tAniSirGlobal;
typedef enum

View File

@ -3553,6 +3553,21 @@ struct sir_sme_mgmt_frame_cb_req {
sir_mgmt_frame_ind_callback callback;
};
typedef void (*sir_p2p_ack_ind_callback)(uint32_t session_id,
bool tx_completion_status);
/**
* struct sir_p2p_ack_ind_cb_req - Register a p2p ack ind callback req
* @message_type: message id
* @length: msg length
* @callback: callback for p2p ack indication
*/
struct sir_sme_p2p_ack_ind_cb_req {
uint16_t message_type;
uint16_t length;
sir_p2p_ack_ind_callback callback;
};
#ifdef WLAN_FEATURE_11W
typedef struct sSirSmeUnprotMgmtFrameInd
{

View File

@ -205,7 +205,6 @@ enum eWniMsgTypes
eWNI_SME_REMAIN_ON_CHN_RSP,
eWNI_SME_REMAIN_ON_CHN_RDY_IND,
eWNI_SME_SEND_ACTION_FRAME_IND,
eWNI_SME_ACTION_FRAME_SEND_CNF,
eWNI_SME_ABORT_REMAIN_ON_CHAN_IND,
eWNI_SME_UPDATE_NOA,
eWNI_SME_CLEAR_DFS_CHANNEL_LIST,
@ -404,6 +403,8 @@ enum eWniMsgTypes
eWNI_SME_MON_INIT_SESSION,
eWNI_SME_DEL_ALL_TDLS_PEERS,
eWNI_SME_SEND_DISASSOC_FRAME,
eWNI_SME_REGISTER_P2P_ACK_CB,
eWNI_SME_MSG_TYPES_END
};

View File

@ -80,7 +80,6 @@ extern tSirRetStatus limSetLinkState(
tpSetLinkStateCallback callback, void *callbackArg);
static tSirRetStatus limCreateSessionForRemainOnChn(tpAniSirGlobal pMac, tPESession **ppP2pSession);
eHalStatus limP2PActionCnf(tpAniSirGlobal pMac, tANI_U32 txCompleteSuccess);
/*------------------------------------------------------------------
*
* Below function is callback function, it is called when
@ -603,7 +602,7 @@ void limRemainOnChnRsp(tpAniSirGlobal pMac, eHalStatus status, tANI_U32 *data)
* indicaiton confirmation with status failure */
if (pMac->lim.mgmtFrameSessionId != 0xff)
{
limP2PActionCnf(pMac, 0);
limP2PActionCnf(pMac, false);
}
return;
@ -725,9 +724,9 @@ eHalStatus limP2PActionCnf(tpAniSirGlobal pMac, tANI_U32 txCompleteSuccess)
{
/* The session entry might be invalid(0xff) action confirmation received after
* remain on channel timer expired */
limSendSmeRsp(pMac, eWNI_SME_ACTION_FRAME_SEND_CNF,
(txCompleteSuccess ? eSIR_SME_SUCCESS : eSIR_SME_SEND_ACTION_FAIL),
pMac->lim.mgmtFrameSessionId, 0);
if (pMac->p2p_ack_ind_cb)
pMac->p2p_ack_ind_cb(pMac->lim.mgmtFrameSessionId,
txCompleteSuccess);
pMac->lim.mgmtFrameSessionId = 0xff;
}
@ -769,8 +768,7 @@ void limSendP2PActionFrame(tpAniSirGlobal pMac, tpSirMsgQ pMsg)
{
limLog(pMac, LOGE,
FL("Remain on channel is not running"));
limSendSmeRsp(pMac, eWNI_SME_ACTION_FRAME_SEND_CNF,
eHAL_STATUS_FAILURE, pMbMsg->sessionId, 0);
limP2PActionCnf(pMac, false);
return;
}
smeSessionId = pMbMsg->sessionId;
@ -807,8 +805,7 @@ void limSendP2PActionFrame(tpAniSirGlobal pMac, tpSirMsgQ pMsg)
}
if( !isSessionActive )
{
limSendSmeRsp(pMac, eWNI_SME_ACTION_FRAME_SEND_CNF,
eHAL_STATUS_FAILURE, pMbMsg->sessionId, 0);
limP2PActionCnf(pMac, false);
return;
}
}
@ -966,8 +963,7 @@ send_action_frame:
{
limLog(pMac, LOGE,
FL("Failed to Send Action frame"));
limSendSmeRsp(pMac, eWNI_SME_ACTION_FRAME_SEND_CNF,
eHAL_STATUS_FAILURE, pMbMsg->sessionId, 0);
limP2PActionCnf(pMac, false);
return;
}
}
@ -1048,8 +1044,8 @@ send_frame1:
if (!pMbMsg->noack)
{
limSendSmeRsp(pMac, eWNI_SME_ACTION_FRAME_SEND_CNF,
halstatus, pMbMsg->sessionId, 0);
limP2PActionCnf(pMac, (HAL_STATUS_SUCCESS(halstatus)) ?
true : false);
}
pMac->lim.mgmtFrameSessionId = 0xff;
}
@ -1064,8 +1060,7 @@ send_frame1:
if ( ! HAL_STATUS_SUCCESS ( halstatus ) )
{
limLog( pMac, LOGE, FL("could not send action frame!" ));
limSendSmeRsp(pMac, eWNI_SME_ACTION_FRAME_SEND_CNF, halstatus,
pMbMsg->sessionId, 0);
limP2PActionCnf(pMac, false);
pMac->lim.mgmtFrameSessionId = 0xff;
}
else

View File

@ -1429,6 +1429,7 @@ limProcessMessages(tpAniSirGlobal pMac, tpSirMsgQ limMsg)
case eWNI_SME_EXT_CHANGE_CHANNEL:
case eWNI_SME_ROAM_RESTART_REQ:
case eWNI_SME_REGISTER_MGMT_FRAME_CB:
case eWNI_SME_REGISTER_P2P_ACK_CB:
// These messages are from HDD
limProcessNormalHddMsg(pMac, limMsg, false); //no need to response to hdd
break;

View File

@ -5146,9 +5146,7 @@ void limProcessRxScanEvent(tpAniSirGlobal pMac, void *buf)
* pending then indicate confirmation with status failure
*/
if (pMac->lim.mgmtFrameSessionId != 0xff) {
limSendSmeRsp(pMac, eWNI_SME_ACTION_FRAME_SEND_CNF,
eSIR_SME_SEND_ACTION_FAIL,
pMac->lim.mgmtFrameSessionId, 0);
limP2PActionCnf(pMac, false);
pMac->lim.mgmtFrameSessionId = 0xff;
}

View File

@ -5766,6 +5766,32 @@ __limProcessSmeResetApCapsChange(tpAniSirGlobal pMac, tANI_U32 *pMsgBuf)
return;
}
/**
* lim_register_p2p_ack_ind_cb() - Save the p2p ack indication callback.
* @mac_ctx: Mac pointer
* @msg_buf: Msg pointer containing the callback
*
* This function is used to save the p2p ack indication callback in PE.
*
* Return: None
*/
static void lim_register_p2p_ack_ind_cb(tpAniSirGlobal mac_ctx,
uint32_t *msg_buf)
{
struct sir_sme_p2p_ack_ind_cb_req *sme_req =
(struct sir_sme_p2p_ack_ind_cb_req *)msg_buf;
if (NULL == msg_buf) {
limLog(mac_ctx, LOGE, FL("msg_buf is null"));
return;
}
if (sme_req->callback)
mac_ctx->p2p_ack_ind_cb =
sme_req->callback;
else
limLog(mac_ctx, LOGE, FL("sme_req->callback is null"));
}
/**
* lim_register_mgmt_frame_ind_cb() - Save the Management frame
* indication callback in PE.
@ -6201,6 +6227,9 @@ limProcessSmeReqMessages(tpAniSirGlobal pMac, tpSirMsgQ pMsg)
case eWNI_SME_REGISTER_MGMT_FRAME_CB:
lim_register_mgmt_frame_ind_cb(pMac, pMsgBuf);
break;
case eWNI_SME_REGISTER_P2P_ACK_CB:
lim_register_p2p_ack_ind_cb(pMac, pMsgBuf);
break;
default:
vos_mem_free((v_VOID_t*)pMsg->bodyptr);
pMsg->bodyptr = NULL;

View File

@ -669,5 +669,7 @@ tANI_U8 lim_compute_ext_cap_ie_length (tDot11fIEExtCap *ext_cap);
void lim_update_caps_info_for_bss(tpAniSirGlobal mac_ctx,
uint16_t *caps, uint16_t bss_caps);
bool lim_is_robust_mgmt_action_frame(uint8_t action_catagory);
eHalStatus limP2PActionCnf(tpAniSirGlobal mac_ctx,
uint32_t tx_complete_success);
#endif /* __LIM_UTILS_H */

View File

@ -174,7 +174,6 @@ typedef enum {
eSAP_GET_WPSPBC_SESSION_EVENT, /* Event send when user call WLANSAP_getWpsSessionOverlap */
eSAP_WPS_PBC_PROBE_REQ_EVENT, /* Event send on WPS PBC probe request is received */
eSAP_REMAIN_CHAN_READY,
eSAP_SEND_ACTION_CNF,
eSAP_DISCONNECT_ALL_P2P_CLIENT,
eSAP_MAC_TRIG_STOP_BSS_EVENT,
eSAP_UNKNOWN_STA_JOIN, /* Event send when a STA in neither white list or black list tries to associate in softap mode */
@ -412,7 +411,7 @@ typedef struct sap_Event_s {
tSap_AssocStaListEvent sapAssocStaListEvent; /*SAP_ASSOC_STA_CALLBACK_EVENT */
tSap_GetWPSPBCSessionEvent sapGetWPSPBCSessionEvent; /*SAP_GET_WPSPBC_SESSION_EVENT */
tSap_WPSPBCProbeReqEvent sapPBCProbeReqEvent; /*eSAP_WPS_PBC_PROBE_REQ_EVENT */
tSap_SendActionCnf sapActionCnf; /* eSAP_SEND_ACTION_CNF */
tSap_SendActionCnf sapActionCnf;
tSap_UnknownSTAJoinEvent sapUnknownSTAJoin; /* eSAP_UNKNOWN_STA_JOIN */
tSap_MaxAssocExceededEvent sapMaxAssocExceeded; /* eSAP_MAX_ASSOC_EXCEEDED */
tSap_DfsNolInfo sapDfsNolInfo; /*eSAP_DFS_NOL_XXX */

View File

@ -696,16 +696,6 @@ WLANSAP_RoamCallback
eSAP_REMAIN_CHAN_READY,
(v_PVOID_t) eSAP_STATUS_SUCCESS);
break;
case eCSR_ROAM_SEND_ACTION_CNF:
VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH,
FL("CSR roamStatus = %s (%d)"),
"eCSR_ROAM_SEND_ACTION_CNF", roamStatus);
sapSignalHDDevent(sapContext, pCsrRoamInfo,
eSAP_SEND_ACTION_CNF,
(v_PVOID_t)((eSapStatus)((roamResult == eCSR_ROAM_RESULT_NONE)
? eSAP_STATUS_SUCCESS : eSAP_STATUS_FAILURE)));
break;
case eCSR_ROAM_DISCONNECT_ALL_P2P_CLIENTS:
VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH,
FL("CSR roamStatus = %s (%d)"),

View File

@ -2965,13 +2965,6 @@ sapSignalHDDevent
"eSAP_REMAIN_CHAN_READY");
sapApAppEvent.sapHddEventCode = eSAP_REMAIN_CHAN_READY;
break;
case eSAP_SEND_ACTION_CNF:
VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH,
FL("SAP event callback event = %s"),
"eSAP_SEND_ACTION_CNF");
sapApAppEvent.sapHddEventCode = eSAP_SEND_ACTION_CNF;
sapApAppEvent.sapevt.sapActionCnf.actionSendSuccess = (eSapStatus)context;
break;
case eSAP_DISCONNECT_ALL_P2P_CLIENT:
VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH,

View File

@ -500,7 +500,6 @@ typedef enum
#endif
eCSR_ROAM_FT_START,
eCSR_ROAM_REMAIN_CHAN_READY,
eCSR_ROAM_SEND_ACTION_CNF,
//this mean error happens before association_start or roaming_start is called.
eCSR_ROAM_SESSION_OPENED,
eCSR_ROAM_FT_REASSOC_FAILED,

View File

@ -4481,4 +4481,6 @@ bool sme_is_sta_key_exchange_in_progress(tHalHandle hal, uint8_t session_id);
* Return: eHAL_STATUS_SUCCESS on success, non-zero error code on failure.
*/
eHalStatus sme_create_mon_session(tHalHandle hal_handle, uint8_t *bssid);
eHalStatus sme_register_p2p_ack_ind_callback(tHalHandle hal,
sir_p2p_ack_ind_callback callback);
#endif //#if !defined( __SME_API_H )

View File

@ -456,7 +456,6 @@ get_eRoamCmdStatus_str(eRoamCmdStatus val)
#endif
CASE_RETURN_STR(eCSR_ROAM_FT_START);
CASE_RETURN_STR(eCSR_ROAM_REMAIN_CHAN_READY);
CASE_RETURN_STR(eCSR_ROAM_SEND_ACTION_CNF);
CASE_RETURN_STR(eCSR_ROAM_SESSION_OPENED);
CASE_RETURN_STR(eCSR_ROAM_FT_REASSOC_FAILED);
#ifdef FEATURE_WLAN_LFR

View File

@ -221,26 +221,6 @@ eHalStatus sme_remainOnChnReady( tHalHandle hHal, tANI_U8* pMsg)
return status;
}
eHalStatus sme_sendActionCnf( tHalHandle hHal, tANI_U8* pMsg)
{
tpAniSirGlobal pMac = PMAC_STRUCT( hHal );
eHalStatus status = eHAL_STATUS_SUCCESS;
tCsrRoamInfo RoamInfo;
tSirSmeRsp* pSmeRsp = (tSirSmeRsp*)pMsg;
/* forward the indication to HDD */
//RoamInfo can be passed as NULL....todo
csrRoamCallCallback(pMac, pSmeRsp->sessionId, &RoamInfo, 0,
eCSR_ROAM_SEND_ACTION_CNF,
(pSmeRsp->statusCode == eSIR_SME_SUCCESS) ? 0:
eCSR_ROAM_RESULT_SEND_ACTION_FAIL);
return status;
}
eHalStatus sme_p2pOpen( tHalHandle hHal )
{
tpAniSirGlobal pMac = PMAC_STRUCT(hHal);

View File

@ -94,7 +94,6 @@ extern void csr_release_roc_req_cmd(tpAniSirGlobal mac_ctx);
extern eHalStatus p2pProcessRemainOnChannelCmd(tpAniSirGlobal pMac, tSmeCmd *p2pRemainonChn);
extern eHalStatus sme_remainOnChnRsp( tpAniSirGlobal pMac, tANI_U8 *pMsg);
extern eHalStatus sme_remainOnChnReady( tHalHandle hHal, tANI_U8* pMsg);
extern eHalStatus sme_sendActionCnf( tHalHandle hHal, tANI_U8* pMsg);
extern eHalStatus p2pProcessNoAReq(tpAniSirGlobal pMac, tSmeCmd *pNoACmd);
static eHalStatus initSmeCmdList(tpAniSirGlobal pMac);
@ -2711,17 +2710,6 @@ eHalStatus sme_ProcessMsg(tHalHandle hHal, vos_msg_t* pMsg)
smsLog( pMac, LOGE, "Empty rsp message for meas (eWNI_SME_REMAIN_ON_CHN_RDY_IND), nothing to process");
}
break;
case eWNI_SME_ACTION_FRAME_SEND_CNF:
if(pMsg->bodyptr)
{
status = sme_sendActionCnf(pMac, pMsg->bodyptr);
vos_mem_free(pMsg->bodyptr);
}
else
{
smsLog( pMac, LOGE, "Empty rsp message for meas (eWNI_SME_ACTION_FRAME_SEND_CNF), nothing to process");
}
break;
#ifdef FEATURE_WLAN_SCAN_PNO
case eWNI_SME_PREF_NETWORK_FOUND_IND:
@ -7496,6 +7484,47 @@ eHalStatus sme_GetOperationChannel(tHalHandle hHal, tANI_U32 *pChannel, tANI_U8
return eHAL_STATUS_FAILURE;
}// sme_GetOperationChannel ends here
/**
* sme_register_p2p_ack_ind_callback() - p2p ack indication callback
* @hal: hal pointer
* @callback: callback pointer to be registered
*
* This function is used to register a callback to PE for p2p ack
* indication
*
* Return: Success if msg is posted to PE else Failure.
*/
eHalStatus sme_register_p2p_ack_ind_callback(tHalHandle hal,
sir_p2p_ack_ind_callback callback)
{
tpAniSirGlobal mac_ctx = PMAC_STRUCT(hal);
struct sir_sme_p2p_ack_ind_cb_req *msg;
eHalStatus status = eHAL_STATUS_SUCCESS;
smsLog(mac_ctx, LOG1, FL(": ENTER"));
if (eHAL_STATUS_SUCCESS ==
sme_AcquireGlobalLock(&mac_ctx->sme)) {
msg = vos_mem_malloc(sizeof(*msg));
if (NULL == msg) {
smsLog(mac_ctx, LOGE,
FL("Failed to allocate memory"));
sme_ReleaseGlobalLock(&mac_ctx->sme);
return eHAL_STATUS_FAILURE;
}
vos_mem_set(msg, sizeof(*msg), 0);
msg->message_type = eWNI_SME_REGISTER_P2P_ACK_CB;
msg->length = sizeof(*msg);
msg->callback = callback;
status = palSendMBMessage(mac_ctx->hHdd, msg);
sme_ReleaseGlobalLock(&mac_ctx->sme);
return status;
}
return eHAL_STATUS_FAILURE;
}
/**
* sme_register_mgmt_frame_ind_callback() - Register a callback for
* management frame indication to PE.

View File

@ -429,7 +429,6 @@ tANI_U8* macTraceGetSmeMsgString( tANI_U16 smeMsg )
CASE_RETURN_STRING(eWNI_SME_REMAIN_ON_CHN_RSP);
CASE_RETURN_STRING(eWNI_SME_REMAIN_ON_CHN_RDY_IND);
CASE_RETURN_STRING(eWNI_SME_SEND_ACTION_FRAME_IND);
CASE_RETURN_STRING(eWNI_SME_ACTION_FRAME_SEND_CNF);
CASE_RETURN_STRING(eWNI_SME_ABORT_REMAIN_ON_CHAN_IND);
CASE_RETURN_STRING(eWNI_SME_UPDATE_NOA);
CASE_RETURN_STRING(eWNI_SME_CLEAR_DFS_CHANNEL_LIST);
@ -514,7 +513,6 @@ tANI_U8* macTraceGetSmeMsgString( tANI_U16 smeMsg )
#endif // WLAN_WAKEUP_EVENTS
CASE_RETURN_STRING(eWNI_SME_EXCLUDE_UNENCRYPTED);
CASE_RETURN_STRING(eWNI_SME_RSSI_IND); //RSSI indication from TL to be serialized on MC thread
CASE_RETURN_STRING(eWNI_SME_MSG_TYPES_END);
CASE_RETURN_STRING(eWNI_SME_GET_TSM_STATS_REQ);
CASE_RETURN_STRING(eWNI_SME_GET_TSM_STATS_RSP);
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
@ -523,6 +521,8 @@ tANI_U8* macTraceGetSmeMsgString( tANI_U16 smeMsg )
CASE_RETURN_STRING(eWNI_SME_LOST_LINK_INFO_IND);
CASE_RETURN_STRING(eWNI_SME_SMPS_FORCE_MODE_IND);
CASE_RETURN_STRING(eWNI_SME_REGISTER_MGMT_FRAME_CB);
CASE_RETURN_STRING(eWNI_SME_REGISTER_P2P_ACK_CB);
CASE_RETURN_STRING(eWNI_SME_MSG_TYPES_END);
default:
return( (tANI_U8*)"UNKNOWN" );
break;