qcacmn: Define VDEV MLME component object

This change defines VDEV MLME object, and registers with object manager to
be notified on creation/destroy, and also initializes MLME SM

Change-Id: I75bb7de7326e4bbed21ef9653427c4e0694c3ffc
CRs-Fixed: 2307722
diff --git a/umac/cmn_services/inc/wlan_cmn.h b/umac/cmn_services/inc/wlan_cmn.h
index bc654a3..9deffaf 100644
--- a/umac/cmn_services/inc/wlan_cmn.h
+++ b/umac/cmn_services/inc/wlan_cmn.h
@@ -442,12 +442,14 @@
  * @WLAN_BAND_2_4_GHZ: 2.4 GHz band
  * @WLAN_BAND_5_GHZ: 5 GHz band
  * @WLAN_BAND_4_9_GHZ: 4.9 GHz band
+ * @WLAN_BAND_NUM_MAX: Max num band
  */
 enum wlan_band {
 	WLAN_BAND_ALL,
 	WLAN_BAND_2_4_GHZ,
 	WLAN_BAND_5_GHZ,
 	WLAN_BAND_4_9_GHZ,
+	WLAN_BAND_NUM_MAX,
 };
 
 /**
diff --git a/umac/cmn_services/obj_mgr/inc/wlan_objmgr_pdev_obj.h b/umac/cmn_services/obj_mgr/inc/wlan_objmgr_pdev_obj.h
index 3dcdf17..e83980a 100644
--- a/umac/cmn_services/obj_mgr/inc/wlan_objmgr_pdev_obj.h
+++ b/umac/cmn_services/obj_mgr/inc/wlan_objmgr_pdev_obj.h
@@ -137,9 +137,11 @@
  * struct wlan_objmgr_pdev_mlme - pdev object mlme structure
  * @pdev_op_flags:    PDEV operation flags, can be used to know the
  *                    operation status (deletion progress, etc)
+ * @mlme_register_ops: Call back to register MLME legacy APIs
  */
 struct wlan_objmgr_pdev_mlme {
 	uint32_t pdev_op_flags;
+	QDF_STATUS (*mlme_register_ops)(void *vdev_mlme);
 };
 
 /**
diff --git a/umac/cmn_services/obj_mgr/inc/wlan_objmgr_vdev_obj.h b/umac/cmn_services/obj_mgr/inc/wlan_objmgr_vdev_obj.h
index d8dad81..7c0e467 100644
--- a/umac/cmn_services/obj_mgr/inc/wlan_objmgr_vdev_obj.h
+++ b/umac/cmn_services/obj_mgr/inc/wlan_objmgr_vdev_obj.h
@@ -284,7 +284,8 @@
 /**
  * struct wlan_objmgr_vdev_mlme - VDEV MLME specific sub structure
  * @vdev_opmode:        Opmode of VDEV
- * @mlme_state:         VDEV state
+ * @mlme_state:         VDEV MLME SM state
+ * @mlme_state:         VDEV MLME SM substate
  * @bss_chan:           BSS channel
  * @des_chan:           Desired channel, for STA Desired may not be used
  * @nss:                Num. Spatial streams
@@ -296,6 +297,7 @@
  * @vdev_feat_ext_caps: VDEV Extended feature caps
  * @max_rate:           MAX rate
  * @tx_mgmt_rate:       TX Mgmt. Rate
+ * @per_band_mgmt_rate: Per-band TX Mgmt. Rate
  * @vdev_op_flags:      Operation flags
  * @mataddr[]:          MAT address
  * @macaddr[]:          VDEV self MAC address
@@ -305,8 +307,9 @@
 struct wlan_objmgr_vdev_mlme {
 	enum QDF_OPMODE vdev_opmode;
 	enum wlan_vdev_state mlme_state;
-	struct wlan_channel  *bss_chan;   /* Define wlan_channel */
-	struct wlan_channel  *des_chan;  /*TODO ??? */
+	enum wlan_vdev_state mlme_substate;
+	struct wlan_channel *bss_chan;
+	struct wlan_channel *des_chan;
 	uint8_t nss;
 	uint8_t tx_chainmask;
 	uint8_t rx_chainmask;
@@ -316,6 +319,7 @@
 	uint32_t vdev_feat_ext_caps;
 	uint32_t max_rate;
 	uint32_t tx_mgmt_rate;
+	uint32_t per_band_mgmt_rate[WLAN_BAND_NUM_MAX];
 	uint32_t vdev_op_flags;
 	uint8_t  mataddr[QDF_MAC_ADDR_SIZE];
 	uint8_t  macaddr[QDF_MAC_ADDR_SIZE];