PSPOLL_DELIVERY_FAILURE_EVENT_ID |
                SOFT_GEMINI_SENSE_EVENT_ID;
 
+       if (wl->bss_type == BSS_TYPE_AP_BSS)
+               wl->event_mask |= STA_REMOVE_COMPLETE_EVENT_ID;
+
        ret = wl1271_event_unmask(wl);
        if (ret < 0) {
                wl1271_error("EVENT mask setting failed");
 
        int ret;
        u32 vector;
        bool beacon_loss = false;
+       bool is_ap = (wl->bss_type == BSS_TYPE_AP_BSS);
 
        wl1271_event_mbox_dump(mbox);
 
         * BSS_LOSE_EVENT, beacon loss has to be reported to the stack.
         *
         */
-       if (vector & BSS_LOSE_EVENT_ID) {
+       if ((vector & BSS_LOSE_EVENT_ID) && !is_ap) {
                wl1271_info("Beacon loss detected.");
 
                /* indicate to the stack, that beacons have been lost */
                beacon_loss = true;
        }
 
-       if (vector & PS_REPORT_EVENT_ID) {
+       if ((vector & PS_REPORT_EVENT_ID) && !is_ap) {
                wl1271_debug(DEBUG_EVENT, "PS_REPORT_EVENT");
                ret = wl1271_event_ps_report(wl, mbox, &beacon_loss);
                if (ret < 0)
                        return ret;
        }
 
-       if (vector & PSPOLL_DELIVERY_FAILURE_EVENT_ID)
+       if ((vector & PSPOLL_DELIVERY_FAILURE_EVENT_ID) && !is_ap)
                wl1271_event_pspoll_delivery_fail(wl);
 
        if (vector & RSSI_SNR_TRIGGER_0_EVENT_ID) {
 
        BSS_LOSE_EVENT_ID                        = BIT(18),
        REGAINED_BSS_EVENT_ID                    = BIT(19),
        ROAMING_TRIGGER_MAX_TX_RETRY_EVENT_ID    = BIT(20),
+       STA_REMOVE_COMPLETE_EVENT_ID             = BIT(21), /* AP */
        SOFT_GEMINI_SENSE_EVENT_ID               = BIT(22),
        SOFT_GEMINI_PREDICTION_EVENT_ID          = BIT(23),
        SOFT_GEMINI_AVALANCHE_EVENT_ID           = BIT(24),