|
@@ -1815,6 +1815,26 @@ static QDF_STATUS vdevmgr_reconfig_req_flush_cb(struct scheduler_msg *msg)
|
|
|
return QDF_STATUS_SUCCESS;
|
|
|
}
|
|
|
|
|
|
+static QDF_STATUS
|
|
|
+vdevmgr_vdev_reconfig_notify(struct vdev_mlme_obj *vdev_mlme,
|
|
|
+ uint16_t *tbtt_count, uint16_t bcn_int)
|
|
|
+{
|
|
|
+ struct wlan_objmgr_vdev *vdev = vdev_mlme->vdev;
|
|
|
+
|
|
|
+ if (!vdev) {
|
|
|
+ mlme_err("invalid vdev");
|
|
|
+ return QDF_STATUS_E_INVAL;
|
|
|
+ }
|
|
|
+ mlme_debug("vdev %d link removal notify tbtt %d bcn_int %d",
|
|
|
+ wlan_vdev_get_id(vdev), *tbtt_count, bcn_int);
|
|
|
+ if (*tbtt_count * bcn_int <= LINK_REMOVAL_MIN_TIMEOUT_MS)
|
|
|
+ *tbtt_count = 0;
|
|
|
+ else if (bcn_int)
|
|
|
+ *tbtt_count -= LINK_REMOVAL_MIN_TIMEOUT_MS / bcn_int;
|
|
|
+
|
|
|
+ return QDF_STATUS_SUCCESS;
|
|
|
+}
|
|
|
+
|
|
|
static void
|
|
|
vdevmgr_vdev_reconfig_timer_complete(struct vdev_mlme_obj *vdev_mlme)
|
|
|
{
|
|
@@ -1996,6 +2016,8 @@ static struct vdev_mlme_ops sta_mlme_ops = {
|
|
|
.mlme_vdev_ext_peer_delete_all_rsp =
|
|
|
vdevmgr_vdev_peer_delete_all_rsp_handle,
|
|
|
#ifdef WLAN_FEATURE_11BE_MLO
|
|
|
+ .mlme_vdev_reconfig_notify =
|
|
|
+ vdevmgr_vdev_reconfig_notify,
|
|
|
.mlme_vdev_reconfig_timer_complete =
|
|
|
vdevmgr_vdev_reconfig_timer_complete,
|
|
|
#endif
|