From b4fc8cc9749880779001b76c43fc8b90ca71a6b1 Mon Sep 17 00:00:00 2001 From: Dmitry Tarnyagin Date: Thu, 22 Sep 2011 13:03:45 +0200 Subject: cw1200: configure_filter callback must be serialized with scan. It is not allowed to configure filter when scan is in progress. It confuses both firmware and driver state machines. Fix protects configure_filter by a scan lock. ST-Ericsson ID: 357819 Change-Id: I46dedb266b5ffa64b66372e24d2fdde74cfec348 Signed-off-by: Dmitry Tarnyagin Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/31745 Reviewed-by: Bartosz MARKOWSKI Tested-by: Bartosz MARKOWSKI Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/33527 Reviewed-by: Philippe LANGLAIS --- drivers/staging/cw1200/sta.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/staging/cw1200/sta.c b/drivers/staging/cw1200/sta.c index a8bebd1060e..82c410c6c88 100644 --- a/drivers/staging/cw1200/sta.c +++ b/drivers/staging/cw1200/sta.c @@ -487,6 +487,7 @@ void cw1200_configure_filter(struct ieee80211_hw *dev, FIF_BCN_PRBRESP_PROMISC | FIF_PROBE_REQ; + down(&priv->scan.lock); mutex_lock(&priv->conf_mutex); priv->rx_filter.promiscuous = (*total_flags & FIF_PROMISC_IN_BSS) @@ -506,6 +507,7 @@ void cw1200_configure_filter(struct ieee80211_hw *dev, } cw1200_update_filtering(priv); mutex_unlock(&priv->conf_mutex); + up(&priv->scan.lock); } int cw1200_conf_tx(struct ieee80211_hw *dev, u16 queue, -- cgit v1.2.3