*/
 
 #include <net/mac80211.h>
+#include <net/cfg80211.h>
 #include <linux/etherdevice.h>
 #include <linux/bitfield.h>
 #include <linux/inetdevice.h>
        struct wmi_vdev_start_req_arg arg = {};
        const struct cfg80211_chan_def *chandef = &ctx->def;
        int ret = 0;
+       unsigned int dfs_cac_time;
 
        lockdep_assert_held(&ar->conf_mutex);
 
        ath11k_dbg(ab, ATH11K_DBG_MAC,  "vdev %pM started, vdev_id %d\n",
                   arvif->vif->addr, arvif->vdev_id);
 
-       /* Enable CAC Flag in the driver by checking the channel DFS cac time,
-        * i.e dfs_cac_ms value which will be valid only for radar channels
-        * and state as NL80211_DFS_USABLE which indicates CAC needs to be
+       /* Enable CAC Flag in the driver by checking the all sub-channel's DFS
+        * state as NL80211_DFS_USABLE which indicates CAC needs to be
         * done before channel usage. This flags is used to drop rx packets.
         * during CAC.
         */
        /* TODO Set the flag for other interface types as required */
-       if (arvif->vdev_type == WMI_VDEV_TYPE_AP &&
-           chandef->chan->dfs_cac_ms &&
-           chandef->chan->dfs_state == NL80211_DFS_USABLE) {
+       if (arvif->vdev_type == WMI_VDEV_TYPE_AP && ctx->radar_enabled &&
+           cfg80211_chandef_dfs_usable(ar->hw->wiphy, chandef)) {
                set_bit(ATH11K_CAC_RUNNING, &ar->dev_flags);
+               dfs_cac_time = cfg80211_chandef_dfs_cac_time(ar->hw->wiphy,
+                                                            chandef);
                ath11k_dbg(ab, ATH11K_DBG_MAC,
-                          "CAC Started in chan_freq %d for vdev %d\n",
-                          arg.channel.freq, arg.vdev_id);
+                          "cac started dfs_cac_time %u center_freq %d center_freq1 %d for vdev %d\n",
+                          dfs_cac_time, arg.channel.freq, chandef->center_freq1,
+                          arg.vdev_id);
        }
 
        ret = ath11k_mac_set_txbf_conf(arvif);