<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/drivers/net/wireless, branch v3.12.14</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/drivers/net/wireless?h=v3.12.14</id>
<link rel='self' href='https://git.amat.us/linux/atom/drivers/net/wireless?h=v3.12.14'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2014-03-05T16:13:42Z</updated>
<entry>
<title>rtlwifi: rtl8192ce: Fix too long disable of IRQs</title>
<updated>2014-03-05T16:13:42Z</updated>
<author>
<name>Olivier Langlois</name>
<email>olivier@trillion01.com</email>
</author>
<published>2014-02-01T06:11:09Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=3ca1ca4dd11f442e865a59487cf806c12d06907d'/>
<id>urn:sha1:3ca1ca4dd11f442e865a59487cf806c12d06907d</id>
<content type='text'>
commit f78bccd79ba3cd9d9664981b501d57bdb81ab8a4 upstream.

rtl8192ce is disabling for too long the local interrupts during hw initiatialisation when performing scans

The observable symptoms in dmesg can be:

- underruns from ALSA playback
- clock freezes (tstamps do not change for several dmesg entries until irqs are finaly reenabled):

[  250.817669] rtlwifi:rtl_op_config():&lt;0-0-0&gt; 0x100
[  250.817685] rtl8192ce:_rtl92ce_phy_set_rf_power_state():&lt;0-1-0&gt; IPS Set eRf nic enable
[  250.817732] rtl8192ce:_rtl92ce_init_mac():&lt;0-1-0&gt; reg0xec:18051d59:11
[  250.817796] rtl8192ce:_rtl92ce_init_mac():&lt;0-1-0&gt; reg0xec:18051d59:11
[  250.817910] rtl8192ce:_rtl92ce_init_mac():&lt;0-1-0&gt; reg0xec:18051d59:11
[  250.818024] rtl8192ce:_rtl92ce_init_mac():&lt;0-1-0&gt; reg0xec:18051d59:11
[  250.818139] rtl8192ce:_rtl92ce_init_mac():&lt;0-1-0&gt; reg0xec:18051d59:11
[  250.818253] rtl8192ce:_rtl92ce_init_mac():&lt;0-1-0&gt; reg0xec:18051d59:11
[  250.818367] rtl8192ce:_rtl92ce_init_mac():&lt;0-1-0&gt; reg0xec:18051d59:11
[  250.818472] rtl8192ce:_rtl92ce_init_mac():&lt;0-1-0&gt; reg0xec:18051d59:11
[  250.818472] rtl8192ce:_rtl92ce_init_mac():&lt;0-1-0&gt; reg0xec:18051d59:11
[  250.818472] rtl8192ce:_rtl92ce_init_mac():&lt;0-1-0&gt; reg0xec:18051d59:11
[  250.818472] rtl8192ce:_rtl92ce_init_mac():&lt;0-1-0&gt; reg0xec:18051d59:11
[  250.818472] rtl8192ce:_rtl92ce_init_mac():&lt;0-1-0&gt; reg0xec:98053f15:10
[  250.818472] rtl8192ce:rtl92ce_sw_led_on():&lt;0-1-0&gt; LedAddr:4E ledpin=1
[  250.818472] rtl8192c_common:rtl92c_download_fw():&lt;0-1-0&gt; Firmware Version(49), Signature(0x88c1),Size(32)
[  250.818472] rtl8192ce:rtl92ce_enable_hw_security_config():&lt;0-1-0&gt; PairwiseEncAlgorithm = 0 GroupEncAlgorithm = 0
[  250.818472] rtl8192ce:rtl92ce_enable_hw_security_config():&lt;0-1-0&gt; The SECR-value cc
[  250.818472] rtl8192c_common:rtl92c_dm_check_txpower_tracking_thermal_meter():&lt;0-1-0&gt; Schedule TxPowerTracking direct call!!
[  250.818472] rtl8192c_common:rtl92c_dm_txpower_tracking_callback_thermalmeter():&lt;0-1-0&gt; rtl92c_dm_txpower_tracking_callback_thermalmeter
[  250.818472] rtl8192c_common:rtl92c_dm_txpower_tracking_callback_thermalmeter():&lt;0-1-0&gt; Readback Thermal Meter = 0xe pre thermal meter 0xf eeprom_thermalmeter 0xf
[  250.818472] rtl8192c_common:rtl92c_dm_txpower_tracking_callback_thermalmeter():&lt;0-1-0&gt; Initial pathA ele_d reg0xc80 = 0x40000000, ofdm_index=0xc
[  250.818472] rtl8192c_common:rtl92c_dm_txpower_tracking_callback_thermalmeter():&lt;0-1-0&gt; Initial reg0xa24 = 0x90e1317, cck_index=0xc, ch14 0
[  250.818472] rtl8192c_common:rtl92c_dm_txpower_tracking_callback_thermalmeter():&lt;0-1-0&gt; Readback Thermal Meter = 0xe pre thermal meter 0xf eeprom_thermalmeter 0xf delta 0x1 delta_lck 0x0 delta_iqk 0x0
[  250.818472] rtl8192c_common:rtl92c_dm_txpower_tracking_callback_thermalmeter():&lt;0-1-0&gt; &lt;===
[  250.818472] rtl8192c_common:rtl92c_dm_initialize_txpower_tracking_thermalmeter():&lt;0-1-0&gt; pMgntInfo-&gt;txpower_tracking = 1
[  250.818472] rtl8192ce:rtl92ce_led_control():&lt;0-1-0&gt; ledaction 3
[  250.818472] rtl8192ce:rtl92ce_sw_led_on():&lt;0-1-0&gt; LedAddr:4E ledpin=1
[  250.818472] rtlwifi:rtl_ips_nic_on():&lt;0-1-0&gt; before spin_unlock_irqrestore
[  251.154656] PCM: Lost interrupts? [Q]-0 (stream=0, delta=15903, new_hw_ptr=293408, old_hw_ptr=277505)

