diff options
| -rw-r--r-- | CORE/HDD/inc/wlan_hdd_main.h | 7 | ||||
| -rw-r--r-- | CORE/HDD/inc/wlan_hdd_p2p.h | 4 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_assoc.c | 11 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_cfg80211.c | 2 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_hostapd.c | 9 | ||||
| -rwxr-xr-x | CORE/HDD/src/wlan_hdd_main.c | 90 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_p2p.c | 4 | ||||
| -rw-r--r-- | CORE/MAC/inc/aniGlobal.h | 3 | ||||
| -rw-r--r-- | CORE/MAC/inc/sirApi.h | 18 | ||||
| -rw-r--r-- | CORE/MAC/inc/wniApi.h | 2 | ||||
| -rw-r--r-- | CORE/MAC/src/pe/lim/limP2P.c | 16 | ||||
| -rw-r--r-- | CORE/MAC/src/pe/lim/limProcessMessageQueue.c | 1 | ||||
| -rw-r--r-- | CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c | 31 | ||||
| -rw-r--r-- | CORE/SAP/inc/sapApi.h | 4 | ||||
| -rw-r--r-- | CORE/SAP/src/sapApiLinkCntl.c | 11 | ||||
| -rw-r--r-- | CORE/SAP/src/sapFsm.c | 18 | ||||
| -rw-r--r-- | CORE/SME/inc/csrApi.h | 3 | ||||
| -rw-r--r-- | CORE/SME/inc/sme_Api.h | 2 | ||||
| -rw-r--r-- | CORE/SME/src/csr/csrUtil.c | 3 | ||||
| -rw-r--r-- | CORE/SME/src/p2p/p2p_Api.c | 45 | ||||
| -rw-r--r-- | CORE/SME/src/sme_common/sme_Api.c | 54 | ||||
| -rw-r--r-- | CORE/SYS/legacy/src/utils/src/macTrace.c | 2 |
22 files changed, 214 insertions, 126 deletions
diff --git a/CORE/HDD/inc/wlan_hdd_main.h b/CORE/HDD/inc/wlan_hdd_main.h index 6ec17f67fac3..1ad7c9edd115 100644 --- a/CORE/HDD/inc/wlan_hdd_main.h +++ b/CORE/HDD/inc/wlan_hdd_main.h @@ -231,6 +231,9 @@ #define HDD_MAC_ADDR_LEN 6 #define HDD_SESSION_ID_ANY 50 //This should be same as CSR_SESSION_ID_ANY +/* This should be same as CSR_ROAM_SESSION_MAX */ +#define HDD_SESSION_MAX 5 + #define HDD_MIN_TX_POWER (-100) // minimum tx power #define HDD_MAX_TX_POWER (+100) // maximum tx power @@ -1985,7 +1988,9 @@ void wlan_hdd_clear_tx_rx_histogram(hdd_context_t *pHddCtx); void hdd_runtime_suspend_init(hdd_context_t *); void hdd_runtime_suspend_deinit(hdd_context_t *); - +void hdd_indicate_mgmt_frame(tSirSmeMgmtFrameInd *frame_ind); +hdd_adapter_t *hdd_get_adapter_by_sme_session_id(hdd_context_t *hdd_ctx, + uint32_t sme_session_id); #ifdef FEATURE_GREEN_AP void wlan_hdd_set_egap_support(hdd_context_t *hdd_ctx, struct hdd_tgt_cfg *cfg); #else diff --git a/CORE/HDD/inc/wlan_hdd_p2p.h b/CORE/HDD/inc/wlan_hdd_p2p.h index 7d9f01b7b716..25d9b20835c6 100644 --- a/CORE/HDD/inc/wlan_hdd_p2p.h +++ b/CORE/HDD/inc/wlan_hdd_p2p.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2015 The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2016 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -127,7 +127,7 @@ int hdd_setP2pPs( struct net_device *dev, void *msgData ); int hdd_setP2pOpps( struct net_device *dev, tANI_U8 *command ); int hdd_setP2pNoa( struct net_device *dev, tANI_U8 *command ); -void hdd_indicateMgmtFrame( hdd_adapter_t *pAdapter, +void __hdd_indicate_mgmt_frame(hdd_adapter_t *pAdapter, tANI_U32 nFrameLength, tANI_U8* pbFrames, tANI_U8 frameType, tANI_U32 rxChan, tANI_S8 rxRssi); diff --git a/CORE/HDD/src/wlan_hdd_assoc.c b/CORE/HDD/src/wlan_hdd_assoc.c index 5cd2a2faa9fd..8f1a56875c8f 100644 --- a/CORE/HDD/src/wlan_hdd_assoc.c +++ b/CORE/HDD/src/wlan_hdd_assoc.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2015 The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2016 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -3950,15 +3950,6 @@ hdd_smeRoamCallback(void *pContext, tCsrRoamInfo *pRoamInfo, tANI_U32 roamId, } break; #endif - - case eCSR_ROAM_INDICATE_MGMT_FRAME: - hdd_indicateMgmtFrame( pAdapter, - pRoamInfo->nFrameLength, - pRoamInfo->pbFrames, - pRoamInfo->frameType, - pRoamInfo->rxChan, - pRoamInfo->rxRssi ); - break; case eCSR_ROAM_REMAIN_CHAN_READY: hdd_remainChanReadyHandler( pAdapter ); break; diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c index 05b137ebba56..1bd988dd35b3 100644 --- a/CORE/HDD/src/wlan_hdd_cfg80211.c +++ b/CORE/HDD/src/wlan_hdd_cfg80211.c @@ -10352,6 +10352,8 @@ void wlan_hdd_cfg80211_register_frames(hdd_adapter_t* pAdapter) v_U16_t type = (SIR_MAC_MGMT_FRAME << 2) | ( SIR_MAC_MGMT_ACTION << 4); ENTER(); + /* Register frame indication call back */ + sme_register_mgmt_frame_ind_callback(hHal, hdd_indicate_mgmt_frame); /* 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 diff --git a/CORE/HDD/src/wlan_hdd_hostapd.c b/CORE/HDD/src/wlan_hdd_hostapd.c index c9dd6da190fe..266cbbea9432 100644 --- a/CORE/HDD/src/wlan_hdd_hostapd.c +++ b/CORE/HDD/src/wlan_hdd_hostapd.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2015 The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2016 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -2063,13 +2063,6 @@ VOS_STATUS hdd_hostapd_SAPEventCB( tpSap_Event pSapEvent, v_PVOID_t usrDataForCa vos_mem_free(pSapEvent->sapevt.sapAssocStaListEvent.pAssocStas);// Release caller allocated memory here pSapEvent->sapevt.sapAssocStaListEvent.pAssocStas = NULL; return VOS_STATUS_SUCCESS; - case eSAP_INDICATE_MGMT_FRAME: - hdd_indicateMgmtFrame( pHostapdAdapter, - pSapEvent->sapevt.sapManagementFrameInfo.nFrameLength, - pSapEvent->sapevt.sapManagementFrameInfo.pbFrames, - pSapEvent->sapevt.sapManagementFrameInfo.frameType, - pSapEvent->sapevt.sapManagementFrameInfo.rxChan, 0); - return VOS_STATUS_SUCCESS; case eSAP_REMAIN_CHAN_READY: hdd_remainChanReadyHandler( pHostapdAdapter ); return VOS_STATUS_SUCCESS; diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c index 04693e94ca43..0080d1cb8e29 100755 --- a/CORE/HDD/src/wlan_hdd_main.c +++ b/CORE/HDD/src/wlan_hdd_main.c @@ -3354,6 +3354,59 @@ static int hdd_set_dwell_time(hdd_adapter_t *pAdapter, tANI_U8 *command) return ret; } +/** + * hdd_indicate_mgmt_frame() - Wrapper to indicate management frame to + * user space + * @frame_ind: Management frame data to be informed. + * + * This function is used to indicate management frame to + * user space + * + * Return: None + * + */ +void hdd_indicate_mgmt_frame(tSirSmeMgmtFrameInd *frame_ind) +{ + hdd_context_t *hdd_ctx; + hdd_adapter_t *adapter; + v_CONTEXT_t vos_context; + int i; + + /* 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 = + (hdd_context_t *)vos_get_context(VOS_MODULE_ID_HDD, vos_context); + + if (0 != wlan_hdd_validate_context(hdd_ctx)) + return; + + if (HDD_SESSION_ID_ANY == frame_ind->sessionId) { + for (i = 0; i < HDD_SESSION_MAX; i++) { + adapter = + hdd_get_adapter_by_sme_session_id(hdd_ctx, i); + if (adapter) + break; + } + } else { + adapter = hdd_get_adapter_by_sme_session_id(hdd_ctx, + frame_ind->sessionId); + } + + if ((NULL != adapter) && + (WLAN_HDD_ADAPTER_MAGIC == adapter->magic)) + __hdd_indicate_mgmt_frame(adapter, + frame_ind->frame_len, + frame_ind->frameBuf, + frame_ind->frameType, + frame_ind->rxChan, + frame_ind->rxRssi); + return; +} static void hdd_GetLink_statusCB(v_U8_t status, void *pContext) { @@ -11102,6 +11155,43 @@ hdd_adapter_t *hdd_get_adapter_by_vdev( hdd_context_t *pHddCtx, return NULL; } +/** + * hdd_get_adapter_by_sme_session_id() - Return adapter with + * the sessionid + * @hdd_ctx: hdd cntx. + * @sme_session_id: sme session is for the adapter to get. + * + * This function is used to get the adapter with provided session id + * + * Return: adapter pointer if found + * + */ +hdd_adapter_t *hdd_get_adapter_by_sme_session_id(hdd_context_t *hdd_ctx, + uint32_t sme_session_id) +{ + hdd_adapter_list_node_t *adapter_node = NULL, *next = NULL; + hdd_adapter_t *adapter; + VOS_STATUS vos_status; + + + vos_status = hdd_get_front_adapter(hdd_ctx, &adapter_node); + + while ((NULL != adapter_node) && + (VOS_STATUS_SUCCESS == vos_status)) { + adapter = adapter_node->pAdapter; + + if (adapter && + adapter->sessionId == sme_session_id) + return adapter; + + vos_status = + hdd_get_next_adapter(hdd_ctx, + adapter_node, &next); + adapter_node = next; + } + return NULL; +} + hdd_adapter_t * hdd_get_adapter( hdd_context_t *pHddCtx, device_mode_t mode ) { hdd_adapter_list_node_t *pAdapterNode = NULL, *pNext = NULL; diff --git a/CORE/HDD/src/wlan_hdd_p2p.c b/CORE/HDD/src/wlan_hdd_p2p.c index 3187523a1f5e..8a7796d0e837 100644 --- a/CORE/HDD/src/wlan_hdd_p2p.c +++ b/CORE/HDD/src/wlan_hdd_p2p.c @@ -2547,12 +2547,12 @@ void hdd_sendMgmtFrameOverMonitorIface( hdd_adapter_t *pMonAdapter, return ; } -void hdd_indicateMgmtFrame( hdd_adapter_t *pAdapter, +void __hdd_indicate_mgmt_frame(hdd_adapter_t *pAdapter, tANI_U32 nFrameLength, tANI_U8* pbFrames, tANI_U8 frameType, tANI_U32 rxChan, - tANI_S8 rxRssi ) + tANI_S8 rxRssi) { tANI_U16 freq; tANI_U16 extend_time; diff --git a/CORE/MAC/inc/aniGlobal.h b/CORE/MAC/inc/aniGlobal.h index a7822863f023..b99cbf59eec3 100644 --- a/CORE/MAC/inc/aniGlobal.h +++ b/CORE/MAC/inc/aniGlobal.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2015 The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2016 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -1254,6 +1254,7 @@ typedef struct sAniSirGlobal t_auth_ack_status auth_ack_status; bool first_scan_done; int8_t first_scan_bucket_threshold; + sir_mgmt_frame_ind_callback mgmt_frame_ind_cb; } tAniSirGlobal; typedef enum diff --git a/CORE/MAC/inc/sirApi.h b/CORE/MAC/inc/sirApi.h index 0449cf107d63..d1228a3324d4 100644 --- a/CORE/MAC/inc/sirApi.h +++ b/CORE/MAC/inc/sirApi.h @@ -3486,8 +3486,7 @@ typedef struct sSirSmeCoexInd typedef struct sSirSmeMgmtFrameInd { - tANI_U16 mesgType; - tANI_U16 mesgLen; + uint16_t frame_len; tANI_U32 rxChan; tANI_U8 sessionId; tANI_U8 frameType; @@ -3495,6 +3494,21 @@ typedef struct sSirSmeMgmtFrameInd tANI_U8 frameBuf[1]; //variable }tSirSmeMgmtFrameInd, *tpSirSmeMgmtFrameInd; + +typedef void (*sir_mgmt_frame_ind_callback)(tSirSmeMgmtFrameInd *frame_ind); +/** + * struct sir_sme_mgmt_frame_cb_req - Register a + * management frame callback req + * @message_type: message id + * @length: msg length + * @callback: callback for management frame indication + */ +struct sir_sme_mgmt_frame_cb_req { + uint16_t message_type; + uint16_t length; + sir_mgmt_frame_ind_callback callback; +}; + #ifdef WLAN_FEATURE_11W typedef struct sSirSmeUnprotMgmtFrameInd { diff --git a/CORE/MAC/inc/wniApi.h b/CORE/MAC/inc/wniApi.h index e027c116705a..b375a330a31d 100644 --- a/CORE/MAC/inc/wniApi.h +++ b/CORE/MAC/inc/wniApi.h @@ -202,7 +202,6 @@ enum eWniMsgTypes eWNI_SME_REMAIN_ON_CHANNEL_REQ, eWNI_SME_REMAIN_ON_CHN_IND, eWNI_SME_REMAIN_ON_CHN_RSP, - eWNI_SME_MGMT_FRM_IND, eWNI_SME_REMAIN_ON_CHN_RDY_IND, eWNI_SME_SEND_ACTION_FRAME_IND, eWNI_SME_ACTION_FRAME_SEND_CNF, @@ -401,6 +400,7 @@ enum eWniMsgTypes eWNI_SME_GET_RSSI_IND, eWNI_SME_ROAM_RESTART_REQ, eWNI_SME_SMPS_FORCE_MODE_IND, + eWNI_SME_REGISTER_MGMT_FRAME_CB, eWNI_SME_MSG_TYPES_END }; diff --git a/CORE/MAC/src/pe/lim/limP2P.c b/CORE/MAC/src/pe/lim/limP2P.c index bce183e03bda..e73bb1b7c2ca 100644 --- a/CORE/MAC/src/pe/lim/limP2P.c +++ b/CORE/MAC/src/pe/lim/limP2P.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2015 The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2016 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -621,7 +621,6 @@ void limSendSmeMgmtFrameInd( tANI_U32 rxChannel, tpPESession psessionEntry, tANI_S8 rxRssi) { - tSirMsgQ mmhMsg; tpSirSmeMgmtFrameInd pSirSmeMgmtFrame = NULL; tANI_U16 length; @@ -636,8 +635,7 @@ void limSendSmeMgmtFrameInd( } vos_mem_set((void*)pSirSmeMgmtFrame, length, 0); - pSirSmeMgmtFrame->mesgType = eWNI_SME_MGMT_FRM_IND; - pSirSmeMgmtFrame->mesgLen = length; + pSirSmeMgmtFrame->frame_len = frameLen; pSirSmeMgmtFrame->sessionId = sessionId; pSirSmeMgmtFrame->frameType = frameType; pSirSmeMgmtFrame->rxRssi = rxRssi; @@ -710,11 +708,13 @@ send_frame: vos_mem_zero(pSirSmeMgmtFrame->frameBuf,frameLen); vos_mem_copy(pSirSmeMgmtFrame->frameBuf,frame,frameLen); - mmhMsg.type = eWNI_SME_MGMT_FRM_IND; - mmhMsg.bodyptr = pSirSmeMgmtFrame; - mmhMsg.bodyval = 0; + if (pMac->mgmt_frame_ind_cb) + pMac->mgmt_frame_ind_cb(pSirSmeMgmtFrame); + else + limLog(pMac, LOGW, + FL("Management indication callback not registered!!")); + vos_mem_free(pSirSmeMgmtFrame); - limSysProcessMmhMsgApi(pMac, &mmhMsg, ePROT); return; } /*** end limSendSmeListenRsp() ***/ diff --git a/CORE/MAC/src/pe/lim/limProcessMessageQueue.c b/CORE/MAC/src/pe/lim/limProcessMessageQueue.c index b37b8d56ca11..3161df8ad758 100644 --- a/CORE/MAC/src/pe/lim/limProcessMessageQueue.c +++ b/CORE/MAC/src/pe/lim/limProcessMessageQueue.c @@ -1434,6 +1434,7 @@ limProcessMessages(tpAniSirGlobal pMac, tpSirMsgQ limMsg) #endif /* FEATURE_WLAN_ESE && FEATURE_WLAN_ESE_UPLOAD */ case eWNI_SME_EXT_CHANGE_CHANNEL: case eWNI_SME_ROAM_RESTART_REQ: + case eWNI_SME_REGISTER_MGMT_FRAME_CB: // These messages are from HDD limProcessNormalHddMsg(pMac, limMsg, false); //no need to response to hdd break; diff --git a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c index fb42103a3108..9e004259cf3a 100644 --- a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c +++ b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c @@ -5717,6 +5717,34 @@ __limProcessSmeResetApCapsChange(tpAniSirGlobal pMac, tANI_U32 *pMsgBuf) } /** + * lim_register_mgmt_frame_ind_cb() - Save the Management frame + * indication callback in PE. + * @mac_ctx: Mac pointer + * @msg_buf: Msg pointer containing the callback + * + * This function is used save the Management frame + * indication callback in PE. + * + * Return: None + */ +static void lim_register_mgmt_frame_ind_cb(tpAniSirGlobal mac_ctx, + uint32_t *msg_buf) +{ + struct sir_sme_mgmt_frame_cb_req *sme_req = + (struct sir_sme_mgmt_frame_cb_req *)msg_buf; + + if (NULL == msg_buf) { + limLog(mac_ctx, LOGE, FL("msg_buf is null")); + return; + } + if (sme_req->callback) + mac_ctx->mgmt_frame_ind_cb = + sme_req->callback; + else + limLog(mac_ctx, LOGE, FL("sme_req->callback is null")); +} + +/** * limProcessSmeReqMessages() * *FUNCTION: @@ -6055,6 +6083,9 @@ limProcessSmeReqMessages(tpAniSirGlobal pMac, tpSirMsgQ pMsg) case eWNI_SME_PDEV_SET_HT_VHT_IE: lim_process_set_pdev_IEs(pMac, pMsgBuf); break; + case eWNI_SME_REGISTER_MGMT_FRAME_CB: + lim_register_mgmt_frame_ind_cb(pMac, pMsgBuf); + break; default: vos_mem_free((v_VOID_t*)pMsg->bodyptr); pMsg->bodyptr = NULL; diff --git a/CORE/SAP/inc/sapApi.h b/CORE/SAP/inc/sapApi.h index 91865c9ed79a..9e7ca4661c17 100644 --- a/CORE/SAP/inc/sapApi.h +++ b/CORE/SAP/inc/sapApi.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2015 The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2016 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -173,7 +173,6 @@ typedef enum { eSAP_ASSOC_STA_CALLBACK_EVENT, /*Event sent when user called WLANSAP_GetAssocStations */ 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_INDICATE_MGMT_FRAME, eSAP_REMAIN_CHAN_READY, eSAP_SEND_ACTION_CNF, eSAP_DISCONNECT_ALL_P2P_CLIENT, @@ -413,7 +412,6 @@ 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_ManagementFrameInfo sapManagementFrameInfo; /*eSAP_INDICATE_MGMT_FRAME*/ tSap_SendActionCnf sapActionCnf; /* eSAP_SEND_ACTION_CNF */ tSap_UnknownSTAJoinEvent sapUnknownSTAJoin; /* eSAP_UNKNOWN_STA_JOIN */ tSap_MaxAssocExceededEvent sapMaxAssocExceeded; /* eSAP_MAX_ASSOC_EXCEEDED */ diff --git a/CORE/SAP/src/sapApiLinkCntl.c b/CORE/SAP/src/sapApiLinkCntl.c index 199a422303ec..3b0f3e8ad44f 100644 --- a/CORE/SAP/src/sapApiLinkCntl.c +++ b/CORE/SAP/src/sapApiLinkCntl.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2015 The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2016 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -685,15 +685,6 @@ WLANSAP_RoamCallback FL("CSR roamStatus = %s (%d)"), "eCSR_ROAM_WPS_PBC_PROBE_REQ_IND", roamStatus); break; - - case eCSR_ROAM_INDICATE_MGMT_FRAME: - VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, - FL("CSR roamStatus = %s (%d)"), - "eCSR_ROAM_INDICATE_MGMT_FRAME", roamStatus); - sapSignalHDDevent(sapContext, pCsrRoamInfo, - eSAP_INDICATE_MGMT_FRAME, - (v_PVOID_t) eSAP_STATUS_SUCCESS); - break; case eCSR_ROAM_REMAIN_CHAN_READY: VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, FL("CSR roamStatus = %s (%d)"), diff --git a/CORE/SAP/src/sapFsm.c b/CORE/SAP/src/sapFsm.c index da1518b02a0b..c94843df0a99 100644 --- a/CORE/SAP/src/sapFsm.c +++ b/CORE/SAP/src/sapFsm.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2015 The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2016 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -2957,22 +2957,6 @@ sapSignalHDDevent pCsrRoamInfo->u.pWPSPBCProbeReq, sizeof(tSirWPSPBCProbeReq)); break; - - case eSAP_INDICATE_MGMT_FRAME: - VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, - FL("SAP event callback event = %s"), - "eSAP_INDICATE_MGMT_FRAME"); - sapApAppEvent.sapHddEventCode = eSAP_INDICATE_MGMT_FRAME; - sapApAppEvent.sapevt.sapManagementFrameInfo.nFrameLength - = pCsrRoamInfo->nFrameLength; - sapApAppEvent.sapevt.sapManagementFrameInfo.pbFrames - = pCsrRoamInfo->pbFrames; - sapApAppEvent.sapevt.sapManagementFrameInfo.frameType - = pCsrRoamInfo->frameType; - sapApAppEvent.sapevt.sapManagementFrameInfo.rxChan - = pCsrRoamInfo->rxChan; - - break; case eSAP_REMAIN_CHAN_READY: VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, FL("SAP event callback event = %s"), diff --git a/CORE/SME/inc/csrApi.h b/CORE/SME/inc/csrApi.h index 86635069c0f6..79d69cf4eb17 100644 --- a/CORE/SME/inc/csrApi.h +++ b/CORE/SME/inc/csrApi.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011-2015 The Linux Foundation. All rights reserved. + * Copyright (c) 2011-2016 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -499,7 +499,6 @@ typedef enum eCSR_ROAM_FT_RESPONSE, #endif eCSR_ROAM_FT_START, - eCSR_ROAM_INDICATE_MGMT_FRAME, eCSR_ROAM_REMAIN_CHAN_READY, eCSR_ROAM_SEND_ACTION_CNF, //this mean error happens before association_start or roaming_start is called. diff --git a/CORE/SME/inc/sme_Api.h b/CORE/SME/inc/sme_Api.h index b3028a42c244..1c7f1eeb8e69 100644 --- a/CORE/SME/inc/sme_Api.h +++ b/CORE/SME/inc/sme_Api.h @@ -4340,6 +4340,8 @@ sme_set_tsf_gpio(tHalHandle hHal, uint32_t pinvalue) #endif bool smeNeighborMiddleOfRoaming(tHalHandle hHal, tANI_U8 sessionId); +eHalStatus sme_register_mgmt_frame_ind_callback(tHalHandle hal, + sir_mgmt_frame_ind_callback callback); eHalStatus sme_update_nss(tHalHandle h_hal, uint8_t nss); void sme_enable_phy_error_logs(tHalHandle hal, bool enable_log); diff --git a/CORE/SME/src/csr/csrUtil.c b/CORE/SME/src/csr/csrUtil.c index b0668b3357c6..1fa19dcef069 100644 --- a/CORE/SME/src/csr/csrUtil.c +++ b/CORE/SME/src/csr/csrUtil.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011-2015 The Linux Foundation. All rights reserved. + * Copyright (c) 2011-2016 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -455,7 +455,6 @@ get_eRoamCmdStatus_str(eRoamCmdStatus val) CASE_RETURN_STR(eCSR_ROAM_FT_RESPONSE); #endif CASE_RETURN_STR(eCSR_ROAM_FT_START); - CASE_RETURN_STR(eCSR_ROAM_INDICATE_MGMT_FRAME); CASE_RETURN_STR(eCSR_ROAM_REMAIN_CHAN_READY); CASE_RETURN_STR(eCSR_ROAM_SEND_ACTION_CNF); CASE_RETURN_STR(eCSR_ROAM_SESSION_OPENED); diff --git a/CORE/SME/src/p2p/p2p_Api.c b/CORE/SME/src/p2p/p2p_Api.c index cd26f5002603..ba91521bf4d5 100644 --- a/CORE/SME/src/p2p/p2p_Api.c +++ b/CORE/SME/src/p2p/p2p_Api.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2014 The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2014,2016 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -186,49 +186,6 @@ eHalStatus sme_remainOnChnRsp( tpAniSirGlobal pMac, tANI_U8 *pMsg) return status; } - -/*------------------------------------------------------------------ - * - * Handle the Mgmt frm ind from LIM and forward to HDD. - * - *------------------------------------------------------------------*/ - -eHalStatus sme_mgmtFrmInd( tHalHandle hHal, tpSirSmeMgmtFrameInd pSmeMgmtFrm) -{ - tpAniSirGlobal pMac = PMAC_STRUCT( hHal ); - eHalStatus status = eHAL_STATUS_SUCCESS; - tCsrRoamInfo pRoamInfo = {0}; - tANI_U8 i = 0; - tANI_U32 SessionId = pSmeMgmtFrm->sessionId; - - pRoamInfo.nFrameLength = pSmeMgmtFrm->mesgLen - sizeof(tSirSmeMgmtFrameInd); - pRoamInfo.pbFrames = pSmeMgmtFrm->frameBuf; - pRoamInfo.frameType = pSmeMgmtFrm->frameType; - pRoamInfo.rxChan = pSmeMgmtFrm->rxChan; - pRoamInfo.rxRssi = pSmeMgmtFrm->rxRssi; - if(CSR_IS_SESSION_ANY(SessionId)) - { - for(i = 0; i < CSR_ROAM_SESSION_MAX; i++) - { - if(CSR_IS_SESSION_VALID(pMac, i)) - { - SessionId = i; - break; - } - } - } - - if (i == CSR_ROAM_SESSION_MAX) { - smsLog(pMac, LOGE, FL("No valid sessions found.")); - return eHAL_STATUS_FAILURE; - } - /* forward the mgmt frame to HDD */ - csrRoamCallCallback(pMac, SessionId, &pRoamInfo, 0, eCSR_ROAM_INDICATE_MGMT_FRAME, 0); - - return status; -} - - /*------------------------------------------------------------------ * * Handle the remain on channel ready indication from PE diff --git a/CORE/SME/src/sme_common/sme_Api.c b/CORE/SME/src/sme_common/sme_Api.c index c022baad7320..a98af5fceaf5 100644 --- a/CORE/SME/src/sme_common/sme_Api.c +++ b/CORE/SME/src/sme_common/sme_Api.c @@ -93,7 +93,6 @@ extern void qosReleaseCommand( tpAniSirGlobal pMac, tSmeCmd *pCommand ); 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_mgmtFrmInd( tHalHandle hHal, tpSirSmeMgmtFrameInd pSmeMgmtFrm); 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); @@ -2694,17 +2693,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_MGMT_FRM_IND: - if(pMsg->bodyptr) - { - sme_mgmtFrmInd(pMac, pMsg->bodyptr); - vos_mem_free(pMsg->bodyptr); - } - else - { - smsLog( pMac, LOGE, "Empty rsp message for meas (eWNI_SME_MGMT_FRM_IND), nothing to process"); - } - break; case eWNI_SME_ACTION_FRAME_SEND_CNF: if(pMsg->bodyptr) { @@ -7495,6 +7483,48 @@ eHalStatus sme_GetOperationChannel(tHalHandle hHal, tANI_U32 *pChannel, tANI_U8 return eHAL_STATUS_FAILURE; }// sme_GetOperationChannel ends here +/** + * sme_register_mgmt_frame_ind_callback() - Register a callback for + * management frame indication to PE. + * + * @hal: hal pointer + * @callback: callback pointer to be registered + * + * This function is used to register a callback for management + * frame indication to PE. + * + * Return: Success if msg is posted to PE else Failure. + */ +eHalStatus sme_register_mgmt_frame_ind_callback(tHalHandle hal, + sir_mgmt_frame_ind_callback callback) +{ + tpAniSirGlobal mac_ctx = PMAC_STRUCT(hal); + struct sir_sme_mgmt_frame_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("Not able to allocate memory for eWNI_SME_REGISTER_MGMT_FRAME_CB")); + sme_ReleaseGlobalLock(&mac_ctx->sme); + return eHAL_STATUS_FAILURE; + } + vos_mem_set(msg, sizeof(*msg), 0); + msg->message_type = eWNI_SME_REGISTER_MGMT_FRAME_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; +} + /* --------------------------------------------------------------------------- \fn sme_RegisterMgtFrame diff --git a/CORE/SYS/legacy/src/utils/src/macTrace.c b/CORE/SYS/legacy/src/utils/src/macTrace.c index 3b0086976b5b..f1dada687077 100644 --- a/CORE/SYS/legacy/src/utils/src/macTrace.c +++ b/CORE/SYS/legacy/src/utils/src/macTrace.c @@ -427,7 +427,6 @@ tANI_U8* macTraceGetSmeMsgString( tANI_U16 smeMsg ) CASE_RETURN_STRING(eWNI_SME_REMAIN_ON_CHANNEL_REQ); CASE_RETURN_STRING(eWNI_SME_REMAIN_ON_CHN_IND); CASE_RETURN_STRING(eWNI_SME_REMAIN_ON_CHN_RSP); - CASE_RETURN_STRING(eWNI_SME_MGMT_FRM_IND); 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); @@ -524,6 +523,7 @@ tANI_U8* macTraceGetSmeMsgString( tANI_U16 smeMsg ) #endif 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); default: return( (tANI_U8*)"UNKNOWN" ); break; |
