<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/drivers/net/wireless/rt2x00/rt2x00dev.c, branch v2.6.30</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<entry>
<title>rt2x00: prevent double kfree when failing to register hardware</title>
<updated>2009-04-16T14:39:15+00:00</updated>
<author>
<name>Herton Ronaldo Krzesinski</name>
<email>herton@mandriva.com.br</email>
</author>
<published>2009-04-10T21:05:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=f05faa31c387fb07f4c561350f00ba12cf673c9f'/>
<id>f05faa31c387fb07f4c561350f00ba12cf673c9f</id>
<content type='text'>
In a scenario where there isn't any firmware available, we will have a
double kfree of rt2x00dev-&gt;spec.channels_info when ieee80211_register_hw
returns an error status inside rt2x00lib_probe_hw.

The problem is that if ieee80211_register_hw fails, we call
rt2x00lib_remove_hw twice:
* first inside rt2x00lib_probe_hw upon failure of ieee80211_register_hw
* error status is returned to rt2x00lib_probe_dev, which then sees it and
  calls in this case rt2x00lib_remove_dev that will again run
  rt2x00lib_remove_hw

Prevent this avoiding calling rt2x00lib_remove_hw inside
rt2x00lib_probe_hw

Problem was detected with CONFIG_DEBUG_PAGEALLOC=y, CONFIG_SLUB_DEBUG=y,
CONFIG_SLUB_DEBUG_ON=y, that dumps this with no firmware available:

rt61pci 0000:00:07.0: PCI INT A -&gt; GSI 19 (level, low) -&gt; IRQ 19
wmaster0 (rt61pci): not using net_device_ops yet
phy0: Selected rate control algorithm 'pid'
phy0: Failed to initialize wep: -2
phy0 -&gt; rt2x00lib_probe_dev: Error - Failed to initialize hw.
=============================================================================
BUG kmalloc-128: Object already free
-----------------------------------------------------------------------------

INFO: Allocated in rt61pci_probe_hw+0x3e5/0x6e0 [rt61pci] age=340 cpu=0 pid=21
INFO: Freed in rt2x00lib_remove_hw+0x59/0x70 [rt2x00lib] age=0 cpu=0 pid=21
INFO: Slab 0xc13ac3e0 objects=23 used=10 fp=0xdd59f6e0 flags=0x400000c3
INFO: Object 0xdd59f6e0 @offset=1760 fp=0xdd59f790

Bytes b4 0xdd59f6d0:  15 00 00 00 b2 8a fb ff 5a 5a 5a 5a 5a 5a 5a 5a ....².ûÿZZZZZZZZ
  Object 0xdd59f6e0:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
  Object 0xdd59f6f0:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
  Object 0xdd59f700:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
  Object 0xdd59f710:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
  Object 0xdd59f720:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
  Object 0xdd59f730:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
  Object 0xdd59f740:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
  Object 0xdd59f750:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b a5 kkkkkkkkkkkkkkk¥
 Redzone 0xdd59f760:  bb bb bb bb                                     »»»»
 Padding 0xdd59f788:  5a 5a 5a 5a 5a 5a 5a 5a                         ZZZZZZZZ
