<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/net/mac80211/ht.c, branch v3.18.2</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>mac80211: set Rx highest rate in ht_cap</title>
<updated>2014-07-21T10:14:04+00:00</updated>
<author>
<name>Arik Nemtsov</name>
<email>arik@wizery.com</email>
</author>
<published>2014-07-17T14:14:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=dc5943d54092467b7b56ff6adaeb63165f692fa2'/>
<id>dc5943d54092467b7b56ff6adaeb63165f692fa2</id>
<content type='text'>
Set for completeness mostly, currently unused in the code.

Signed-off-by: Arik Nemtsov &lt;arikx.nemtsov@intel.com&gt;
Reviewed-by: Emmanuel Grumbach &lt;emmanuel.grumbach@intel.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Set for completeness mostly, currently unused in the code.

Signed-off-by: Arik Nemtsov &lt;arikx.nemtsov@intel.com&gt;
Reviewed-by: Emmanuel Grumbach &lt;emmanuel.grumbach@intel.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mac80211: support HT for TDLS stations</title>
<updated>2014-07-21T10:14:04+00:00</updated>
<author>
<name>Arik Nemtsov</name>
<email>arik@wizery.com</email>
</author>
<published>2014-07-17T14:14:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=13cc8a4a1d24ff1f3b8b6de16779ef925371b18b'/>
<id>13cc8a4a1d24ff1f3b8b6de16779ef925371b18b</id>
<content type='text'>
Add the HT capabilities and HT operation information elements to TDLS
setup packets where appropriate.

Signed-off-by: Arik Nemtsov &lt;arikx.nemtsov@intel.com&gt;
Reviewed-by: Emmanuel Grumbach &lt;emmanuel.grumbach@intel.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add the HT capabilities and HT operation information elements to TDLS
setup packets where appropriate.

Signed-off-by: Arik Nemtsov &lt;arikx.nemtsov@intel.com&gt;
Reviewed-by: Emmanuel Grumbach &lt;emmanuel.grumbach@intel.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mac80211: Allow HT capa override to add 40 MHz intolerant</title>
<updated>2014-04-22T15:23:19+00:00</updated>
<author>
<name>Jouni Malinen</name>
<email>jouni@qca.qualcomm.com</email>
</author>
<published>2014-04-15T16:13:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=9a07bf507dfc5402e63d96596341f2a15e4142c7'/>
<id>9a07bf507dfc5402e63d96596341f2a15e4142c7</id>
<content type='text'>
This can be useful for testing purposes to confirm valid AP behavior on
HT 20/40 co-existence functionality.

Signed-off-by: Jouni Malinen &lt;jouni@qca.qualcomm.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This can be useful for testing purposes to confirm valid AP behavior on
HT 20/40 co-existence functionality.

Signed-off-by: Jouni Malinen &lt;jouni@qca.qualcomm.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mac80211: Allow disabling LDPC</title>
<updated>2014-04-09T08:56:00+00:00</updated>
<author>
<name>Pawel Kulakowski</name>
<email>pawel.kulakowski@tieto.com</email>
</author>
<published>2014-04-01T05:13:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=a2e7495d639baeb4692ae80539963cf35dbcb467'/>
<id>a2e7495d639baeb4692ae80539963cf35dbcb467</id>
<content type='text'>
This allows user-space (wpa_supplicant) to disable LDPC coding.

Signed-off-by: Pawel Kulakowski &lt;pawel.kulakowski@tieto.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This allows user-space (wpa_supplicant) to disable LDPC coding.

Signed-off-by: Pawel Kulakowski &lt;pawel.kulakowski@tieto.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mac80211: allow drivers to request SMPS off</title>
<updated>2014-02-21T08:28:52+00:00</updated>
<author>
<name>Luciano Coelho</name>
<email>luciano.coelho@intel.com</email>
</author>
<published>2014-02-20T14:41:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=30f55dc171a32d60e3753c9e0a3cf33a4d6c4610'/>
<id>30f55dc171a32d60e3753c9e0a3cf33a4d6c4610</id>
<content type='text'>
Previously we were warning and using automatic when a driver sent an
update request with SMPS off.  This patch makes it possible for
drivers to disable SMPS at runtime, for whatever reason.

