<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/drivers/net, branch v3.12.14</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/drivers/net?h=v3.12.14</id>
<link rel='self' href='https://git.amat.us/linux/atom/drivers/net?h=v3.12.14'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2014-03-05T16:13:48Z</updated>
<entry>
<title>can: kvaser_usb: check number of channels returned by HW</title>
<updated>2014-03-05T16:13:48Z</updated>
<author>
<name>Olivier Sobrie</name>
<email>olivier@sobrie.be</email>
</author>
<published>2014-02-11T10:01:23Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=a2879c1d14a1bd066b2597d778fb9d89d05bdab0'/>
<id>urn:sha1:a2879c1d14a1bd066b2597d778fb9d89d05bdab0</id>
<content type='text'>
commit 862474f8b46f6c1e600d4934e40ba40646c696ec upstream.

It is needed to check the number of channels returned by the HW because it
cannot be greater than MAX_NET_DEVICES otherwise it will crash.

Signed-off-by: Olivier Sobrie &lt;olivier@sobrie.be&gt;
Signed-off-by: Marc Kleine-Budde &lt;mkl@pengutronix.de&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;

</content>
</entry>
<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>bonding: 802.3ad: make aggregator_identifier bond-private</title>
<updated>2014-02-26T09:22:52Z</updated>
<author>
<name>Jiri Bohac</name>
<email>jiri@boha.cz</email>
</author>
<published>2014-02-14T17:13:50Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=c92210fdc60d7be2ece4fbdbdd82d811355583d8'/>
<id>urn:sha1:c92210fdc60d7be2ece4fbdbdd82d811355583d8</id>
<content type='text'>
[ Upstream commit 163c8ff30dbe473abfbb24a7eac5536c87f3baa9 ]

aggregator_identifier is used to assign unique aggregator identifiers
to aggregators of a bond during device enslaving.

aggregator_identifier is currently a global variable that is zeroed in
bond_3ad_initialize().

This sequence will lead to duplicate aggregator identifiers for eth1 and eth3:

create bond0
change bond0 mode to 802.3ad
enslave eth0 to bond0 		//eth0 gets agg id 1
enslave eth1 to bond0 		//eth1 gets agg id 2
create bond1
change bond1 mode to 802.3ad
enslave eth2 to bond1		//aggregator_identifier is reset to 0
				//eth2 gets agg id 1
enslave eth3 to bond0 		//eth3 gets agg id 2

Fix this by making aggregator_identifier private to the bond.

Signed-off-by: Jiri Bohac &lt;jbohac@suse.cz&gt;
Acked-by: Veaceslav Falico &lt;vfalico@redhat.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
</entry>
<entry>
<title>usbnet: remove generic hard_header_len check</title>
<updated>2014-02-26T09:22:52Z</updated>
<author>
<name>Emil Goode</name>
<email>emilgoode@gmail.com</email>
</author>
<published>2014-02-13T16:50:19Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=e8047a7d1ab917588d8dda3d6a99d570be47460e'/>
<id>urn:sha1:e8047a7d1ab917588d8dda3d6a99d570be47460e</id>
<content type='text'>
[ Upstream commit eb85569fe2d06c2fbf4de7b66c263ca095b397aa ]

This patch removes a generic hard_header_len check from the usbnet
module that is causing dropped packages under certain circumstances
for devices that send rx packets that cross urb boundaries.

One example is the AX88772B which occasionally send rx packets that
cross urb boundaries where the remaining partial packet is sent with
no hardware header. When the buffer with a partial packet is of less
number of octets than the value of hard_header_len the buffer is
discarded by the usbnet module.

With AX88772B this can be reproduced by using ping with a packet
size between 1965-1976.

The bug has been reported here:

https://bugzilla.kernel.org/show_bug.cgi?id=29082

This patch introduces the following changes:
- Removes the generic hard_header_len check in the rx_complete
  function in the usbnet module.
- Introduces a ETH_HLEN check for skbs that are not cloned from
  within a rx_fixup callback.
- For safety a hard_header_len check is added to each rx_fixup
  callback function that could be affected by this change.
  These extra checks could possibly be removed by someone
  who has the hardware to test.
- Removes a call to dev_kfree_skb_any() and instead utilizes the
  dev-&gt;done list to queue skbs for cleanup.

The changes place full responsibility on the rx_fixup callback
functions that clone skbs to only pass valid skbs to the
usbnet_skb_return function.

