|
@@ -89,6 +89,38 @@ void mlo_mgr_update_ap_link_info(struct wlan_objmgr_vdev *vdev, uint8_t link_id,
|
|
|
QDF_MAC_ADDR_REF(link_info->ap_link_addr.bytes));
|
|
|
}
|
|
|
|
|
|
+void mlo_mgr_clear_ap_link_info(struct wlan_objmgr_vdev *vdev,
|
|
|
+ uint8_t *ap_link_addr)
|
|
|
+{
|
|
|
+ struct mlo_link_info *link_info;
|
|
|
+ uint8_t link_info_iter;
|
|
|
+
|
|
|
+ if (!vdev || !vdev->mlo_dev_ctx || !ap_link_addr)
|
|
|
+ return;
|
|
|
+
|
|
|
+ link_info = &vdev->mlo_dev_ctx->link_ctx->links_info[0];
|
|
|
+ for (link_info_iter = 0; link_info_iter < WLAN_MAX_ML_BSS_LINKS;
|
|
|
+ link_info_iter++) {
|
|
|
+ if (qdf_is_macaddr_equal(&link_info->ap_link_addr,
|
|
|
+ (struct qdf_mac_addr *)ap_link_addr)) {
|
|
|
+ mlo_debug("Clear AP link info for link_id: %d, vdev_id:%d, link_addr:" QDF_MAC_ADDR_FMT,
|
|
|
+ link_info->link_id, link_info->vdev_id,
|
|
|
+ QDF_MAC_ADDR_REF(link_info->ap_link_addr.bytes));
|
|
|
+
|
|
|
+ qdf_mem_zero(&link_info->ap_link_addr,
|
|
|
+ QDF_MAC_ADDR_SIZE);
|
|
|
+ qdf_mem_zero(link_info->link_chan_info,
|
|
|
+ sizeof(*link_info->link_chan_info));
|
|
|
+ link_info->link_id = WLAN_INVALID_LINK_ID;
|
|
|
+ link_info->link_status_flags = 0;
|
|
|
+
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ link_info++;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
void mlo_mgr_update_ap_channel_info(struct wlan_objmgr_vdev *vdev, uint8_t link_id,
|
|
|
uint8_t *ap_link_addr,
|
|
|
struct wlan_channel channel)
|