<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/drivers/net/wireless/rt2x00, branch v3.4.4</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>wireless: rt2x00: rt2800usb more devices were identified</title>
<updated>2012-06-17T18:21:27+00:00</updated>
<author>
<name>Xose Vazquez Perez</name>
<email>xose.vazquez@gmail.com</email>
</author>
<published>2012-04-17T14:28:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=1a4ea49398c1e32475a65a34cd4ff5de64449bca'/>
<id>1a4ea49398c1e32475a65a34cd4ff5de64449bca</id>
<content type='text'>
commit e828b9fb4f6c3513950759d5fb902db5bd054048 upstream.

found in 2012_03_22_RT5572_Linux_STA_v2.6.0.0_DPO

RT3070:
(0x2019,0x5201)  Planex Communications, Inc. RT8070
(0x7392,0x4085)  2L Central Europe BV 8070
7392 is Edimax

RT35xx:
(0x1690,0x0761) Askey
was Fujitsu Stylistic 550, but 1690 is Askey

Signed-off-by: Xose Vazquez Perez &lt;xose.vazquez@gmail.com&gt;
Acked-by: Gertjan van Wingerde &lt;gwingerde@gmail.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>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit e828b9fb4f6c3513950759d5fb902db5bd054048 upstream.

found in 2012_03_22_RT5572_Linux_STA_v2.6.0.0_DPO

RT3070:
(0x2019,0x5201)  Planex Communications, Inc. RT8070
(0x7392,0x4085)  2L Central Europe BV 8070
7392 is Edimax

RT35xx:
(0x1690,0x0761) Askey
was Fujitsu Stylistic 550, but 1690 is Askey

Signed-off-by: Xose Vazquez Perez &lt;xose.vazquez@gmail.com&gt;
Acked-by: Gertjan van Wingerde &lt;gwingerde@gmail.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>wireless: rt2x00: rt2800usb add more devices ids</title>
<updated>2012-06-17T18:21:27+00:00</updated>
<author>
<name>Xose Vazquez Perez</name>
<email>xose.vazquez@gmail.com</email>
</author>
<published>2012-04-16T23:50:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=fb8e114490823c581899112e82ee710ccd14fa11'/>
<id>fb8e114490823c581899112e82ee710ccd14fa11</id>
<content type='text'>
commit 63b376411173c343bbcb450f95539da91f079e0c upstream.

They were taken from ralink drivers:
2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO
2012_03_22_RT5572_Linux_STA_v2.6.0.0_DPO

0x1eda,0x2210 RT3070 Airties

0x083a,0xb511 RT3370 Panasonic
0x0471,0x20dd RT3370 Philips

0x1690,0x0764 RT35xx Askey
0x0df6,0x0065 RT35xx Sitecom
0x0df6,0x0066 RT35xx Sitecom
0x0df6,0x0068 RT35xx Sitecom

0x2001,0x3c1c RT5370 DLink
0x2001,0x3c1d RT5370 DLink

2001 is D-Link not Alpha

Signed-off-by: Xose Vazquez Perez &lt;xose.vazquez@gmail.com&gt;
Acked-by: Gertjan van Wingerde &lt;gwingerde@gmail.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>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 63b376411173c343bbcb450f95539da91f079e0c upstream.

They were taken from ralink drivers:
2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO
2012_03_22_RT5572_Linux_STA_v2.6.0.0_DPO

0x1eda,0x2210 RT3070 Airties

0x083a,0xb511 RT3370 Panasonic
0x0471,0x20dd RT3370 Philips

0x1690,0x0764 RT35xx Askey
0x0df6,0x0065 RT35xx Sitecom
0x0df6,0x0066 RT35xx Sitecom
0x0df6,0x0068 RT35xx Sitecom

0x2001,0x3c1c RT5370 DLink
0x2001,0x3c1d RT5370 DLink

2001 is D-Link not Alpha

Signed-off-by: Xose Vazquez Perez &lt;xose.vazquez@gmail.com&gt;
Acked-by: Gertjan van Wingerde &lt;gwingerde@gmail.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>rt2x00: use atomic variable for seqno</title>
<updated>2012-06-17T18:21:27+00:00</updated>
<author>
<name>Stanislaw Gruszka</name>
<email>sgruszka@redhat.com</email>
</author>
<published>2012-06-01T09:29:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=5ab37d70078783aa8dd6dbec0e614c83ab694cb8'/>
<id>5ab37d70078783aa8dd6dbec0e614c83ab694cb8</id>
<content type='text'>
commit e5851dac2c95af7159716832300b9f50c62c648e upstream.