The exact code flow that causes that is:

1. wpa_supplicant send a start_scan request to the nl80211 driver
2. mac80211 module call rtl_op_config with IEEE80211_CONF_CHANGE_IDLE
3.   rtl_ips_nic_on is called which disable local irqs
4.     rtl92c_phy_set_rf_power_state() is called
5.       rtl_ps_enable_nic() is called and hw_init()is executed and then the interrupts on the device are enabled

A good solution could be to refactor the code to avoid calling rtl92ce_hw_init() with the irqs disabled
but a quick and dirty solution that has proven to work is
to reenable the irqs during the function rtl92ce_hw_init().

I think that it is safe doing so since the device interrupt will only be enabled after the init function succeed.

Signed-off-by: Olivier Langlois &lt;olivier@trillion01.com&gt;
Acked-by: Larry Finger &lt;Larry.Finger@lwfinger.net&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;

</content>
</entry>
<entry>
<title>rtlwifi: Fix incorrect return from rtl_ps_enable_nic()</title>
<updated>2014-03-05T16:13:42Z</updated>
<author>
<name>Olivier Langlois</name>
<email>olivier@trillion01.com</email>
</author>
<published>2014-02-01T06:11:10Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=e7283f54dede376dbcdfc801f82e8659cbefa41d'/>
<id>urn:sha1:e7283f54dede376dbcdfc801f82e8659cbefa41d</id>
<content type='text'>
commit 2e8c5e56b307271c2dab6f8bfd1d8a3822ca2390 upstream.

rtl_ps_enable_nic() is called from loops that will loop until this function returns true or a
maximum number of retries is performed.

hw_init() returns non-zero on error. In that situation return false to
restore the original design intent to retry hw init when it fails.

Signed-off-by: Olivier Langlois &lt;olivier@trillion01.com&gt;
Acked-by: Larry Finger &lt;Larry.Finger@lwfinger.net&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;

</content>
</entry>
<entry>
<title>rtl8187: fix regression on MIPS without coherent DMA</title>
<updated>2014-03-05T16:13:41Z</updated>
<author>
<name>Stanislaw Gruszka</name>
<email>stf_xl@wp.pl</email>
</author>
<published>2014-02-10T21:38:28Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=906c44b881c18341e3afe6eb6d49a5767974ad6e'/>
<id>urn:sha1:906c44b881c18341e3afe6eb6d49a5767974ad6e</id>
<content type='text'>
commit b6213e413a4e0c66548153516b074df14f9d08e0 upstream.

