diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c
index c448ba5..bbaceff 100644
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -8559,13 +8559,6 @@
 	if (hdd_is_memdump_supported())
 		features |= WIFI_LOGGER_MEMORY_DUMP_SUPPORTED;
 
-	if (hdd_ctx->cfg_ini->wlanLoggingEnable &&
-	    hdd_ctx->cfg_ini->enableFatalEvent &&
-	    hdd_ctx->is_fatal_event_log_sup) {
-		features |= WIFI_LOGGER_PER_PACKET_TX_RX_STATUS_SUPPORTED;
-		features |= WIFI_LOGGER_CONNECT_EVENT_SUPPORTED;
-	}
-
 	reply_skb = cfg80211_vendor_cmd_alloc_reply_skb(wiphy,
 			sizeof(uint32_t) + NLA_HDRLEN + NLMSG_HDRLEN);
 	if (!reply_skb) {
diff --git a/CORE/SME/inc/csrInternal.h b/CORE/SME/inc/csrInternal.h
index 8a7a8e8..77a4dd2 100644
--- a/CORE/SME/inc/csrInternal.h
+++ b/CORE/SME/inc/csrInternal.h
@@ -1076,6 +1076,7 @@
     tANI_U32 deauthRspStatus;
     tANI_BOOLEAN pending_roam_disable;
     vos_spin_lock_t roam_state_lock;
+    tSirMacAddr spoof_mac_addr;
 }tCsrRoamStruct;
 
 
diff --git a/CORE/SME/src/csr/csrApiScan.c b/CORE/SME/src/csr/csrApiScan.c
index 901e2da..72aecc0 100644
--- a/CORE/SME/src/csr/csrApiScan.c
+++ b/CORE/SME/src/csr/csrApiScan.c
@@ -6668,6 +6668,8 @@
       // spoof mac address
       vos_mem_copy((tANI_U8 *)pMsg->macAddr,
            (tANI_U8 *)pCommand->u.macAddrSpoofCmd.macAddr, sizeof(tSirMacAddr));
+      vos_mem_copy((tANI_U8 *)pMac->roam.spoof_mac_addr,
+           (tANI_U8 *)pCommand->u.macAddrSpoofCmd.macAddr, sizeof(tSirMacAddr));
       pMsg->spoof_mac_oui =
        pal_cpu_to_be16(pCommand->u.macAddrSpoofCmd.spoof_mac_oui);
 
diff --git a/CORE/SME/src/csr/csrNeighborRoam.c b/CORE/SME/src/csr/csrNeighborRoam.c
index 229ed17..338899d 100644
--- a/CORE/SME/src/csr/csrNeighborRoam.c
+++ b/CORE/SME/src/csr/csrNeighborRoam.c
@@ -3814,9 +3814,18 @@
     tpCsrChannelInfo    currChannelListInfo;
     tANI_U8   scanChannelList[WNI_CFG_VALID_CHANNEL_LIST_LEN];
     int       outputNumOfChannels = 0;
-#ifdef FEATURE_WLAN_LFR
     tANI_U32 sessionId = pNeighborRoamInfo->csrSessionId;
-#endif
+    VOS_STATUS vos_status;
+
+    vos_status = WLANTL_updateSpoofMacAddr(pMac->roam.gVosContext,
+                  (v_MACADDR_t*)&pMac->roam.spoof_mac_addr,
+                  (v_MACADDR_t*)&pMac->roam.roamSession[sessionId].selfMacAddr);
+    if (vos_status != VOS_STATUS_SUCCESS)
+    {
+        smsLog(pMac, LOGE, FL("Failed to update MAC Spoof Addr in TL"));
+        return vos_status;
+    }
+
     currChannelListInfo = &pNeighborRoamInfo->roamChannelInfo.currentChannelListInfo;
 
     if ( 
diff --git a/CORE/WDI/CP/src/wlan_qct_wdi.c b/CORE/WDI/CP/src/wlan_qct_wdi.c
index ac424e7..fac44a7 100644
--- a/CORE/WDI/CP/src/wlan_qct_wdi.c
+++ b/CORE/WDI/CP/src/wlan_qct_wdi.c
@@ -12807,6 +12807,7 @@
   wpt_uint8                      selfStaIdx          = 0;
   wpt_uint8                    ucCurrentBSSSesIdx;
   WDI_BSSSessionType*          pBSSSes             = NULL;
+  wpt_macAddr                  dst_addr;
 
   /*-------------------------------------------------------------------------
      Sanity check
@@ -12850,9 +12851,12 @@
     return WDI_STATUS_E_FAILURE;
   }
 
+  vos_mem_copy(dst_addr,
+               &pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern[0],
+               VOS_MAC_ADDR_SIZE);
+
   ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
-                                pAddPeriodicTxPtrnParams->
-                                       wdiAddPeriodicTxPtrnParams.macAddr,
+                                dst_addr,
                                 &pBSSSes);
   if ( NULL == pBSSSes )
   {
@@ -12860,8 +12864,7 @@
               "%s: Association sequence for this BSS does not exist. macBSSID "
               MAC_ADDRESS_STR,
               __func__,
-             MAC_ADDR_ARRAY(pAddPeriodicTxPtrnParams->
-                            wdiAddPeriodicTxPtrnParams.macAddr));
+             MAC_ADDR_ARRAY(dst_addr));
     wpalMemoryFree(pSendBuffer);
     return WDI_STATUS_E_NOT_ALLOWED;
   }
diff --git a/Kbuild b/Kbuild
index 1380e71..bb4beed 100644
--- a/Kbuild
+++ b/Kbuild
@@ -106,9 +106,9 @@
 endif # ANDROID_BUILD_TOP
 else
 ifneq ($(ANDROID_BUILD_TOP),)
-    WLAN_BLD_DIR := $(ANDROID_BUILD_TOP)/device/qcom/msm8909w/opensource/wlan
+    WLAN_BLD_DIR := $(ANDROID_BUILD_TOP)/device/qcom/sdm429w/opensource/wlan
 else
-    WLAN_BLD_DIR := device/qcom/msm8909w/opensource/wlan
+    WLAN_BLD_DIR := $(BOARD_OPENSOURCE_DIR)/wlan
 endif # ANDROID_BUILD_TOP
 endif # TARGET_SUPPORTS_WEARABLES
 endif # WLAN_PROPRIETARY
