From: Jérôme Pouiller <jerome.pouil...@silabs.com>

mac80211 and the device are both able to control power-save per vif.
But, the current code retrieve power-save from wfx_config(). So, it does
not allow to setup power-save independently for each vif. Driver just
has to rely on wfx_bss_info_changed() instead of wfx_config().

wfx_config() has nothing to do anymore, but we keep it since it is
mandatory for mac80211.

Signed-off-by: Jérôme Pouiller <jerome.pouil...@silabs.com>
---
 drivers/staging/wfx/main.c |  2 +-
 drivers/staging/wfx/sta.c  | 17 +++++------------
 2 files changed, 6 insertions(+), 13 deletions(-)

diff --git a/drivers/staging/wfx/main.c b/drivers/staging/wfx/main.c
index 1904890c03fe..84adad64fc30 100644
--- a/drivers/staging/wfx/main.c
+++ b/drivers/staging/wfx/main.c
@@ -131,7 +131,7 @@ static const struct ieee80211_ops wfx_ops = {
        .stop                   = wfx_stop,
        .add_interface          = wfx_add_interface,
        .remove_interface       = wfx_remove_interface,
-       .config                 = wfx_config,
+       .config                 = wfx_config,
        .tx                     = wfx_tx,
        .conf_tx                = wfx_conf_tx,
        .hw_scan                = wfx_hw_scan,
diff --git a/drivers/staging/wfx/sta.c b/drivers/staging/wfx/sta.c
index 0c3150a94c7c..94683a1440c8 100644
--- a/drivers/staging/wfx/sta.c
+++ b/drivers/staging/wfx/sta.c
@@ -826,6 +826,10 @@ void wfx_bss_info_changed(struct ieee80211_hw *hw,
 
        if (changed & BSS_CHANGED_TXPOWER)
                hif_set_output_power(wvif, info->txpower);
+
+       if (changed & BSS_CHANGED_PS)
+               wfx_update_pm(wvif);
+
        mutex_unlock(&wdev->conf_mutex);
 
        if (do_join)
@@ -1058,18 +1062,7 @@ void wfx_unassign_vif_chanctx(struct ieee80211_hw *hw,
 
 int wfx_config(struct ieee80211_hw *hw, u32 changed)
 {
-       int ret = 0;
-       struct wfx_dev *wdev = hw->priv;
-       struct wfx_vif *wvif;
-
-       if (changed & IEEE80211_CONF_CHANGE_PS) {
-               mutex_lock(&wdev->conf_mutex);
-               wvif = NULL;
-               while ((wvif = wvif_iterate(wdev, wvif)) != NULL)
-                       ret = wfx_update_pm(wvif);
-               mutex_unlock(&wdev->conf_mutex);
-       }
-       return ret;
+       return 0;
 }
 
 int wfx_add_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
-- 
2.25.0

_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to