<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/drivers/net/wireless/rt2x00/rt2x00debug.c, branch v2.6.28</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<entry>
<title>rt2x00: Implement HW encryption</title>
<updated>2008-08-22T20:29:58+00:00</updated>
<author>
<name>Ivo van Doorn</name>
<email>ivdoorn@gmail.com</email>
</author>
<published>2008-08-04T14:37:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=2bb057d07a0bc17475a7bf897fc41667ab08b73f'/>
<id>2bb057d07a0bc17475a7bf897fc41667ab08b73f</id>
<content type='text'>
Various rt2x00 devices support hardware encryption.

Most of them require the IV/EIV to be generated by mac80211,
but require it to be provided seperately instead of within
the frame itself. This means that rt2x00lib should extract
the data from the frame and place it in the frame descriptor.
During RX the IV/EIV is provided in the descriptor by the
hardware which means that it should be inserted into the
frame by rt2x00lib.

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>
Various rt2x00 devices support hardware encryption.

Most of them require the IV/EIV to be generated by mac80211,
but require it to be provided seperately instead of within
the frame itself. This means that rt2x00lib should extract
the data from the frame and place it in the frame descriptor.
During RX the IV/EIV is provided in the descriptor by the
hardware which means that it should be inserted into the
frame by rt2x00lib.

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: Fix access permissions on debugfs files</title>
<updated>2008-08-01T19:31:34+00:00</updated>
<author>
<name>Ivo van Doorn</name>
<email>ivdoorn@gmail.com</email>
</author>
<published>2008-07-27T13:06:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=d2b690714cd7d328561bfb9bf941edd6a3316a85'/>
<id>d2b690714cd7d328561bfb9bf941edd6a3316a85</id>
<content type='text'>
Although most rt2x00 debugfs files don't contain
information which could compromise network security,
it is better to set the access permissions to root only.

This will be required when HW crypto is implemented,
because it could be possible to read the HW key from
the registers.

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>
Although most rt2x00 debugfs files don't contain
information which could compromise network security,
it is better to set the access permissions to root only.

This will be required when HW crypto is implemented,
because it could be possible to read the HW key from
the registers.

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: Cleanup struct skb_frame_desc.</title>
<updated>2008-06-14T16:17:56+00:00</updated>
<author>
<name>Gertjan van Wingerde</name>
<email>gwingerde@wingerd.gvw.nl</email>
</author>
<published>2008-06-06T20:54:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=d56d453a1dd85aff08fe6965f395049725fdb04e'/>
<id>d56d453a1dd85aff08fe6965f395049725fdb04e</id>
<content type='text'>
The data and data_len fields aren't really necessary in struct
skb_frame_desc, as they can be deduced from the skb itself.

Signed-off-by: Gertjan van Wingerde &lt;gwingerde@kpnplanet.nl&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>
The data and data_len fields aren't really necessary in struct
skb_frame_desc, as they can be deduced from the skb itself.

Signed-off-by: Gertjan van Wingerde &lt;gwingerde@kpnplanet.nl&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: trim skb_frame_desc to 32 bytes</title>
<updated>2008-05-22T01:47:30+00:00</updated>
<author>
<name>Ivo van Doorn</name>
<email>ivdoorn@gmail.com</email>
</author>
<published>2008-05-10T11:41:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=5a6e59991b82580c3ca00115603b85762ec76104'/>
<id>5a6e59991b82580c3ca00115603b85762ec76104</id>
<content type='text'>
Remove frame_type from skb_frame_desc and pass it
as argument to rt2x00debug_dump_frame().

Change data_len and desc_len to unsigned short
to save another 4 bytes in skb_frame_desc. Note that
this was the only location where the data_len and
desc_len was not yet treated as unsigned short.

This trim is required to help mac80211 with adding
the TX control and TX status informtation into the
skb-&gt;cb structure. When that happens, drivers will
have approximately 40 bytes left to use freely.

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>
Remove frame_type from skb_frame_desc and pass it
as argument to rt2x00debug_dump_frame().

Change data_len and desc_len to unsigned short
to save another 4 bytes in skb_frame_desc. Note that
this was the only location where the data_len and
desc_len was not yet treated as unsigned short.

