qcacld-3.0: Handle TDLS concurrency during CSA

If CSA on SAP/P2P GO causes MCC with the current STA TDLS vdev,
then teardown the TDLS connections, disable off channel and send
disable TDLS to firmware.
If CSA causes MCC -> DBS or MCC -> SCC then allow TDLS and update
the peer off channel list to firmware
Disable TDLS off-channel before SAP/P2P GO vdev restart.
Once CSA is complete, TDLS off-channel will be re-enabled based
on the concurrency.

Add interface manager changes to notify STA channel switch.

Change-Id: I36b359a7e1cf570cfb2b2f0e6abedf148a8fd174
CRs-Fixed: 3445112
This commit is contained in:
Pragaspathi Thilagaraj
2023-03-22 19:36:10 +05:30
committed by Madan Koyyalamudi
부모 2a0bd88990
커밋 282f018e47
16개의 변경된 파일420개의 추가작업 그리고 58개의 파일을 삭제

파일 보기

@@ -63,12 +63,14 @@ void wlan_tdls_get_features_info(struct wlan_objmgr_psoc *psoc,
QDF_STATUS wlan_tdls_teardown_links(struct wlan_objmgr_psoc *psoc);
/**
* wlan_tdls_teardown_links_sync() - teardown all the TDLS links
* wlan_tdls_check_and_teardown_links_sync() - teardown all the TDLS links
* @psoc: psoc object
* @vdev: Vdev object pointer
*
* Return: None
*/
void wlan_tdls_teardown_links_sync(struct wlan_objmgr_psoc *psoc);
void wlan_tdls_check_and_teardown_links_sync(struct wlan_objmgr_psoc *psoc,
struct wlan_objmgr_vdev *vdev);
/**
* wlan_tdls_notify_sta_disconnect() - notify sta disconnect
@@ -127,10 +129,62 @@ void wlan_tdls_update_rx_pkt_cnt(struct wlan_objmgr_vdev *vdev,
/**
* wlan_tdls_notify_start_bss() - Notify TDLS module on start bss
* @psoc: Pointer to PSOC object
* @vdev: Vdev object pointer
*
* Return: None
*/
void wlan_tdls_notify_start_bss(struct wlan_objmgr_psoc *psoc);
void wlan_tdls_notify_start_bss(struct wlan_objmgr_psoc *psoc,
struct wlan_objmgr_vdev *vdev);
#ifdef WLAN_FEATURE_TDLS_CONCURRENCIES
/**
* wlan_tdls_notify_channel_switch_complete() - Notify TDLS module about the
* channel switch completion
* @psoc: Pointer to PSOC object
* @vdev_id: vdev id
*
* Return: None
*/
void wlan_tdls_notify_channel_switch_complete(struct wlan_objmgr_psoc *psoc,
uint8_t vdev_id);
/**
* wlan_tdls_notify_channel_switch_start() - Process channel switch start
* for SAP/P2P GO vdev. For STA vdev, TDLS teardown happens, so explicit
* disable off channel is not required.
* @psoc: Pointer to PSOC object
* @vdev: Pointer to current vdev on which CSA is triggered
*
* Return: None
*/
void wlan_tdls_notify_channel_switch_start(struct wlan_objmgr_psoc *psoc,
struct wlan_objmgr_vdev *vdev);
/**
* wlan_tdls_handle_p2p_client_connect() - Handle P2P Client connect start
* @psoc: Pointer to PSOC object
* @vdev: Pointer to P2P client vdev
*
* Return: None
*/
void wlan_tdls_handle_p2p_client_connect(struct wlan_objmgr_psoc *psoc,
struct wlan_objmgr_vdev *vdev);
#else
static inline
void wlan_tdls_notify_channel_switch_complete(struct wlan_objmgr_psoc *psoc,
uint8_t vdev_id)
{}
static inline
void wlan_tdls_notify_channel_switch_start(struct wlan_objmgr_psoc *psoc,
struct wlan_objmgr_vdev *vdev)
{}
static inline
void wlan_tdls_handle_p2p_client_connect(struct wlan_objmgr_psoc *psoc,
struct wlan_objmgr_vdev *vdev)
{}
#endif /* WLAN_FEATURE_TDLS_CONCURRENCIES */
#else
#ifdef FEATURE_SET
@@ -152,7 +206,9 @@ static inline QDF_STATUS wlan_tdls_teardown_links(struct wlan_objmgr_psoc *psoc)
return QDF_STATUS_SUCCESS;
}
static inline void wlan_tdls_teardown_links_sync(struct wlan_objmgr_psoc *psoc)
static inline void
wlan_tdls_check_and_teardown_links_sync(struct wlan_objmgr_psoc *psoc,
struct wlan_objmgr_vdev *vdev)
{}
static inline
@@ -181,7 +237,23 @@ void wlan_tdls_update_rx_pkt_cnt(struct wlan_objmgr_vdev *vdev,
}
static inline
void wlan_tdls_notify_start_bss(struct wlan_objmgr_psoc *psoc)
void wlan_tdls_notify_start_bss(struct wlan_objmgr_psoc *psoc,
struct wlan_objmgr_vdev *vdev)
{}
static inline
void wlan_tdls_notify_channel_switch_complete(struct wlan_objmgr_psoc *psoc,
uint8_t vdev_id)
{}
static inline
void wlan_tdls_notify_channel_switch_start(struct wlan_objmgr_psoc *psoc,
struct wlan_objmgr_vdev *vdev)
{}
static inline
void wlan_tdls_handle_p2p_client_connect(struct wlan_objmgr_psoc *psoc,
struct wlan_objmgr_vdev *vdev)
{}
#endif
#endif

파일 보기

@@ -298,10 +298,12 @@ QDF_STATUS ucfg_tdls_teardown_links(struct wlan_objmgr_psoc *psoc);
/**
* ucfg_tdls_teardown_links_sync() - teardown all TDLS links.
* @psoc: psoc object
* @vdev: Vdev object pointer
*
* Return: None
*/
void ucfg_tdls_teardown_links_sync(struct wlan_objmgr_psoc *psoc);
void ucfg_tdls_teardown_links_sync(struct wlan_objmgr_psoc *psoc,
struct wlan_objmgr_vdev *vdev);
/**
* ucfg_tdls_notify_reset_adapter() - notify reset adapter
@@ -534,7 +536,8 @@ QDF_STATUS ucfg_tdls_teardown_links(struct wlan_objmgr_psoc *psoc)
}
static inline
void ucfg_tdls_teardown_links_sync(struct wlan_objmgr_psoc *psoc)
void ucfg_tdls_teardown_links_sync(struct wlan_objmgr_psoc *psoc,
struct wlan_objmgr_vdev *vdev)
{
}