Pid: 21, comm: stage1 Not tainted 2.6.29.1-desktop-1.1mnb #1
Call Trace:
 [&lt;c01abbb3&gt;] print_trailer+0xd3/0x120
 [&lt;c01abd37&gt;] object_err+0x37/0x50
 [&lt;c01acf57&gt;] __slab_free+0xe7/0x2f0
 [&lt;c01ad1de&gt;] kfree+0x7e/0xd0
 [&lt;e0e4a239&gt;] ? rt2x00lib_remove_hw+0x59/0x70 [rt2x00lib]
 [&lt;e0e4a239&gt;] ? rt2x00lib_remove_hw+0x59/0x70 [rt2x00lib]
 [&lt;e0e4a239&gt;] rt2x00lib_remove_hw+0x59/0x70 [rt2x00lib]
 [&lt;e0e4acc7&gt;] rt2x00lib_remove_dev+0x37/0x50 [rt2x00lib]
 [&lt;e0e4b087&gt;] rt2x00lib_probe_dev+0x1a7/0x3b0 [rt2x00lib]
 [&lt;e0eb288f&gt;] rt2x00pci_probe+0xdf/0x1ee [rt2x00pci]
 [&lt;c026b9ee&gt;] local_pci_probe+0xe/0x10
 [&lt;c026c750&gt;] pci_device_probe+0x60/0x80
 [&lt;c02d5c2a&gt;] driver_probe_device+0x9a/0x2e0
 [&lt;c02d5ef9&gt;] __driver_attach+0x89/0x90
 [&lt;c02d541b&gt;] bus_for_each_dev+0x4b/0x70
 [&lt;c026c690&gt;] ? pci_device_remove+0x0/0x40
 [&lt;c02d59d9&gt;] driver_attach+0x19/0x20
 [&lt;c02d5e70&gt;] ? __driver_attach+0x0/0x90
 [&lt;c02d4cef&gt;] bus_add_driver+0x1cf/0x2a0
 [&lt;c026c690&gt;] ? pci_device_remove+0x0/0x40
 [&lt;c02d60c9&gt;] driver_register+0x69/0x140
 [&lt;c026c9b0&gt;] __pci_register_driver+0x40/0x80
 [&lt;e0ecc000&gt;] ? rt61pci_init+0x0/0x19 [rt61pci]
 [&lt;e0ecc017&gt;] rt61pci_init+0x17/0x19 [rt61pci]
 [&lt;c0101116&gt;] do_one_initcall+0x26/0x1c0
 [&lt;c01ab90c&gt;] ? slab_pad_check+0x3c/0x120
 [&lt;c01ab90c&gt;] ? slab_pad_check+0x3c/0x120
 [&lt;c01ac8da&gt;] ? check_object+0xda/0x210
 [&lt;c01b0026&gt;] ? percpu_free+0x46/0x50
 [&lt;c01ad09e&gt;] ? __slab_free+0x22e/0x2f0
 [&lt;c01b0026&gt;] ? percpu_free+0x46/0x50
 [&lt;c01b0026&gt;] ? percpu_free+0x46/0x50
 [&lt;c01b0026&gt;] ? percpu_free+0x46/0x50
 [&lt;c01687ec&gt;] ? stop_machine_destroy+0x3c/0x40
 [&lt;c015e515&gt;] ? load_module+0xa5/0x1c50
 [&lt;e0ec5000&gt;] ? rt61pci_eepromregister_read+0x0/0x40 [rt61pci]
 [&lt;e0eb2000&gt;] ? rt2x00pci_write_tx_data+0x0/0x90 [rt2x00pci]
 [&lt;c03ac2fb&gt;] ? mutex_lock+0xb/0x20
 [&lt;c03ac2fb&gt;] ? mutex_lock+0xb/0x20
 [&lt;c017ad16&gt;] ? tracepoint_update_probe_range+0x76/0xa0
 [&lt;c017ad6f&gt;] ? tracepoint_module_notify+0x2f/0x40
 [&lt;c03b02ed&gt;] ? notifier_call_chain+0x2d/0x70
 [&lt;c014f0ed&gt;] ? __blocking_notifier_call_chain+0x4d/0x60
 [&lt;c014f11a&gt;] ? blocking_notifier_call_chain+0x1a/0x20
 [&lt;c0160156&gt;] sys_init_module+0x96/0x1d0
 [&lt;c019dad6&gt;] ? sys_munmap+0x46/0x60
 [&lt;c0105546&gt;] syscall_call+0x7/0xb
FIX kmalloc-128: Object at 0xdd59f6e0 not freed
rt61pci 0000:00:07.0: PCI INT A disabled
rt61pci: probe of 0000:00:07.0 failed with error -2