Remove spinlock as atomic_t can be used instead. Note we use only 16
lower bits, upper bits are changed but we impilcilty cast to u16.

This fix possible deadlock on IBSS mode reproted by lockdep:

=================================
[ INFO: inconsistent lock state ]
3.4.0-wl+ #4 Not tainted
---------------------------------
inconsistent {IN-SOFTIRQ-W} -&gt; {SOFTIRQ-ON-W} usage.
kworker/u:2/30374 [HC0[0]:SC0[0]:HE1:SE1] takes:
 (&amp;(&amp;intf-&gt;seqlock)-&gt;rlock){+.?...}, at: [&lt;f9979a20&gt;] rt2x00queue_create_tx_descriptor+0x380/0x490 [rt2x00lib]
{IN-SOFTIRQ-W} state was registered at:
  [&lt;c04978ab&gt;] __lock_acquire+0x47b/0x1050
  [&lt;c0498504&gt;] lock_acquire+0x84/0xf0
  [&lt;c0835733&gt;] _raw_spin_lock+0x33/0x40
  [&lt;f9979a20&gt;] rt2x00queue_create_tx_descriptor+0x380/0x490 [rt2x00lib]
  [&lt;f9979f2a&gt;] rt2x00queue_write_tx_frame+0x1a/0x300 [rt2x00lib]
  [&lt;f997834f&gt;] rt2x00mac_tx+0x7f/0x380 [rt2x00lib]
  [&lt;f98fe363&gt;] __ieee80211_tx+0x1b3/0x300 [mac80211]
  [&lt;f98ffdf5&gt;] ieee80211_tx+0x105/0x130 [mac80211]
  [&lt;f99000dd&gt;] ieee80211_xmit+0xad/0x100 [mac80211]
  [&lt;f9900519&gt;] ieee80211_subif_start_xmit+0x2d9/0x930 [mac80211]
  [&lt;c0782e87&gt;] dev_hard_start_xmit+0x307/0x660
  [&lt;c079bb71&gt;] sch_direct_xmit+0xa1/0x1e0
  [&lt;c0784bb3&gt;] dev_queue_xmit+0x183/0x730
  [&lt;c078c27a&gt;] neigh_resolve_output+0xfa/0x1e0
  [&lt;c07b436a&gt;] ip_finish_output+0x24a/0x460
  [&lt;c07b4897&gt;] ip_output+0xb7/0x100
  [&lt;c07b2d60&gt;] ip_local_out+0x20/0x60
  [&lt;c07e01ff&gt;] igmpv3_sendpack+0x4f/0x60
  [&lt;c07e108f&gt;] igmp_ifc_timer_expire+0x29f/0x330
  [&lt;c04520fc&gt;] run_timer_softirq+0x15c/0x2f0
  [&lt;c0449e3e&gt;] __do_softirq+0xae/0x1e0
irq event stamp: 18380437
hardirqs last  enabled at (18380437): [&lt;c0526027&gt;] __slab_alloc.clone.3+0x67/0x5f0
hardirqs last disabled at (18380436): [&lt;c0525ff3&gt;] __slab_alloc.clone.3+0x33/0x5f0
softirqs last  enabled at (18377616): [&lt;c0449eb3&gt;] __do_softirq+0x123/0x1e0
softirqs last disabled at (18377611): [&lt;c041278d&gt;] do_softirq+0x9d/0xe0

other info that might help us debug this:
 Possible unsafe locking scenario:

       CPU0
       ----
  lock(&amp;(&amp;intf-&gt;seqlock)-&gt;rlock);
  &lt;Interrupt&gt;
    lock(&amp;(&amp;intf-&gt;seqlock)-&gt;rlock);

 *** DEADLOCK ***

4 locks held by kworker/u:2/30374:
 #0:  (wiphy_name(local-&gt;hw.wiphy)){++++.+}, at: [&lt;c045cf99&gt;] process_one_work+0x109/0x3f0
 #1:  ((&amp;sdata-&gt;work)){+.+.+.}, at: [&lt;c045cf99&gt;] process_one_work+0x109/0x3f0
 #2:  (&amp;ifibss-&gt;mtx){+.+.+.}, at: [&lt;f98f005b&gt;] ieee80211_ibss_work+0x1b/0x470 [mac80211]
 #3:  (&amp;intf-&gt;beacon_skb_mutex){+.+...}, at: [&lt;f997a644&gt;] rt2x00queue_update_beacon+0x24/0x50 [rt2x00lib]

