assoc_req_len -= assoc_req_ie_offset;
        assoc_resp_len -= assoc_resp_ie_offset;
 
+       /*
+        * Store Beacon interval here; DTIM period will be available only once
+        * a Beacon frame from the AP is seen.
+        */
+       ar->assoc_bss_beacon_int = beacon_intvl;
+       clear_bit(DTIM_PERIOD_AVAIL, &ar->flag);
+
        if (nw_type & ADHOC_NETWORK) {
                if (ar->wdev->iftype != NL80211_IFTYPE_ADHOC) {
                        ath6kl_dbg(ATH6KL_DBG_WLAN_CFG,
 
        sinfo->filled |= STATION_INFO_TX_BITRATE;
 
+       if (test_bit(CONNECTED, &ar->flag) &&
+           test_bit(DTIM_PERIOD_AVAIL, &ar->flag) &&
+           ar->nw_type == INFRA_NETWORK) {
+               sinfo->filled |= STATION_INFO_BSS_PARAM;
+               sinfo->bss_param.flags = 0;
+               sinfo->bss_param.dtim_period = ar->assoc_bss_dtim_period;
+               sinfo->bss_param.beacon_interval = ar->assoc_bss_beacon_int;
+       }
+
        return 0;
 }
 
 
 #define WLAN_ENABLED        12
 #define TESTMODE            13
 #define CLEAR_BSSFILTER_ON_BEACON 14
+#define DTIM_PERIOD_AVAIL    15
 
 struct ath6kl {
        struct device *dev;
        u16 next_chan;
 
        bool p2p;
+       u16 assoc_bss_beacon_int;
+       u8 assoc_bss_dtim_period;
 
 #ifdef CONFIG_ATH6KL_DEBUG
        struct {
 
        if (len < 8 + 2 + 2)
                return -EINVAL;
 
+       if (bih->frame_type == BEACON_FTYPE && test_bit(CONNECTED, &ar->flag) &&
+           memcmp(bih->bssid, ar->bssid, ETH_ALEN) == 0) {
+               const u8 *tim;
+               tim = cfg80211_find_ie(WLAN_EID_TIM, buf + 8 + 2 + 2,
+                                      len - 8 - 2 - 2);
+               if (tim && tim[1] >= 2) {
+                       ar->assoc_bss_dtim_period = tim[3];
+                       set_bit(DTIM_PERIOD_AVAIL, &ar->flag);
+               }
+       }
+
        /*
         * In theory, use of cfg80211_inform_bss() would be more natural here
         * since we do not have the full frame. However, at least for now,