|
@@ -9615,6 +9615,56 @@ static inline void hdd_pm_qos_update_request(struct hdd_context *hdd_ctx,
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
+#if defined(CLD_PM_QOS) && defined(WLAN_FEATURE_LL_MODE)
|
|
|
+#if defined(CLD_DEV_PM_QOS)
|
|
|
+void wlan_hdd_set_wlm_mode(struct hdd_context *hdd_ctx, uint16_t latency_level)
|
|
|
+{
|
|
|
+ cpumask_t pm_qos_cpu_mask;
|
|
|
+
|
|
|
+ cpumask_clear(&pm_qos_cpu_mask);
|
|
|
+
|
|
|
+ if (latency_level ==
|
|
|
+ QCA_WLAN_VENDOR_ATTR_CONFIG_LATENCY_LEVEL_ULTRALOW) {
|
|
|
+ hdd_ctx->llm_enabled = true;
|
|
|
+ if (!hdd_ctx->hbw_requested) {
|
|
|
+ hdd_pm_qos_update_cpu_mask(&pm_qos_cpu_mask, true);
|
|
|
+ hdd_pm_qos_update_request(hdd_ctx, &pm_qos_cpu_mask);
|
|
|
+ hdd_ctx->hbw_requested = true;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (hdd_ctx->hbw_requested) {
|
|
|
+ hdd_pm_qos_update_cpu_mask(&pm_qos_cpu_mask, false);
|
|
|
+ hdd_pm_qos_update_request(hdd_ctx, &pm_qos_cpu_mask);
|
|
|
+ hdd_ctx->hbw_requested = false;
|
|
|
+ }
|
|
|
+ hdd_ctx->llm_enabled = false;
|
|
|
+ }
|
|
|
+}
|
|
|
+#else
|
|
|
+void wlan_hdd_set_wlm_mode(struct hdd_context *hdd_ctx, uint16_t latency_level)
|
|
|
+{
|
|
|
+ if (latency_level ==
|
|
|
+ QCA_WLAN_VENDOR_ATTR_CONFIG_LATENCY_LEVEL_ULTRALOW) {
|
|
|
+ hdd_ctx->llm_enabled = true;
|
|
|
+ if (!hdd_ctx->hbw_requested) {
|
|
|
+ cpumask_setall(&hdd_ctx->pm_qos_req.cpus_affine);
|
|
|
+ pm_qos_update_request(&hdd_ctx->pm_qos_req,
|
|
|
+ DISABLE_KRAIT_IDLE_PS_VAL);
|
|
|
+ hdd_ctx->hbw_requested = true;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (hdd_ctx->hbw_requested) {
|
|
|
+ cpumask_clear(&hdd_ctx->pm_qos_req.cpus_affine);
|
|
|
+ pm_qos_update_request(&hdd_ctx->pm_qos_req,
|
|
|
+ PM_QOS_DEFAULT_VALUE);
|
|
|
+ hdd_ctx->hbw_requested = false;
|
|
|
+ }
|
|
|
+ hdd_ctx->llm_enabled = false;
|
|
|
+ }
|
|
|
+}
|
|
|
+#endif
|
|
|
+#endif
|
|
|
+
|
|
|
|
|
|
* hdd_low_tput_gro_flush_skip_handler() - adjust GRO flush for low tput
|
|
|
* @hdd_ctx: handle to hdd context
|