Signed-off-by: Herton Ronaldo Krzesinski &lt;herton@mandriva.com.br&gt;
Acked-by: Ivo van Doorn &lt;IvDoorn@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>
In a scenario where there isn't any firmware available, we will have a
double kfree of rt2x00dev-&gt;spec.channels_info when ieee80211_register_hw
returns an error status inside rt2x00lib_probe_hw.

The problem is that if ieee80211_register_hw fails, we call
rt2x00lib_remove_hw twice:
* first inside rt2x00lib_probe_hw upon failure of ieee80211_register_hw
* error status is returned to rt2x00lib_probe_dev, which then sees it and
  calls in this case rt2x00lib_remove_dev that will again run
  rt2x00lib_remove_hw

Prevent this avoiding calling rt2x00lib_remove_hw inside
rt2x00lib_probe_hw

Problem was detected with CONFIG_DEBUG_PAGEALLOC=y, CONFIG_SLUB_DEBUG=y,
CONFIG_SLUB_DEBUG_ON=y, that dumps this with no firmware available:

rt61pci 0000:00:07.0: PCI INT A -&gt; GSI 19 (level, low) -&gt; IRQ 19
wmaster0 (rt61pci): not using net_device_ops yet
phy0: Selected rate control algorithm 'pid'
phy0: Failed to initialize wep: -2
phy0 -&gt; rt2x00lib_probe_dev: Error - Failed to initialize hw.
=============================================================================
BUG kmalloc-128: Object already free
-----------------------------------------------------------------------------

INFO: Allocated in rt61pci_probe_hw+0x3e5/0x6e0 [rt61pci] age=340 cpu=0 pid=21
INFO: Freed in rt2x00lib_remove_hw+0x59/0x70 [rt2x00lib] age=0 cpu=0 pid=21
INFO: Slab 0xc13ac3e0 objects=23 used=10 fp=0xdd59f6e0 flags=0x400000c3
INFO: Object 0xdd59f6e0 @offset=1760 fp=0xdd59f790

Bytes b4 0xdd59f6d0:  15 00 00 00 b2 8a fb ff 5a 5a 5a 5a 5a 5a 5a 5a ....².ûÿZZZZZZZZ
  Object 0xdd59f6e0:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
  Object 0xdd59f6f0:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
  Object 0xdd59f700:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
  Object 0xdd59f710:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
  Object 0xdd59f720:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
  Object 0xdd59f730:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
  Object 0xdd59f740:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
  Object 0xdd59f750:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b a5 kkkkkkkkkkkkkkk¥
 Redzone 0xdd59f760:  bb bb bb bb                                     »»»»
 Padding 0xdd59f788:  5a 5a 5a 5a 5a 5a 5a 5a                         ZZZZZZZZ
