ret = -EFAULT;
        }
 
+       /* Get DTIM period information from firmware */
+       mwifiex_send_cmd_sync(priv, HostCmd_CMD_802_11_SNMP_MIB,
+                             HostCmd_ACT_GEN_GET, DTIM_PERIOD_I,
+                             &priv->dtim_period);
+
        /*
         * Bit 0 in tx_htinfo indicates that current Tx rate is 11n rate. Valid
         * MCS index values for us are 0 to 7.
                                                WLAN_CAPABILITY_SHORT_SLOT_TIME)
                        sinfo->bss_param.flags |=
                                        BSS_PARAM_FLAGS_SHORT_SLOT_TIME;
-               sinfo->bss_param.dtim_period =
-                       priv->curr_bss_params.bss_descriptor.dtim_period;
+               sinfo->bss_param.dtim_period = priv->dtim_period;
                sinfo->bss_param.beacon_interval =
                        priv->curr_bss_params.bss_descriptor.beacon_period;
        }
 
        u32 channel;
        u32 freq;
        u16 beacon_period;
-       u8 dtim_period;
        u8 erp_flags;
        u32 bss_mode;
        u8 supported_rates[MWIFIEX_SUPPORTED_RATES];
        u8 prev_bssid[ETH_ALEN];
        struct mwifiex_current_bss_params curr_bss_params;
        u16 beacon_period;
+       u8 dtim_period;
        u16 listen_interval;
        u16 atim_window;
        u8 adhoc_channel;
 
        struct ieee_types_vendor_specific *vendor_ie;
        const u8 wpa_oui[4] = { 0x00, 0x50, 0xf2, 0x01 };
        const u8 wmm_oui[4] = { 0x00, 0x50, 0xf2, 0x02 };
-       struct ieee80211_tim_ie *tim_ie;
 
        found_data_rate_ie = false;
        rate_size = 0;
                                        sizeof(struct ieee_types_header) -
                                        bss_entry->beacon_buf);
                        break;
-               case WLAN_EID_TIM:
-                       tim_ie = (void *) (current_ptr +
-                                        sizeof(struct ieee_types_header));
-                       bss_entry->dtim_period = tim_ie->dtim_period;
-                       break;
                default:
                        break;
                }
 
                        dev_dbg(priv->adapter->dev,
                                "info: SNMP_RESP: TxRetryCount=%u\n", ul_temp);
                        break;
+               case DTIM_PERIOD_I:
+                       dev_dbg(priv->adapter->dev,
+                               "info: SNMP_RESP: DTIM period=%u\n", ul_temp);
                default:
                        break;
                }