This patch fixes regression caused by commit a16dad77634 "MIPS: Fix
potencial corruption". That commit fixes one corruption scenario in
cost of adding another one, which actually start to cause crashes
on Yeeloong laptop when rtl8187 driver is used.

For correct DMA read operation on machines without DMA coherence, kernel
have to invalidate cache, such it will refill later with new data that
device wrote to memory, when that data is needed to process. We can only
invalidate full cache line. Hence when cache line includes both dma
buffer and some other data (written in cache, but not yet in main
memory), the other data can not hit memory due to invalidation. That
happen on rtl8187 where struct rtl8187_priv fields are located just
before and after small buffers that are passed to USB layer and DMA
is performed on them.

To fix the problem we align buffers and reserve space after them to make
them match cache line.

This patch does not resolve all possible MIPS problems entirely, for
that we have to assure that we always map cache aligned buffers for DMA,
what can be complex or even not possible. But patch fixes visible and
reproducible regression and seems other possible corruptions do not
happen in practice, since Yeeloong laptop works stable without rtl8187
driver.

Bug report:
https://bugzilla.kernel.org/show_bug.cgi?id=54391

Reported-by: Petr Pisar &lt;petr.pisar@atlas.cz&gt;
Bisected-by: Tom Li &lt;biergaizi2009@gmail.com&gt;
Reported-and-tested-by: Tom Li &lt;biergaizi2009@gmail.com&gt;
Signed-off-by: Stanislaw Gruszka &lt;stf_xl@wp.pl&gt;
Acked-by: Larry Finger &lt;Larry.Finger@lwfinger.next&gt;
Acked-by: Hin-Tak Leung &lt;htl10@users.sourceforge.net&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;

</content>
</entry>
<entry>
<title>iwlwifi: mvm: BT Coex - disable BT when TXing probe request in scan</title>
<updated>2014-02-22T21:32:25Z</updated>
<author>
<name>Emmanuel Grumbach</name>
<email>emmanuel.grumbach@intel.com</email>
</author>
<published>2014-01-28T10:27:31Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=eb79343f14a21e9183fb555827b43267a2be0da5'/>
<id>urn:sha1:eb79343f14a21e9183fb555827b43267a2be0da5</id>
<content type='text'>
commit 8e2a866ef214af4e104ec8d593e3269d8fe66d19 upstream.

Not doing so will let BT kill our probe requests leading to
failures in scan.

Reviewed-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: Emmanuel Grumbach &lt;emmanuel.grumbach@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>iwlwifi: mvm: print the version of the firmware when it asserts</title>
<updated>2014-02-22T21:32:25Z</updated>
<author>
<name>Emmanuel Grumbach</name>
<email>emmanuel.grumbach@intel.com</email>
</author>
<published>2014-01-23T09:55:16Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=0e964f37636d720cd72c256bf3994d68a5709bb0'/>
<id>urn:sha1:0e964f37636d720cd72c256bf3994d68a5709bb0</id>
<content type='text'>
commit b900a87b2eb90c0b9586496c82a323a1b8832d73 upstream.

This can be useful to be able to spot the firmware version
from the error reports without needing to fetch it from
another place.

Signed-off-by: Emmanuel Grumbach &lt;emmanuel.grumbach@intel.com&gt;
Reviewed-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: Emmanuel Grumbach &lt;emmanuel.grumbach@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>iwlwifi: mvm: don't allow A band if SKU forbids it</title>
<updated>2014-02-22T21:32:25Z</updated>
<author>
<name>Emmanuel Grumbach</name>
<email>emmanuel.grumbach@intel.com</email>
</author>
<published>2013-12-05T20:42:55Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=363f04a893cccaa2d2c26c7ab1d8c197c428e344'/>
<id>urn:sha1:363f04a893cccaa2d2c26c7ab1d8c197c428e344</id>
<content type='text'>
commit c512865446e6dd5b6e91e81187e75b734ad7cfc7 upstream.

The driver wasn't reading the NVM properly. While this
didn't lead to any issue until now, it seems that there
is an old version of the NVM in the wild.
In this version, the A band channels appear to be valid
but the SKU capabilities (another field of the NVM) says
that A band isn't supported at all.
With this specific version of the NVM, the driver would
think that A band is supported while the HW / firmware
don't. This leads to asserts.

