diff options
| author | wadesong <wadesong@codeaurora.org> | 2020-05-27 15:49:30 +0800 |
|---|---|---|
| committer | wadesong <wadesong@codeaurora.org> | 2020-06-04 17:11:10 +0800 |
| commit | 0cda74b1b1704224c717a7f91cd1f2cb9a53120f (patch) | |
| tree | 50f2a58f1524cc673d45a13dc5d673ad76faa204 | |
| parent | 29a3f500953bff48d4018b1ac5d207937f653704 (diff) | |
qcacld-3.0: Set EXTERNAL_AUTH flag for SAE auth frame
hostapd handles SAE authentication frames sent by a station.
Set the flag RXMGMT_FLAG_EXTERNAL_AUTH and forward them
to hostapd.
Change-Id: Ic1d6a560430307b899700f98d90a7dacfe741071
CRs-Fixed: 2695693
| -rw-r--r-- | core/hdd/inc/wlan_hdd_p2p.h | 9 | ||||
| -rw-r--r-- | core/hdd/src/wlan_hdd_main.c | 6 | ||||
| -rw-r--r-- | core/hdd/src/wlan_hdd_p2p.c | 56 | ||||
| -rw-r--r-- | core/mac/inc/sir_api.h | 14 | ||||
| -rw-r--r-- | core/mac/src/pe/lim/lim_p2p.c | 8 | ||||
| -rw-r--r-- | core/mac/src/pe/lim/lim_process_action_frame.c | 65 | ||||
| -rw-r--r-- | core/mac/src/pe/lim/lim_process_auth_frame.c | 20 | ||||
| -rw-r--r-- | core/mac/src/pe/lim/lim_process_message_queue.c | 13 | ||||
| -rw-r--r-- | core/mac/src/pe/lim/lim_process_probe_req_frame.c | 5 | ||||
| -rw-r--r-- | core/mac/src/pe/lim/lim_types.h | 24 |
10 files changed, 151 insertions, 69 deletions
diff --git a/core/hdd/inc/wlan_hdd_p2p.h b/core/hdd/inc/wlan_hdd_p2p.h index f71ed6b1847a..0e024442898f 100644 --- a/core/hdd/inc/wlan_hdd_p2p.h +++ b/core/hdd/inc/wlan_hdd_p2p.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2018 The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2018, 2020 The Linux Foundation. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -98,9 +98,10 @@ int hdd_set_p2p_ps(struct net_device *dev, void *msgData); int hdd_set_p2p_opps(struct net_device *dev, uint8_t *command); int hdd_set_p2p_noa(struct net_device *dev, uint8_t *command); -void __hdd_indicate_mgmt_frame(hdd_adapter_t *pAdapter, - uint32_t nFrameLength, uint8_t *pbFrames, - uint8_t frameType, uint32_t rxChan, int8_t rxRssi); +void __hdd_indicate_mgmt_frame(hdd_adapter_t *adapter, + uint32_t frame_length, uint8_t *frames, + uint8_t frame_type, uint32_t rx_chan, + int8_t rx_rssi, enum rxmgmt_flags rx_flags); void hdd_remain_chan_ready_handler(hdd_adapter_t *pAdapter, uint32_t scan_id); diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c index 4aa922e2b903..0bdef4ddbb6f 100644 --- a/core/hdd/src/wlan_hdd_main.c +++ b/core/hdd/src/wlan_hdd_main.c @@ -8780,7 +8780,8 @@ void hdd_indicate_mgmt_frame(tSirSmeMgmtFrameInd *frame_ind) frame_ind->frameBuf, frame_ind->frameType, frame_ind->rxChan, - frame_ind->rxRssi); + frame_ind->rxRssi, + frame_ind->rx_flags); } status = hdd_get_next_adapter(hdd_ctx, adapter_node, &next); @@ -8799,7 +8800,8 @@ void hdd_indicate_mgmt_frame(tSirSmeMgmtFrameInd *frame_ind) frame_ind->frameBuf, frame_ind->frameType, frame_ind->rxChan, - frame_ind->rxRssi); + frame_ind->rxRssi, + frame_ind->rx_flags); } /** diff --git a/core/hdd/src/wlan_hdd_p2p.c b/core/hdd/src/wlan_hdd_p2p.c index ec8be80f8d9f..88a7a212e170 100644 --- a/core/hdd/src/wlan_hdd_p2p.c +++ b/core/hdd/src/wlan_hdd_p2p.c @@ -3594,15 +3594,62 @@ static uint16_t get_rx_frame_freq_from_chan(uint32_t rx_chan) HDD_NL80211_BAND_5GHZ); } +#if defined(WLAN_FEATURE_SAE) && defined(CFG80211_EXTERNAL_AUTH_AP_SUPPORT) +/** + * wlan_hdd_set_rxmgmt_external_auth_flag() - Set the EXTERNAL_AUTH flag + * @nl80211_flag: flags to be sent to nl80211 from enum nl80211_rxmgmt_flags + * + * Set the flag NL80211_RXMGMT_FLAG_EXTERNAL_AUTH if supported. + */ +static void +wlan_hdd_set_rxmgmt_external_auth_flag(enum nl80211_rxmgmt_flags *nl80211_flag) +{ + *nl80211_flag |= NL80211_RXMGMT_FLAG_EXTERNAL_AUTH; +} +#else +static void +wlan_hdd_set_rxmgmt_external_auth_flag(enum nl80211_rxmgmt_flags *nl80211_flag) +{ +} +#endif + +/** + * wlan_hdd_cfg80211_convert_rxmgmt_flags() - Convert RXMGMT value + * @nl80211_flag: Flags to be sent to nl80211 from enum nl80211_rxmgmt_flags + * @flag: flags set by driver(SME/PE) from enum rxmgmt_flags + * + * Convert driver internal RXMGMT flag value to nl80211 defined RXMGMT flag + * Return: 0 on success, -EINVAL on invalid value + */ +static int +wlan_hdd_cfg80211_convert_rxmgmt_flags(enum rxmgmt_flags flag, + enum nl80211_rxmgmt_flags *nl80211_flag) +{ + int ret = -EINVAL; + + if (flag & RXMGMT_FLAG_EXTERNAL_AUTH) { + wlan_hdd_set_rxmgmt_external_auth_flag(nl80211_flag); + ret = 0; + } + + return ret; +} + static void indicate_rx_mgmt_over_nl80211(hdd_adapter_t *adapter, uint32_t frm_len, uint8_t *pb_frames, uint16_t freq, - int8_t rx_rssi) + int8_t rx_rssi, + enum rxmgmt_flags rx_flags) { + enum nl80211_rxmgmt_flags nl80211_flag = 0; + + if (wlan_hdd_cfg80211_convert_rxmgmt_flags(rx_flags, &nl80211_flag)) + hdd_debug("Failed to convert RXMGMT flags :0x%x to nl80211 format", + rx_flags); #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 0)) cfg80211_rx_mgmt(adapter->dev->ieee80211_ptr, freq, rx_rssi * 100, pb_frames, - frm_len, NL80211_RXMGMT_FLAG_ANSWERED); + frm_len, NL80211_RXMGMT_FLAG_ANSWERED | nl80211_flag); #elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 12, 0)) cfg80211_rx_mgmt(adapter->dev->ieee80211_ptr, freq, rx_rssi * 100, pb_frames, @@ -3617,7 +3664,8 @@ static void indicate_rx_mgmt_over_nl80211(hdd_adapter_t *adapter, void __hdd_indicate_mgmt_frame(hdd_adapter_t *adapter, uint32_t frm_len, uint8_t *pb_frames, uint8_t frame_type, - uint32_t rx_chan, int8_t rx_rssi) + uint32_t rx_chan, int8_t rx_rssi, + enum rxmgmt_flags rx_flags) { uint16_t freq; uint8_t type = 0; @@ -3719,6 +3767,6 @@ indicate: adapter->sessionId, adapter->dev->ifindex); indicate_rx_mgmt_over_nl80211(adapter, frm_len, pb_frames, - freq, rx_rssi); + freq, rx_rssi, rx_flags); } diff --git a/core/mac/inc/sir_api.h b/core/mac/inc/sir_api.h index 3fdc2869f661..d3896a72325d 100644 --- a/core/mac/inc/sir_api.h +++ b/core/mac/inc/sir_api.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2019 The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2020 The Linux Foundation. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -3025,12 +3025,24 @@ typedef struct sSirKeepAliveReq { uint8_t sessionId; } tSirKeepAliveReq, *tpSirKeepAliveReq; +/** + * enum rxmgmt_flags - flags for received management frame. + * @RXMGMT_FLAG_NONE: Default value to indicate no flags are set. + * @RXMGMT_FLAG_EXTERNAL_AUTH: frame can be used for external authentication + * by upper layers. + */ +enum rxmgmt_flags { + RXMGMT_FLAG_NONE, + RXMGMT_FLAG_EXTERNAL_AUTH = 1 << 1, +}; + typedef struct sSirSmeMgmtFrameInd { uint16_t frame_len; uint32_t rxChan; uint8_t sessionId; uint8_t frameType; int8_t rxRssi; + enum rxmgmt_flags rx_flags; uint8_t frameBuf[1]; /* variable */ } tSirSmeMgmtFrameInd, *tpSirSmeMgmtFrameInd; diff --git a/core/mac/src/pe/lim/lim_p2p.c b/core/mac/src/pe/lim/lim_p2p.c index 121f18145831..32b6745c1d21 100644 --- a/core/mac/src/pe/lim/lim_p2p.c +++ b/core/mac/src/pe/lim/lim_p2p.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2019 The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2020 The Linux Foundation. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -374,7 +374,8 @@ void lim_remain_on_chn_rsp(tpAniSirGlobal pMac, QDF_STATUS status, uint32_t *dat void lim_send_sme_mgmt_frame_ind(tpAniSirGlobal pMac, uint8_t frameType, uint8_t *frame, uint32_t frameLen, uint16_t sessionId, uint32_t rxChannel, - tpPESession psessionEntry, int8_t rxRssi) + tpPESession session_entry, + int8_t rx_rssi, enum rxmgmt_flags rx_flags) { tpSirSmeMgmtFrameInd pSirSmeMgmtFrame = NULL; uint16_t length; @@ -397,8 +398,9 @@ void lim_send_sme_mgmt_frame_ind(tpAniSirGlobal pMac, uint8_t frameType, pSirSmeMgmtFrame->frame_len = frameLen; pSirSmeMgmtFrame->sessionId = sessionId; pSirSmeMgmtFrame->frameType = frameType; - pSirSmeMgmtFrame->rxRssi = rxRssi; + pSirSmeMgmtFrame->rxRssi = rx_rssi; pSirSmeMgmtFrame->rxChan = rxChannel; + pSirSmeMgmtFrame->rx_flags = rx_flags; qdf_mem_zero(pSirSmeMgmtFrame->frameBuf, frameLen); qdf_mem_copy(pSirSmeMgmtFrame->frameBuf, frame, frameLen); diff --git a/core/mac/src/pe/lim/lim_process_action_frame.c b/core/mac/src/pe/lim/lim_process_action_frame.c index 402f42b04e46..5063c5fbc390 100644 --- a/core/mac/src/pe/lim/lim_process_action_frame.c +++ b/core/mac/src/pe/lim/lim_process_action_frame.c @@ -1096,10 +1096,11 @@ static void __lim_process_qos_map_configure_frame(tpAniSirGlobal mac_ctx, return; } lim_send_sme_mgmt_frame_ind(mac_ctx, mac_hdr->fc.subType, - (uint8_t *) mac_hdr, - frame_len + sizeof(tSirMacMgmtHdr), 0, - WMA_GET_RX_CH(rx_pkt_info), session, - WMA_GET_RX_RSSI_NORMALIZED(rx_pkt_info)); + (uint8_t *)mac_hdr, + frame_len + sizeof(tSirMacMgmtHdr), 0, + WMA_GET_RX_CH(rx_pkt_info), session, + WMA_GET_RX_RSSI_NORMALIZED(rx_pkt_info), + RXMGMT_FLAG_NONE); } #ifdef ANI_SUPPORT_11H @@ -1318,9 +1319,10 @@ __lim_process_radio_measure_request(tpAniSirGlobal pMac, uint8_t *pRxPacketInfo, /* Save seq no of currently processing rrm report req frame */ pMac->rrm.rrmPEContext.prev_rrm_report_seq_num = curr_seq_num; lim_send_sme_mgmt_frame_ind(pMac, pHdr->fc.subType, (uint8_t *)pHdr, - frameLen + sizeof(tSirMacMgmtHdr), 0, - WMA_GET_RX_CH(pRxPacketInfo), psessionEntry, - WMA_GET_RX_RSSI_NORMALIZED(pRxPacketInfo)); + frameLen + sizeof(tSirMacMgmtHdr), 0, + WMA_GET_RX_CH(pRxPacketInfo), psessionEntry, + WMA_GET_RX_RSSI_NORMALIZED(pRxPacketInfo), + RXMGMT_FLAG_NONE); frm = qdf_mem_malloc(sizeof(*frm)); if (frm == NULL) { @@ -1555,7 +1557,7 @@ static void __lim_process_sa_query_response_action_frame(tpAniSirGlobal pMac, WMA_GET_RX_CH(pRxPacketInfo), psessionEntry, WMA_GET_RX_RSSI_NORMALIZED( - pRxPacketInfo)); + pRxPacketInfo), RXMGMT_FLAG_NONE); return; } @@ -1686,7 +1688,7 @@ static void lim_process_action_vendor_specific(tpAniSirGlobal mac_ctx, sizeof(tSirMacMgmtHdr), session_id, WMA_GET_RX_CH(pkt_info), session, WMA_GET_RX_RSSI_NORMALIZED( - pkt_info)); + pkt_info), RXMGMT_FLAG_NONE); } else { pe_debug("Unhandled public action frame (Vendor specific) OUI: %x %x %x %x", action_hdr->Oui[0], @@ -1870,7 +1872,7 @@ void lim_process_action_frame(tpAniSirGlobal mac_ctx, frame_len + sizeof(tSirMacMgmtHdr), session->smeSessionId, WMA_GET_RX_CH(rx_pkt_info), - session, rssi); + session, rssi, RXMGMT_FLAG_NONE); break; default: pe_debug("Action ID: %d not handled in WNM category", @@ -1960,7 +1962,7 @@ void lim_process_action_frame(tpAniSirGlobal mac_ctx, WMA_GET_RX_CH(rx_pkt_info), session, WMA_GET_RX_RSSI_NORMALIZED( - rx_pkt_info)); + rx_pkt_info), RXMGMT_FLAG_NONE); } else { pe_debug("Dropping the vendor specific action frame beacause of (WES Mode not enabled (WESMODE: %d) or OUI mismatch (%02x %02x %02x) or not received with SelfSta address) system role: %d", IS_WES_MODE_ENABLED(mac_ctx), @@ -2006,7 +2008,8 @@ void lim_process_action_frame(tpAniSirGlobal mac_ctx, frame_len + sizeof(tSirMacMgmtHdr), session->smeSessionId, WMA_GET_RX_CH(rx_pkt_info), session, - WMA_GET_RX_RSSI_NORMALIZED(rx_pkt_info)); + WMA_GET_RX_RSSI_NORMALIZED(rx_pkt_info), + RXMGMT_FLAG_NONE); break; default: @@ -2072,7 +2075,7 @@ void lim_process_action_frame(tpAniSirGlobal mac_ctx, WMA_GET_RX_CH(rx_pkt_info), session, WMA_GET_RX_RSSI_NORMALIZED( - rx_pkt_info)); + rx_pkt_info), RXMGMT_FLAG_NONE); break; } case SIR_MAC_ACTION_PROT_DUAL_PUB: @@ -2089,7 +2092,8 @@ void lim_process_action_frame(tpAniSirGlobal mac_ctx, mac_hdr->fc.subType, (uint8_t *) mac_hdr, frame_len + sizeof(tSirMacMgmtHdr), session->smeSessionId, - WMA_GET_RX_CH(rx_pkt_info), session, rssi); + WMA_GET_RX_CH(rx_pkt_info), session, rssi, + RXMGMT_FLAG_NONE); break; default: pe_warn("Unhandled - Protected Dual Public Action"); @@ -2104,30 +2108,23 @@ void lim_process_action_frame(tpAniSirGlobal mac_ctx, } /** - * lim_process_action_frame_no_session + * lim_process_action_frame_no_session() - action frame handler + * @mac - Pointer to Global MAC structure + * @bd - A pointer to Buffer descriptor + associated PDUs * - ***FUNCTION: * This function is called by limProcessMessageQueue() upon * Action frame reception and no session. * Currently only public action frames can be received from * a non-associated station. * - ***LOGIC: - * - ***ASSUMPTIONS: - * - ***NOTE: - * - * @param pMac - Pointer to Global MAC structure - * @param *pBd - A pointer to Buffer descriptor + associated PDUs * @return None */ -void lim_process_action_frame_no_session(tpAniSirGlobal pMac, uint8_t *pBd) +void lim_process_action_frame_no_session(tpAniSirGlobal mac, uint8_t *bd) { - tpSirMacMgmtHdr mac_hdr = WMA_GET_RX_MAC_HEADER(pBd); - uint32_t frame_len = WMA_GET_RX_PAYLOAD_LEN(pBd); - uint8_t *pBody = WMA_GET_RX_MPDU_DATA(pBd); + tpSirMacMgmtHdr mac_hdr = WMA_GET_RX_MAC_HEADER(bd); + uint32_t frame_len = WMA_GET_RX_PAYLOAD_LEN(bd); + uint8_t *pBody = WMA_GET_RX_MPDU_DATA(bd); tpSirMacActionFrameHdr action_hdr = (tpSirMacActionFrameHdr) pBody; tpSirMacVendorSpecificPublicActionFrameHdr vendor_specific; @@ -2146,7 +2143,7 @@ void lim_process_action_frame_no_session(tpAniSirGlobal pMac, uint8_t *pBd) vendor_specific = (tpSirMacVendorSpecificPublicActionFrameHdr) action_hdr; - lim_process_action_vendor_specific(pMac, pBd, + lim_process_action_vendor_specific(mac, bd, vendor_specific, NULL); break; @@ -2160,12 +2157,12 @@ void lim_process_action_frame_no_session(tpAniSirGlobal pMac, uint8_t *pBd) */ pe_debug("Public Action Frame %d received", action_hdr->actionID); - lim_send_sme_mgmt_frame_ind(pMac, - mac_hdr->fc.subType, - (uint8_t *) mac_hdr, + lim_send_sme_mgmt_frame_ind( + mac, mac_hdr->fc.subType, (uint8_t *)mac_hdr, frame_len + sizeof(tSirMacMgmtHdr), 0, - WMA_GET_RX_CH(pBd), NULL, - WMA_GET_RX_RSSI_NORMALIZED(pBd)); + WMA_GET_RX_CH(bd), NULL, + WMA_GET_RX_RSSI_NORMALIZED(bd), + RXMGMT_FLAG_NONE); break; default: diff --git a/core/mac/src/pe/lim/lim_process_auth_frame.c b/core/mac/src/pe/lim/lim_process_auth_frame.c index 7c2edffd649a..10771dfd4be8 100644 --- a/core/mac/src/pe/lim/lim_process_auth_frame.c +++ b/core/mac/src/pe/lim/lim_process_auth_frame.c @@ -316,6 +316,7 @@ static void lim_process_sae_auth_frame(tpAniSirGlobal mac_ctx, tpSirMacMgmtHdr mac_hdr; uint32_t frame_len; uint8_t *body_ptr; + enum rxmgmt_flags rx_flags = RXMGMT_FLAG_NONE; mac_hdr = WMA_GET_RX_MAC_HEADER(rx_pkt_info); body_ptr = WMA_GET_RX_MPDU_DATA(rx_pkt_info); @@ -324,15 +325,20 @@ static void lim_process_sae_auth_frame(tpAniSirGlobal mac_ctx, pe_debug("Received SAE Auth frame type %d subtype %d", mac_hdr->fc.type, mac_hdr->fc.subType); - if (pe_session->limMlmState != eLIM_MLM_WT_SAE_AUTH_STATE) - pe_err("received SAE auth response in unexpected state %x", - pe_session->limMlmState); + if (LIM_IS_STA_ROLE(pe_session) && + pe_session->limMlmState != eLIM_MLM_WT_SAE_AUTH_STATE) + pe_err("received SAE auth response for STA in unexpected state %x", + pe_session->limMlmState); + + if (LIM_IS_AP_ROLE(pe_session)) + rx_flags = RXMGMT_FLAG_EXTERNAL_AUTH; lim_send_sme_mgmt_frame_ind(mac_ctx, mac_hdr->fc.subType, - (uint8_t *) mac_hdr, - frame_len + sizeof(tSirMacMgmtHdr), 0, - WMA_GET_RX_CH(rx_pkt_info), pe_session, - WMA_GET_RX_RSSI_NORMALIZED(rx_pkt_info)); + (uint8_t *)mac_hdr, + frame_len + sizeof(tSirMacMgmtHdr), 0, + WMA_GET_RX_CH(rx_pkt_info), pe_session, + WMA_GET_RX_RSSI_NORMALIZED(rx_pkt_info), + rx_flags); } #else static inline void lim_process_sae_auth_frame(tpAniSirGlobal mac_ctx, diff --git a/core/mac/src/pe/lim/lim_process_message_queue.c b/core/mac/src/pe/lim/lim_process_message_queue.c index c6c3e8b3bd88..2c7bf5b6f06c 100644 --- a/core/mac/src/pe/lim/lim_process_message_queue.c +++ b/core/mac/src/pe/lim/lim_process_message_queue.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011-2019 The Linux Foundation. All rights reserved. + * Copyright (c) 2011-2020 The Linux Foundation. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -907,12 +907,13 @@ lim_check_mgmt_registered_frames(tpAniSirGlobal mac_ctx, uint8_t *buff_desc, QDF_TRACE(QDF_MODULE_ID_PE, QDF_TRACE_LEVEL_DEBUG, FL("rcvd frame match with registered frame params")); /* Indicate this to SME */ - lim_send_sme_mgmt_frame_ind(mac_ctx, hdr->fc.subType, - (uint8_t *) hdr, + lim_send_sme_mgmt_frame_ind( + mac_ctx, hdr->fc.subType, (uint8_t *)hdr, WMA_GET_RX_PAYLOAD_LEN(buff_desc) + - sizeof(tSirMacMgmtHdr), mgmt_frame->sessionId, - WMA_GET_RX_CH(buff_desc), session_entry, - WMA_GET_RX_RSSI_NORMALIZED(buff_desc)); + sizeof(tSirMacMgmtHdr), + mgmt_frame->sessionId, WMA_GET_RX_CH(buff_desc), + session_entry, WMA_GET_RX_RSSI_NORMALIZED(buff_desc), + RXMGMT_FLAG_NONE); if ((type == SIR_MAC_MGMT_FRAME) && (fc.type == SIR_MAC_MGMT_FRAME) diff --git a/core/mac/src/pe/lim/lim_process_probe_req_frame.c b/core/mac/src/pe/lim/lim_process_probe_req_frame.c index 82961f0b025c..af06148a3793 100644 --- a/core/mac/src/pe/lim/lim_process_probe_req_frame.c +++ b/core/mac/src/pe/lim/lim_process_probe_req_frame.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2017 The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2017, 2020 The Linux Foundation. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -555,7 +555,8 @@ lim_indicate_probe_req_to_hdd(tpAniSirGlobal pMac, uint8_t *pBd, (frameLen + sizeof(tSirMacMgmtHdr)), psessionEntry->smeSessionId, WMA_GET_RX_CH(pBd), psessionEntry, - WMA_GET_RX_RSSI_NORMALIZED(pBd)); + WMA_GET_RX_RSSI_NORMALIZED(pBd), + RXMGMT_FLAG_NONE); } /*** end lim_indicate_probe_req_to_hdd() ***/ /** diff --git a/core/mac/src/pe/lim/lim_types.h b/core/mac/src/pe/lim/lim_types.h index 8caf092c4af5..6dc8490b2951 100644 --- a/core/mac/src/pe/lim/lim_types.h +++ b/core/mac/src/pe/lim/lim_types.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2019 The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2020 The Linux Foundation. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -904,11 +904,23 @@ void lim_change_channel_with_callback(tpAniSirGlobal pMac, uint8_t newChannel, CHANGE_CHANNEL_CALLBACK callback, uint32_t *cbdata, tpPESession psessionEntry); - -void lim_send_sme_mgmt_frame_ind(tpAniSirGlobal pMac, uint8_t frameType, - uint8_t *frame, uint32_t frameLen, - uint16_t sessionId, uint32_t rxChan, - tpPESession psessionEntry, int8_t rxRssi); +/* + * lim_send_sme_mgmt_frame_ind() - Function to send mgmt frame ind to HDD + * @mac_ctx: Pointer to Global MAC structure + * @frame_type: Type of mgmt frame + * @frame: Frame pointer + * @frame_len: Length og mgmt frame + * @session_id: session id + * @rx_chan: Channel of where packet is received + * @psession_entry: PE Session Entry + * @rx_rssi: rssi value + * @rx_flags: RXMGMT flags to be set for the frame. Defined in enum rxmgmt_flags + */ +void lim_send_sme_mgmt_frame_ind(tpAniSirGlobal mac_ctx, uint8_t frame_type, + uint8_t *frame, uint32_t frame_len, + uint16_t session_id, uint32_t rx_chan, + tpPESession psession_entry, + int8_t rx_rssi, enum rxmgmt_flags rx_flags); void lim_process_remain_on_chn_timeout(tpAniSirGlobal pMac); void lim_process_insert_single_shot_noa_timeout(tpAniSirGlobal pMac); void lim_convert_active_channel_to_passive_channel(tpAniSirGlobal pMac); |
