<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/net/wireless/sme.c, branch v3.15</title>
<subtitle>Clone of https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git</subtitle>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/'/>
<entry>
<title>cfg80211: free sme on connection failures</title>
<updated>2014-05-05T12:59:00+00:00</updated>
<author>
<name>Eliad Peller</name>
<email>eliad@wizery.com</email>
</author>
<published>2014-04-30T12:58:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=c1fbb258846dfc425507a093922d2d001e54c3ea'/>
<id>c1fbb258846dfc425507a093922d2d001e54c3ea</id>
<content type='text'>
cfg80211 is notified about connection failures by
__cfg80211_connect_result() call. However, this
function currently does not free cfg80211 sme.

This results in hanging connection attempts in some cases

e.g. when mac80211 authentication attempt is denied,
we have this function call:
ieee80211_rx_mgmt_auth() -&gt; cfg80211_rx_mlme_mgmt() -&gt;
cfg80211_process_auth() -&gt; cfg80211_sme_rx_auth() -&gt;
__cfg80211_connect_result()

but cfg80211_sme_free() is never get called.

Fixes: ceca7b712 ("cfg80211: separate internal SME implementation")
Cc: stable@vger.kernel.org (3.10+)
Signed-off-by: Eliad Peller &lt;eliadx.peller@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>
cfg80211 is notified about connection failures by
__cfg80211_connect_result() call. However, this
function currently does not free cfg80211 sme.

This results in hanging connection attempts in some cases

e.g. when mac80211 authentication attempt is denied,
we have this function call:
ieee80211_rx_mgmt_auth() -&gt; cfg80211_rx_mlme_mgmt() -&gt;
cfg80211_process_auth() -&gt; cfg80211_sme_rx_auth() -&gt;
__cfg80211_connect_result()

but cfg80211_sme_free() is never get called.

Fixes: ceca7b712 ("cfg80211: separate internal SME implementation")
Cc: stable@vger.kernel.org (3.10+)
Signed-off-by: Eliad Peller &lt;eliadx.peller@intel.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>cfg80211: remove macro ASSERT_RDEV_LOCK(rdev)</title>
<updated>2014-03-19T20:29:58+00:00</updated>
<author>
<name>Zhao, Gang</name>
<email>gamerh2o@gmail.com</email>
</author>
<published>2014-03-19T09:04:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=73fb08e24ae840bc518facc2c605dd6bb3751fec'/>
<id>73fb08e24ae840bc518facc2c605dd6bb3751fec</id>
<content type='text'>
Macro ASSERT_RDEV_LOCK(rdev) is equal to ASSERT_RTNL(), so replace it
with ASSERT_RTNL() and remove it.

Signed-off-by: Zhao, Gang &lt;gamerh2o@gmail.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>
Macro ASSERT_RDEV_LOCK(rdev) is equal to ASSERT_RTNL(), so replace it
with ASSERT_RTNL() and remove it.

Signed-off-by: Zhao, Gang &lt;gamerh2o@gmail.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>cfg80211: send scan results from work queue</title>
<updated>2014-02-06T08:55:19+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes.berg@intel.com</email>
</author>
<published>2014-01-22T09:14:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=f9d15d162b3acf28f85b3ac05c4883e5ed588d28'/>
<id>f9d15d162b3acf28f85b3ac05c4883e5ed588d28</id>
<content type='text'>
Due to the previous commit, when a scan finishes, it is in theory
possible to hit the following sequence:
 1. interface starts being removed
 2. scan is cancelled by driver and cfg80211 is notified
 3. scan done work is scheduled
 4. interface is removed completely, rdev-&gt;scan_req is freed,
    event sent to userspace but scan done work remains pending
 5. new scan is requested on another virtual interface
 6. scan done work runs, freeing the still-running scan

To fix this situation, hang on to the scan done message and block
new scans while that is the case, and only send the message from
the work function, regardless of whether the scan_req is already
freed from interface removal. This makes step 5 above impossible
and changes step 6 to be
 5. scan done work runs, sending the scan done message

