Browse Source

qcacld-3.0: mlo client association for mlo sap

Implement mlo client association for mlo sap

Change-Id: I29520b52268a407ba1591f075be66816ad084a9f
CRs-Fixed: 2973148
bings 4 years ago
parent
commit
297d852d44

+ 4 - 2
core/mac/src/pe/include/lim_global.h

@@ -178,22 +178,24 @@ struct sDphHashNode;
  * @present: Indicates whether assoc data is present or not
  * @sub_type: Indicates whether it is Association Request(=0) or Reassociation
  *            Request(=1) frame
- * @hdr: MAC header
+ * @sa: Mac address of requesting peer
  * @assoc_req: pointer to parsed ASSOC/REASSOC Request frame
  * @pmf_connection: flag indicating pmf connection
  * @assoc_req_copied: boolean to indicate if assoc req was copied to tmp above
  * @dup_entry: flag indicating if duplicate entry found
  * @sta_ds: station dph entry
+ * @partner_peer_idx: peer_idx which is already allocated by partner link
  */
 struct lim_assoc_data {
 	bool present;
 	uint8_t sub_type;
-	tSirMacMgmtHdr hdr;
+	tSirMacAddr sa;
 	struct sSirAssocReq *assoc_req;
 	bool pmf_connection;
 	bool assoc_req_copied;
 	bool dup_entry;
 	struct sDphHashNode *sta_ds;
+	uint16_t partner_peer_idx;
 };
 
 /* Pre-authentication structure definition */

+ 290 - 0
core/mac/src/pe/lim/lim_mlo.c

@@ -28,6 +28,7 @@
 #include "wlan_mlo_mgr_ap.h"
 #include <wlan_mlo_mgr_peer.h>
 #include <lim_assoc_utils.h>