Pid: 21, comm: stage1 Not tainted 2.6.29.1-desktop-1.1mnb #1
Call Trace:
 [&lt;c01abbb3&gt;] print_trailer+0xd3/0x120
 [&lt;c01abd37&gt;] object_err+0x37/0x50
 [&lt;c01acf57&gt;] __slab_free+0xe7/0x2f0
 [&lt;c01ad1de&gt;] kfree+0x7e/0xd0
 [&lt;e0e4a239&gt;] ? rt2x00lib_remove_hw+0x59/0x70 [rt2x00lib]
 [&lt;e0e4a239&gt;] ? rt2x00lib_remove_hw+0x59/0x70 [rt2x00lib]
 [&lt;e0e4a239&gt;] rt2x00lib_remove_hw+0x59/0x70 [rt2x00lib]
 [&lt;e0e4acc7&gt;] rt2x00lib_remove_dev+0x37/0x50 [rt2x00lib]
 [&lt;e0e4b087&gt;] rt2x00lib_probe_dev+0x1a7/0x3b0 [rt2x00lib]
 [&lt;e0eb288f&gt;] rt2x00pci_probe+0xdf/0x1ee [rt2x00pci]
 [&lt;c026b9ee&gt;] local_pci_probe+0xe/0x10
 [&lt;c026c750&gt;] pci_device_probe+0x60/0x80
 [&lt;c02d5c2a&gt;] driver_probe_device+0x9a/0x2e0
 [&lt;c02d5ef9&gt;] __driver_attach+0x89/0x90
 [&lt;c02d541b&gt;] bus_for_each_dev+0x4b/0x70
 [&lt;c026c690&gt;] ? pci_device_remove+0x0/0x40
 [&lt;c02d59d9&gt;] driver_attach+0x19/0x20
 [&lt;c02d5e70&gt;] ? __driver_attach+0x0/0x90
 [&lt;c02d4cef&gt;] bus_add_driver+0x1cf/0x2a0
 [&lt;c026c690&gt;] ? pci_device_remove+0x0/0x40
 [&lt;c02d60c9&gt;] driver_register+0x69/0x140
 [&lt;c026c9b0&gt;] __pci_register_driver+0x40/0x80
 [&lt;e0ecc000&gt;] ? rt61pci_init+0x0/0x19 [rt61pci]
 [&lt;e0ecc017&gt;] rt61pci_init+0x17/0x19 [rt61pci]
 [&lt;c0101116&gt;] do_one_initcall+0x26/0x1c0
 [&lt;c01ab90c&gt;] ? slab_pad_check+0x3c/0x120
 [&lt;c01ab90c&gt;] ? slab_pad_check+0x3c/0x120
 [&lt;c01ac8da&gt;] ? check_object+0xda/0x210
 [&lt;c01b0026&gt;] ? percpu_free+0x46/0x50
 [&lt;c01ad09e&gt;] ? __slab_free+0x22e/0x2f0
 [&lt;c01b0026&gt;] ? percpu_free+0x46/0x50
 [&lt;c01b0026&gt;] ? percpu_free+0x46/0x50
 [&lt;c01b0026&gt;] ? percpu_free+0x46/0x50
 [&lt;c01687ec&gt;] ? stop_machine_destroy+0x3c/0x40
 [&lt;c015e515&gt;] ? load_module+0xa5/0x1c50
 [&lt;e0ec5000&gt;] ? rt61pci_eepromregister_read+0x0/0x40 [rt61pci]
 [&lt;e0eb2000&gt;] ? rt2x00pci_write_tx_data+0x0/0x90 [rt2x00pci]
 [&lt;c03ac2fb&gt;] ? mutex_lock+0xb/0x20
 [&lt;c03ac2fb&gt;] ? mutex_lock+0xb/0x20
 [&lt;c017ad16&gt;] ? tracepoint_update_probe_range+0x76/0xa0
 [&lt;c017ad6f&gt;] ? tracepoint_module_notify+0x2f/0x40
 [&lt;c03b02ed&gt;] ? notifier_call_chain+0x2d/0x70
 [&lt;c014f0ed&gt;] ? __blocking_notifier_call_chain+0x4d/0x60
 [&lt;c014f11a&gt;] ? blocking_notifier_call_chain+0x1a/0x20
 [&lt;c0160156&gt;] sys_init_module+0x96/0x1d0
 [&lt;c019dad6&gt;] ? sys_munmap+0x46/0x60
 [&lt;c0105546&gt;] syscall_call+0x7/0xb
FIX kmalloc-128: Object at 0xdd59f6e0 not freed
rt61pci 0000:00:07.0: PCI INT A disabled
rt61pci: probe of 0000:00:07.0 failed with error -2

Signed-off-by: Herton Ronaldo Krzesinski &lt;herton@mandriva.com.br&gt;
Acked-by: Ivo van Doorn &lt;IvDoorn@gmail.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>rt2x00: Add kill_tx_queue callback function</title>
<updated>2009-02-09T20:03:34+00:00</updated>
<author>
<name>Ivo van Doorn</name>
<email>ivdoorn@gmail.com</email>
</author>
<published>2009-01-27T23:32:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=a2c9b652a12a550d3d8509e9bae43bac396c5076'/>
<id>a2c9b652a12a550d3d8509e9bae43bac396c5076</id>
<content type='text'>
provide rt2x00lib the possibility to kill a particular TX queue.
This can be useful when disabling the radio, but more importantly
will allow beaconing to be disabled when mac80211 requests this
(during scanning for example)

