]> git.baikalelectronics.ru Git - kernel.git/commit
iwlwifi: only add broadcast station once
authorReinette Chatre <reinette.chatre@intel.com>
Fri, 19 Feb 2010 06:58:32 +0000 (22:58 -0800)
committerReinette Chatre <reinette.chatre@intel.com>
Fri, 19 Mar 2010 20:40:49 +0000 (13:40 -0700)
commitf8ff6bd54c0947473dd4438ebaad04f9be857cab
treeedb0c98a855116e54555f162db166d4fd8ffaafc
parent76f0ec80c04acf1a2a0a1e1ceea083bd7368f7de
iwlwifi: only add broadcast station once

Currently the broadcast station is added after every RXON command. Change
this to only add the broadcast station when interface is added by mac80211.
With this we need some extra work to ensure broadcast station is always
present since station table is cleared when RXON without ASSOC bit set is
sent. To deal with this we re-add all driver known stations to uCode after
such an RXON command is sent.

We also do some cleanup and remove the various calls to clear the station
table. We now only clear the station table in two scenarios:
- only clear uCode portion of station table when RXON command without ASSOC
bit is sent
- clear uCode and driver portion when interface goes down or is removed.

We need to do this clearing when interface goes down to deal with the
device restart/reconfigure routines which do not remove the interface, but
do add the interface during reconfiguration.

Previously the keys were also cleared when station table in driver is
cleared, this is not done anymore since mac80211 will take care that keys
are set and cleared correctly.

There is a known issue with this change. Associating with different AP
without bringing interface down fails with a firmware error. This is
because of the lack of full station notification support and the later
patches in this series that complete the station notification support will
fix this.

Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
drivers/net/wireless/iwlwifi/iwl-3945.c
drivers/net/wireless/iwlwifi/iwl-5000.c
drivers/net/wireless/iwlwifi/iwl-agn.c
drivers/net/wireless/iwlwifi/iwl-core.c
drivers/net/wireless/iwlwifi/iwl-sta.c
drivers/net/wireless/iwlwifi/iwl-sta.h
drivers/net/wireless/iwlwifi/iwl3945-base.c