+#include <wlan_mlo_mgr_peer.h>
 
 /**
  * lim_send_mlo_ie_update - mlo ie is changed, populate new beacon template
@@ -252,3 +253,292 @@ bool lim_is_mlo_recv_assoc(tpDphHashNode sta_ds)
 
 	return sta_ds->recv_assoc_frm;
 }
+
+QDF_STATUS lim_mlo_proc_assoc_req_frm(struct wlan_objmgr_vdev *vdev,
+				      struct wlan_mlo_peer_context *ml_peer,
+				      struct qdf_mac_addr *link_addr,
+				      qdf_nbuf_t buf)
+{
+	struct mac_context *mac_ctx;
+	struct pe_session *session;
+	tSirMacAddr sa;
+	uint8_t sub_type;
+	uint16_t peer_aid = ml_peer->assoc_id;
+	uint32_t frame_len;
+	uint8_t *frm_body;
+	tpSirMacMgmtHdr pHdr;
+	tSirMacFrameCtl fc;
+	tpSirAssocReq assoc_req;
+	QDF_STATUS status;
+
+	if (!vdev) {
+		pe_err("vdev is null");
+		return QDF_STATUS_E_INVAL;
+	}
+
+	if (!ml_peer) {
+		pe_err("ml_peer is null");
+		return QDF_STATUS_E_INVAL;
+	}
+
+	if (!link_addr) {
+		pe_err("link addr is null");
+		return QDF_STATUS_E_INVAL;
+	}
+
+	if (!buf) {
+		pe_err("assoq req buf is null");
+		return QDF_STATUS_E_INVAL;
+	}
+
+	mac_ctx = cds_get_context(QDF_MODULE_ID_PE);
+	if (!mac_ctx) {
+		pe_err("mac ctx is null");
+		return QDF_STATUS_E_INVAL;
+	}
+
+	session = pe_find_session_by_vdev_id(
+			mac_ctx, vdev->vdev_objmgr.vdev_id);
+	if (!session) {
+		pe_err("session is NULL");
+		return QDF_STATUS_E_INVAL;
+	}
+
+	if (qdf_nbuf_len(buf) <= sizeof(*pHdr)) {
+		pe_err("invalid buf");
+		return QDF_STATUS_E_INVAL;
+	}
+
+	frame_len = qdf_nbuf_len(buf) - sizeof(*pHdr);
+	frm_body = qdf_nbuf_data(buf) + sizeof(*pHdr);
+	pHdr = (tpSirMacMgmtHdr)qdf_nbuf_data(buf);
+	fc = pHdr->fc;
+
+	if (fc.type == SIR_MAC_MGMT_FRAME) {
+		if (fc.subType == SIR_MAC_MGMT_ASSOC_REQ) {
+			sub_type = LIM_ASSOC;
+		} else if (fc.subType == SIR_MAC_MGMT_REASSOC_REQ) {
+			sub_type = LIM_REASSOC;
+		} else {
+			pe_err("invalid mgt_type %d, sub_type %d",
+			       fc.type, fc.subType);
+			return QDF_STATUS_E_INVAL;
+		}
+	} else {
+		pe_err("invalid mgt_type %d, sub_type %d",
+		       fc.type, fc.subType);
+		return QDF_STATUS_E_INVAL;
+	}
+
+	qdf_mem_copy(sa, link_addr->bytes, QDF_MAC_ADDR_SIZE);
+	status = lim_check_assoc_req(mac_ctx, sub_type, sa, session);
+	if (QDF_IS_STATUS_ERROR(status))
+		return status;
+
+	/* Allocate memory for the Assoc Request frame */
+	assoc_req = qdf_mem_malloc(sizeof(*assoc_req));
+	if (!assoc_req)
+		return QDF_STATUS_E_NOMEM;
+
+	status = lim_mlo_partner_assoc_req_parse(mac_ctx, sa, session,
+						 assoc_req, sub_type,
+						 frm_body, frame_len);
+	if (QDF_IS_STATUS_ERROR(status)) {
+		pe_warn("Assoc Req rejected: frame parsing error. source addr:"
+			QDF_MAC_ADDR_FMT, QDF_MAC_ADDR_REF(sa));
+		qdf_mem_free(assoc_req);
+		return status;
+	}
+
+	return lim_proc_assoc_req_frm_cmn(mac_ctx, frm_body, frame_len,
+					  sub_type, session, sa, assoc_req,
+					  peer_aid);
+}
+
+void lim_mlo_ap_sta_assoc_suc(struct wlan_objmgr_peer *peer)
+{
+	struct mac_context *mac;
+	tpDphHashNode sta;
+	struct pe_session *pe_session;
+	struct wlan_objmgr_vdev *vdev;
+	uint16_t aid = 0;
+
+	mac = cds_get_context(QDF_MODULE_ID_PE);
+	if (!mac) {
+		pe_err("mac ctx is null");
+		return;
+	}
+	if (!peer) {
+		pe_err("peer is null");
+		return;
+	}
+	vdev = wlan_peer_get_vdev(peer);
+
+	pe_session = pe_find_session_by_vdev_id(
+			mac, vdev->vdev_objmgr.vdev_id);
+
+	if (!pe_session) {
+		pe_err("pe_session is NULL");
+		return;
+	}
+	sta = dph_lookup_hash_entry(mac, peer->macaddr, &aid,
+				    &pe_session->dph.dphHashTable);
+	if (!sta_ds) {
+		pe_err("sta ds is null");
+		return;
+	}
+	if (lim_send_mlm_assoc_ind(mac, sta, pe_session) != QDF_STATUS_SUCCESS)
+		lim_reject_association(mac, sta->staAddr,
+				       sta->mlmStaContext.subType,
+				       true, sta->mlmStaContext.authType,
+				       sta->assocId, true,
+				       STATUS_UNSPECIFIED_FAILURE,
+				       pe_session);
+}
+
+void lim_ap_mlo_sta_peer_ind(struct mac_context *mac,
+			     struct pe_session *pe_session,
+			     tpDphHashNode sta,
+			     bool add_sta_rsp_status)
+{
+	tpSirAssocReq assoc_req;
+	struct wlan_mlo_peer_context *ml_peer;
+	struct wlan_objmgr_peer *peer;
+
+	if (!sta) {
+		pe_err("sta ds is null");
+		return;
+	}
+	if (add_sta_rsp_status) {
+		peer = wlan_objmgr_get_peer_by_mac(mac->psoc,
+						   sta->staAddr,
+						   WLAN_LEGACY_MAC_ID);
+		if (!peer) {
+			pe_err("peer is null");
+			return;
+		}
+
+		if (lim_is_mlo_recv_assoc(sta)) {
+			assoc_req = pe_session->parsedAssocReq[sta->assocId];
+			wlan_mlo_peer_create(pe_session->vdev, peer,
+					     &assoc_req->mlo_info,
+					     assoc_req->assoc_req_buf,
+					     sta->assocId);
+		} else {
+			ml_peer = wlan_mlo_get_mlpeer_by_aid(
+					pe_session->vdev->mlo_dev_ctx,
+					sta->assocId);
+			wlan_mlo_link_peer_attach(ml_peer, peer);
+		}
+		wlan_objmgr_peer_release_ref(peer, WLAN_LEGACY_MAC_ID);
+	} else {
+		if (!lim_is_mlo_recv_assoc(sta)) {
+			ml_peer = wlan_mlo_get_mlpeer_by_aid(
+					pe_session->vdev->mlo_dev_ctx,
+					sta->assocId);
+			wlan_mlo_partner_peer_create_failed_notify(ml_peer);
+		}
+	}
+}
+
+/**
+ * lim_mlo_partner_sta_ds() - get partner sta ds
+ * @session: pe session
+ * @partner_peer_idx: aid
+ *
+ * Return: sta ds
+ */
+static tpDphHashNode lim_mlo_partner_sta_ds(struct pe_session *session,
+					    uint16_t partner_peer_idx)
+{
+	struct wlan_mlo_peer_context *mlo_peer_ctx;
+	struct wlan_objmgr_peer *peer;
+	uint16_t aid = 0;
+	struct mac_context *mac;
+
+	mac = cds_get_context(QDF_MODULE_ID_PE);
+	if (!mac) {
+		pe_err("mac ctx is null");
+		return NULL;
+	}
+	if (!session) {
+		pe_err("session is NULL");
+		return NULL;
+	}
+
+	mlo_peer_ctx = wlan_mlo_get_mlpeer_by_aid(session->vdev->mlo_dev_ctx,
+						  partner_peer_idx);
+	if (!mlo_peer_ctx) {
+		pe_err("mlo peer ctx is null");
+		return NULL;
+	}
+	peer = wlan_mlo_peer_get_assoc_peer(mlo_peer_ctx);
+	if (!peer) {
+		pe_err("peer is null");
+		return NULL;
+	}
+	return dph_lookup_hash_entry(mac, peer->macaddr, &aid,
+				     &session->dph.dphHashTable);
+}
+
+bool lim_mlo_partner_auth_type(struct pe_session *session,
+			       uint16_t partner_peer_idx,
+			       tAniAuthType *auth_type)
+{
+	bool status = false;
+
+	tpDphHashNode sta_ds = lim_mlo_partner_sta_ds(session,
+						      partner_peer_idx);
+
+	if (sta_ds) {
+		*auth_type = sta_ds->mlmStaContext.authType;
+		status = true;
+	} else {
+		pe_err("sta ds is null");
+	}
+
+	return status;
+}
+
+void lim_mlo_ap_sta_assoc_fail(struct wlan_objmgr_peer *peer)
+{
+	struct mac_context *mac;
+	struct wlan_objmgr_vdev *vdev;
+	tpDphHashNode sta;
+	struct pe_session *pe_session;
+	uint16_t aid = 0;
+
+	mac = cds_get_context(QDF_MODULE_ID_PE);
+	if (!mac) {
+		pe_err("mac ctx is null");
+		return;
+	}
+	if (!peer) {
+		pe_err("peer is null");
+		return;
+	}
+	vdev = wlan_peer_get_vdev(peer);
+	if (!vdev) {
+		pe_err("vdev is null");
+		return;
+	}
+	pe_session = pe_find_session_by_vdev_id(
+			mac, vdev->vdev_objmgr.vdev_id);
+
+	if (!pe_session) {
+		pe_err("pe_session is NULL");
+		return;
+	}
+	sta = dph_lookup_hash_entry(mac, peer->macaddr, &aid,
+				    &pe_session->dph.dphHashTable);
+	if (!sta_ds) {
+		pe_err("sta ds is null");
+		return;
+	}
+	lim_reject_association(mac, sta->staAddr,
+			       sta->mlmStaContext.subType,
+			       true, sta->mlmStaContext.authType,
+			       sta->assocId, true,
+			       STATUS_UNSPECIFIED_FAILURE,
+			       pe_session);
+}