stack backtrace:
Pid: 30374, comm: kworker/u:2 Not tainted 3.4.0-wl+ #4
Call Trace:
 [&lt;c04962a6&gt;] print_usage_bug+0x1f6/0x220
 [&lt;c0496a12&gt;] mark_lock+0x2c2/0x300
 [&lt;c0495ff0&gt;] ? check_usage_forwards+0xc0/0xc0
 [&lt;c04978ec&gt;] __lock_acquire+0x4bc/0x1050
 [&lt;c0527890&gt;] ? __kmalloc_track_caller+0x1c0/0x1d0
 [&lt;c0777fb6&gt;] ? copy_skb_header+0x26/0x90
 [&lt;c0498504&gt;] lock_acquire+0x84/0xf0
 [&lt;f9979a20&gt;] ? rt2x00queue_create_tx_descriptor+0x380/0x490 [rt2x00lib]
 [&lt;c0835733&gt;] _raw_spin_lock+0x33/0x40
 [&lt;f9979a20&gt;] ? rt2x00queue_create_tx_descriptor+0x380/0x490 [rt2x00lib]
 [&lt;f9979a20&gt;] rt2x00queue_create_tx_descriptor+0x380/0x490 [rt2x00lib]
 [&lt;f997a5cf&gt;] rt2x00queue_update_beacon_locked+0x5f/0xb0 [rt2x00lib]
 [&lt;f997a64d&gt;] rt2x00queue_update_beacon+0x2d/0x50 [rt2x00lib]
 [&lt;f9977e3a&gt;] rt2x00mac_bss_info_changed+0x1ca/0x200 [rt2x00lib]
 [&lt;f9977c70&gt;] ? rt2x00mac_remove_interface+0x70/0x70 [rt2x00lib]
 [&lt;f98e4dd0&gt;] ieee80211_bss_info_change_notify+0xe0/0x1d0 [mac80211]
 [&lt;f98ef7b8&gt;] __ieee80211_sta_join_ibss+0x3b8/0x610 [mac80211]
 [&lt;c0496ab4&gt;] ? mark_held_locks+0x64/0xc0
 [&lt;c0440012&gt;] ? virt_efi_query_capsule_caps+0x12/0x50
 [&lt;f98efb09&gt;] ieee80211_sta_join_ibss+0xf9/0x140 [mac80211]
 [&lt;f98f0456&gt;] ieee80211_ibss_work+0x416/0x470 [mac80211]
 [&lt;c0496d8b&gt;] ? trace_hardirqs_on+0xb/0x10
 [&lt;c077683b&gt;] ? skb_dequeue+0x4b/0x70
 [&lt;f98f207f&gt;] ieee80211_iface_work+0x13f/0x230 [mac80211]
 [&lt;c045cf99&gt;] ? process_one_work+0x109/0x3f0
 [&lt;c045d015&gt;] process_one_work+0x185/0x3f0
 [&lt;c045cf99&gt;] ? process_one_work+0x109/0x3f0
 [&lt;f98f1f40&gt;] ? ieee80211_teardown_sdata+0xa0/0xa0 [mac80211]
 [&lt;c045ed86&gt;] worker_thread+0x116/0x270
 [&lt;c045ec70&gt;] ? manage_workers+0x1e0/0x1e0
 [&lt;c0462f64&gt;] kthread+0x84/0x90
 [&lt;c0462ee0&gt;] ? __init_kthread_worker+0x60/0x60
 [&lt;c083d382&gt;] kernel_thread_helper+0x6/0x10

Signed-off-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&gt;
Acked-by: Helmut Schaa &lt;helmut.schaa@googlemail.com&gt;
Acked-by: Gertjan van Wingerde &lt;gwingerde@gmail.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>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit e5851dac2c95af7159716832300b9f50c62c648e upstream.

Remove spinlock as atomic_t can be used instead. Note we use only 16
lower bits, upper bits are changed but we impilcilty cast to u16.

This fix possible deadlock on IBSS mode reproted by lockdep:

