qcacld-3.0: Send TDLS notify sta disconnect on roam

Currently, TDLS STA disconnect notification is not sent during
roam, so WMI_TDLS_SET_STATE_CMDID with disable command is not sent
to firmware. This leads to unexpected behavior in firmware when STA
have migrated to different mac based on new band (2 GHz to 5/6 GHz or
vice-versa) due to roaming, but TDLS STA remain on previous mac.
Firmware expects host to send WMI_TDLS_SET_STATE_CMDID on roam also
so that it can destroy and create new TDLS STA instance and map TDLS
STA to new mac.

To fix above issue, send WMI_TDLS_SET_STATE_CMDID with disable TDLS
state to firmware after driver receives roam sync indication which
leads to destruction of TDLS STA instance in firmware.
Host driver would later send WMI_TDLS_SET_STATE_CMDID with enable TDLS
state(not part of this commit) after successful STA roaming so that
firmware maps TDLS STA with new mac.

This change also removes unused ucfg_tdls_notify_sta_connect() and
ucfg_tdls_notify_sta_disconnect() APIs.

Change-Id: Id680d0f6193740b24e78115ac7dc7be26e28acff
CRs-Fixed: 3388507
This commit is contained in:
Surabhi Vishnoi
2023-02-10 17:20:25 +05:30
committed by Madan Koyyalamudi
parent f2c863571c
commit b8adb54ef5
3 changed files with 6 additions and 64 deletions

View File

@@ -1,6 +1,6 @@
/*
* Copyright (c) 2017-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@@ -264,37 +264,6 @@ void ucfg_tdls_teardown_links_sync(struct wlan_objmgr_psoc *psoc);
*/
QDF_STATUS ucfg_tdls_notify_reset_adapter(struct wlan_objmgr_vdev *vdev);
/**
* ucfg_tdls_notify_sta_connect() - notify sta connect to TDLS
* @vdev_id: pointer to soc object
* @tdls_chan_swit_prohibited: indicates channel switch capability
* @tdls_prohibited: indicates tdls allowed or not
* @vdev: vdev object manager
*
* Notify sta connect event to TDLS component
*
* Return: None
*/
void ucfg_tdls_notify_sta_connect(uint8_t vdev_id,
bool tdls_chan_swit_prohibited,
bool tdls_prohibited,
struct wlan_objmgr_vdev *vdev);
/**
* ucfg_tdls_notify_sta_disconnect() - notify sta disconnect
* @vdev_id: pointer to soc object
* @lfr_roam: indicate, whether disconnect due to lfr roam
* @user_disconnect: disconnect from user space
* @vdev: vdev object manager
*
* Notify sta disconnect event to TDLS component
*
* Return: None
*/
void ucfg_tdls_notify_sta_disconnect(uint8_t vdev_id,
bool lfr_roam, bool user_disconnect,
struct wlan_objmgr_vdev *vdev);
/**
* ucfg_tdls_set_operating_mode() - set operating mode
* @set_mode_params: set mode params
@@ -486,20 +455,6 @@ void ucfg_tdls_notify_connect_failure(struct wlan_objmgr_psoc *psoc)
{
}
static inline
void ucfg_tdls_notify_sta_connect(uint8_t vdev_id,
bool tdls_chan_swit_prohibited,
bool tdls_prohibited,
struct wlan_objmgr_vdev *vdev)
{
}
static inline
void ucfg_tdls_notify_sta_disconnect(uint8_t vdev_id,
bool lfr_roam, bool user_disconnect,
struct wlan_objmgr_vdev *vdev)
{}
static inline
struct wlan_objmgr_vdev *ucfg_get_tdls_vdev(struct wlan_objmgr_psoc *psoc,
wlan_objmgr_ref_dbgid dbg_id)