Signed-off-by: Ivo van Doorn &lt;IvDoorn@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>
provide rt2x00lib the possibility to kill a particular TX queue.
This can be useful when disabling the radio, but more importantly
will allow beaconing to be disabled when mac80211 requests this
(during scanning for example)

Signed-off-by: Ivo van Doorn &lt;IvDoorn@gmail.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>rt2x00: Move intf_work to mac82011 workqueue</title>
<updated>2009-02-09T20:03:34+00:00</updated>
<author>
<name>Ivo van Doorn</name>
<email>ivdoorn@gmail.com</email>
</author>
<published>2009-01-27T23:32:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=382fe0f2da78db7833c6a7278e33e694e6e2a6f3'/>
<id>382fe0f2da78db7833c6a7278e33e694e6e2a6f3</id>
<content type='text'>
ieee80211_iterate_active_interfaces() no longer acquires the
RTNL lock which means the intf_work handler can be safely
used from the mac80211 workqueue again.

Signed-off-by: Ivo van Doorn &lt;IvDoorn@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>
ieee80211_iterate_active_interfaces() no longer acquires the
RTNL lock which means the intf_work handler can be safely
used from the mac80211 workqueue again.

Signed-off-by: Ivo van Doorn &lt;IvDoorn@gmail.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>rt2x00: Simplify suspend/resume handling</title>
<updated>2009-01-29T21:01:27+00:00</updated>
<author>
<name>Ivo van Doorn</name>
<email>ivdoorn@gmail.com</email>
</author>
<published>2009-01-23T16:04:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=0712612741e1dccf10353c70ebe90ba8cc60d5fb'/>
<id>0712612741e1dccf10353c70ebe90ba8cc60d5fb</id>
<content type='text'>
With mac80211 handling all open interfaces during
suspend and resume we can simplify suspend/resume
within rt2x00lib.

The only thing rt2x00 needs to do is free up memory
during suspend and bring back the minimal required
components during resume.

Signed-off-by: Ivo van Doorn &lt;IvDoorn@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>
With mac80211 handling all open interfaces during
suspend and resume we can simplify suspend/resume
within rt2x00lib.

The only thing rt2x00 needs to do is free up memory
during suspend and bring back the minimal required
components during resume.

Signed-off-by: Ivo van Doorn &lt;IvDoorn@gmail.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>rt2x00: Update copyright year to 2009</title>
<updated>2009-01-29T21:00:45+00:00</updated>
<author>
<name>Ivo van Doorn</name>
<email>ivdoorn@gmail.com</email>
</author>
<published>2009-01-17T19:42:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=4e54c711b42c3cc8da8a3fdcde3407b86d67ebcc'/>
<id>4e54c711b42c3cc8da8a3fdcde3407b86d67ebcc</id>
<content type='text'>
Signed-off-by: Ivo van Doorn &lt;IvDoorn@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>
Signed-off-by: Ivo van Doorn &lt;IvDoorn@gmail.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>rt2x00: Introduce RXDONE_SIGNAL_MASK mask</title>
<updated>2009-01-29T20:58:41+00:00</updated>
<author>
<name>Ivo van Doorn</name>
<email>ivdoorn@gmail.com</email>
</author>
<published>2008-12-20T09:59:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=b30dd5c043eda4b3d23659ef550c16ce4f6ecb47'/>
<id>b30dd5c043eda4b3d23659ef550c16ce4f6ecb47</id>
<content type='text'>
Improve error message reporting when a frame was received
with unknown rate. Instead of using the boolean check if
the frame is supposed to be a PLCP value or not, we should
add a new mask (RXDONE_SIGNAL_MASK) which returns the type
identification for a signal value (i.e. PLCP). At the moment
we only have 2 different types, but more will arrive when
support for 11n is added.