=================================
[ INFO: inconsistent lock state ]
3.4.0-wl+ #4 Not tainted
---------------------------------
inconsistent {IN-SOFTIRQ-W} -&gt; {SOFTIRQ-ON-W} usage.
kworker/u:2/30374 [HC0[0]:SC0[0]:HE1:SE1] takes:
 (&amp;(&amp;intf-&gt;seqlock)-&gt;rlock){+.?...}, at: [&lt;f9979a20&gt;] rt2x00queue_create_tx_descriptor+0x380/0x490 [rt2x00lib]
{IN-SOFTIRQ-W} state was registered at:
  [&lt;c04978ab&gt;] __lock_acquire+0x47b/0x1050
  [&lt;c0498504&gt;] lock_acquire+0x84/0xf0
  [&lt;c0835733&gt;] _raw_spin_lock+0x33/0x40
  [&lt;f9979a20&gt;] rt2x00queue_create_tx_descriptor+0x380/0x490 [rt2x00lib]
  [&lt;f9979f2a&gt;] rt2x00queue_write_tx_frame+0x1a/0x300 [rt2x00lib]
  [&lt;f997834f&gt;] rt2x00mac_tx+0x7f/0x380 [rt2x00lib]
  [&lt;f98fe363&gt;] __ieee80211_tx+0x1b3/0x300 [mac80211]
  [&lt;f98ffdf5&gt;] ieee80211_tx+0x105/0x130 [mac80211]
  [&lt;f99000dd&gt;] ieee80211_xmit+0xad/0x100 [mac80211]
  [&lt;f9900519&gt;] ieee80211_subif_start_xmit+0x2d9/0x930 [mac80211]
  [&lt;c0782e87&gt;] dev_hard_start_xmit+0x307/0x660
  [&lt;c079bb71&gt;] sch_direct_xmit+0xa1/0x1e0
  [&lt;c0784bb3&gt;] dev_queue_xmit+0x183/0x730
  [&lt;c078c27a&gt;] neigh_resolve_output+0xfa/0x1e0
  [&lt;c07b436a&gt;] ip_finish_output+0x24a/0x460
  [&lt;c07b4897&gt;] ip_output+0xb7/0x100
  [&lt;c07b2d60&gt;] ip_local_out+0x20/0x60
  [&lt;c07e01ff&gt;] igmpv3_sendpack+0x4f/0x60
  [&lt;c07e108f&gt;] igmp_ifc_timer_expire+0x29f/0x330
  [&lt;c04520fc&gt;] run_timer_softirq+0x15c/0x2f0
  [&lt;c0449e3e&gt;] __do_softirq+0xae/0x1e0
irq event stamp: 18380437
hardirqs last  enabled at (18380437): [&lt;c0526027&gt;] __slab_alloc.clone.3+0x67/0x5f0
hardirqs last disabled at (18380436): [&lt;c0525ff3&gt;] __slab_alloc.clone.3+0x33/0x5f0
softirqs last  enabled at (18377616): [&lt;c0449eb3&gt;] __do_softirq+0x123/0x1e0
softirqs last disabled at (18377611): [&lt;c041278d&gt;] do_softirq+0x9d/0xe0

other info that might help us debug this:
 Possible unsafe locking scenario:

       CPU0
       ----
  lock(&amp;(&amp;intf-&gt;seqlock)-&gt;rlock);
  &lt;Interrupt&gt;
    lock(&amp;(&amp;intf-&gt;seqlock)-&gt;rlock);

 *** DEADLOCK ***

4 locks held by kworker/u:2/30374:
 #0:  (wiphy_name(local-&gt;hw.wiphy)){++++.+}, at: [&lt;c045cf99&gt;] process_one_work+0x109/0x3f0
 #1:  ((&amp;sdata-&gt;work)){+.+.+.}, at: [&lt;c045cf99&gt;] process_one_work+0x109/0x3f0
 #2:  (&amp;ifibss-&gt;mtx){+.+.+.}, at: [&lt;f98f005b&gt;] ieee80211_ibss_work+0x1b/0x470 [mac80211]
 #3:  (&amp;intf-&gt;beacon_skb_mutex){+.+...}, at: [&lt;f997a644&gt;] rt2x00queue_update_beacon+0x24/0x50 [rt2x00lib]