This trim is required to help mac80211 with adding
the TX control and TX status informtation into the
skb-&gt;cb structure. When that happens, drivers will
have approximately 40 bytes left to use freely.

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: Upgrade queue-&gt;lock to use irqsave</title>
<updated>2008-03-13T20:02:35+00:00</updated>
<author>
<name>Ivo van Doorn</name>
<email>ivdoorn@gmail.com</email>
</author>
<published>2008-03-09T21:44:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=5f46c4d0537a870f9d9c1fd998aa9d6dac682595'/>
<id>5f46c4d0537a870f9d9c1fd998aa9d6dac682595</id>
<content type='text'>
The queue-&gt;lock could be grabbed from interrupt context,
which could lead to lockdep panic like this:

kernel: ======================================================
kernel: [ INFO: soft-safe -&gt; soft-unsafe lock order detected ]
kernel: 2.6.25-0.95.rc4.fc9 #1
kernel: ------------------------------------------------------
kernel: rt2500pci/1251 [HC0[0]:SC0[1]:HE1:SE0] is trying to acquire:
kernel:  (&amp;queue-&gt;lock){--..}, at: [&lt;ffffffff88213339&gt;] rt2x00queue_get_entry+0x5a/0x81 [rt2x00lib]
kernel:
kernel: and this task is already holding:
kernel:  (_xmit_IEEE80211){-...}, at: [&lt;ffffffff8122e9a3&gt;] __qdisc_run+0x84/0x1a9
kernel: which would create a new lock dependency:
kernel:  (_xmit_IEEE80211){-...} -&gt; (&amp;queue-&gt;lock){--..}
kernel:
kernel: but this new dependency connects a soft-irq-safe lock:
kernel:  (_xmit_ETHER){-+..}
kernel: ... which became soft-irq-safe at:
kernel:   [&lt;ffffffffffffffff&gt;] 0xffffffffffffffff
kernel:
kernel: to a soft-irq-unsafe lock:
kernel:  (&amp;queue-&gt;lock){--..}
kernel: ... which became soft-irq-unsafe at:
kernel: ...  [&lt;ffffffff810545a2&gt;] __lock_acquire+0x62d/0xd63
kernel:   [&lt;ffffffff81054d36&gt;] lock_acquire+0x5e/0x78
kernel:   [&lt;ffffffff812a1497&gt;] _spin_lock+0x26/0x53
kernel:   [&lt;ffffffff88212f98&gt;] rt2x00queue_reset+0x16/0x40 [rt2x00lib]
kernel:   [&lt;ffffffff88212fd4&gt;] rt2x00queue_alloc_entries+0x12/0xab [rt2x00lib]
kernel:   [&lt;ffffffff88213091&gt;] rt2x00queue_initialize+0x24/0xf2 [rt2x00lib]
kernel:   [&lt;ffffffff88212036&gt;] rt2x00lib_start+0x3b/0xd4 [rt2x00lib]
kernel:   [&lt;ffffffff88212609&gt;] rt2x00mac_start+0x18/0x1a [rt2x00lib]
kernel:   [&lt;ffffffff881b9a4b&gt;] ieee80211_open+0x1f3/0x46d [mac80211]
kernel:   [&lt;ffffffff8121d980&gt;] dev_open+0x4d/0x8b
kernel:   [&lt;ffffffff8121d41e&gt;] dev_change_flags+0xaf/0x172
kernel:   [&lt;ffffffff81224fc2&gt;] do_setlink+0x276/0x338
kernel:   [&lt;ffffffff81225198&gt;] rtnl_setlink+0x114/0x116
kernel:   [&lt;ffffffff812262fc&gt;] rtnetlink_rcv_msg+0x1d8/0x1f9
kernel:   [&lt;ffffffff8123649a&gt;] netlink_rcv_skb+0x3e/0xac
kernel:   [&lt;ffffffff8122611a&gt;] rtnetlink_rcv+0x29/0x33
kernel:   [&lt;ffffffff81235eed&gt;] netlink_unicast+0x1fe/0x26b
kernel:   [&lt;ffffffff81236224&gt;] netlink_sendmsg+0x2ca/0x2dd
kernel:   [&lt;ffffffff812103b3&gt;] sock_sendmsg+0xfd/0x120
kernel:   [&lt;ffffffff812105a8&gt;] sys_sendmsg+0x1d2/0x23c
kernel:   [&lt;ffffffff8100c1c7&gt;] tracesys+0xdc/0xe1
kernel:   [&lt;ffffffffffffffff&gt;] 0xffffffffffffffff

