|
@@ -1226,6 +1226,8 @@ int wmi_twt_del_status_to_vendor_twt_status(enum WMI_HOST_DEL_TWT_STATUS status)
|
|
|
return QCA_WLAN_VENDOR_TWT_STATUS_CHANNEL_SWITCH_IN_PROGRESS;
|
|
|
case WMI_HOST_DEL_TWT_STATUS_SCAN_IN_PROGRESS:
|
|
|
return QCA_WLAN_VENDOR_TWT_STATUS_SCAN_IN_PROGRESS;
|
|
|
+ case WMI_HOST_DEL_TWT_STATUS_PS_DISABLE_TEARDOWN:
|
|
|
+ return QCA_WLAN_VENDOR_TWT_STATUS_POWER_SAVE_EXIT_TERMINATE;
|
|
|
default:
|
|
|
return QCA_WLAN_VENDOR_TWT_STATUS_UNKNOWN_ERROR;
|
|
|
}
|
|
@@ -4501,6 +4503,27 @@ void wlan_twt_concurrency_update(struct hdd_context *hdd_ctx)
|
|
|
qdf_sched_work(0, &hdd_ctx->twt_en_dis_work);
|
|
|
}
|
|
|
|
|
|
+void hdd_twt_del_dialog_in_ps_disable(struct hdd_context *hdd_ctx,
|
|
|
+ struct qdf_mac_addr *mac_addr,
|
|
|
+ uint8_t vdev_id)
|
|
|
+{
|
|
|
+ struct wmi_twt_del_dialog_param params = {0};
|
|
|
+ int ret;
|
|
|
+
|
|
|
+ params.dialog_id = WLAN_ALL_SESSIONS_DIALOG_ID;
|
|
|
+ params.vdev_id = vdev_id;
|
|
|
+ qdf_mem_copy(params.peer_macaddr, mac_addr->bytes, QDF_MAC_ADDR_SIZE);
|
|
|
+
|
|
|
+ if (ucfg_mlme_is_twt_setup_done(hdd_ctx->psoc, mac_addr,
|
|
|
+ params.dialog_id)) {
|
|
|
+ hdd_debug("vdev%d: Terminate existing TWT session %d due to ps disable",
|
|
|
+ params.vdev_id, params.dialog_id);
|
|
|
+ ret = hdd_send_twt_del_dialog_cmd(hdd_ctx, ¶ms);
|
|
|
+ if (ret)
|
|
|
+ hdd_debug("TWT teardown is failed on vdev: %d", vdev_id);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
void wlan_hdd_twt_init(struct hdd_context *hdd_ctx)
|
|
|
{
|
|
|
QDF_STATUS status;
|