Преглед на файлове

qcacld-3.0: Add wow event and reason for roam event stats

This change sends the new wow event in the bitmap to FW only
when the roam stats suspend mode attribute is enabled from the
user space.
Also, the new wow reason is added to wake up the host while
sending the roam event stats.

Change-Id: Iaefb229929e8791870f33bf787487f7c20daf218
CRs-Fixed: 3050830
Srikanth Marepalli преди 3 години
родител
ревизия
b58c94c063
променени са 3 файла, в които са добавени 25 реда и са изтрити 0 реда
  1. 6 0
      components/umac/mlme/connection_mgr/dispatcher/src/wlan_cm_roam_api.c
  2. 16 0
      core/hdd/src/wlan_hdd_cfg80211.c
  3. 3 0
      core/wma/src/wma_features.c

+ 6 - 0
components/umac/mlme/connection_mgr/dispatcher/src/wlan_cm_roam_api.c

@@ -2270,6 +2270,9 @@ wlan_cm_update_roam_rt_stats(struct wlan_objmgr_psoc *psoc,
 	case ROAM_RT_STATS_ENABLE:
 		roam_rt_stats->roam_stats_enabled = value;
 		break;
+	case ROAM_RT_STATS_SUSPEND_MODE_ENABLE:
+		roam_rt_stats->roam_stats_wow_sent = value;
+		break;
 	default:
 		break;
 	}
@@ -2295,6 +2298,9 @@ uint8_t wlan_cm_get_roam_rt_stats(struct wlan_objmgr_psoc *psoc,
 	case ROAM_RT_STATS_ENABLE:
 		rstats_value = roam_rt_stats->roam_stats_enabled;
 		break;
+	case ROAM_RT_STATS_SUSPEND_MODE_ENABLE:
+		rstats_value = roam_rt_stats->roam_stats_wow_sent;
+		break;
 	default:
 		break;
 	}

+ 16 - 0
core/hdd/src/wlan_hdd_cfg80211.c

@@ -15810,6 +15810,22 @@ static int __wlan_hdd_cfg80211_set_roam_events(struct wiphy *wiphy,
 	ucfg_cm_update_roam_rt_stats(hdd_ctx->psoc,
 				     param, ROAM_RT_STATS_ENABLE);
 
+	if (param == (ROAM_RT_STATS_ENABLED |
+		      ROAM_RT_STATS_ENABLED_IN_SUSPEND_MODE)) {
+		ucfg_pmo_enable_wakeup_event(hdd_ctx->psoc, adapter->vdev_id,
+					     WOW_ROAM_STATS_EVENT);
+		ucfg_cm_update_roam_rt_stats(hdd_ctx->psoc,
+					     ROAM_RT_STATS_ENABLED,
+					     ROAM_RT_STATS_SUSPEND_MODE_ENABLE);
+	} else if (ucfg_cm_get_roam_rt_stats(hdd_ctx->psoc,
+					  ROAM_RT_STATS_SUSPEND_MODE_ENABLE)) {
+		ucfg_pmo_disable_wakeup_event(hdd_ctx->psoc, adapter->vdev_id,
+					      WOW_ROAM_STATS_EVENT);
+		ucfg_cm_update_roam_rt_stats(hdd_ctx->psoc,
+					     ROAM_RT_STATS_DISABLED,
+					     ROAM_RT_STATS_SUSPEND_MODE_ENABLE);
+	}
+
 	status = ucfg_cm_roam_send_rt_stats_config(hdd_ctx->pdev,
 						   adapter->vdev_id, param);
 

+ 3 - 0
core/wma/src/wma_features.c

@@ -1637,6 +1637,8 @@ static const uint8_t *wma_wow_wake_reason_str(A_INT32 wake_reason)
 		return "TWT Event";
 	case WOW_REASON_DCS_INT_DET:
 		return "DCS_INT_DET";
+	case WOW_REASON_ROAM_STATS:
+		return "ROAM_STATS";
 	default:
 		return "unknown";
 	}
@@ -2630,6 +2632,7 @@ static int wma_wake_event_no_payload(
 		return wma_wake_reason_nlod(wma, wake_info->vdev_id);
 
 	case WOW_REASON_GENERIC_WAKE:
+	case WOW_REASON_ROAM_STATS:
 		wma_info("Wake reason %s",
 			 wma_wow_wake_reason_str(wake_info->wake_reason));
 		return 0;