As this can't work for wext, so we send the message immediately,
but this shouldn't be an issue since we still return -EBUSY.

Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Due to the previous commit, when a scan finishes, it is in theory
possible to hit the following sequence:
 1. interface starts being removed
 2. scan is cancelled by driver and cfg80211 is notified
 3. scan done work is scheduled
 4. interface is removed completely, rdev-&gt;scan_req is freed,
    event sent to userspace but scan done work remains pending
 5. new scan is requested on another virtual interface
 6. scan done work runs, freeing the still-running scan

To fix this situation, hang on to the scan done message and block
new scans while that is the case, and only send the message from
the work function, regardless of whether the scan_req is already
freed from interface removal. This makes step 5 above impossible
and changes step 6 to be
 5. scan done work runs, sending the scan done message

As this can't work for wext, so we send the message immediately,
but this shouldn't be an issue since we still return -EBUSY.

Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'for-john' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next</title>
<updated>2014-01-13T19:40:59+00:00</updated>
<author>
<name>John W. Linville</name>
<email>linville@tuxdriver.com</email>
</author>
<published>2014-01-13T19:40:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=f13352519ee8c4b22b87fc1a47743d1f53ea193e'/>
<id>f13352519ee8c4b22b87fc1a47743d1f53ea193e</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>cfg80211: Add a function to get the number of supported channels</title>
<updated>2014-01-09T13:24:24+00:00</updated>
<author>
<name>Ilan Peer</name>
<email>ilan.peer@intel.com</email>
</author>
<published>2014-01-09T09:37:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=bdfbec2d2d240e9c528caae9c743801629b60166'/>
<id>bdfbec2d2d240e9c528caae9c743801629b60166</id>
<content type='text'>
Add a utility function to get the number of channels supported by
the device, and update the places in the code that need this data.

Signed-off-by: Ilan Peer &lt;ilan.peer@intel.com&gt;
[replace another occurrence in libertas, fix kernel-doc, fix bugs]
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 a utility function to get the number of channels supported by
the device, and update the places in the code that need this data.

Signed-off-by: Ilan Peer &lt;ilan.peer@intel.com&gt;
[replace another occurrence in libertas, fix kernel-doc, fix bugs]
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-01-06T19:08:41+00:00</updated>
<author>
<name>John W. Linville</name>
<email>linville@tuxdriver.com</email>
</author>
<published>2014-01-06T19:08:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=9d1cd503c7618d2eb00746fa1ebb06a723e108b4'/>
<id>9d1cd503c7618d2eb00746fa1ebb06a723e108b4</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>cfg80211: Add support for QoS mapping</title>
<updated>2013-12-19T15:29:22+00:00</updated>
<author>
<name>Kyeyoon Park</name>
<email>kyeyoonp@qca.qualcomm.com</email>
</author>
<published>2013-12-17T07:01:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=fa9ffc745610f31c6bc136d5a6a1782e00870e72'/>
<id>fa9ffc745610f31c6bc136d5a6a1782e00870e72</id>
<content type='text'>
This allows QoS mapping from external networks to be implemented as
defined in IEEE Std 802.11-2012, 10.24.9. APs can use this to advertise
DSCP ranges and exceptions for mapping frames to a specific UP over
Wi-Fi.

The payload of the QoS Map Set element (IEEE Std 802.11-2012, 8.4.2.97)
is sent to the driver through the new NL80211_ATTR_QOS_MAP attribute to
configure the local behavior either on the AP (based on local
configuration) or on a station (based on information received from the
AP).

Signed-off-by: Kyeyoon Park &lt;kyeyoonp@qca.qualcomm.com&gt;
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 allows QoS mapping from external networks to be implemented as
defined in IEEE Std 802.11-2012, 10.24.9. APs can use this to advertise
DSCP ranges and exceptions for mapping frames to a specific UP over
Wi-Fi.

The payload of the QoS Map Set element (IEEE Std 802.11-2012, 8.4.2.97)
is sent to the driver through the new NL80211_ATTR_QOS_MAP attribute to
configure the local behavior either on the AP (based on local
configuration) or on a station (based on information received from the
AP).

