Rajkumar Manoharan wrote: > + bool stop_rx_poll; What exactly is this variable for ? Why can't the timer be just started/stopped/modified using the normal timer API ? And Ben has a point too. Different beacon intervals need to be handled, which can be done easily by just using the timestamp of the last received beacon and the beacon interval. Then all this fragile logic can be removed. > + if (!(sc->sc_flags & SC_OP_PRIM_STA_VIF)) > + return; This needs locking, no ? > + sc->rx.stop_rx_poll = false; > + spin_unlock_bh(&sc->rx.rxbuflock); > + sc->ps_flags |= PS_WAIT_FOR_BEACON; PS_WAIT_FOR_BEACON is being used randomly everywhere, with no proper locking, but this needs to be handled properly here, else station mode powersave would be buried under another layer of poo. Sujith -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html