Browse Source

qcacld-3.0: Store the nss, chain config in vdev priv obj

Store the ini and dynamic configurations in the
respective vdev's mlme priv obj.

Change-Id: Ib7a90937799a188dd729c91e7ee248d3287951c5
CRs-Fixed: 2349201
gaurank kathpalia 6 years ago
parent
commit
991e2fa092

+ 22 - 0
components/mlme/core/inc/wlan_mlme_main.h

@@ -82,8 +82,12 @@ struct mlme_legacy_priv {
 
 /**
  * struct vdev_mlme_obj - VDEV MLME component object
+ * @dynamic_cfg: current configuration of nss, chains for vdev.
+ * @ini_cfg: Max configuration of nss, chains supported for vdev.
  */
 struct vdev_mlme_priv_obj {
+	struct wlan_mlme_nss_chains dynamic_cfg;
+	struct wlan_mlme_nss_chains ini_cfg;
 };
 
 /**
@@ -115,6 +119,24 @@ mlme_vdev_object_destroyed_notification(struct wlan_objmgr_vdev *vdev,
 
 #endif
 
+/**
+ * mlme_get_dynamic_vdev_config() - get the vdev dynamic config params
+ * @vdev: vdev pointer
+ *
+ * Return: pointer to the dynamic vdev config structure
+ */
+struct wlan_mlme_nss_chains *mlme_get_dynamic_vdev_config(
+					struct wlan_objmgr_vdev *vdev);
+
+/**
+ * mlme_get_ini_vdev_config() - get the vdev ini config params
+ * @vdev: vdev pointer
+ *
+ * Return: pointer to the ini vdev config structure
+ */
+struct wlan_mlme_nss_chains *mlme_get_ini_vdev_config(
+					struct wlan_objmgr_vdev *vdev);
+
 /**
  * mlme_psoc_object_created_notification(): mlme psoc create handler
  * @psoc: psoc which is going to created by objmgr

+ 61 - 0
components/mlme/core/src/wlan_mlme_main.c

@@ -40,6 +40,39 @@ struct wlan_mlme_psoc_obj *mlme_get_psoc_obj(struct wlan_objmgr_psoc *psoc)
 }
 
 #ifdef CONFIG_VDEV_SM
+struct wlan_mlme_nss_chains *mlme_get_dynamic_vdev_config(
+				struct wlan_objmgr_vdev *vdev)
+{
+	struct vdev_mlme_obj *vdev_mlme;
+	struct mlme_legacy_priv *mlme_priv;
+
+	vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(vdev);
+	if (!vdev_mlme) {
+		mlme_err("vdev component object is NULL");
+		return NULL;
+	}
+
+	mlme_priv = vdev_mlme->legacy_vdev_ptr;
+
+	return &mlme_priv->dynamic_cfg;
+}
+
+struct wlan_mlme_nss_chains *mlme_get_ini_vdev_config(
+				struct wlan_objmgr_vdev *vdev)
+{
+	struct vdev_mlme_obj *vdev_mlme;
+	struct mlme_legacy_priv *mlme_priv;
+
+	vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(vdev);
+	if (!vdev_mlme) {
+		mlme_err("vdev component object is NULL");
+		return NULL;
+	}
+
+	mlme_priv = vdev_mlme->legacy_vdev_ptr;
+
+	return &mlme_priv->ini_cfg;
+}
 
 #else
 
@@ -63,6 +96,34 @@ wlan_vdev_mlme_get_priv_obj(struct wlan_objmgr_vdev *vdev)
 	return vdev_mlme;
 }
 
+struct wlan_mlme_nss_chains *mlme_get_dynamic_vdev_config(
+				struct wlan_objmgr_vdev *vdev)
+{
+	struct vdev_mlme_priv_obj *vdev_mlme;
+
+	vdev_mlme = wlan_vdev_mlme_get_priv_obj(vdev);
+	if (!vdev_mlme) {
+		mlme_err("vdev component object is NULL");
+		return NULL;
+	}
+
+	return &vdev_mlme->dynamic_cfg;
+}
+
+struct wlan_mlme_nss_chains *mlme_get_ini_vdev_config(
+				struct wlan_objmgr_vdev *vdev)
+{
+	struct vdev_mlme_priv_obj *vdev_mlme;
+
+	vdev_mlme = wlan_vdev_mlme_get_priv_obj(vdev);
+	if (!vdev_mlme) {
+		mlme_err("vdev component object is NULL");
+		return NULL;
+	}
+
+	return &vdev_mlme->ini_cfg;
+}
+
 QDF_STATUS
 mlme_vdev_object_created_notification(struct wlan_objmgr_vdev *vdev,
 				      void *arg)