Signed-off-by: Kyeyoon Park &lt;kyeyoonp@qca.qualcomm.com&gt;
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>cfg80211: fix WARN_ON for re-association to the expired BSS</title>
<updated>2013-12-05T14:00:29+00:00</updated>
<author>
<name>Ujjal Roy</name>
<email>royujjal@gmail.com</email>
</author>
<published>2013-12-04T11:57:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=4c4d684a55fc01dac6bee696efc56b96d0e6c03a'/>
<id>4c4d684a55fc01dac6bee696efc56b96d0e6c03a</id>
<content type='text'>
cfg80211 allows re-association in managed mode and if a user
wants to re-associate to the same AP network after the time
period of IEEE80211_SCAN_RESULT_EXPIRE, cfg80211 warns with
the following message on receiving the connect result event.

------------[ cut here ]------------
WARNING: CPU: 0 PID: 13984 at net/wireless/sme.c:658
         __cfg80211_connect_result+0x3a6/0x3e0 [cfg80211]()
Call Trace:
 [&lt;ffffffff81747a41&gt;] dump_stack+0x46/0x58
 [&lt;ffffffff81045847&gt;] warn_slowpath_common+0x87/0xb0
 [&lt;ffffffff81045885&gt;] warn_slowpath_null+0x15/0x20
 [&lt;ffffffffa05345f6&gt;] __cfg80211_connect_result+0x3a6/0x3e0 [cfg80211]
 [&lt;ffffffff8107168b&gt;] ? update_rq_clock+0x2b/0x50
 [&lt;ffffffff81078c01&gt;] ? update_curr+0x1/0x160
 [&lt;ffffffffa05133d2&gt;] cfg80211_process_wdev_events+0xb2/0x1c0 [cfg80211]
 [&lt;ffffffff81079303&gt;] ? pick_next_task_fair+0x63/0x170
 [&lt;ffffffffa0513518&gt;] cfg80211_process_rdev_events+0x38/0x90 [cfg80211]
 [&lt;ffffffffa050f03d&gt;] cfg80211_event_work+0x1d/0x30 [cfg80211]
 [&lt;ffffffff8105f21f&gt;] process_one_work+0x17f/0x420
 [&lt;ffffffff8105f90a&gt;] worker_thread+0x11a/0x370
 [&lt;ffffffff8105f7f0&gt;] ? rescuer_thread+0x2f0/0x2f0
 [&lt;ffffffff8106638b&gt;] kthread+0xbb/0xc0
 [&lt;ffffffff810662d0&gt;] ? kthread_create_on_node+0x120/0x120
 [&lt;ffffffff817574bc&gt;] ret_from_fork+0x7c/0xb0
 [&lt;ffffffff810662d0&gt;] ? kthread_create_on_node+0x120/0x120
---[ end trace 61f3bddc9c4981f7 ]---

The reason is that, in connect result event cfg80211 unholds
the BSS to which the device is associated (and was held so
far). So, for the event with status successful, when cfg80211
wants to get that BSS from the device's BSS list it gets a
NULL BSS because the BSS has been expired and unheld already.

Fix it by reshuffling the code.

Signed-off-by: Ujjal Roy &lt;royujjal@gmail.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>
cfg80211 allows re-association in managed mode and if a user
wants to re-associate to the same AP network after the time
period of IEEE80211_SCAN_RESULT_EXPIRE, cfg80211 warns with
the following message on receiving the connect result event.

------------[ cut here ]------------
WARNING: CPU: 0 PID: 13984 at net/wireless/sme.c:658
         __cfg80211_connect_result+0x3a6/0x3e0 [cfg80211]()