Signed-off-by: Emil Goode &lt;emilgoode@gmail.com&gt;
Reported-by: Igor Gnatenko &lt;i.gnatenko.brain@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
</entry>
<entry>
<title>net: asix: add missing flag to struct driver_info</title>
<updated>2014-02-26T09:22:52Z</updated>
<author>
<name>Emil Goode</name>
<email>emilgoode@gmail.com</email>
</author>
<published>2014-02-13T18:30:39Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=3089923511e29f755226edaa80fed0d622beb256'/>
<id>urn:sha1:3089923511e29f755226edaa80fed0d622beb256</id>
<content type='text'>
[ Upstream commit d43ff4cd798911736fb39025ec8004284b1b0bc2 ]

The struct driver_info ax88178_info is assigned the function
asix_rx_fixup_common as it's rx_fixup callback. This means that
FLAG_MULTI_PACKET must be set as this function is cloning the
data and calling usbnet_skb_return. Not setting this flag leads
to usbnet_skb_return beeing called a second time from within
the rx_process function in the usbnet module.

Signed-off-by: Emil Goode &lt;emilgoode@gmail.com&gt;
Reported-by: Bjørn Mork &lt;bjorn@mork.no&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
</entry>
<entry>
<title>tg3: Fix deadlock in tg3_change_mtu()</title>
<updated>2014-02-26T09:22:52Z</updated>
<author>
<name>Nithin Sujir</name>
<email>nsujir@broadcom.com</email>
</author>
<published>2014-02-06T22:13:05Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=917cc7f09179ad3e0291ace1b56dd5b9788d8131'/>
<id>urn:sha1:917cc7f09179ad3e0291ace1b56dd5b9788d8131</id>
<content type='text'>
[ Upstream commit c6993dfd7db9b0c6b7ca7503a56fda9236a4710f ]

Quoting David Vrabel -
"5780 cards cannot have jumbo frames and TSO enabled together.  When
jumbo frames are enabled by setting the MTU, the TSO feature must be
cleared.  This is done indirectly by calling netdev_update_features()
which will call tg3_fix_features() to actually clear the flags.

netdev_update_features() will also trigger a new netlink message for the
feature change event which will result in a call to tg3_get_stats64()
which deadlocks on the tg3 lock."

tg3_set_mtu() does not need to be under the tg3 lock since converting
the flags to use set_bit(). Move it out to after tg3_netif_stop().

Reported-by: David Vrabel &lt;david.vrabel@citrix.com&gt;
Tested-by: David Vrabel &lt;david.vrabel@citrix.com&gt;
Signed-off-by: Michael Chan &lt;mchan@broadcom.com&gt;
Signed-off-by: Nithin Nayak Sujir &lt;nsujir@broadcom.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
</entry>
<entry>
<title>net: qmi_wwan: add Netgear Aircard 340U</title>
<updated>2014-02-26T09:22:51Z</updated>
<author>
<name>Bjørn Mork</name>
<email>bjorn@mork.no</email>
</author>
<published>2014-02-04T12:04:33Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=dce84839274f940e533c9ae424cb2fc24a13dd0a'/>
<id>urn:sha1:dce84839274f940e533c9ae424cb2fc24a13dd0a</id>
<content type='text'>
[ Upstream commit fbd3a77d813f211060f86cc7a2f8416caf0e03b1 ]

This device was mentioned in an OpenWRT forum.  Seems to have a "standard"
Sierra Wireless ifnumber to function layout:
 0: qcdm
 2: nmea
 3: modem
 8: qmi
 9: storage

Signed-off-by: Bjørn Mork &lt;bjorn@mork.no&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
</entry>
<entry>
<title>can: add destructor for self generated skbs</title>
<updated>2014-02-26T09:22:51Z</updated>
<author>
<name>Oliver Hartkopp</name>
<email>socketcan@hartkopp.net</email>
</author>
<published>2014-01-30T09:11:28Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=b3097b176d15f0342cd3ca5c25bb03f06123ecd7'/>
<id>urn:sha1:b3097b176d15f0342cd3ca5c25bb03f06123ecd7</id>
<content type='text'>
[ Upstream commit 0ae89beb283a0db5980d1d4781c7d7be2f2810d6 ]

Self generated skbuffs in net/can/bcm.c are setting a skb-&gt;sk reference but
no explicit destructor which is enforced since Linux 3.11 with commit
376c7311bdb6 (net: add a temporary sanity check in skb_orphan()).

This patch adds some helper functions to make sure that a destructor is
properly defined when a sock reference is assigned to a CAN related skb.
To create an unshared skb owned by the original sock a common helper function
has been introduced to replace open coded functions to create CAN echo skbs.

Signed-off-by: Oliver Hartkopp &lt;socketcan@hartkopp.net&gt;
Tested-by: Andre Naujoks &lt;nautsch2@gmail.com&gt;
Reviewed-by: Eric Dumazet &lt;edumazet@google.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
</entry>
</feed>
