|
@@ -895,6 +895,35 @@ int osif_twt_send_responder_disable_cmd(struct wlan_objmgr_psoc *psoc,
|
|
|
return osif_twt_responder_disable(psoc, &req);
|
|
|
}
|
|
|
|
|
|
+void osif_twt_teardown_in_ps_disable(struct wlan_objmgr_psoc *psoc,
|
|
|
+ struct qdf_mac_addr *mac_addr,
|
|
|
+ uint8_t vdev_id)
|
|
|
+{
|
|
|
+ struct twt_del_dialog_param params = {0};
|
|
|
+ int ret;
|
|
|
+ struct wlan_objmgr_vdev *vdev;
|
|
|
+
|
|
|
+ vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id, WLAN_TWT_ID);
|
|
|
+ if (!vdev) {
|
|
|
+ osif_err("vdev is NULL");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ params.dialog_id = TWT_ALL_SESSIONS_DIALOG_ID;
|
|
|
+ params.vdev_id = vdev_id;
|
|
|
+ qdf_copy_macaddr(¶ms.peer_macaddr, mac_addr);
|
|
|
+
|
|
|
+ if (ucfg_twt_is_setup_done(psoc, mac_addr, params.dialog_id)) {
|
|
|
+ osif_debug("vdev%d: Terminate existing TWT session %d due to ps disable",
|
|
|
+ params.vdev_id, params.dialog_id);
|
|
|
+ ret = osif_send_sta_twt_teardown_req(vdev, psoc, ¶ms);
|
|
|
+ if (ret)
|
|
|
+ osif_debug("TWT teardown is failed on vdev: %d",
|
|
|
+ vdev_id);
|
|
|
+ }
|
|
|
+ wlan_objmgr_vdev_release_ref(vdev, WLAN_TWT_ID);
|
|
|
+}
|
|
|
+
|
|
|
int osif_twt_get_capabilities(struct wlan_objmgr_vdev *vdev)
|
|
|
{
|
|
|
struct wlan_objmgr_psoc *psoc;
|