This can be fixed by using the irqsave/irqrestore versions
during the queue-&gt;lock handling.

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>
The queue-&gt;lock could be grabbed from interrupt context,
which could lead to lockdep panic like this:

kernel: ======================================================
kernel: [ INFO: soft-safe -&gt; soft-unsafe lock order detected ]
kernel: 2.6.25-0.95.rc4.fc9 #1
kernel: ------------------------------------------------------
kernel: rt2500pci/1251 [HC0[0]:SC0[1]:HE1:SE0] is trying to acquire:
kernel:  (&amp;queue-&gt;lock){--..}, at: [&lt;ffffffff88213339&gt;] rt2x00queue_get_entry+0x5a/0x81 [rt2x00lib]
kernel:
kernel: and this task is already holding:
kernel:  (_xmit_IEEE80211){-...}, at: [&lt;ffffffff8122e9a3&gt;] __qdisc_run+0x84/0x1a9
kernel: which would create a new lock dependency:
kernel:  (_xmit_IEEE80211){-...} -&gt; (&amp;queue-&gt;lock){--..}
kernel:
kernel: but this new dependency connects a soft-irq-safe lock:
kernel:  (_xmit_ETHER){-+..}
kernel: ... which became soft-irq-safe at:
kernel:   [&lt;ffffffffffffffff&gt;] 0xffffffffffffffff
kernel:
kernel: to a soft-irq-unsafe lock:
kernel:  (&amp;queue-&gt;lock){--..}
kernel: ... which became soft-irq-unsafe at:
kernel: ...  [&lt;ffffffff810545a2&gt;] __lock_acquire+0x62d/0xd63
kernel:   [&lt;ffffffff81054d36&gt;] lock_acquire+0x5e/0x78
kernel:   [&lt;ffffffff812a1497&gt;] _spin_lock+0x26/0x53
kernel:   [&lt;ffffffff88212f98&gt;] rt2x00queue_reset+0x16/0x40 [rt2x00lib]
kernel:   [&lt;ffffffff88212fd4&gt;] rt2x00queue_alloc_entries+0x12/0xab [rt2x00lib]
kernel:   [&lt;ffffffff88213091&gt;] rt2x00queue_initialize+0x24/0xf2 [rt2x00lib]
kernel:   [&lt;ffffffff88212036&gt;] rt2x00lib_start+0x3b/0xd4 [rt2x00lib]
kernel:   [&lt;ffffffff88212609&gt;] rt2x00mac_start+0x18/0x1a [rt2x00lib]
kernel:   [&lt;ffffffff881b9a4b&gt;] ieee80211_open+0x1f3/0x46d [mac80211]
kernel:   [&lt;ffffffff8121d980&gt;] dev_open+0x4d/0x8b
kernel:   [&lt;ffffffff8121d41e&gt;] dev_change_flags+0xaf/0x172
kernel:   [&lt;ffffffff81224fc2&gt;] do_setlink+0x276/0x338
kernel:   [&lt;ffffffff81225198&gt;] rtnl_setlink+0x114/0x116
kernel:   [&lt;ffffffff812262fc&gt;] rtnetlink_rcv_msg+0x1d8/0x1f9
kernel:   [&lt;ffffffff8123649a&gt;] netlink_rcv_skb+0x3e/0xac
kernel:   [&lt;ffffffff8122611a&gt;] rtnetlink_rcv+0x29/0x33
kernel:   [&lt;ffffffff81235eed&gt;] netlink_unicast+0x1fe/0x26b
kernel:   [&lt;ffffffff81236224&gt;] netlink_sendmsg+0x2ca/0x2dd
kernel:   [&lt;ffffffff812103b3&gt;] sock_sendmsg+0xfd/0x120
kernel:   [&lt;ffffffff812105a8&gt;] sys_sendmsg+0x1d2/0x23c
kernel:   [&lt;ffffffff8100c1c7&gt;] tracesys+0xdc/0xe1
kernel:   [&lt;ffffffffffffffff&gt;] 0xffffffffffffffff

