if (state == STATE_SLEEP) {
                rt2x00pci_register_read(rt2x00dev, CSR20, ®);
                rt2x00_set_field32(®, CSR20_DELAY_AFTER_TBCN,
-                                  (libconf->conf->beacon_int - 20) * 16);
+                                  (rt2x00dev->beacon_int - 20) * 16);
                rt2x00_set_field32(®, CSR20_TBCN_BEFORE_WAKEUP,
                                   libconf->conf->listen_interval - 1);
 
 
        if (state == STATE_SLEEP) {
                rt2x00pci_register_read(rt2x00dev, CSR20, ®);
                rt2x00_set_field32(®, CSR20_DELAY_AFTER_TBCN,
-                                  (libconf->conf->beacon_int - 20) * 16);
+                                  (rt2x00dev->beacon_int - 20) * 16);
                rt2x00_set_field32(®, CSR20_TBCN_BEFORE_WAKEUP,
                                   libconf->conf->listen_interval - 1);
 
 
        if (state == STATE_SLEEP) {
                rt2500usb_register_read(rt2x00dev, MAC_CSR18, ®);
                rt2x00_set_field16(®, MAC_CSR18_DELAY_AFTER_BEACON,
-                                  libconf->conf->beacon_int - 20);
+                                  rt2x00dev->beacon_int - 20);
                rt2x00_set_field16(®, MAC_CSR18_BEACONS_BEFORE_WAKEUP,
                                   libconf->conf->listen_interval - 1);
 
 
         */
        u8 calibration[2];
 
+       /*
+        * Beacon interval.
+        */
+       u16 beacon_int;
+
        /*
         * Low level statistics which will have
         * to be kept up to date while device is running.
 
        erp.basic_rates = bss_conf->basic_rates;
        erp.beacon_int = bss_conf->beacon_int;
 
+       /* Update global beacon interval time, this is needed for PS support */
+       rt2x00dev->beacon_int = bss_conf->beacon_int;
+
        rt2x00dev->ops->lib->config_erp(rt2x00dev, &erp);
 }
 
 
        if (state == STATE_SLEEP) {
                rt2x00pci_register_read(rt2x00dev, MAC_CSR11, ®);
                rt2x00_set_field32(®, MAC_CSR11_DELAY_AFTER_TBCN,
-                                  libconf->conf->beacon_int - 10);
+                                  rt2x00dev->beacon_int - 10);
                rt2x00_set_field32(®, MAC_CSR11_TBCN_BEFORE_WAKEUP,
                                   libconf->conf->listen_interval - 1);
                rt2x00_set_field32(®, MAC_CSR11_WAKEUP_LATENCY, 5);
 
        if (state == STATE_SLEEP) {
                rt2x00usb_register_read(rt2x00dev, MAC_CSR11, ®);
                rt2x00_set_field32(®, MAC_CSR11_DELAY_AFTER_TBCN,
-                                  libconf->conf->beacon_int - 10);
+                                  rt2x00dev->beacon_int - 10);
                rt2x00_set_field32(®, MAC_CSR11_TBCN_BEFORE_WAKEUP,
                                   libconf->conf->listen_interval - 1);
                rt2x00_set_field32(®, MAC_CSR11_WAKEUP_LATENCY, 5);