stack backtrace:
Pid: 30374, comm: kworker/u:2 Not tainted 3.4.0-wl+ #4
Call Trace:
 [&lt;c04962a6&gt;] print_usage_bug+0x1f6/0x220
 [&lt;c0496a12&gt;] mark_lock+0x2c2/0x300
 [&lt;c0495ff0&gt;] ? check_usage_forwards+0xc0/0xc0
 [&lt;c04978ec&gt;] __lock_acquire+0x4bc/0x1050
 [&lt;c0527890&gt;] ? __kmalloc_track_caller+0x1c0/0x1d0
 [&lt;c0777fb6&gt;] ? copy_skb_header+0x26/0x90
 [&lt;c0498504&gt;] lock_acquire+0x84/0xf0
 [&lt;f9979a20&gt;] ? rt2x00queue_create_tx_descriptor+0x380/0x490 [rt2x00lib]
 [&lt;c0835733&gt;] _raw_spin_lock+0x33/0x40
 [&lt;f9979a20&gt;] ? rt2x00queue_create_tx_descriptor+0x380/0x490 [rt2x00lib]
 [&lt;f9979a20&gt;] rt2x00queue_create_tx_descriptor+0x380/0x490 [rt2x00lib]
 [&lt;f997a5cf&gt;] rt2x00queue_update_beacon_locked+0x5f/0xb0 [rt2x00lib]
 [&lt;f997a64d&gt;] rt2x00queue_update_beacon+0x2d/0x50 [rt2x00lib]
 [&lt;f9977e3a&gt;] rt2x00mac_bss_info_changed+0x1ca/0x200 [rt2x00lib]
 [&lt;f9977c70&gt;] ? rt2x00mac_remove_interface+0x70/0x70 [rt2x00lib]
 [&lt;f98e4dd0&gt;] ieee80211_bss_info_change_notify+0xe0/0x1d0 [mac80211]
 [&lt;f98ef7b8&gt;] __ieee80211_sta_join_ibss+0x3b8/0x610 [mac80211]
 [&lt;c0496ab4&gt;] ? mark_held_locks+0x64/0xc0
 [&lt;c0440012&gt;] ? virt_efi_query_capsule_caps+0x12/0x50
 [&lt;f98efb09&gt;] ieee80211_sta_join_ibss+0xf9/0x140 [mac80211]
 [&lt;f98f0456&gt;] ieee80211_ibss_work+0x416/0x470 [mac80211]
 [&lt;c0496d8b&gt;] ? trace_hardirqs_on+0xb/0x10
 [&lt;c077683b&gt;] ? skb_dequeue+0x4b/0x70
 [&lt;f98f207f&gt;] ieee80211_iface_work+0x13f/0x230 [mac80211]
 [&lt;c045cf99&gt;] ? process_one_work+0x109/0x3f0
 [&lt;c045d015&gt;] process_one_work+0x185/0x3f0
 [&lt;c045cf99&gt;] ? process_one_work+0x109/0x3f0
 [&lt;f98f1f40&gt;] ? ieee80211_teardown_sdata+0xa0/0xa0 [mac80211]
 [&lt;c045ed86&gt;] worker_thread+0x116/0x270
 [&lt;c045ec70&gt;] ? manage_workers+0x1e0/0x1e0
 [&lt;c0462f64&gt;] kthread+0x84/0x90
 [&lt;c0462ee0&gt;] ? __init_kthread_worker+0x60/0x60
 [&lt;c083d382&gt;] kernel_thread_helper+0x6/0x10

Signed-off-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&gt;
Acked-by: Helmut Schaa &lt;helmut.schaa@googlemail.com&gt;
Acked-by: Gertjan van Wingerde &lt;gwingerde@gmail.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>rt2x00: Fix rfkill_polling register function.</title>
<updated>2012-04-10T18:14:28+00:00</updated>
<author>
<name>Chen, Chien-Chia</name>
<email>machen@suse.com</email>
</author>
<published>2012-03-29T10:21:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=e2bc7c5f3cb8756865aa0ab140d2288f61599dda'/>
<id>e2bc7c5f3cb8756865aa0ab140d2288f61599dda</id>
<content type='text'>
  Move rt2x00rfkill_register(rt2x00dev) to rt2x00lib_probe_dev
  function. It fixes of starting rfkill_poll function at the
  right time if sets hard rfkill block and reboot. rt2x00mac_rfkill_poll
  should be starting before bringing up the wireless interface.