+ 81 - 0
core/mac/src/pe/lim/lim_mlo.h

@@ -27,6 +27,7 @@
 
 #include "ani_global.h"
 #include "lim_session.h"
+#include <wlan_mlo_mgr_public_structs.h>
 
 #ifdef WLAN_FEATURE_11BE_MLO
 
@@ -136,6 +137,72 @@ bool lim_is_mlo_recv_assoc(tpDphHashNode sta_ds);
  * Return: void
  */
 void lim_set_mlo_recv_assoc(tpDphHashNode sta_ds, bool mlo_recv_assoc_frm);
+
+/**
+ * lim_mlo_proc_assoc_req_frm() - process assoc frame for mlo partner link
+ *
+ * This function is triggered by mlo mgr
+ *
+ * @vdev: pointer to vdev
+ * @ml_peer: pointer to ml_peer
+ * @link_addr: link addr
+ * @frm_buf: assoc req buffer
+ *
+ * This function is called from mlo mgr.
+ *
+ * Return: QDF_STATUS
+ */
+QDF_STATUS lim_mlo_proc_assoc_req_frm(struct wlan_objmgr_vdev *vdev,
+				      struct wlan_mlo_peer_context *ml_peer,
+				      struct qdf_mac_addr *link_addr,
+				      qdf_nbuf_t buf);
+
+/**
+ * lim_mlo_ap_sta_assoc_suc() - process add sta rsp for mlo connection
+ * @peer: pointer to peer to handle add sta response
+ *
+ * This function is triggered from mlo mgr.
+ *
+ * Return: void
+ */
+void lim_mlo_ap_sta_assoc_suc(struct wlan_objmgr_peer *peer);
+
+/**
+ * lim_ap_mlo_sta_peer_ind() - Indicate mlo mgr after receiving sta rsp
+ *
+ * @mac: pointer to mac_context
+ * @pe_session: pe session
+ * @sta_ds: Pointer to internal STA Datastructure
+ * @add_sta_rsp_status: add sta rsp status
+ *
+ * Return: void
+ */
+void lim_ap_mlo_sta_peer_ind(struct mac_context *mac,
+			     struct pe_session *pe_session,
+			     tpDphHashNode sta,
+			     bool add_sta_rsp_status);
+
+/**
+ * lim_mlo_partner_auth_type: update auth type from partner
+ * @session: pe session
+ * @partner_peer_idx: aid
+ * @auth_type: auth type to update
+ *
+ * Return: true if auth type is gotten successfully
+ */
+bool lim_mlo_partner_auth_type(struct pe_session *session,
+			       uint16_t partner_peer_idx,
+			       tAniAuthType *auth_type);
+
+/**
+ * lim_mlo_ap_sta_assoc_fail() - process add sta rsp fail for mlo connection
+ * @peer: pointer to peer to handle add sta response
+ *
+ * This function is triggered from mlo mgr.
+ *
+ * Return: void
+ */
+void lim_mlo_ap_sta_assoc_fail(struct wlan_objmgr_peer *peer);
 #else
 
 static inline void lim_mlo_notify_peer_disconn(struct pe_session *pe_session,
@@ -169,5 +236,19 @@ static inline void lim_set_mlo_recv_assoc(tpDphHashNode sta_ds,
 					  bool mlo_recv_assoc_frm)
 {
 }
+
+static inline bool lim_mlo_partner_auth_type(struct pe_session *session,
+					     uint16_t partner_peer_idx,
+					     tAniAuthType *auth_type)
+{
+	return false;
+}
+
+static inline void lim_ap_mlo_sta_peer_ind(struct mac_context *mac,
+					   struct pe_session *pe_session,
+					   tpDphHashNode sta,
+					   bool add_sta_rsp_status)
+{
+}
 #endif
 #endif

File diff suppressed because it is too large
+ 173 - 124
core/mac/src/pe/lim/lim_process_assoc_req_frame.c


+ 3 - 2
core/mac/src/pe/lim/lim_process_message_queue.c

@@ -169,12 +169,13 @@ static void lim_process_sae_msg_ap(struct mac_context *mac,
 		assoc_ind_sent =
 			lim_send_assoc_ind_to_sme(mac, session,
 						  assoc_req->sub_type,
-						  &assoc_req->hdr,
+						  assoc_req->sa,
 						  assoc_req->assoc_req,
 						  ANI_AKM_TYPE_SAE,
 						  assoc_req->pmf_connection,
 						  &assoc_req_copied,
-						  assoc_req->dup_entry, false);
+						  assoc_req->dup_entry, false,
+						  assoc_req->partner_peer_idx);
 		if (!assoc_ind_sent)
 			lim_process_assoc_cleanup(mac, session,
 						  assoc_req->assoc_req,

+ 14 - 2
core/mac/src/pe/lim/lim_process_mlm_rsp_messages.c

@@ -43,6 +43,7 @@
 #include "wma.h"
 #include "wlan_pkt_capture_ucfg_api.h"
 #include "wlan_lmac_if_def.h"
+#include <lim_mlo.h>
 
 #define MAX_SUPPORTED_PEERS_WEP 16
 
@@ -1932,9 +1933,11 @@ void lim_process_ap_mlm_add_sta_rsp(struct mac_context *mac,
 {
 	tpAddStaParams pAddStaParams = (tpAddStaParams) limMsgQ->bodyptr;
 	tpDphHashNode sta = NULL;
+	bool add_sta_rsp_status = true;
 
 	if (!pAddStaParams) {
 		pe_err("Invalid body pointer in message");
+		add_sta_rsp_status = false;
 		goto end;
 	}
 
@@ -1943,12 +1946,14 @@ void lim_process_ap_mlm_add_sta_rsp(struct mac_context *mac,
 				   &pe_session->dph.dphHashTable);
 	if (!sta) {
 		pe_err("DPH Entry for STA %X missing", pAddStaParams->assocId);
+		add_sta_rsp_status = false;
 		goto end;
 	}
 
 	if (eLIM_MLM_WT_ADD_STA_RSP_STATE != sta->mlmStaContext.mlmState) {
 		pe_err("Received unexpected WMA_ADD_STA_RSP in state %X",
 			sta->mlmStaContext.mlmState);
+		add_sta_rsp_status = false;
 		goto end;
 	}
 	if (QDF_STATUS_SUCCESS != pAddStaParams->status) {
@@ -1960,6 +1965,7 @@ void lim_process_ap_mlm_add_sta_rsp(struct mac_context *mac,
 				       sta->assocId, true,
 				       STATUS_UNSPECIFIED_FAILURE,
 				       pe_session);
+		add_sta_rsp_status = false;
 		goto end;
 	}
 	sta->nss = pAddStaParams->nss;
@@ -1975,16 +1981,22 @@ void lim_process_ap_mlm_add_sta_rsp(struct mac_context *mac,
 	 * 2) PE receives eWNI_SME_ASSOC_CNF from SME
 	 * 3) BTAMP-AP sends Re/Association Response to BTAMP-STA
 	 */
-	if (lim_send_mlm_assoc_ind(mac, sta, pe_session) != QDF_STATUS_SUCCESS)
+	if (!lim_is_mlo_conn(pe_session, sta) &&
+	    lim_send_mlm_assoc_ind(mac, sta, pe_session) !=
+	    QDF_STATUS_SUCCESS) {
 		lim_reject_association(mac, sta->staAddr,
 				       sta->mlmStaContext.subType,
 				       true, sta->mlmStaContext.authType,
 				       sta->assocId, true,
 				       STATUS_UNSPECIFIED_FAILURE,
 				       pe_session);
-
+		add_sta_rsp_status = false;
+	}
 	/* fall though to reclaim the original Add STA Response message */
 end:
+	if (lim_is_mlo_conn(pe_session, sta))
+		lim_ap_mlo_sta_peer_ind(mac, pe_session, sta,
+					add_sta_rsp_status);
 	if (0 != limMsgQ->bodyptr) {
 		qdf_mem_free(pAddStaParams);
 		limMsgQ->bodyptr = NULL;

+ 8 - 0
core/mac/src/pe/lim/lim_send_management_frames.c

@@ -56,6 +56,7 @@
 #include <wlan_mlme_api.h>
 #include <wlan_mlme_main.h>
 #include "wlan_crypto_global_api.h"
+#include "lim_mlo.h"
 
 /**
  *
@@ -1410,6 +1411,13 @@ lim_send_assoc_rsp_mgmt_frame(struct mac_context *mac_ctx,
 		pe_err("pe_session is NULL");
 		return;
 	}
+	if (sta && lim_is_mlo_conn(pe_session, sta) &&
+	    !lim_is_mlo_recv_assoc(sta)) {
+		pe_err("Do not send assoc rsp in mlo partner peer "
+		       QDF_MAC_ADDR_FMT,
+		       QDF_MAC_ADDR_REF(sta->staAddr));
+		return;
+	}
 
 	sme_session = pe_session->smeSessionId;
 

+ 63 - 3
core/mac/src/pe/lim/lim_types.h

@@ -407,6 +407,64 @@ void lim_process_auth_frame(struct mac_context *, uint8_t *, struct pe_session *
 QDF_STATUS lim_process_auth_frame_no_session(struct mac_context *mac,
 					     uint8_t *bd, void *body);
 
+/**
+ * lim_check_assoc_req() - check session and peer info before handling it
+ * @mac_ctx: pointer to Global MAC structure
+ * @sub_type: Assoc(=0) or Reassoc(=1) Requestframe
+ * @sa: Mac address of requesting peer
+ * @session: pointer to pe session entry
+ *
+ * Return: QDF_STATUS
+ */
+QDF_STATUS lim_check_assoc_req(struct mac_context *mac_ctx,
+			       uint8_t sub_type, tSirMacAddr sa,
+			       struct pe_session *session);
+
+/**
+ * lim_proc_assoc_req_frm_cmn() - process assoc req frame
+ * @mac_ctx: pointer to Global MAC structure
+ * @frm_body: frame body
+ * @frame_len: frame len
+ * @sub_type: Assoc(=0) or Reassoc(=1) Requestframe
+ * @session: pointer to pe session entry
+ * @sa: Mac address of requesting peer
+ * @assoc_req: assoc req
+ * @peer_aid: association id
+ *
+ * Return: QDF_STATUS
+ */
+QDF_STATUS lim_proc_assoc_req_frm_cmn(struct mac_context *mac_ctx,
+				      uint8_t *frm_body, uint32_t frame_len,
+				      uint8_t sub_type,
+				      struct pe_session *session,
+				      tSirMacAddr sa,
+				      tpSirAssocReq assoc_req,
+				      uint16_t peer_aid);
+
+/**
+ * lim_mlo_partner_assoc_req_parse() - checks for error in assoc req frame
+ *                                     parsing for mlo partner link
+ * @mac_ctx: pointer to Global MAC structure
+ * @sa: Mac address of requesting peer
+ * @session: pointer to pe session entry
+ * @assoc_req: pointer to ASSOC/REASSOC Request frame
+ * @sub_type: Assoc(=0) or Reassoc(=1) Requestframe
+ * @frm_body: frame body
+ * @frame_len: frame len
+ *
+ * Checks for error in frame parsing
+ *
+ * Return: QDF_STATUS
+ */
+#ifdef WLAN_FEATURE_11BE_MLO
+QDF_STATUS lim_mlo_partner_assoc_req_parse(struct mac_context *mac_ctx,
+					   tSirMacAddr sa,
+					   struct pe_session *session,
+					   tpSirAssocReq assoc_req,
+					   uint8_t sub_type, uint8_t *frm_body,
+					   uint32_t frame_len);
+#endif
+
 void lim_process_assoc_req_frame(struct mac_context *, uint8_t *, uint8_t, struct pe_session *);
 
 /**
@@ -1437,25 +1495,27 @@ void lim_process_assoc_cleanup(struct mac_context *mac_ctx,
  * @session: pe session entry
  * @sub_type: Indicates whether it is Association Request(=0) or Reassociation
  *            Request(=1) frame
- * @hdr: A pointer to the MAC header
+ * @sa: Mac address of requesting peer
  * @assoc_req: pointer to ASSOC/REASSOC Request frame
  * @akm_type: AKM type
  * @pmf_connection: flag indicating pmf connection
  * @assoc_req_copied: boolean to indicate if assoc req was copied to tmp above
  * @dup_entry: flag indicating if duplicate entry found
  * @force_1x1: flag to indicate if the STA nss needs to be downgraded to 1x1
+ * @partner_peer_idx: peer_idx which is already allocated by partner link
  *
  * Return: void
  */
 bool lim_send_assoc_ind_to_sme(struct mac_context *mac_ctx,
 			       struct pe_session *session,
 			       uint8_t sub_type,
-			       tpSirMacMgmtHdr hdr,
+			       tSirMacAddr sa,
 			       tpSirAssocReq assoc_req,
 			       enum ani_akm_type akm_type,
 			       bool pmf_connection,
 			       bool *assoc_req_copied,
-			       bool dup_entry, bool force_1x1);
+			       bool dup_entry, bool force_1x1,
+			       uint16_t partner_peer_idx);
 
 /**
  * lim_process_sta_add_bss_rsp_pre_assoc - Processes handoff request

Some files were not shown because too many files changed in this diff