Signed-off-by: Luciano Coelho &lt;luciano.coelho@intel.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously we were warning and using automatic when a driver sent an
update request with SMPS off.  This patch makes it possible for
drivers to disable SMPS at runtime, for whatever reason.

Signed-off-by: Luciano Coelho &lt;luciano.coelho@intel.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless</title>
<updated>2014-02-13T19:43:02+00:00</updated>
<author>
<name>John W. Linville</name>
<email>linville@tuxdriver.com</email>
</author>
<published>2014-02-13T19:43:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=0e028ab0fb2da47fd235dafd4159859892e73d08'/>
<id>0e028ab0fb2da47fd235dafd4159859892e73d08</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>mac80211: avoid deadlock revealed by lockdep</title>
<updated>2014-02-06T08:55:18+00:00</updated>
<author>
<name>Emmanuel Grumbach</name>
<email>emmanuel.grumbach@intel.com</email>
</author>
<published>2014-01-23T12:28:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=8ffcc704c963b4157391bd87a4544cdfd18b574d'/>
<id>8ffcc704c963b4157391bd87a4544cdfd18b574d</id>
<content type='text'>
sdata-&gt;u.ap.request_smps_work can’t be flushed synchronously
under wdev_lock(wdev) since ieee80211_request_smps_ap_work
itself locks the same lock.
While at it, reset the driver_smps_mode when the ap is
stopped to its default: OFF.

This solves:

======================================================
[ INFO: possible circular locking dependency detected ]
3.12.0-ipeer+ #2 Tainted: G           O
-------------------------------------------------------
rmmod/2867 is trying to acquire lock:
  ((&amp;sdata-&gt;u.ap.request_smps_work)){+.+...}, at: [&lt;c105b8d0&gt;] flush_work+0x0/0x90

but task is already holding lock:
  (&amp;wdev-&gt;mtx){+.+.+.}, at: [&lt;f9b32626&gt;] cfg80211_stop_ap+0x26/0x230 [cfg80211]

which lock already depends on the new lock.

the existing dependency chain (in reverse order) is:

-&gt; #1 (&amp;wdev-&gt;mtx){+.+.+.}:
        [&lt;c10aefa9&gt;] lock_acquire+0x79/0xe0
        [&lt;c1607a1a&gt;] mutex_lock_nested+0x4a/0x360
        [&lt;fb06288b&gt;] ieee80211_request_smps_ap_work+0x2b/0x50 [mac80211]
        [&lt;c105cdd8&gt;] process_one_work+0x198/0x450
        [&lt;c105d469&gt;] worker_thread+0xf9/0x320
        [&lt;c10669ff&gt;] kthread+0x9f/0xb0
        [&lt;c1613397&gt;] ret_from_kernel_thread+0x1b/0x28

-&gt; #0 ((&amp;sdata-&gt;u.ap.request_smps_work)){+.+...}:
        [&lt;c10ae9df&gt;] __lock_acquire+0x183f/0x1910
        [&lt;c10aefa9&gt;] lock_acquire+0x79/0xe0
        [&lt;c105b917&gt;] flush_work+0x47/0x90
        [&lt;c105d867&gt;] __cancel_work_timer+0x67/0xe0
        [&lt;c105d90f&gt;] cancel_work_sync+0xf/0x20
        [&lt;fb0765cc&gt;] ieee80211_stop_ap+0x8c/0x340 [mac80211]
        [&lt;f9b3268c&gt;] cfg80211_stop_ap+0x8c/0x230 [cfg80211]
        [&lt;f9b0d8f9&gt;] cfg80211_leave+0x79/0x100 [cfg80211]
        [&lt;f9b0da72&gt;] cfg80211_netdev_notifier_call+0xf2/0x4f0 [cfg80211]
        [&lt;c160f2c9&gt;] notifier_call_chain+0x59/0x130
        [&lt;c106c6de&gt;] __raw_notifier_call_chain+0x1e/0x30
        [&lt;c106c70f&gt;] raw_notifier_call_chain+0x1f/0x30
        [&lt;c14f8213&gt;] call_netdevice_notifiers_info+0x33/0x70
        [&lt;c14f8263&gt;] call_netdevice_notifiers+0x13/0x20
        [&lt;c14f82a4&gt;] __dev_close_many+0x34/0xb0
        [&lt;c14f83fe&gt;] dev_close_many+0x6e/0xc0
        [&lt;c14f9c77&gt;] rollback_registered_many+0xa7/0x1f0
        [&lt;c14f9dd4&gt;] unregister_netdevice_many+0x14/0x60
        [&lt;fb06f4d9&gt;] ieee80211_remove_interfaces+0xe9/0x170 [mac80211]
        [&lt;fb055116&gt;] ieee80211_unregister_hw+0x56/0x110 [mac80211]
        [&lt;fa3e9396&gt;] iwl_op_mode_mvm_stop+0x26/0xe0 [iwlmvm]
        [&lt;f9b9d8ca&gt;] _iwl_op_mode_stop+0x3a/0x70 [iwlwifi]
        [&lt;f9b9d96f&gt;] iwl_opmode_deregister+0x6f/0x90 [iwlwifi]
        [&lt;fa405179&gt;] __exit_compat+0xd/0x19 [iwlmvm]
        [&lt;c10b8bf9&gt;] SyS_delete_module+0x179/0x2b0
        [&lt;c1613421&gt;] sysenter_do_call+0x12/0x32

