summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwadesong <wadesong@codeaurora.org>2020-05-27 15:49:30 +0800
committerwadesong <wadesong@codeaurora.org>2020-06-04 17:11:10 +0800
commit0cda74b1b1704224c717a7f91cd1f2cb9a53120f (patch)
tree50f2a58f1524cc673d45a13dc5d673ad76faa204
parent29a3f500953bff48d4018b1ac5d207937f653704 (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.h9
-rw-r--r--core/hdd/src/wlan_hdd_main.c6
-rw-r--r--core/hdd/src/wlan_hdd_p2p.c56
-rw-r--r--core/mac/inc/sir_api.h14
-rw-r--r--core/mac/src/pe/lim/lim_p2p.c8
-rw-r--r--core/mac/src/pe/lim/lim_process_action_frame.c65
-rw-r--r--core/mac/src/pe/lim/lim_process_auth_frame.c20
-rw-r--r--core/mac/src/pe/lim/lim_process_message_queue.c13
-rw-r--r--core/mac/src/pe/lim/lim_process_probe_req_frame.c5
-rw-r--r--core/mac/src/pe/lim/lim_types.h24
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);