fc = __le16_to_cpu(hdr->frame_control);
        sn = IEEE80211_SEQ_TO_SN(__le16_to_cpu(hdr->seq_ctrl));
 
-       status.freq = WCN36XX_CENTER_FREQ(wcn);
-       status.band = WCN36XX_BAND(wcn);
        status.mactime = 10;
        status.signal = -get_rssi0(bd);
        status.antenna = 1;
 
        wcn36xx_dbg(WCN36XX_DBG_RX, "status.flags=%x\n", status.flag);
 
+       if (bd->scan_learn) {
+               /* If packet originate from hardware scanning, extract the
+                * band/channel from bd descriptor.
+                */
+               u8 hwch = (bd->reserved0 << 4) + bd->rx_ch;
+
+               if (bd->rf_band != 1 && hwch <= sizeof(ab_rx_ch_map) && hwch >= 1) {
+                       status.band = NL80211_BAND_5GHZ;
+                       status.freq = ieee80211_channel_to_frequency(ab_rx_ch_map[hwch - 1],
+                                                                    status.band);
+               } else {
+                       status.band = NL80211_BAND_2GHZ;
+                       status.freq = ieee80211_channel_to_frequency(hwch, status.band);
+               }
+       } else {
+               status.band = WCN36XX_BAND(wcn);
+               status.freq = WCN36XX_CENTER_FREQ(wcn);
+       }
+
        if (bd->rate_id < ARRAY_SIZE(wcn36xx_rate_table)) {
                rate = &wcn36xx_rate_table[bd->rate_id];
                status.encoding = rate->encoding;
            ieee80211_is_probe_resp(hdr->frame_control))
                status.boottime_ns = ktime_get_boottime_ns();
 
-       if (bd->scan_learn) {
-               /* If packet originates from hardware scanning, extract the
-                * band/channel from bd descriptor.
-                */
-               u8 hwch = (bd->reserved0 << 4) + bd->rx_ch;
-
-               if (bd->rf_band != 1 && hwch <= sizeof(ab_rx_ch_map) && hwch >= 1) {
-                       status.band = NL80211_BAND_5GHZ;
-                       status.freq = ieee80211_channel_to_frequency(ab_rx_ch_map[hwch - 1],
-                                                                    status.band);
-               } else {
-                       status.band = NL80211_BAND_2GHZ;
-                       status.freq = ieee80211_channel_to_frequency(hwch, status.band);
-               }
-       }
-
        memcpy(IEEE80211_SKB_RXCB(skb), &status, sizeof(status));
 
        if (ieee80211_is_beacon(hdr->frame_control)) {