diff -Naur a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c	2020-09-02 08:49:07.000000000 +0100
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c	2021-03-26 16:56:18.308093022 +0000
@@ -106,7 +106,7 @@
 #include "wlan_hdd_mdns_offload.h"
 #include "wlan_hdd_ocb.h"
 #include "qwlan_version.h"
-
+#define WIPHY_FLAG_DFS_OFFLOAD BIT(25)
 #include "wlan_logging_sock_svc.h"
 #include "sapApi.h"
 #include "csrApi.h"
@@ -30792,7 +30792,7 @@
 	return ret;
 }
 
-#ifdef WLAN_NL80211_TESTMODE
+#ifdef WLAN_NL80211_TESTMODE  
 #ifdef FEATURE_WLAN_LPHB
 void wlan_hdd_cfg80211_lphb_ind_handler
 (
@@ -30800,7 +30800,9 @@
    tSirLPHBInd *lphbInd
 )
 {
+#ifdef CONFIG_NL80211_TESTMODE
    struct sk_buff  *skb;
+#endif
 
    VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
              "LPHB indication arrived");
@@ -30814,6 +30816,7 @@
       return;
    }
 
+#ifdef CONFIG_NL80211_TESTMODE
    skb = cfg80211_testmode_alloc_event_skb(
                   ((hdd_context_t *)pHddCtx)->wiphy,
                   sizeof(tSirLPHBInd),
@@ -30851,11 +30854,13 @@
    VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
              "NLA Put fail");
    kfree_skb(skb);
+#endif
 
    return;
 }
 #endif /* FEATURE_WLAN_LPHB */
 
+#ifdef CONFIG_NL80211_TESTMODE
 static int __wlan_hdd_cfg80211_testmode(struct wiphy *wiphy,
                                         void *data, int len)
 {
@@ -30983,11 +30988,15 @@
 
    return ret;
 }
+#endif
+
 
 #if  defined(QCA_WIFI_FTM)
 void wlan_hdd_testmode_rx_event(void *buf, size_t buf_len)
 {
+#ifdef CONFIG_NL80211_TESTMODE
     struct sk_buff *skb;
+#endif
     hdd_context_t *hdd_ctx;
     void *vos_global_ctx;
 
@@ -31016,6 +31025,7 @@
         return;
     }
 
+#ifdef CONFIG_NL80211_TESTMODE
     skb = cfg80211_testmode_alloc_event_skb(hdd_ctx->wiphy,
                                             buf_len, GFP_KERNEL);
     if (!skb) {
@@ -31039,6 +31049,7 @@
     VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
               "%s: nla_put failed on testmode rx skb!",
               __func__);
+#endif              
 }
 #endif
 #endif /* CONFIG_NL80211_TESTMODE */
@@ -33555,7 +33566,9 @@
      .suspend = wlan_hdd_cfg80211_suspend_wlan,
      .set_mac_acl = wlan_hdd_cfg80211_set_mac_acl,
 #ifdef WLAN_NL80211_TESTMODE
+#ifdef CONFIG_NL80211_TESTMODE
      .testmode_cmd = wlan_hdd_cfg80211_testmode,
+#endif     
 #endif
 #ifdef QCA_HT_2040_COEX
      .set_ap_chanwidth = wlan_hdd_cfg80211_set_ap_channel_width,