Fixes: 687da132234f ("mac80211: implement SMPS for AP")
Cc: &lt;stable@vger.kernel.org&gt; [3.13]
Reported-by: Ilan Peer &lt;ilan.peer@intel.com&gt;
Signed-off-by: Emmanuel Grumbach &lt;emmanuel.grumbach@intel.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
sdata-&gt;u.ap.request_smps_work can’t be flushed synchronously
under wdev_lock(wdev) since ieee80211_request_smps_ap_work
itself locks the same lock.
While at it, reset the driver_smps_mode when the ap is
stopped to its default: OFF.

This solves:

======================================================
[ INFO: possible circular locking dependency detected ]
3.12.0-ipeer+ #2 Tainted: G           O
-------------------------------------------------------
rmmod/2867 is trying to acquire lock:
  ((&amp;sdata-&gt;u.ap.request_smps_work)){+.+...}, at: [&lt;c105b8d0&gt;] flush_work+0x0/0x90

but task is already holding lock:
  (&amp;wdev-&gt;mtx){+.+.+.}, at: [&lt;f9b32626&gt;] cfg80211_stop_ap+0x26/0x230 [cfg80211]

which lock already depends on the new lock.

the existing dependency chain (in reverse order) is:

-&gt; #1 (&amp;wdev-&gt;mtx){+.+.+.}:
        [&lt;c10aefa9&gt;] lock_acquire+0x79/0xe0
        [&lt;c1607a1a&gt;] mutex_lock_nested+0x4a/0x360
        [&lt;fb06288b&gt;] ieee80211_request_smps_ap_work+0x2b/0x50 [mac80211]
        [&lt;c105cdd8&gt;] process_one_work+0x198/0x450
        [&lt;c105d469&gt;] worker_thread+0xf9/0x320
        [&lt;c10669ff&gt;] kthread+0x9f/0xb0
        [&lt;c1613397&gt;] ret_from_kernel_thread+0x1b/0x28

