]> git.baikalelectronics.ru Git - kernel.git/commit
staging: wfx: fix PS parameters when multiple vif are in use
authorJérôme Pouiller <jerome.pouiller@silabs.com>
Fri, 15 May 2020 08:33:20 +0000 (10:33 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 15 May 2020 14:00:53 +0000 (16:00 +0200)
commit20037a6de7ca13602434fec2690aa4623b9b5e21
tree0a58813cc9fd68ca6feef659f7342e00506f682e
parent91c14f22ac1e4b66ef2161d80455449db2fad799
staging: wfx: fix PS parameters when multiple vif are in use

When multiple vif are in use (= one access point and one station), and
when the channels are different, it is necessary to enable power save on
station.

The firmware check that steps are done in the correct order:
  - AP can't start if PS is not enable on the station
  - PS can't set on the station before the association has finished
    (= before the call set_bss_params)

Obviously, in add, when one of the interface disappears, it is necessary to
restore the power save status.

wfx_update_pm() is able to set the correct PS configuration. But it has
to be called at the right time:
   1. before hif_start(), but after the channel configuration is known
   2. after hif_set_bss_params()
   3. after hif_reset()

Therefore, the call to wfx_update_pm() from wfx_add_interface() is too
early to address 1.

The call after hif_set_bss_params() already exists.

For the symmetry, the call from wfx_remove_interface() (that handle 3.)
is also relocated.

Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
Link: https://lore.kernel.org/r/20200515083325.378539-15-Jerome.Pouiller@silabs.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/wfx/sta.c