and move beacon filter enable there, like wl1271+ driver has it.
ROAMING_TRIGGER_LOW_RSSI_EVENT_ID |
ROAMING_TRIGGER_REGAINED_RSSI_EVENT_ID |
REGAINED_BSS_EVENT_ID | BT_PTA_SENSE_EVENT_ID |
- BT_PTA_PREDICTION_EVENT_ID | JOIN_EVENT_COMPLETE_ID;
+ BT_PTA_PREDICTION_EVENT_ID | JOIN_EVENT_COMPLETE_ID |
+ PS_REPORT_EVENT_ID;
ret = wl1251_event_unmask(wl);
if (ret < 0) {
}
}
+ if (vector & PS_REPORT_EVENT_ID) {
+ if (mbox->ps_status == ENTER_POWER_SAVE_SUCCESS) {
+ /* enable beacon filtering */
+ ret = wl1251_acx_beacon_filter_opt(wl, true);
+ if (ret < 0)
+ wl1251_error("beacon filter enable failed");
+
+ } else if (mbox->ps_status == ENTER_POWER_SAVE_FAIL)
+ wl->station_mode = STATION_ACTIVE_MODE;
+ else if (mbox->ps_status == EXIT_POWER_SAVE_FAIL)
+ wl->station_mode = STATION_POWER_SAVE_MODE;
+ }
+
return 0;
}
EVENT_MBOX_ALL_EVENT_ID = 0x7fffffff,
};
+enum {
+ ENTER_POWER_SAVE_FAIL = 0,
+ ENTER_POWER_SAVE_SUCCESS = 1,
+ EXIT_POWER_SAVE_FAIL = 2,
+ EXIT_POWER_SAVE_SUCCESS = 3,
+};
+
struct event_debug_report {
u8 debug_event_id;
u8 num_params;
case STATION_POWER_SAVE_MODE:
wl1251_debug(DEBUG_PSM, "entering psm");
- /* enable beacon filtering */
- ret = wl1251_acx_beacon_filter_opt(wl, true);
- if (ret < 0)
- return ret;
-
ret = wl1251_acx_wake_up_conditions(wl,
WAKE_UP_EVENT_DTIM_BITMAP,
wl->listen_int);