-&gt; #0 ((&amp;sdata-&gt;u.ap.request_smps_work)){+.+...}:
        [&lt;c10ae9df&gt;] __lock_acquire+0x183f/0x1910
        [&lt;c10aefa9&gt;] lock_acquire+0x79/0xe0
        [&lt;c105b917&gt;] flush_work+0x47/0x90
        [&lt;c105d867&gt;] __cancel_work_timer+0x67/0xe0
        [&lt;c105d90f&gt;] cancel_work_sync+0xf/0x20
        [&lt;fb0765cc&gt;] ieee80211_stop_ap+0x8c/0x340 [mac80211]
        [&lt;f9b3268c&gt;] cfg80211_stop_ap+0x8c/0x230 [cfg80211]
        [&lt;f9b0d8f9&gt;] cfg80211_leave+0x79/0x100 [cfg80211]
        [&lt;f9b0da72&gt;] cfg80211_netdev_notifier_call+0xf2/0x4f0 [cfg80211]
        [&lt;c160f2c9&gt;] notifier_call_chain+0x59/0x130
        [&lt;c106c6de&gt;] __raw_notifier_call_chain+0x1e/0x30
        [&lt;c106c70f&gt;] raw_notifier_call_chain+0x1f/0x30
        [&lt;c14f8213&gt;] call_netdevice_notifiers_info+0x33/0x70
        [&lt;c14f8263&gt;] call_netdevice_notifiers+0x13/0x20
        [&lt;c14f82a4&gt;] __dev_close_many+0x34/0xb0
        [&lt;c14f83fe&gt;] dev_close_many+0x6e/0xc0
        [&lt;c14f9c77&gt;] rollback_registered_many+0xa7/0x1f0
        [&lt;c14f9dd4&gt;] unregister_netdevice_many+0x14/0x60
        [&lt;fb06f4d9&gt;] ieee80211_remove_interfaces+0xe9/0x170 [mac80211]
        [&lt;fb055116&gt;] ieee80211_unregister_hw+0x56/0x110 [mac80211]
        [&lt;fa3e9396&gt;] iwl_op_mode_mvm_stop+0x26/0xe0 [iwlmvm]
        [&lt;f9b9d8ca&gt;] _iwl_op_mode_stop+0x3a/0x70 [iwlwifi]
        [&lt;f9b9d96f&gt;] iwl_opmode_deregister+0x6f/0x90 [iwlwifi]
        [&lt;fa405179&gt;] __exit_compat+0xd/0x19 [iwlmvm]
        [&lt;c10b8bf9&gt;] SyS_delete_module+0x179/0x2b0
        [&lt;c1613421&gt;] sysenter_do_call+0x12/0x32

Fixes: 687da132234f ("mac80211: implement SMPS for AP")
Cc: &lt;stable@vger.kernel.org&gt; [3.13]
Reported-by: Ilan Peer &lt;ilan.peer@intel.com&gt;
Signed-off-by: Emmanuel Grumbach &lt;emmanuel.grumbach@intel.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mac80211: send {ADD,DEL}BA on AC_VO like other mgmt frames, as per spec</title>
<updated>2014-02-04T20:48:28+00:00</updated>
<author>
<name>Karl Beldan</name>
<email>karl.beldan@rivierawaves.com</email>
</author>
<published>2014-01-23T19:06:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=c6e133277bcf05597ad32f2699b928b284138d59'/>
<id>c6e133277bcf05597ad32f2699b928b284138d59</id>
<content type='text'>
ATM, {ADD,DEL}BA and BAR frames are sent on the AC matching the TID of
the BA parameters. In the discussion [1] about this patch, Johannes
recalled that it fixed some races with the DELBA and indeed this
behavior was introduced in [2].
While [2] is right for the BARs, the part queueing the {ADD,DEL}BAs on
their BA params TID AC violates the spec and is more a workaround for
some drivers. Helmut expressed some concerns wrt such drivers, in
particular DELBAs in rt2x00.