Signed-off-by: Ivo van Doorn &lt;IvDoorn@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>
Improve error message reporting when a frame was received
with unknown rate. Instead of using the boolean check if
the frame is supposed to be a PLCP value or not, we should
add a new mask (RXDONE_SIGNAL_MASK) which returns the type
identification for a signal value (i.e. PLCP). At the moment
we only have 2 different types, but more will arrive when
support for 11n is added.

Signed-off-by: Ivo van Doorn &lt;IvDoorn@gmail.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>rt2x00: Allow drivers to pass the noise value during rxdone</title>
<updated>2009-01-29T20:58:41+00:00</updated>
<author>
<name>Ivo van Doorn</name>
<email>ivdoorn@gmail.com</email>
</author>
<published>2008-12-20T09:59:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=2bdb35c7ffb61f4b9d963dd447a2c54add5f02c5'/>
<id>2bdb35c7ffb61f4b9d963dd447a2c54add5f02c5</id>
<content type='text'>
Signed-off-by: Ivo van Doorn &lt;IvDoorn@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>
Signed-off-by: Ivo van Doorn &lt;IvDoorn@gmail.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>rt2x00: Implement WDS support</title>
<updated>2009-01-29T20:58:38+00:00</updated>
<author>
<name>Ivo van Doorn</name>
<email>ivdoorn@gmail.com</email>
</author>
<published>2008-12-20T09:57:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=ce292a640228fded0d2e232216a19cba33e2cd0f'/>
<id>ce292a640228fded0d2e232216a19cba33e2cd0f</id>
<content type='text'>
WDS support should be very easy to handle, mac80211 handles
everything for us, so all that is needed is to set the
support flags and handle it in the add_interface() callback.

Signed-off-by: Ivo van Doorn &lt;IvDoorn@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>
WDS support should be very easy to handle, mac80211 handles
everything for us, so all that is needed is to set the
support flags and handle it in the add_interface() callback.

Signed-off-by: Ivo van Doorn &lt;IvDoorn@gmail.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>rt2x00: Add mesh support</title>
<updated>2009-01-29T20:58:35+00:00</updated>
<author>
<name>Andrey Yurovsky</name>
<email>andrey@cozybit.com</email>
</author>
<published>2008-12-20T09:55:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=a07dbea210e146aedf8929cdabe082b58696260c'/>
<id>a07dbea210e146aedf8929cdabe082b58696260c</id>
<content type='text'>
This adds initial support for Mesh Point mode.  For this we tell mac80211 that
we support NL80211_IFTYPE_MESH_POINT.  We also need to send beacons.  mac80211
will configure our RX filter accordingly.

Signed-off-by: Andrey Yurovsky &lt;andrey@cozybit.com&gt;
Signed-off-by: Ivo van Doorn &lt;IvDoorn@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 adds initial support for Mesh Point mode.  For this we tell mac80211 that
we support NL80211_IFTYPE_MESH_POINT.  We also need to send beacons.  mac80211
will configure our RX filter accordingly.

Signed-off-by: Andrey Yurovsky &lt;andrey@cozybit.com&gt;
Signed-off-by: Ivo van Doorn &lt;IvDoorn@gmail.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>rt2x00: Move link tuning into seperate file</title>
<updated>2009-01-29T20:58:34+00:00</updated>
<author>
<name>Ivo van Doorn</name>
<email>ivdoorn@gmail.com</email>
</author>
<published>2008-12-20T09:53:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=84e3196ff867c623056eea02c11a45e046490d89'/>
<id>84e3196ff867c623056eea02c11a45e046490d89</id>
<content type='text'>
Move link and antenna tuning into a seperate file named rt2x00link.c,
this makes the interface to the link tuner a lot cleaner.

Signed-off-by: Ivo van Doorn &lt;IvDoorn@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>
Move link and antenna tuning into a seperate file named rt2x00link.c,
this makes the interface to the link tuner a lot cleaner.

Signed-off-by: Ivo van Doorn &lt;IvDoorn@gmail.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