Signed-off-by: Chen, Chien-Chia &lt;machen@suse.com&gt;
Acked-by: Helmut Schaa &lt;helmut.schaa@googlemail.com&gt;
CC: Kevin Chou &lt;kevin.chou@mediatek.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
  Move rt2x00rfkill_register(rt2x00dev) to rt2x00lib_probe_dev
  function. It fixes of starting rfkill_poll function at the
  right time if sets hard rfkill block and reboot. rt2x00mac_rfkill_poll
  should be starting before bringing up the wireless interface.

Signed-off-by: Chen, Chien-Chia &lt;machen@suse.com&gt;
Acked-by: Helmut Schaa &lt;helmut.schaa@googlemail.com&gt;
CC: Kevin Chou &lt;kevin.chou@mediatek.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>rt2x00: rt2800usb: fix status register reread logic</title>
<updated>2012-03-26T19:07:28+00:00</updated>
<author>
<name>Stanislaw Gruszka</name>
<email>sgruszka@redhat.com</email>
</author>
<published>2012-03-19T14:59:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=4e808a38fdcaeeeddbc05942623279ebe7c02373'/>
<id>4e808a38fdcaeeeddbc05942623279ebe7c02373</id>
<content type='text'>
Another good catch from Jakub Kicinski. This patch fixes my
recent commit: ed61e2b02027935520d1be884fac0b2ffce8379a
"rt2x00: rt2800usb: rework txdone code"

We should reread status register only when nobody else start already
reading status i.e. test_and_set_bit(TX_STATUS_READING, flags) return 0.

Reported-by: Jakub Kicinski &lt;moorray@wp.pl&gt;
Signed-off-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&gt;
Acked-by: Gertjan van Wingerde &lt;gwingerde@gmail.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Another good catch from Jakub Kicinski. This patch fixes my
recent commit: ed61e2b02027935520d1be884fac0b2ffce8379a
"rt2x00: rt2800usb: rework txdone code"

We should reread status register only when nobody else start already
reading status i.e. test_and_set_bit(TX_STATUS_READING, flags) return 0.

Reported-by: Jakub Kicinski &lt;moorray@wp.pl&gt;
Signed-off-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&gt;
Acked-by: Gertjan van Wingerde &lt;gwingerde@gmail.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>rt2x00: rt2800usb: schedule txdone work on timeout</title>
<updated>2012-03-26T19:07:27+00:00</updated>
<author>
<name>Stanislaw Gruszka</name>
<email>sgruszka@redhat.com</email>
</author>
<published>2012-03-19T08:39:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=b9fc106108f3faf2e4430c3bd5721677c3d6a4a1'/>
<id>b9fc106108f3faf2e4430c3bd5721677c3d6a4a1</id>
<content type='text'>
This is fix for my current commit
ed61e2b02027935520d1be884fac0b2ffce8379a
"rt2x00: rt2800usb: rework txdone code"

We should schedule txdone work on timeout, otherwise if newer get
tx status from hardware, we will never report tx status to mac80211
and eventually never wakeup tx queue.

Reported-by: Jakub Kicinski &lt;moorray@wp.pl&gt;
Signed-off-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&gt;
Acked-by: Gertjan van Wingerde &lt;gwingerde@gmail.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is fix for my current commit
ed61e2b02027935520d1be884fac0b2ffce8379a
"rt2x00: rt2800usb: rework txdone code"

We should schedule txdone work on timeout, otherwise if newer get
tx status from hardware, we will never report tx status to mac80211
and eventually never wakeup tx queue.

Reported-by: Jakub Kicinski &lt;moorray@wp.pl&gt;
Signed-off-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&gt;
Acked-by: Gertjan van Wingerde &lt;gwingerde@gmail.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net</title>
<updated>2012-03-19T03:29:41+00:00</updated>
<author>
<name>David S. Miller</name>
<email>davem@davemloft.net</email>
</author>
<published>2012-03-19T03:29:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=4da0bd736552e6377b407b3c3d3ae518ebbdd269'/>
<id>4da0bd736552e6377b407b3c3d3ae518ebbdd269</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>rt2x00: rt2800usb: limit tx queues length</title>
<updated>2012-03-15T17:40:33+00:00</updated>
<author>
<name>Stanislaw Gruszka</name>
<email>sgruszka@redhat.com</email>
</author>
<published>2012-03-14T10:16:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=0d9be8a4b7da71ef3b4ac8f6aa4fa225c1cb8e98'/>
<id>0d9be8a4b7da71ef3b4ac8f6aa4fa225c1cb8e98</id>
<content type='text'>
TX status fifo is limited to 16 elements. When we send more frames than
that, we can easily loose status, what is not good for rate scaling
algorithm.