Call Trace:
 [&lt;ffffffff81747a41&gt;] dump_stack+0x46/0x58
 [&lt;ffffffff81045847&gt;] warn_slowpath_common+0x87/0xb0
 [&lt;ffffffff81045885&gt;] warn_slowpath_null+0x15/0x20
 [&lt;ffffffffa05345f6&gt;] __cfg80211_connect_result+0x3a6/0x3e0 [cfg80211]
 [&lt;ffffffff8107168b&gt;] ? update_rq_clock+0x2b/0x50
 [&lt;ffffffff81078c01&gt;] ? update_curr+0x1/0x160
 [&lt;ffffffffa05133d2&gt;] cfg80211_process_wdev_events+0xb2/0x1c0 [cfg80211]
 [&lt;ffffffff81079303&gt;] ? pick_next_task_fair+0x63/0x170
 [&lt;ffffffffa0513518&gt;] cfg80211_process_rdev_events+0x38/0x90 [cfg80211]
 [&lt;ffffffffa050f03d&gt;] cfg80211_event_work+0x1d/0x30 [cfg80211]
 [&lt;ffffffff8105f21f&gt;] process_one_work+0x17f/0x420
 [&lt;ffffffff8105f90a&gt;] worker_thread+0x11a/0x370
 [&lt;ffffffff8105f7f0&gt;] ? rescuer_thread+0x2f0/0x2f0
 [&lt;ffffffff8106638b&gt;] kthread+0xbb/0xc0
 [&lt;ffffffff810662d0&gt;] ? kthread_create_on_node+0x120/0x120
 [&lt;ffffffff817574bc&gt;] ret_from_fork+0x7c/0xb0
 [&lt;ffffffff810662d0&gt;] ? kthread_create_on_node+0x120/0x120
---[ end trace 61f3bddc9c4981f7 ]---

The reason is that, in connect result event cfg80211 unholds
the BSS to which the device is associated (and was held so
far). So, for the event with status successful, when cfg80211
wants to get that BSS from the device's BSS list it gets a
NULL BSS because the BSS has been expired and unheld already.

Fix it by reshuffling the code.

Signed-off-by: Ujjal Roy &lt;royujjal@gmail.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>cfg80211: rename regulatory_hint_11d() to regulatory_hint_country_ie()</title>
<updated>2013-10-09T07:37:57+00:00</updated>
<author>
<name>Luis R. Rodriguez</name>
<email>mcgrof@do-not-panic.com</email>
</author>
<published>2013-10-05T01:07:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=789fd03331aa1ec45cb58168e2d82525c97c7351'/>
<id>789fd03331aa1ec45cb58168e2d82525c97c7351</id>
<content type='text'>
It is incorrect to refer to this as 11d as 802.11d was just a
proposed amendment, 802.11d was merged to the standard so
use proper terminology.

Signed-off-by: Luis R. Rodriguez &lt;mcgrof@do-not-panic.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>
It is incorrect to refer to this as 11d as 802.11d was just a
proposed amendment, 802.11d was merged to the standard so
use proper terminology.

Signed-off-by: Luis R. Rodriguez &lt;mcgrof@do-not-panic.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>cfg80211: don't request disconnect if not connected</title>
<updated>2013-08-14T12:00:19+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes.berg@intel.com</email>
</author>
<published>2013-08-13T07:23:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=dee8a9732e713480075adbbca8eb220c5b8d1216'/>
<id>dee8a9732e713480075adbbca8eb220c5b8d1216</id>
<content type='text'>
Neil Brown reports that with libertas, my recent cfg80211
SME changes in commit ceca7b7121795ef81bd598a240d53a92566
("cfg80211: separate internal SME implementation") broke
libertas suspend because it we now asked it to disconnect
while already disconnected.

The problematic change is in cfg80211_disconnect() as it
previously checked the SME state and now calls the driver
disconnect operation unconditionally.

Fix this by checking if there's a current_bss indicating
a connection, and do nothing if not.

Reported-and-tested-by: Neil Brown &lt;neilb@suse.de&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>
Neil Brown reports that with libertas, my recent cfg80211
SME changes in commit ceca7b7121795ef81bd598a240d53a92566
("cfg80211: separate internal SME implementation") broke
libertas suspend because it we now asked it to disconnect
while already disconnected.

The problematic change is in cfg80211_disconnect() as it
previously checked the SME state and now calls the driver
disconnect operation unconditionally.

Fix this by checking if there's a current_bss indicating
a connection, and do nothing if not.

Reported-and-tested-by: Neil Brown &lt;neilb@suse.de&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
