From cf626e1a3c9b192240c1c0cb027d0419884e5001 Mon Sep 17 00:00:00 2001 From: Asutosh Mohapatra Date: Tue, 7 May 2024 04:56:39 -0700 Subject: [PATCH] qcacld-3.0: Reconfigure KEEPALIVE interval after link switch As part of SET_KEEP_ALIVE_INTERVAL command host configures KEEPALIVE interval for connected ml vdevs and resets to default value as part of disconnect. In case of disconnect as part of link repurpose host resets KEEPALIVE interval and fails to set in connect case. To address this issue, don't reset KEEPALIVE interval incase of link repurpose and set it after connection. Change-Id: Ia62109ceb32740844cfef3ef975ab15492e64b8c CRs-Fixed: 3805788 --- core/hdd/src/wlan_hdd_cm_connect.c | 13 ++++++------- core/hdd/src/wlan_hdd_cm_disconnect.c | 4 +++- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/core/hdd/src/wlan_hdd_cm_connect.c b/core/hdd/src/wlan_hdd_cm_connect.c index 32077bb9c8..5521e1a662 100644 --- a/core/hdd/src/wlan_hdd_cm_connect.c +++ b/core/hdd/src/wlan_hdd_cm_connect.c @@ -1795,15 +1795,14 @@ hdd_cm_connect_success_pre_user_update(struct wlan_objmgr_vdev *vdev, link_info->vdev_id, QDF_TRACE_DEFAULT_PDEV_ID, QDF_PROTO_TYPE_MGMT, QDF_PROTO_MGMT_ASSOC)); - if (is_roam) { + if (is_roam) ucfg_dp_nud_indicate_roam(vdev); - - if (adapter->keep_alive_interval) - hdd_vdev_send_sta_keep_alive_interval(link_info, - hdd_ctx, - adapter->keep_alive_interval); - } /* hdd_objmgr_set_peer_mlme_auth_state */ + + if (adapter->keep_alive_interval && + (is_roam || wlan_vdev_mlme_is_mlo_link_switch_in_progress(vdev))) + hdd_vdev_send_sta_keep_alive_interval(link_info, hdd_ctx, + adapter->keep_alive_interval); } static void diff --git a/core/hdd/src/wlan_hdd_cm_disconnect.c b/core/hdd/src/wlan_hdd_cm_disconnect.c index c432d0c5ea..14f50af394 100644 --- a/core/hdd/src/wlan_hdd_cm_disconnect.c +++ b/core/hdd/src/wlan_hdd_cm_disconnect.c @@ -280,7 +280,9 @@ __hdd_cm_disconnect_handler_post_user_update(struct wlan_hdd_link_info *link_inf ucfg_dp_nud_reset_tracking(vdev); hdd_reset_limit_off_chan(adapter); - hdd_reset_sta_keep_alive_interval(link_info, hdd_ctx); + + if (!is_link_switch) + hdd_reset_sta_keep_alive_interval(link_info, hdd_ctx); hdd_cm_print_bss_info(sta_ctx); }