diff -Naur a/CORE/HDD/src/wlan_hdd_tx_rx.c b/CORE/HDD/src/wlan_hdd_tx_rx.c
--- a/CORE/HDD/src/wlan_hdd_tx_rx.c	2020-09-02 08:49:07.000000000 +0100
+++ b/CORE/HDD/src/wlan_hdd_tx_rx.c	2021-03-26 16:11:53.367939503 +0000
@@ -1470,7 +1470,7 @@
    pHddStaCtx = WLAN_HDD_GET_STATION_CTX_PTR(pAdapter);
    while (NULL != skb) {
       skb_next = skb->next;
-
+#if 0
       if (((pHddStaCtx->conn_info.proxyARPService) &&
          cfg80211_is_gratuitous_arp_unsolicited_na(skb)) ||
          vos_is_load_unload_in_progress(VOS_MODULE_ID_VOSS, NULL)) {
@@ -1483,7 +1483,7 @@
             skb = skb_next;
             continue;
       }
-
+#endif 
       DPTRACE(adf_dp_trace(skb,
               ADF_DP_TRACE_RX_HDD_PACKET_PTR_RECORD,
               adf_nbuf_data_addr(skb),
diff -Naur a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c
--- a/CORE/SERVICES/WMA/wma.c	2020-09-02 08:49:07.000000000 +0100
+++ b/CORE/SERVICES/WMA/wma.c	2021-03-26 16:11:53.979942770 +0000
@@ -5463,8 +5463,10 @@
 		 * first event must be same as following events. Otherwise these
 		 * events may be spoofed. Drop all of them and report error.
 		 */
+        rs_results = (tSirWifiRadioStat *) &link_stats_results->results[0];
+
 		WMA_LOGE("Invalid following WMI_RADIO_LINK_STATS_EVENTID. Discarding this set");
-		rs_results->tx_time_per_power_level = NULL;
+		//rs_results->tx_time_per_power_level = NULL;
 		vos_mem_free(wma_handle->link_stats_results);
 		wma_handle->link_stats_results = NULL;
 		vos_mem_free(rs_results->tx_time_per_power_level);
diff -Naur a/CORE/VOSS/inc/vos_cnss.h b/CORE/VOSS/inc/vos_cnss.h
--- a/CORE/VOSS/inc/vos_cnss.h	2020-09-02 08:49:07.000000000 +0100
+++ b/CORE/VOSS/inc/vos_cnss.h	2021-03-26 16:11:54.006942914 +0000
@@ -88,7 +88,7 @@
 	cancel_delayed_work_sync(dwork);
 }
 
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 80))
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0))
 static inline void vos_pm_wake_lock_init(vos_wake_lock_t *lock,
 					 const char *name)
 {
@@ -138,7 +138,7 @@
  * QDF status success: if wake lock is acquired
  * QDF status failure: if wake lock was not acquired
  */
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 80))
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0))
 static inline void vos_pm_wake_lock_destroy(vos_wake_lock_t *lock)
 {
 	wakeup_source_unregister(lock->priv);
diff -Naur a/CORE/VOSS/src/vos_nvitem.c b/CORE/VOSS/src/vos_nvitem.c
--- a/CORE/VOSS/src/vos_nvitem.c	2020-09-02 08:49:07.000000000 +0100
+++ b/CORE/VOSS/src/vos_nvitem.c	2021-03-26 16:11:54.058943192 +0000
@@ -1543,11 +1543,15 @@
             vos_set_cc_source(CNSS_SOURCE_11D);
 
         INIT_COMPLETION(pHddCtx->reg_init);
+#ifdef CONFIG_REGD_HINT_USER
 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0)) || defined(WITH_BACKPORTS)
         regulatory_hint_user(country_code, NL80211_USER_REG_HINT_USER);
 #else
         regulatory_hint_user(country_code);
 #endif
+#else
+        regulatory_hint(wiphy, country_code);
+#endif
         wait_result = wait_for_completion_interruptible_timeout(
                                &pHddCtx->reg_init,
                                msecs_to_jiffies(REG_WAIT_TIME));
diff -Naur a/Makefile b/Makefile
--- a/Makefile	2020-09-02 08:49:07.000000000 +0100
+++ b/Makefile	2021-03-26 16:11:54.081943314 +0000
@@ -1,12 +1,13 @@
 KERNEL_SRC ?= /lib/modules/$(shell uname -r)/build
 
-KBUILD_OPTIONS := WLAN_ROOT=$(PWD)
+BUILD_ROOT ?=$(PWD)
+KBUILD_OPTIONS := WLAN_ROOT=$(BUILD_ROOT)
 KBUILD_OPTIONS += MODNAME?=wlan
 
 # Determine if the driver license is Open source or proprietary
 # This is determined under the assumption that LICENSE doesn't change.
 # Please change here if driver license text changes.
-LICENSE_FILE ?= $(PWD)/$(WLAN_ROOT)/CORE/HDD/src/wlan_hdd_main.c
+LICENSE_FILE ?= $(BUILD_ROOT)/CORE/HDD/src/wlan_hdd_main.c
 WLAN_OPEN_SOURCE = $(shell if grep -q "MODULE_LICENSE(\"Dual BSD/GPL\")" \
 		$(LICENSE_FILE); then echo 1; else echo 0; fi)
 
