]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
wlcore: initialize per-link FW freed blocks correctly
authorArik Nemtsov <arik@wizery.com>
Tue, 27 Nov 2012 06:44:56 +0000 (08:44 +0200)
committerLuciano Coelho <coelho@ti.com>
Wed, 5 Dec 2012 07:43:32 +0000 (09:43 +0200)
When a link is allocated, sometimes the "freed packets" counter in FW
is non zero, but we always assumed it is. This caused us to incorrectly
account FW allocated blocks in some cases.

When operating in AP mode, this bug caused some stations to never
come back from PSM.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
drivers/net/wireless/ti/wlcore/cmd.c

index 38243aa8614fa1622c64ca491cb75ff797cba18a..e00d64be8d7553a0b559ecc184f94d0e6400f4b3 100644 (file)
@@ -322,6 +322,10 @@ int wl12xx_allocate_link(struct wl1271 *wl, struct wl12xx_vif *wlvif, u8 *hlid)
        __set_bit(link, wl->links_map);
        __set_bit(link, wlvif->links_map);
        spin_unlock_irqrestore(&wl->wl_lock, flags);
+
+       /* take the last "freed packets" value from the current FW status */
+       wl->links[link].prev_freed_pkts =
+                       wl->fw_status_2->counters.tx_lnk_free_pkts[link];
        *hlid = link;
        return 0;
 }