qcacld-3.0: Add support for getting dtim and beacon interval

Add support for getting vdev dtim and beacon interval from
mlme in PMO.

Change-Id: I97c117eec290f6b9452b98629bf6b3ee10c38ce6
CRs-Fixed: 2252713
diff --git a/core/wma/inc/wma.h b/core/wma/inc/wma.h
index e0cdd1c..f41fed7 100644
--- a/core/wma/inc/wma.h
+++ b/core/wma/inc/wma.h
@@ -2400,20 +2400,76 @@
 	/* set value to zero */
 	*value = 0;
 
-	if (!mac) {
-		WMA_LOGE("%s: Failed to get mac context!", __func__);
+	if (!mac)
 		return QDF_STATUS_E_FAILURE;
-	}
 
-	if (wlan_cfg_get_int(mac, cfg_id, value) != eSIR_SUCCESS) {
-		WMA_LOGE("%s: Can't get cfg_id :%d", __func__, cfg_id);
+	if (wlan_cfg_get_int(mac, cfg_id, value) != eSIR_SUCCESS)
 		return QDF_STATUS_E_FAILURE;
-	}
 
 	return QDF_STATUS_SUCCESS;
 }
 
 /**
+ * wma_vdev_get_dtim_period - Get dtim period value from mlme
+ * @vdev_id: vdev index number
+ * @value: pointer to the value to fill out
+ *
+ * Note caller must verify return status before using value
+ *
+ * Return: QDF_STATUS_SUCCESS when fetched a valid value from cfg else
+ * QDF_STATUS_E_FAILURE
+ */
+static inline
+QDF_STATUS wma_vdev_get_dtim_period(uint8_t vdev_id, uint8_t *value)
+{
+	tp_wma_handle wma = (tp_wma_handle)cds_get_context(QDF_MODULE_ID_WMA);
+	struct wma_txrx_node *iface;
+	/* set value to zero */
+	*value = 0;
+
+	if (!wma)
+		return QDF_STATUS_E_FAILURE;
+
+	iface = &wma->interfaces[vdev_id];
+
+	if (!iface || !iface->handle)
+		return QDF_STATUS_E_FAILURE;
+
+	*value = iface->dtimPeriod;
+	return QDF_STATUS_SUCCESS;
+}
+
+/**
+ * wma_vdev_get_beacon_interval - Get beacon interval from mlme
+ * @vdev_id: vdev index number
+ * @value: pointer to the value to fill out
+ *
+ * Note caller must verify return status before using value
+ *
+ * Return: QDF_STATUS_SUCCESS when fetched a valid value from cfg else
+ * QDF_STATUS_E_FAILURE
+ */
+static inline
+QDF_STATUS wma_vdev_get_beacon_interval(uint8_t  vdev_id, uint16_t *value)
+{
+	tp_wma_handle wma = (tp_wma_handle)cds_get_context(QDF_MODULE_ID_WMA);
+	struct wma_txrx_node *iface;
+	/* set value to zero */
+	*value = 0;
+
+	if (!wma)
+		return QDF_STATUS_E_FAILURE;
+
+	iface = &wma->interfaces[vdev_id];
+
+	if (!iface || !iface->handle)
+		return QDF_STATUS_E_FAILURE;
+
+	*value = iface->beaconInterval;
+	return QDF_STATUS_SUCCESS;
+}
+
+/**
  * wma_vdev_set_pause_bit() - Set a bit in vdev pause bitmap
  * @vdev_id: the Id of the vdev to configure
  * @bit_pos: set bit position in pause bitmap