<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/net/mac80211/main.c, branch linux-3.18.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.18.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.18.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2018-10-13T07:09:29Z</updated>
<entry>
<title>mac80211: fix a race between restart and CSA flows</title>
<updated>2018-10-13T07:09:29Z</updated>
<author>
<name>Emmanuel Grumbach</name>
</author>
<published>2018-08-31T08:31:06Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=869ce9b1b8bb5d6b84080fb3d1c8adaa16c59f84'/>
<id>urn:sha1:869ce9b1b8bb5d6b84080fb3d1c8adaa16c59f84</id>
<content type='text'>
[ Upstream commit f3ffb6c3a28963657eb8b02a795d75f2ebbd5ef4 ]

We hit a problem with iwlwifi that was caused by a bug in
mac80211. A bug in iwlwifi caused the firwmare to crash in
certain cases in channel switch. Because of that bug,
drv_pre_channel_switch would fail and trigger the restart
flow.
Now we had the hw restart worker which runs on the system's
workqueue and the csa_connection_drop_work worker that runs
on mac80211's workqueue that can run together. This is
obviously problematic since the restart work wants to
reconfigure the connection, while the csa_connection_drop_work
worker does the exact opposite: it tries to disconnect.

Fix this by cancelling the csa_connection_drop_work worker
in the restart worker.

Note that this can sound racy: we could have:

driver   iface_work   CSA_work   restart_work
+++++++++++++++++++++++++++++++++++++++++++++
              |
 &lt;--drv_cs ---|
&lt;FW CRASH!&gt;
-CS FAILED--&gt;
              |                       |
              |                 cancel_work(CSA)
           schedule                   |
           CSA work                   |
                         |            |
                        Race between those 2

But this is not possible because we flush the workqueue
in the restart worker before we cancel the CSA worker.
That would be bullet proof if we could guarantee that
we schedule the CSA worker only from the iface_work
which runs on the workqueue (and not on the system's
workqueue), but unfortunately we do have an instance
in which we schedule the CSA work outside the context
of the workqueue (ieee80211_chswitch_done).

Note also that we should probably cancel other workers
like beacon_connection_loss_work and possibly others
for different types of interfaces, at the very least,
IBSS should suffer from the exact same problem, but for
now, do the minimum to fix the actual bug that was actually
experienced and reproduced.

Signed-off-by: Emmanuel Grumbach &lt;emmanuel.grumbach@intel.com&gt;
Signed-off-by: Luca Coelho &lt;luciano.coelho@intel.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: Sasha Levin &lt;alexander.levin@microsoft.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>mac80211: correct use of IEEE80211_VHT_CAP_RXSTBC_X</title>
<updated>2018-10-13T07:09:28Z</updated>
<author>
<name>Danek Duvall</name>
</author>
<published>2018-08-22T23:01:04Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=44e7dfa5eb55a089b59684528046698dc29455b9'/>
<id>urn:sha1:44e7dfa5eb55a089b59684528046698dc29455b9</id>
<content type='text'>
[ Upstream commit 67d1ba8a6dc83d90cd58b89fa6cbf9ae35a0cf7f ]

The mod mask for VHT capabilities intends to say that you can override
the number of STBC receive streams, and it does, but only by accident.
The IEEE80211_VHT_CAP_RXSTBC_X aren't bits to be set, but values (albeit
left-shifted).  ORing the bits together gets the right answer, but we
should use the _MASK macro here instead.

Signed-off-by: Danek Duvall &lt;duvall@comfychair.org&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: Sasha Levin &lt;alexander.levin@microsoft.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>mac80211: prevent possible crypto tx tailroom corruption</title>
<updated>2015-08-04T18:37:08Z</updated>
<author>
<name>Michal Kazior</name>
</author>
<published>2015-05-22T08:22:40Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=0e05e75326d068727b3790b2e0c927e75031a86b'/>
<id>urn:sha1:0e05e75326d068727b3790b2e0c927e75031a86b</id>
<content type='text'>
[ Upstream commit ab499db80fcf07c18e4053f91a619500f663e90e ]

There was a possible race between
ieee80211_reconfig() and
ieee80211_delayed_tailroom_dec(). This could
result in inability to transmit data if driver
crashed during roaming or rekeying and subsequent
skbs with insufficient tailroom appeared.

This race was probably never seen in the wild
because a device driver would have to crash AND
recover within 0.5s which is very unlikely.

I was able to prove this race exists after
changing the delay to 10s locally and crashing
ath10k via debugfs immediately after GTK
rekeying. In case of ath10k the counter went below
0. This was harmless but other drivers which
actually require tailroom (e.g. for WEP ICV or
MMIC) could end up with the counter at 0 instead
of &gt;0 and introduce insufficient skb tailroom
failures because mac80211 would not resize skbs
appropriately anymore.

