Kaynağa Gözat

qcacmn: Add API to get link peer assoc req buffer

Add API to get link peer assoc req buffer

Change-Id: I293a86f8eaaaf5a2e02802388960386848201a2c
Himanshu Batra 3 yıl önce
ebeveyn
işleme
b981e05832

+ 10 - 0
umac/mlo_mgr/inc/wlan_mlo_mgr_cmn.h

@@ -208,6 +208,16 @@ void mlo_mlme_peer_delete(struct wlan_objmgr_peer *peer);
  */
 void mlo_mlme_peer_assoc_resp(struct wlan_objmgr_peer *peer);
 
+/**
+ * mlo_mlme_get_link_assoc_req() - API to get link assoc req buffer
+ * @peer: Object manager peer
+ * @link_ix: link id of vdev
+ *
+ * Return: assoc req buffer
+ */
+qdf_nbuf_t mlo_mlme_get_link_assoc_req(struct wlan_objmgr_peer *peer,
+				       uint8_t link_ix);
+
 /**
  * mlo_get_link_vdev_ix() - Get index of link VDEV in MLD
  * @ml_dev: ML device context

+ 11 - 0
umac/mlo_mgr/inc/wlan_mlo_mgr_peer.h

@@ -257,6 +257,17 @@ QDF_STATUS wlan_mlo_link_peer_attach(struct wlan_mlo_peer_context *ml_peer,
  */
 QDF_STATUS wlan_mlo_link_peer_delete(struct wlan_objmgr_peer *peer);
 
+/**
+ * mlo_peer_get_link_peer_assoc_req_buf() - API to get link assoc req buffer
+ * @peer: Object manager peer
+ * @link_ix: link id of vdev
+ *
+ * Return: assoc req buffer
+ */
+qdf_nbuf_t mlo_peer_get_link_peer_assoc_req_buf(
+			struct wlan_mlo_peer_context *ml_peer,
+			uint8_t link_ix);
+
 /**
  ** APIs to operations on ML peer object
  */

+ 3 - 0
umac/mlo_mgr/inc/wlan_mlo_mgr_public_structs.h

@@ -293,6 +293,7 @@ struct mlo_partner_info {
  * @mlo_mlme_ext_peer_assoc_fail: Callback to notify peer assoc failure
  * @mlo_mlme_ext_peer_delete: Callback to initiate link peer delete
  * @mlo_mlme_ext_assoc_resp: Callback to initiate assoc resp
+ * @mlo_mlme_get_link_assoc_req: Calback to get link assoc req buffer
  */
 struct mlo_mlme_ext_ops {
 	QDF_STATUS (*mlo_mlme_ext_validate_conn_req)(
@@ -307,5 +308,7 @@ struct mlo_mlme_ext_ops {
 	void (*mlo_mlme_ext_peer_assoc_fail)(struct wlan_objmgr_peer *peer);
 	void (*mlo_mlme_ext_peer_delete)(struct wlan_objmgr_peer *peer);
 	void (*mlo_mlme_ext_assoc_resp)(struct wlan_objmgr_peer *peer);
+	qdf_nbuf_t (*mlo_mlme_get_link_assoc_req)(struct wlan_objmgr_peer *peer,
+						  uint8_t link_ix);
 };
 #endif

+ 12 - 0
umac/mlo_mgr/src/wlan_mlo_mgr_cmn.c

@@ -195,6 +195,18 @@ void mlo_mlme_peer_assoc_resp(struct wlan_objmgr_peer *peer)
 	mlo_ctx->mlme_ops->mlo_mlme_ext_assoc_resp(peer);
 }
 
+qdf_nbuf_t mlo_mlme_get_link_assoc_req(struct wlan_objmgr_peer *peer,
+				       uint8_t link_ix)
+{
+	struct mlo_mgr_context *mlo_ctx = wlan_objmgr_get_mlo_ctx();
+
+	if (!mlo_ctx || !mlo_ctx->mlme_ops ||
+	    !mlo_ctx->mlme_ops->mlo_mlme_get_link_assoc_req)
+		return NULL;
+
+	return mlo_ctx->mlme_ops->mlo_mlme_get_link_assoc_req(peer, link_ix);
+}
+
 uint8_t mlo_get_link_vdev_ix(struct wlan_mlo_dev_context *ml_dev,
 			     struct wlan_objmgr_vdev *vdev)
 {

+ 18 - 0
umac/mlo_mgr/src/wlan_mlo_mgr_peer.c

@@ -643,3 +643,21 @@ QDF_STATUS wlan_mlo_link_peer_delete(struct wlan_objmgr_peer *peer)
 
 	return QDF_STATUS_SUCCESS;
 }
+
+qdf_export_symbol(wlan_mlo_link_peer_delete);
+
+qdf_nbuf_t mlo_peer_get_link_peer_assoc_req_buf(
+			struct wlan_mlo_peer_context *ml_peer,
+			uint8_t link_ix)
+{
+	struct wlan_objmgr_peer *peer = NULL;
+	qdf_nbuf_t assocbuf = NULL;
+
+	peer = wlan_mlo_peer_get_assoc_peer(ml_peer);
+	if (!peer)
+		return NULL;
+
+	assocbuf = mlo_mlme_get_link_assoc_req(peer, link_ix);
+
+	return assocbuf;
+}