ath10k_mac_vif_beacon_free(arvif);
 
        if (arvif->beacon_buf) {
-               dma_free_coherent(ar->dev, IEEE80211_MAX_FRAME_LEN,
-                                 arvif->beacon_buf, arvif->beacon_paddr);
+               if (ar->bus_param.dev_type == ATH10K_DEV_TYPE_HL)
+                       kfree(arvif->beacon_buf);
+               else
+                       dma_free_coherent(ar->dev, IEEE80211_MAX_FRAME_LEN,
+                                         arvif->beacon_buf,
+                                         arvif->beacon_paddr);
                arvif->beacon_buf = NULL;
        }
 }
        if (vif->type == NL80211_IFTYPE_ADHOC ||
            vif->type == NL80211_IFTYPE_MESH_POINT ||
            vif->type == NL80211_IFTYPE_AP) {
-               arvif->beacon_buf = dma_alloc_coherent(ar->dev,
-                                                      IEEE80211_MAX_FRAME_LEN,
-                                                      &arvif->beacon_paddr,
-                                                      GFP_ATOMIC);
+               if (ar->bus_param.dev_type == ATH10K_DEV_TYPE_HL) {
+                       arvif->beacon_buf = kmalloc(IEEE80211_MAX_FRAME_LEN,
+                                                   GFP_KERNEL);
+                       arvif->beacon_paddr = (dma_addr_t)arvif->beacon_buf;
+               } else {
+                       arvif->beacon_buf =
+                               dma_alloc_coherent(ar->dev,
+                                                  IEEE80211_MAX_FRAME_LEN,
+                                                  &arvif->beacon_paddr,
+                                                  GFP_ATOMIC);
+               }
                if (!arvif->beacon_buf) {
                        ret = -ENOMEM;
                        ath10k_warn(ar, "failed to allocate beacon buffer: %d\n",
 
 err:
        if (arvif->beacon_buf) {
-               dma_free_coherent(ar->dev, IEEE80211_MAX_FRAME_LEN,
-                                 arvif->beacon_buf, arvif->beacon_paddr);
+               if (ar->bus_param.dev_type == ATH10K_DEV_TYPE_HL)
+                       kfree(arvif->beacon_buf);
+               else
+                       dma_free_coherent(ar->dev, IEEE80211_MAX_FRAME_LEN,
+                                         arvif->beacon_buf,
+                                         arvif->beacon_paddr);
                arvif->beacon_buf = NULL;
        }