This can be fixed by using the irqsave/irqrestore versions
during the queue-&gt;lock handling.

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 queue statistics to debugfs</title>
<updated>2008-02-29T20:37:20+00:00</updated>
<author>
<name>Ivo van Doorn</name>
<email>ivdoorn@gmail.com</email>
</author>
<published>2008-02-10T21:50:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=68598d294b6bc1ecc418359994234cb43f4635ad'/>
<id>68598d294b6bc1ecc418359994234cb43f4635ad</id>
<content type='text'>
Rename "frame" folder to "queue" folder,
add extra file to this folder which contains
statistics about all hardware queues. This will
help debugging and spotting problems in the
queue indexing system.

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>
Rename "frame" folder to "queue" folder,
add extra file to this folder which contains
statistics about all hardware queues. This will
help debugging and spotting problems in the
queue indexing system.

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: Queue handling overhaul</title>
<updated>2008-02-29T20:19:27+00:00</updated>
<author>
<name>Ivo van Doorn</name>
<email>IvDoorn@gmail.com</email>
</author>
<published>2008-02-05T21:42:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=181d6902b6bad978d157e69479c95cc0ff213a76'/>
<id>181d6902b6bad978d157e69479c95cc0ff213a76</id>
<content type='text'>
This introduces a big queue handling overhaul, this also
renames "ring" to "queues".

Move queue handling into rt2x00queue.c and the matching header,
use Kerneldoc to improve rt2x00 library documentation.

Access to the queues is now protected under a spinlock, this
to prevent race conditions which could corrupt the indexing
system of the queue.

Each queue entry allocates x bytes for driver/device specific data,
this cleans up the queue structure significantly and improves
code readability.

rt2500usb no longer needs 2 entries in the beacon queue to correctly
send out the guardian byte. This is now handled in the entry specific
structure.

rt61 and rt73 now use the correct descriptor size for beacon frames,
since this data is written into the registers not the entire TXD
descriptor was used but instead of a subset of it named TXINFO.

Finally this also fixes numerous other bugs related to incorrect
beacon handling or beacon related code.

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 introduces a big queue handling overhaul, this also
renames "ring" to "queues".

Move queue handling into rt2x00queue.c and the matching header,
use Kerneldoc to improve rt2x00 library documentation.

Access to the queues is now protected under a spinlock, this
to prevent race conditions which could corrupt the indexing
system of the queue.

Each queue entry allocates x bytes for driver/device specific data,
this cleans up the queue structure significantly and improves
code readability.

rt2500usb no longer needs 2 entries in the beacon queue to correctly
send out the guardian byte. This is now handled in the entry specific
structure.

rt61 and rt73 now use the correct descriptor size for beacon frames,
since this data is written into the registers not the entire TXD
descriptor was used but instead of a subset of it named TXINFO.

Finally this also fixes numerous other bugs related to incorrect
beacon handling or beacon related code.

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 notice</title>
<updated>2008-02-29T20:19:22+00:00</updated>
<author>
<name>Ivo van Doorn</name>
<email>ivdoorn@gmail.com</email>
</author>
<published>2008-02-03T14:42:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=811aa9cad1bd927999888ab56ed9592519d2fef6'/>
<id>811aa9cad1bd927999888ab56ed9592519d2fef6</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: Store queue idx and entry idx in data_ring and data_entry</title>
<updated>2008-01-28T23:09:24+00:00</updated>
<author>
<name>Ivo van Doorn</name>
<email>ivdoorn@gmail.com</email>
</author>
<published>2008-01-06T22:39:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=042671040db95a896c5ca960b9b656692a787892'/>
<id>042671040db95a896c5ca960b9b656692a787892</id>
<content type='text'>
Store the queue idx inside structure data_ring
Store the entry idx inside structure data_entry
This saves us a few calls to ARRAY_INDEX() which is now unused.

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>
Store the queue idx inside structure data_ring
Store the entry idx inside structure data_entry
This saves us a few calls to ARRAY_INDEX() which is now unused.

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: Fix chipset debugfs file</title>
<updated>2008-01-28T23:09:21+00:00</updated>
<author>
<name>Ivo van Doorn</name>
<email>ivdoorn@gmail.com</email>
</author>
<published>2008-01-06T22:38:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=3e34c6dcb36bbd5294cae2654c32e24b9787da3a'/>
<id>3e34c6dcb36bbd5294cae2654c32e24b9787da3a</id>
<content type='text'>
Initialize blob-&gt;data before moving the data pointer
Initialize blob-&gt;size based on blob-&gt;data size

This fixes the empty chipset file in debugfs.

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>
Initialize blob-&gt;data before moving the data pointer
Initialize blob-&gt;size based on blob-&gt;data size

This fixes the empty chipset file in debugfs.

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>