ATM, DELBAs are sent after a driver has called (hence "purposely")
ieee80211_start_tx_ba_cb_irqsafe and Johannes and Emmanuel gave some
details wrt intentions behind the split of the IEEE80211_AMPDU_TX_STOP_*
given to the driver ampdu_action supposed to call this function, which
could prove handy to people trying to do the right thing in faulty
drivers (if their fw/hw don't get in their way).

[1] http://mid.gmane.org/1390391564-18481-1-git-send-email-karl.beldan@gmail.com
[2] Commit: cf6bb79ad828 ("mac80211: Use appropriate TID for sending BAR, ADDBA and DELBA frames")

Signed-off-by: Karl Beldan &lt;karl.beldan@rivierawaves.com&gt;
Cc: Helmut Schaa &lt;helmut.schaa@googlemail.com&gt;
Cc: Emmanuel Grumbach &lt;emmanuel.grumbach@intel.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
ATM, {ADD,DEL}BA and BAR frames are sent on the AC matching the TID of
the BA parameters. In the discussion [1] about this patch, Johannes
recalled that it fixed some races with the DELBA and indeed this
behavior was introduced in [2].
While [2] is right for the BARs, the part queueing the {ADD,DEL}BAs on
their BA params TID AC violates the spec and is more a workaround for
some drivers. Helmut expressed some concerns wrt such drivers, in
particular DELBAs in rt2x00.

ATM, DELBAs are sent after a driver has called (hence "purposely")
ieee80211_start_tx_ba_cb_irqsafe and Johannes and Emmanuel gave some
details wrt intentions behind the split of the IEEE80211_AMPDU_TX_STOP_*
given to the driver ampdu_action supposed to call this function, which
could prove handy to people trying to do the right thing in faulty
drivers (if their fw/hw don't get in their way).

[1] http://mid.gmane.org/1390391564-18481-1-git-send-email-karl.beldan@gmail.com
[2] Commit: cf6bb79ad828 ("mac80211: Use appropriate TID for sending BAR, ADDBA and DELBA frames")

Signed-off-by: Karl Beldan &lt;karl.beldan@rivierawaves.com&gt;
Cc: Helmut Schaa &lt;helmut.schaa@googlemail.com&gt;
Cc: Emmanuel Grumbach &lt;emmanuel.grumbach@intel.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mac80211: allow to set smps mode to OFF in AP mode</title>
<updated>2014-01-07T15:25:49+00:00</updated>
<author>
<name>Emmanuel Grumbach</name>
<email>emmanuel.grumbach@intel.com</email>
</author>
<published>2014-01-07T11:11:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=349b196044d38a3bf5be2b4dd2fe28ca2f12a258'/>
<id>349b196044d38a3bf5be2b4dd2fe28ca2f12a258</id>
<content type='text'>
In managed mode, we should not ask for OFF mode because the
power settings may still require DYNAMIC. In AP mode, this
should be allowed since the default settings is OFF and
AUTOMATIC is not allowed.

Signed-off-by: Emmanuel Grumbach &lt;emmanuel.grumbach@intel.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In managed mode, we should not ask for OFF mode because the
power settings may still require DYNAMIC. In AP mode, this
should be allowed since the default settings is OFF and
AUTOMATIC is not allowed.

Signed-off-by: Emmanuel Grumbach &lt;emmanuel.grumbach@intel.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mac80211: implement SMPS for AP</title>
<updated>2013-10-28T14:05:11+00:00</updated>
<author>
<name>Emmanuel Grumbach</name>
<email>emmanuel.grumbach@intel.com</email>
</author>
<published>2013-10-01T13:45:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=687da132234feb70748df04a007bc1820f392254'/>
<id>687da132234feb70748df04a007bc1820f392254</id>
<content type='text'>
When the driver requests to move to STATIC or DYNAMIC SMPS,
we send an action frame to each associated station and
reconfigure the channel context / driver.
Of course, non-MIMO stations are ignored.

The beacon isn't updated. The association response will
include the original capabilities. Stations that associate
while in non-OFF SMPS mode will get an action frame right
after association to inform them about our current state.
Note that we wait until the end of the EAPOL. Sending an
action frame before the EAPOL is finished can be an issue
for a few clients. Clients aren't likely to send EAPOL
frames in MIMO anyway.

When the SMPS configuration gets more permissive (e.g.
STATIC -&gt; OFF), we don't wake up stations that are asleep
We remember that they don't know about the change and send
the action frame when they wake up.

When the SMPS configuration gets more restrictive (e.g.
OFF -&gt; STATIC), we set the TIM bit for every sleeping STA.
uAPSD stations might send MIMO until they poll the action
frame, but this is for a short period of time.

Signed-off-by: Emmanuel Grumbach &lt;emmanuel.grumbach@intel.com&gt;
[fix vht streams loop, initialisation]
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When the driver requests to move to STATIC or DYNAMIC SMPS,
we send an action frame to each associated station and
reconfigure the channel context / driver.
Of course, non-MIMO stations are ignored.

The beacon isn't updated. The association response will
include the original capabilities. Stations that associate
while in non-OFF SMPS mode will get an action frame right
after association to inform them about our current state.
Note that we wait until the end of the EAPOL. Sending an
action frame before the EAPOL is finished can be an issue
for a few clients. Clients aren't likely to send EAPOL
frames in MIMO anyway.

When the SMPS configuration gets more permissive (e.g.
STATIC -&gt; OFF), we don't wake up stations that are asleep
We remember that they don't know about the change and send
the action frame when they wake up.

When the SMPS configuration gets more restrictive (e.g.
OFF -&gt; STATIC), we set the TIM bit for every sleeping STA.
uAPSD stations might send MIMO until they poll the action
frame, but this is for a short period of time.

Signed-off-by: Emmanuel Grumbach &lt;emmanuel.grumbach@intel.com&gt;
[fix vht streams loop, initialisation]
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
