diff --git a/wlan/prima/CORE/HDD/src/wlan_hdd_cfg80211.c b/wlan/prima/CORE/HDD/src/wlan_hdd_cfg80211.c
index d66639b..e1e564e 100644
--- a/wlan/prima/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/wlan/prima/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -636,7 +636,7 @@
  */
 static int __wlan_hdd_cfg80211_nan_request(struct wiphy *wiphy,
                                          struct wireless_dev *wdev,
-                                         const void *data, int data_len)
+                                         void *data, int data_len)
 {
     tNanRequestReq nan_req;
     VOS_STATUS status;
@@ -697,7 +697,7 @@
  */
 static int wlan_hdd_cfg80211_nan_request(struct wiphy *wiphy,
                                          struct wireless_dev *wdev,
-                                         const void *data, int data_len)
+                                         void *data, int data_len)
 {
     int ret;
 
@@ -1699,7 +1699,7 @@
 
 static int __wlan_hdd_cfg80211_ll_stats_set(struct wiphy *wiphy,
                                             struct wireless_dev *wdev,
-                                            const void *data,
+                                            void *data,
                                             int data_len)
 {
     int status;
@@ -1798,7 +1798,7 @@
 }
 static int wlan_hdd_cfg80211_ll_stats_set(struct wiphy *wiphy,
                                           struct wireless_dev *wdev,
-                                          const void *data,
+                                          void *data,
                                           int data_len)
 {
     int ret = 0;
@@ -1829,7 +1829,7 @@
 
 static int __wlan_hdd_cfg80211_ll_stats_get(struct wiphy *wiphy,
                                             struct wireless_dev *wdev,
-                                            const void *data,
+                                            void *data,
                                             int data_len)
 {
     unsigned long rc;
@@ -1958,7 +1958,7 @@
 
 static int wlan_hdd_cfg80211_ll_stats_get(struct wiphy *wiphy,
                                           struct wireless_dev *wdev,
-                                          const void *data,
+                                          void *data,
                                           int data_len)
 {
     int ret = 0;
@@ -1982,7 +1982,7 @@
 
 static int __wlan_hdd_cfg80211_ll_stats_clear(struct wiphy *wiphy,
                                               struct wireless_dev *wdev,
-                                              const void *data,
+                                              void *data,
                                               int data_len)
 {
     hdd_context_t *pHddCtx = wiphy_priv(wiphy);
@@ -2125,7 +2125,7 @@
 }
 static int wlan_hdd_cfg80211_ll_stats_clear(struct wiphy *wiphy,
                                             struct wireless_dev *wdev,
-                                            const void *data,
+                                            void *data,
                                             int data_len)
 {
    int ret = 0;
@@ -3461,7 +3461,7 @@
 
 static int __wlan_hdd_cfg80211_extscan_get_capabilities(struct wiphy *wiphy,
                                                         struct wireless_dev *wdev,
-                                                        const void *data, int dataLen)
+                                                        void *data, int dataLen)
 {
     tSirGetEXTScanCapabilitiesReqParams reqMsg;
     struct net_device *dev                     = wdev->netdev;
@@ -3543,7 +3543,7 @@
 
 static int wlan_hdd_cfg80211_extscan_get_capabilities(struct wiphy *wiphy,
                                                       struct wireless_dev *wdev,
-                                                  const void *data, int dataLen)
+                                                  void *data, int dataLen)
 {
    int ret = 0;
 
@@ -3556,7 +3556,7 @@
 
 static int __wlan_hdd_cfg80211_extscan_get_cached_results(struct wiphy *wiphy,
                                                 struct wireless_dev *wdev,
-                                                const void *data, int dataLen)
+                                                void *data, int dataLen)
 {
     tSirEXTScanGetCachedResultsReqParams reqMsg;
     struct net_device *dev                      = wdev->netdev;
@@ -3659,7 +3659,7 @@
 }
 static int wlan_hdd_cfg80211_extscan_get_cached_results(struct wiphy *wiphy,
                                                 struct wireless_dev *wdev,
-                                                const void *data, int dataLen)
+                                                void *data, int dataLen)
 {
    int ret = 0;
 
@@ -3672,7 +3672,7 @@
 
 static int __wlan_hdd_cfg80211_extscan_set_bssid_hotlist(struct wiphy *wiphy,
                                         struct wireless_dev *wdev,
-                                        const void *data, int dataLen)
+                                        void *data, int dataLen)
 {
     tpSirEXTScanSetBssidHotListReqParams pReqMsg = NULL;
     struct net_device *dev                     = wdev->netdev;
@@ -3841,7 +3841,7 @@
 
 static int wlan_hdd_cfg80211_extscan_set_bssid_hotlist(struct wiphy *wiphy,
                                         struct wireless_dev *wdev,
-                                        const void *data, int dataLen)
+                                        void *data, int dataLen)
 {
    int ret = 0;
 
@@ -3888,7 +3888,7 @@
 static int
 __wlan_hdd_cfg80211_extscan_set_ssid_hotlist(struct wiphy *wiphy,
                        struct wireless_dev *wdev,
-                       const void *data,
+                       void *data,
                        int data_len)
 {
     tSirEXTScanSetSsidHotListReqParams *request;
@@ -4085,7 +4085,7 @@
 
 static int wlan_hdd_cfg80211_extscan_set_ssid_hotlist(struct wiphy *wiphy,
                                         struct wireless_dev *wdev,
-                                        const void *data, int dataLen)
+                                        void *data, int dataLen)
 {
    int ret = 0;
 
@@ -4100,7 +4100,7 @@
 static int
 __wlan_hdd_cfg80211_extscan_reset_ssid_hotlist(struct wiphy *wiphy,
                          struct wireless_dev *wdev,
-                         const void *data,
+                         void *data,
                          int data_len)
 {
     tSirEXTScanResetSsidHotlistReqParams request;
@@ -4191,7 +4191,7 @@
 static int
 wlan_hdd_cfg80211_extscan_reset_ssid_hotlist(struct wiphy *wiphy,
                      struct wireless_dev *wdev,
-                     const void *data,
+                     void *data,
                      int data_len)
 {
     int ret;
@@ -4206,7 +4206,7 @@
 
 static int __wlan_hdd_cfg80211_extscan_get_valid_channels(struct wiphy *wiphy,
                                         struct wireless_dev *wdev,
-                                        const void *data, int dataLen)
+                                        void *data, int dataLen)
 {
     hdd_context_t *pHddCtx                               = wiphy_priv(wiphy);
     tANI_U32 ChannelList[WNI_CFG_VALID_CHANNEL_LIST_LEN] = {0};
@@ -4306,7 +4306,7 @@
 
 static int wlan_hdd_cfg80211_extscan_get_valid_channels(struct wiphy *wiphy,
                                         struct wireless_dev *wdev,
-                                        const void *data, int dataLen)
+                                        void *data, int dataLen)
 {
     int ret = 0;
 
@@ -4573,7 +4573,7 @@
 
 static int __wlan_hdd_cfg80211_extscan_start(struct wiphy *wiphy,
                                         struct wireless_dev *wdev,
-                                        const void *data, int dataLen)
+                                        void *data, int dataLen)
 {
     tpSirEXTScanStartReqParams pReqMsg = NULL;
     struct net_device *dev             = wdev->netdev;
@@ -4754,7 +4754,7 @@
 
 static int wlan_hdd_cfg80211_extscan_start(struct wiphy *wiphy,
                                         struct wireless_dev *wdev,
-                                        const void *data, int dataLen)
+                                        void *data, int dataLen)
 {
    int ret = 0;
 
@@ -4767,7 +4767,7 @@
 
 static int __wlan_hdd_cfg80211_extscan_stop(struct wiphy *wiphy,
                                         struct wireless_dev *wdev,
-                                        const void *data, int dataLen)
+                                        void *data, int dataLen)
 {
     tSirEXTScanStopReqParams reqMsg;
     struct net_device *dev                  = wdev->netdev;
@@ -4859,7 +4859,7 @@
 
 static int wlan_hdd_cfg80211_extscan_stop(struct wiphy *wiphy,
                                         struct wireless_dev *wdev,
-                                        const void *data, int dataLen)
+                                        void *data, int dataLen)
 {
    int ret = 0;
 
@@ -4872,7 +4872,7 @@
 
 static int __wlan_hdd_cfg80211_extscan_reset_bssid_hotlist(struct wiphy *wiphy,
                                         struct wireless_dev *wdev,
-                                        const void *data, int dataLen)
+                                        void *data, int dataLen)
 {
     tSirEXTScanResetBssidHotlistReqParams reqMsg;
     struct net_device *dev                       = wdev->netdev;
@@ -4962,7 +4962,7 @@
 
 static int wlan_hdd_cfg80211_extscan_reset_bssid_hotlist(struct wiphy *wiphy,
                                         struct wireless_dev *wdev,
-                                        const void *data, int dataLen)
+                                        void *data, int dataLen)
 {
    int ret = 0;
 
@@ -5028,7 +5028,7 @@
 
 static int __wlan_hdd_cfg80211_set_spoofed_mac_oui(struct wiphy *wiphy,
         struct wireless_dev *wdev,
-        const void *data,
+        void *data,
         int data_len)
 {
 
@@ -5089,7 +5089,7 @@
 
 static int wlan_hdd_cfg80211_set_spoofed_mac_oui(struct wiphy *wiphy,
         struct wireless_dev *wdev,
-        const void *data,
+        void *data,
         int data_len)
 {
     int ret = 0;
@@ -5103,7 +5103,7 @@
 
 static int __wlan_hdd_cfg80211_exttdls_get_status(struct wiphy *wiphy,
                                                 struct wireless_dev *wdev,
-                                                const void *data,
+                                                void *data,
                                                 int data_len)
 {
     u8 peer[6]                                 = {0};
@@ -5198,7 +5198,7 @@
 
 static int wlan_hdd_cfg80211_exttdls_get_status(struct wiphy *wiphy,
                                                 struct wireless_dev *wdev,
-                                                const void *data,
+                                                void *data,
                                                 int data_len)
 {
     int ret = 0;
@@ -5296,7 +5296,7 @@
 
 static int __wlan_hdd_cfg80211_exttdls_enable(struct wiphy *wiphy,
                                             struct wireless_dev *wdev,
-                                            const void *data,
+                                            void *data,
                                             int data_len)
 {
     u8 peer[6]                                 = {0};
@@ -5399,7 +5399,7 @@
 
 static int wlan_hdd_cfg80211_exttdls_enable(struct wiphy *wiphy,
                                             struct wireless_dev *wdev,
-                                            const void *data,
+                                            void *data,
                                             int data_len)
 {
    int ret = 0;
@@ -5413,7 +5413,7 @@
 
 static int __wlan_hdd_cfg80211_exttdls_disable(struct wiphy *wiphy,
                                              struct wireless_dev *wdev,
-                                             const void *data,
+                                             void *data,
                                              int data_len)
 {
     u8 peer[6]                                 = {0};
@@ -5471,7 +5471,7 @@
 
 static int wlan_hdd_cfg80211_exttdls_disable(struct wiphy *wiphy,
                                              struct wireless_dev *wdev,
-                                             const void *data,
+                                             void *data,
                                              int data_len)
 {
    int ret = 0;
@@ -5486,7 +5486,7 @@
 static int
 __wlan_hdd_cfg80211_get_supported_features(struct wiphy *wiphy,
                                          struct wireless_dev *wdev,
-                                         const void *data, int data_len)
+                                         void *data, int data_len)
 {
     struct net_device *dev                     = wdev->netdev;
     hdd_adapter_t *pAdapter                    = WLAN_HDD_GET_PRIV_PTR(dev);
@@ -5618,7 +5618,7 @@
 static int
 wlan_hdd_cfg80211_get_supported_features(struct wiphy *wiphy,
                                          struct wireless_dev *wdev,
-                                         const void *data, int data_len)
+                                         void *data, int data_len)
 {
     int ret = 0;
 
@@ -5641,7 +5641,7 @@
 static int
     __wlan_hdd_cfg80211_wifi_logger_get_ring_data(struct wiphy *wiphy,
                                                       struct wireless_dev *wdev,
-                                                      const void *data,
+                                                      void *data,
                                                       int data_len)
 {
     int ret;
@@ -5696,7 +5696,7 @@
 static int
     wlan_hdd_cfg80211_wifi_logger_get_ring_data(struct wiphy *wiphy,
                                                       struct wireless_dev *wdev,
-                                                      const void *data,
+                                                      void *data,
                                                       int data_len)
 {
     int ret = 0;
@@ -5714,7 +5714,7 @@
 static int
 __wlan_hdd_cfg80211_get_concurrency_matrix(struct wiphy *wiphy,
                                          struct wireless_dev *wdev,
-                                         const void *data, int data_len)
+                                         void *data, int data_len)
 {
     uint32_t feature_set_matrix[WLAN_HDD_MAX_FEATURE_SET] = {0};
     uint8_t i, feature_sets, max_feature_sets;
@@ -5797,7 +5797,7 @@
 static int
 wlan_hdd_cfg80211_get_concurrency_matrix(struct wiphy *wiphy,
                                          struct wireless_dev *wdev,
-                                         const void *data, int data_len)
+                                         void *data, int data_len)
 {
     int ret = 0;
 
@@ -5813,7 +5813,7 @@
 static int
 __wlan_hdd_cfg80211_get_fw_mem_dump(struct wiphy *wiphy,
                                     struct wireless_dev *wdev,
-                                    const void *data, int data_len)
+                                    void *data, int data_len)
 {
     hdd_context_t *pHddCtx = wiphy_priv(wiphy);
     int ret;
@@ -5864,7 +5864,7 @@
 static int
 wlan_hdd_cfg80211_get_fw_mem_dump(struct wiphy *wiphy,
                                               struct wireless_dev *wdev,
-                                         const void *data, int data_len)
+                                         void *data, int data_len)
 {
     int ret = 0;
     vos_ssr_protect(__func__);
@@ -5901,7 +5901,7 @@
  */
 static int __wlan_hdd_cfg80211_wifi_logger_start(struct wiphy *wiphy,
                        struct wireless_dev *wdev,
-                        const void *data,
+                        void *data,
                                 int data_len)
 {
     eHalStatus status;
@@ -5976,7 +5976,7 @@
  */
 static int wlan_hdd_cfg80211_wifi_logger_start(struct wiphy *wiphy,
                         struct wireless_dev *wdev,
-                        const void *data,
+                        void *data,
                         int data_len)
 {
     int ret = 0;
@@ -6000,7 +6000,7 @@
 
 static int __wlan_hdd_cfg80211_disable_dfs_channels(struct wiphy *wiphy,
                                             struct wireless_dev *wdev,
-                                            const void *data,
+                                            void *data,
                                             int data_len)
 {
     struct net_device *dev                     = wdev->netdev;
@@ -6046,7 +6046,7 @@
 
 static int wlan_hdd_cfg80211_disable_dfs_channels(struct wiphy *wiphy,
                                             struct wireless_dev *wdev,
-                                            const void *data,
+                                            void *data,
                                             int data_len)
 {
    int ret = 0;
@@ -6067,7 +6067,7 @@
 };
 
 static int __wlan_hdd_cfg80211_firmware_roaming(struct wiphy *wiphy,
-            struct wireless_dev *wdev, const void *data, int data_len)
+            struct wireless_dev *wdev, void *data, int data_len)
 {
 
     u8 bssid[6]                                 = {0};
@@ -6126,7 +6126,7 @@
 }
 
 static int wlan_hdd_cfg80211_firmware_roaming(struct wiphy *wiphy,
-            struct wireless_dev *wdev, const void *data, int data_len)
+            struct wireless_dev *wdev, void *data, int data_len)
 {
     int ret = 0;
 
@@ -6160,7 +6160,7 @@
  */
 static int __wlan_hdd_cfg80211_get_wifi_info(struct wiphy *wiphy,
                                   struct wireless_dev *wdev,
-                              const void *data, int data_len)
+                              void *data, int data_len)
 {
     hdd_context_t *hdd_ctx = wiphy_priv(wiphy);
     struct nlattr *tb_vendor[QCA_WLAN_VENDOR_ATTR_WIFI_INFO_GET_MAX + 1];
@@ -6236,7 +6236,7 @@
 static int
 wlan_hdd_cfg80211_get_wifi_info(struct wiphy *wiphy,
                                   struct wireless_dev *wdev,
-                              const void *data, int data_len)
+                              void *data, int data_len)
 
 
 {
@@ -6336,7 +6336,7 @@
 static int
 __wlan_hdd_cfg80211_monitor_rssi(struct wiphy *wiphy,
                                  struct wireless_dev *wdev,
-                                 const void *data,
+                                 void *data,
                                  int data_len)
 {
         struct net_device *dev = wdev->netdev;
@@ -6469,7 +6469,7 @@
  */
 static int
 wlan_hdd_cfg80211_monitor_rssi(struct wiphy *wiphy, struct wireless_dev *wdev,
-                               const void *data, int data_len)
+                               void *data, int data_len)
 {
         int ret;
 
@@ -6561,7 +6561,7 @@
 static int
 __wlan_hdd_cfg80211_setband(struct wiphy *wiphy,
                             struct wireless_dev *wdev,
-                            const void *data,
+                            void *data,
                             int data_len)
 {
     struct net_device *dev = wdev->netdev;
@@ -6610,7 +6610,7 @@
  */
 static int wlan_hdd_cfg80211_setband(struct wiphy *wiphy,
                                      struct wireless_dev *wdev,
-                                     const void *data,
+                                     void *data,
                                      int data_len)
 {
     int ret = 0;
@@ -6952,7 +6952,7 @@
 static int
 __wlan_hdd_cfg80211_offloaded_packets(struct wiphy *wiphy,
         struct wireless_dev *wdev,
-        const void *data,
+        void *data,
         int data_len)
 {
     struct net_device *dev = wdev->netdev;
@@ -7036,7 +7036,7 @@
  */
 static int wlan_hdd_cfg80211_offloaded_packets(struct wiphy *wiphy,
         struct wireless_dev *wdev,
-        const void *data,
+        void *data,
         int data_len)
 {
     int ret = 0;
@@ -7071,7 +7071,7 @@
  */
 static int wlan_hdd_cfg80211_get_link_properties(struct wiphy *wiphy,
         struct wireless_dev *wdev,
-        const void *data,
+        void *data,
         int data_len)
 {
     hdd_context_t       *hdd_ctx = wiphy_priv(wiphy);
@@ -7242,7 +7242,7 @@
 
 static int __wlan_hdd_cfg80211_wifi_configuration_set(struct wiphy *wiphy,
                             struct wireless_dev *wdev,
-                            const void *data,
+                            void *data,
                             int data_len)
 {
     struct net_device *dev = wdev->netdev;
@@ -7401,7 +7401,7 @@
  */
 static int wlan_hdd_cfg80211_wifi_configuration_set(struct wiphy *wiphy,
                             struct wireless_dev *wdev,
-                            const void *data,
+                            void *data,
                             int data_len)
 {
     int ret;
