wlcore: invalidate keep-alive template on disconnection
authorEliad Peller <eliad@wizery.com>
Thu, 16 Aug 2012 10:32:32 +0000 (13:32 +0300)
committerLuciano Coelho <luca@coelho.fi>
Thu, 27 Sep 2012 09:13:53 +0000 (12:13 +0300)
Previously, invalidation of the keep-alive template was
done when going idle. However, while removing the
idle-handling we didn't move the keep-alive template
invalidation to another place.

This finally resulted in fw error when trying to use
the keep-alive template by another role.

(Note that we still have an error here - each role
should have its unique keep-alive template id, while
currently they all use CMD_TEMPL_KLV_IDX_NULL_DATA (0).
This only works now because we don't support concurrent
connected stations yet)

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <luca@coelho.fi>
drivers/net/wireless/ti/wlcore/main.c

index 3f5d87e95d92e7001081301e1f8b953ff7660909..7c04b0b15b604c9d782c0d84fa128a42f8dc9a08 100644 (file)
@@ -2544,6 +2544,11 @@ static int wl1271_unjoin(struct wl1271 *wl, struct wl12xx_vif *wlvif)
                ieee80211_chswitch_done(vif, false);
        }
 
+       /* invalidate keep-alive template */
+       wl1271_acx_keep_alive_config(wl, wlvif,
+                                    CMD_TEMPL_KLV_IDX_NULL_DATA,
+                                    ACX_KEEP_ALIVE_TPL_INVALID);
+
        /* to stop listening to a channel, we disconnect */
        ret = wl12xx_cmd_role_stop_sta(wl, wlvif);
        if (ret < 0)