Reviewed-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: Emmanuel Grumbach &lt;emmanuel.grumbach@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>ar5523: fix usb id for Gigaset.</title>
<updated>2014-02-22T21:32:25Z</updated>
<author>
<name>Oleksij Rempel</name>
<email>linux@rempel-privat.de</email>
</author>
<published>2014-02-02T09:55:18Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=b0fbb64d2152697878b4a84b4a7c155c2c22a7d7'/>
<id>urn:sha1:b0fbb64d2152697878b4a84b4a7c155c2c22a7d7</id>
<content type='text'>
commit 4fcfc7443d072582b5047b8b391d711590e5645c upstream.

Raw id and FW id should be switched.

Tested-by: Oleksij Rempel &lt;linux@rempel-privat.de&gt;
Signed-off-by: Oleksij Rempel &lt;linux@rempel-privat.de&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>ath9k: Do not support PowerSave by default</title>
<updated>2014-02-22T21:32:25Z</updated>
<author>
<name>Sujith Manoharan</name>
<email>c_manoha@qca.qualcomm.com</email>
</author>
<published>2014-02-04T03:07:53Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=c7a4978f970e78a009b4aae79317fd922f4e0122'/>
<id>urn:sha1:c7a4978f970e78a009b4aae79317fd922f4e0122</id>
<content type='text'>
commit 8298383c2cd5a6d0639f1bb1781fba181bd20154 upstream.

Even though we make sure PowerSave is not enabled by default
by disabling the flag, WIPHY_FLAG_PS_ON_BY_DEFAULT on init,
PS could be enabled by userspace based on various factors
like battery usage etc. Since PS in ath9k is just broken
and has been untested for years, remove support for it, but
allow a user to explicitly enable it using a module parameter.

Signed-off-by: Sujith Manoharan &lt;c_manoha@qca.qualcomm.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>ath9k_htc: Do not support PowerSave by default</title>
<updated>2014-02-22T21:32:25Z</updated>
<author>
<name>Oleksij Rempel</name>
<email>linux@rempel-privat.de</email>
</author>
<published>2014-01-30T08:14:53Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=f419ef66970eb9d45094deb69385c2bbb88f52f1'/>
<id>urn:sha1:f419ef66970eb9d45094deb69385c2bbb88f52f1</id>
<content type='text'>
commit 6bca610d97b6139a1d7598b8009da9d339daa50f upstream.

It is a copy/paste of patch provided by Sujith for ath9k.

"Even though we make sure PowerSave is not enabled by default
by disabling the flag, WIPHY_FLAG_PS_ON_BY_DEFAULT on init,
PS could be enabled by userspace based on various factors
like battery usage etc. Since PS in ath9k is just broken
and has been untested for years, remove support for it, but
allow a user to explicitly enable it using a module parameter."

Signed-off-by: Oleksij Rempel &lt;linux@rempel-privat.de&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>ath9k_htc: make -&gt;sta_rc_update atomic for most calls</title>
<updated>2014-02-22T21:32:25Z</updated>
<author>
<name>Stanislaw Gruszka</name>
<email>sgruszka@redhat.com</email>
</author>
<published>2014-01-28T08:14:48Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=8c0f2ee6b5d414e019638e1f5ea94908dcae2742'/>
<id>urn:sha1:8c0f2ee6b5d414e019638e1f5ea94908dcae2742</id>
<content type='text'>
commit 2fa4cb905605c863bf570027233af7afd8149ae4 upstream.

sta_rc_update() callback must be atomic, hence we can not take mutexes
or do other operations, which can sleep in ath9k_htc_sta_rc_update().

I think we can just return from ath9k_htc_sta_rc_update(), if it is
called without IEEE80211_RC_SUPP_RATES_CHANGED bit. That will help
with scheduling while atomic bug for most cases (except mesh and IBSS
modes).

For mesh and IBSS I do not see other solution like creating additional
workqueue, because sending firmware command require us to sleep, but
this can be done in additional patch.

Patch partially fixes bug:
https://bugzilla.redhat.com/show_bug.cgi?id=990955

Signed-off-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
</feed>
