{
        struct ath12k *ar = arvif->ar;
        struct ath12k_wmi_pdev *wmi = ar->wmi;
+       struct ath12k_base *ab = ar->ab;
        struct wmi_bcn_tmpl_cmd *cmd;
        struct ath12k_wmi_bcn_prb_info_params *bcn_prb_info;
+       struct ath12k_vif *ahvif = arvif->ahvif;
+       struct ieee80211_bss_conf *conf;
        u32 vdev_id = arvif->vdev_id;
        struct wmi_tlv *tlv;
        struct sk_buff *skb;
        int ret, len;
        size_t aligned_len = roundup(bcn->len, 4);
 
+       conf = ath12k_mac_get_link_bss_conf(arvif);
+       if (!conf) {
+               ath12k_warn(ab,
+                           "unable to access bss link conf in beacon template command for vif %pM link %u\n",
+                           ahvif->vif->addr, arvif->link_id);
+               return -EINVAL;
+       }
+
        len = sizeof(*cmd) + sizeof(*bcn_prb_info) + TLV_HDR_SIZE + aligned_len;
 
        skb = ath12k_wmi_alloc_skb(wmi->wmi_ab, len);
                                                 sizeof(*cmd));
        cmd->vdev_id = cpu_to_le32(vdev_id);
        cmd->tim_ie_offset = cpu_to_le32(offs->tim_offset);
-       cmd->csa_switch_count_offset = cpu_to_le32(offs->cntdwn_counter_offs[0]);
-       cmd->ext_csa_switch_count_offset = cpu_to_le32(offs->cntdwn_counter_offs[1]);
+
+       if (conf->csa_active) {
+               cmd->csa_switch_count_offset =
+                               cpu_to_le32(offs->cntdwn_counter_offs[0]);
+               cmd->ext_csa_switch_count_offset =
+                               cpu_to_le32(offs->cntdwn_counter_offs[1]);
+       }
+
        cmd->buf_len = cpu_to_le32(bcn->len);
        cmd->mbssid_ie_offset = cpu_to_le32(offs->mbssid_off);
        if (ema_args) {
 
        ret = ath12k_wmi_cmd_send(wmi, skb, WMI_BCN_TMPL_CMDID);
        if (ret) {
-               ath12k_warn(ar->ab, "failed to send WMI_BCN_TMPL_CMDID\n");
+               ath12k_warn(ab, "failed to send WMI_BCN_TMPL_CMDID\n");
                dev_kfree_skb(skb);
        }