Fixes: 8d1f7ecd2af5 ("mac80211: defer tailroom counter manipulation when roaming")
Signed-off-by: Michal Kazior &lt;michal.kazior@tieto.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</content>
</entry>
<entry>
<title>mac80211: add Intel Mobile Communications copyright</title>
<updated>2014-09-05T11:52:06Z</updated>
<author>
<name>Johannes Berg</name>
</author>
<published>2014-09-03T12:24:57Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d98ad83ee86e523cc00cbf425f456fbd14b4fdc4'/>
<id>urn:sha1:d98ad83ee86e523cc00cbf425f456fbd14b4fdc4</id>
<content type='text'>
Our legal structure changed at some point (see wikipedia), but
we forgot to immediately switch over to the new copyright
notice.

For files that we have modified in the time since the change,
add the proper copyright notice now.

Signed-off-by: Johannes Berg &lt;johannes.berg@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>
</entry>
<entry>
<title>mac80211: introduce refcount for queue_stop_reasons</title>
<updated>2014-06-23T12:22:25Z</updated>
<author>
<name>Luciano Coelho</name>
</author>
<published>2014-06-13T13:30:05Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=cca07b00a56d6ddd339e457dfd1a229222b9acf5'/>
<id>urn:sha1:cca07b00a56d6ddd339e457dfd1a229222b9acf5</id>
<content type='text'>
Sometimes different vifs may be stopping the queues for the same
reason (e.g. when several interfaces are performing a channel switch).
Instead of using a bitmask for the reasons, use an integer that holds
a refcount instead.  In order to keep it backwards compatible,
introduce a boolean in some functions that tell us whether the queue
stopping should be refcounted or not.  For now, use not refcounted for
all calls to keep it functionally the same as before.

Signed-off-by: Luciano Coelho &lt;luciano.coelho@intel.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
</entry>
<entry>
<title>mac80211: remove PID rate control</title>
<updated>2014-06-23T09:05:23Z</updated>
<author>
<name>John W. Linville</name>
</author>
<published>2014-05-30T14:47:28Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=20edb50e593dca7522b4f3a95b801dbf99f24c52'/>
<id>urn:sha1:20edb50e593dca7522b4f3a95b801dbf99f24c52</id>
<content type='text'>
Minstrel has long since proven its worth.

Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
</entry>
<entry>
<title>Merge git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next</title>
<updated>2014-05-22T17:58:36Z</updated>
<author>
<name>John W. Linville</name>
</author>
<published>2014-05-22T17:58:36Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=40a10fd740a4d5a9f3da255cf8dae48c6723d1a6'/>
<id>urn:sha1:40a10fd740a4d5a9f3da255cf8dae48c6723d1a6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>mac80211: Support multiple CSA counters</title>
<updated>2014-05-15T13:00:58Z</updated>
<author>
<name>Andrei Otcheretianski</name>
</author>
<published>2014-05-09T11:11:47Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=0d06d9ba93ad4272dc3cd2865deb18c9e9885fd5'/>
<id>urn:sha1:0d06d9ba93ad4272dc3cd2865deb18c9e9885fd5</id>
<content type='text'>
Support up to IEEE80211_MAX_CSA_COUNTERS_NUM csa counters.
This is defined to be 2 now, to support both CSA and eCSA
counters.

Signed-off-by: Andrei Otcheretianski &lt;andrei.otcheretianski@intel.com&gt;
Signed-off-by: Luciano Coelho &lt;luciano.coelho@intel.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'for-john' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next</title>
<updated>2014-04-30T16:04:27Z</updated>
<author>
<name>John W. Linville</name>
</author>
<published>2014-04-30T16:04:27Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f6595444c1ee798f9c227107bb3ab14730c6497a'/>
<id>urn:sha1:f6595444c1ee798f9c227107bb3ab14730c6497a</id>
<content type='text'>
Conflicts:
	net/mac80211/chan.c
</content>
</entry>
<entry>
<title>mac80211: change return value of notifier function</title>
<updated>2014-04-25T15:34:25Z</updated>
<author>
<name>Zhao, Gang</name>
</author>
<published>2014-04-21T04:53:05Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=8bd811aa6c407a8a4712d7142fb9909f1b2a5fa4'/>
<id>urn:sha1:8bd811aa6c407a8a4712d7142fb9909f1b2a5fa4</id>
<content type='text'>
Return NOTIFY_DONE if we don't care this time's notification, return
NOTIFY_OK if we successfully handled this time's notification. That's
the formal way to do it.

Signed-off-by: Zhao, Gang &lt;gamerh2o@gmail.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
</entry>
</feed>
