ath9k: wait for beacon frame along with CAB
authorGabor Juhos <juhosg@openwrt.org>
Wed, 17 Jun 2009 18:53:20 +0000 (20:53 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 19 Jun 2009 15:50:22 +0000 (11:50 -0400)
Changes-licensed-under: ISC
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/recv.c

index f99f3a76df3fe37be6b8e110a7e585f5fbe7ff75..cece1c4c6bda5db0b151c2a1cd745ba4feab83a3 100644 (file)
@@ -539,11 +539,14 @@ static void ath_rx_ps_beacon(struct ath_softc *sc, struct sk_buff *skb)
        if (ath_beacon_dtim_pending_cab(skb)) {
                /*
                 * Remain awake waiting for buffered broadcast/multicast
-                * frames.
+                * frames. If the last broadcast/multicast frame is not
+                * received properly, the next beacon frame will work as
+                * a backup trigger for returning into NETWORK SLEEP state,
+                * so we are waiting for it as well.
                 */
                DPRINTF(sc, ATH_DBG_PS, "Received DTIM beacon indicating "
                        "buffered broadcast/multicast frame(s)\n");
-               sc->sc_flags |= SC_OP_WAIT_FOR_CAB;
+               sc->sc_flags |= SC_OP_WAIT_FOR_CAB | SC_OP_WAIT_FOR_BEACON;
                return;
        }