On my testing the change does not degrade performance, actually make
is slightly better. Additionally with the patch I can see much less
various rt2x00 warnings in dmesg.

Signed-off-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&gt;
Acked-by: Gertjan van Wingerde &lt;gwingerde@gmail.com&gt;
Acked-by: Helmut Schaa &lt;helmut.schaa@googlemail.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
TX status fifo is limited to 16 elements. When we send more frames than
that, we can easily loose status, what is not good for rate scaling
algorithm.

On my testing the change does not degrade performance, actually make
is slightly better. Additionally with the patch I can see much less
various rt2x00 warnings in dmesg.

Signed-off-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&gt;
Acked-by: Gertjan van Wingerde &lt;gwingerde@gmail.com&gt;
Acked-by: Helmut Schaa &lt;helmut.schaa@googlemail.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>rt2x00: rt2800usb: do not check packedid for aggregated frames</title>
<updated>2012-03-15T17:40:32+00:00</updated>
<author>
<name>Stanislaw Gruszka</name>
<email>sgruszka@redhat.com</email>
</author>
<published>2012-03-14T10:16:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=5f8f718ae1e1a6b4e16e67e9e67aff1864419f2e'/>
<id>5f8f718ae1e1a6b4e16e67e9e67aff1864419f2e</id>
<content type='text'>
Tx statuses of aggregated subframes contain packetid of first subframe
in the AMPDU. We can not identify AMPDU subframes based on packedid, so
simply assume that status match first pending frame in the queue. Thats
mostly the same what 2800pci do.

Signed-off-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&gt;
Acked-by: Gertjan van Wingerde &lt;gwingerde@gmail.com&gt;
Acked-by: Helmut Schaa &lt;helmut.schaa@googlemail.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Tx statuses of aggregated subframes contain packetid of first subframe
in the AMPDU. We can not identify AMPDU subframes based on packedid, so
simply assume that status match first pending frame in the queue. Thats
mostly the same what 2800pci do.

Signed-off-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&gt;
Acked-by: Gertjan van Wingerde &lt;gwingerde@gmail.com&gt;
Acked-by: Helmut Schaa &lt;helmut.schaa@googlemail.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>rt2x00: rt2800usb: rework txstatus code</title>
<updated>2012-03-15T17:40:31+00:00</updated>
<author>
<name>Stanislaw Gruszka</name>
<email>sgruszka@redhat.com</email>
</author>
<published>2012-03-14T10:16:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=f421111b5e69020c047eb3ff057e50f446c3c7a2'/>
<id>f421111b5e69020c047eb3ff057e50f446c3c7a2</id>
<content type='text'>
Currently we read tx status register after each urb data transfer. As
callback procedure also trigger reading, that causing we have many
"threads" of reading status. To prevent that introduce TX_STATUS_READING
flags, and check if we are already in process of sequential reading
TX_STA_FIFO, before requesting new reads.

Change timer to hrtimer, that make TX_STA_FIFO overruns less possible.
Use 200 us for initial timeout, and then reschedule in 100 us period,
this values probably have to be tuned.

Make changes on txdone work. Schedule it from
rt2800usb_tx_sta_fifo_read_completed() callback when first valid status
show up. Check in callback if tx status timeout happens, and schedule
work on that condition too. That make possible to remove tx status
timeout from generic watchdog. I moved that to rt2800usb.

Loop in txdone work, that should prevent situation when we queue work,
which is already processed, and after finish work is not rescheduled
again.

Signed-off-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Currently we read tx status register after each urb data transfer. As
callback procedure also trigger reading, that causing we have many
"threads" of reading status. To prevent that introduce TX_STATUS_READING
flags, and check if we are already in process of sequential reading
TX_STA_FIFO, before requesting new reads.

Change timer to hrtimer, that make TX_STA_FIFO overruns less possible.
Use 200 us for initial timeout, and then reschedule in 100 us period,
this values probably have to be tuned.

Make changes on txdone work. Schedule it from
rt2800usb_tx_sta_fifo_read_completed() callback when first valid status
show up. Check in callback if tx status timeout happens, and schedule
work on that condition too. That make possible to remove tx status
timeout from generic watchdog. I moved that to rt2800usb.

Loop in txdone work, that should prevent situation when we queue work,
which is already processed, and after finish work is not rescheduled
again.

Signed-off-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
