<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/net/wireless/scan.c, branch v2.6.32.31</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>cfg80211: don't get expired BSSes</title>
<updated>2010-08-10T17:20:43+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes.berg@intel.com</email>
</author>
<published>2010-07-13T08:55:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=001632030b5d98ac56c65416a884a90a33a40097'/>
<id>001632030b5d98ac56c65416a884a90a33a40097</id>
<content type='text'>
commit ccb6c1360f8dd43303c659db718e7e0b24175db5 upstream.

When kernel-internal users use cfg80211_get_bss()
to get a reference to a BSS struct, they may end
up getting one that would have been removed from
the list if there had been any userspace access
to the list. This leads to inconsistencies and
problems.

Fix it by making cfg80211_get_bss() ignore BSSes
that cfg80211_bss_expire() would remove.

Fixes http://bugzilla.intellinuxwireless.org/show_bug.cgi?id=2180

Reported-by: Jiajia Zheng &lt;jiajia.zheng@intel.com&gt;
Tested-by: Jiajia Zheng &lt;jiajia.zheng@intel.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit ccb6c1360f8dd43303c659db718e7e0b24175db5 upstream.

When kernel-internal users use cfg80211_get_bss()
to get a reference to a BSS struct, they may end
up getting one that would have been removed from
the list if there had been any userspace access
to the list. This leads to inconsistencies and
problems.

Fix it by making cfg80211_get_bss() ignore BSSes
that cfg80211_bss_expire() would remove.

Fixes http://bugzilla.intellinuxwireless.org/show_bug.cgi?id=2180

Reported-by: Jiajia Zheng &lt;jiajia.zheng@intel.com&gt;
Tested-by: Jiajia Zheng &lt;jiajia.zheng@intel.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>cfg80211: minimal error handling for wext-compat freq scanning</title>
<updated>2009-09-14T18:36:04+00:00</updated>
<author>
<name>Holger Schurig</name>
<email>hs4233@mail.mn-solutions.de</email>
</author>
<published>2009-09-11T08:13:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=8862dc5f25153a3c565a097220ed3de14ed72dfd'/>
<id>8862dc5f25153a3c565a097220ed3de14ed72dfd</id>
<content type='text'>
Signed-off-by: Holger Schurig &lt;hs4233@mail.mn-solutions.de&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: Holger Schurig &lt;hs4233@mail.mn-solutions.de&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>cfg80211: use cfg80211_wext_freq() for freq conversion</title>
<updated>2009-09-14T18:36:04+00:00</updated>
<author>
<name>Holger Schurig</name>
<email>h.schurig@mn-solutions.de</email>
</author>
<published>2009-09-11T08:13:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=a4e7b730f1c8c9179def7033a024183c58cf2538'/>
<id>a4e7b730f1c8c9179def7033a024183c58cf2538</id>
<content type='text'>
WEXT's "struct iw_freq" can also be used to handle a channel. This patch now
uses cfg80211_wext_freq() instead of hand-converting the frequency. That
allows user-space to specify channels as well, like with SIOCSIWFREQ.

Signed-off-by: Holger Schurig &lt;hs4233@mail.mn-solutions.de&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>
WEXT's "struct iw_freq" can also be used to handle a channel. This patch now
uses cfg80211_wext_freq() instead of hand-converting the frequency. That
allows user-space to specify channels as well, like with SIOCSIWFREQ.

Signed-off-by: Holger Schurig &lt;hs4233@mail.mn-solutions.de&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>cfg80211: allow scanning on specified frequencies when using wext-compatibility</title>
<updated>2009-09-09T15:25:27+00:00</updated>
<author>
<name>Holger Schurig</name>
<email>hs4233@mail.mn-solutions.de</email>
</author>
<published>2009-09-09T11:09:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=b2e3abdc708f8c0eff194af25362fdb239abe241'/>
<id>b2e3abdc708f8c0eff194af25362fdb239abe241</id>
<content type='text'>
Handles the case when SIOCSIWSCAN specified iw_scan_req.num_channels and
iw_scan_req.channels[].

Signed-off-by: Holger Schurig &lt;hs4233@mail.mn-solutions.de&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>
Handles the case when SIOCSIWSCAN specified iw_scan_req.num_channels and
iw_scan_req.channels[].

Signed-off-by: Holger Schurig &lt;hs4233@mail.mn-solutions.de&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>cfg80211: fix looping soft lockup in find_ie()</title>
<updated>2009-09-02T19:29:04+00:00</updated>
<author>
<name>Bob Copeland</name>
<email>me@bobcopeland.com</email>
</author>
<published>2009-09-01T22:12:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=fcc6cb0c13555e78c2d47257b6d1b5e59b0c419a'/>
<id>fcc6cb0c13555e78c2d47257b6d1b5e59b0c419a</id>
<content type='text'>
The find_ie() function uses a size_t for the len parameter, and
directly uses len as a loop variable.  If any received packets
are malformed, it is possible for the decrease of len to overflow,
and since the result is unsigned, the loop will not terminate.
Change it to a signed int so the loop conditional works for
negative values.

This fixes the following soft lockup:

[38573.102007] BUG: soft lockup - CPU#0 stuck for 61s! [phy0:2230]
[38573.102007] Modules linked in: aes_i586 aes_generic fuse af_packet ipt_REJECT xt_tcpudp nf_conntrack_ipv4 nf_defrag_ipv4 xt_state iptable_filter ip_tables x_tables acpi_cpufreq binfmt_misc dm_mirror dm_region_hash dm_log dm_multipath dm_mod kvm_intel kvm uinput i915 arc4 ecb drm snd_hda_codec_idt ath5k snd_hda_intel hid_apple mac80211 usbhid appletouch snd_hda_codec snd_pcm ath cfg80211 snd_timer i2c_algo_bit ohci1394 video snd processor ieee1394 rfkill ehci_hcd sg sky2 backlight snd_page_alloc uhci_hcd joydev output ac thermal button battery sr_mod applesmc cdrom input_polldev evdev unix [last unloaded: scsi_wait_scan]
[38573.102007] irq event stamp: 2547724535
[38573.102007] hardirqs last  enabled at (2547724534): [&lt;c1002ffc&gt;] restore_all_notrace+0x0/0x18
[38573.102007] hardirqs last disabled at (2547724535): [&lt;c10038f4&gt;] apic_timer_interrupt+0x28/0x34
[38573.102007] softirqs last  enabled at (92950144): [&lt;c103ab48&gt;] __do_softirq+0x108/0x210
[38573.102007] softirqs last disabled at (92950274): [&lt;c1348e74&gt;] _spin_lock_bh+0x14/0x80
[38573.102007]
[38573.102007] Pid: 2230, comm: phy0 Tainted: G        W  (2.6.31-rc7-wl #8) MacBook1,1
[38573.102007] EIP: 0060:[&lt;f8ea2d50&gt;] EFLAGS: 00010292 CPU: 0
[38573.102007] EIP is at cmp_ies+0x30/0x180 [cfg80211]
[38573.102007] EAX: 00000082 EBX: 00000000 ECX: ffffffc1 EDX: d8efd014
[38573.102007] ESI: ffffff7c EDI: 0000004d EBP: eee2dc50 ESP: eee2dc3c
[38573.102007]  DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068
[38573.102007] CR0: 8005003b CR2: d8efd014 CR3: 01694000 CR4: 000026d0
[38573.102007] DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000
[38573.102007] DR6: ffff0ff0 DR7: 00000400
[38573.102007] Call Trace:
[38573.102007]  [&lt;f8ea2f8d&gt;] cmp_bss+0xed/0x100 [cfg80211]
[38573.102007]  [&lt;f8ea33e4&gt;] cfg80211_bss_update+0x84/0x410 [cfg80211]
[38573.102007]  [&lt;f8ea3884&gt;] cfg80211_inform_bss_frame+0x114/0x180 [cfg80211]
[38573.102007]  [&lt;f97255ff&gt;] ieee80211_bss_info_update+0x4f/0x180 [mac80211]
[38573.102007]  [&lt;f972b118&gt;] ieee80211_rx_bss_info+0x88/0xf0 [mac80211]
[38573.102007]  [&lt;f9739297&gt;] ? ieee802_11_parse_elems+0x27/0x30 [mac80211]
[38573.102007]  [&lt;f972b224&gt;] ieee80211_rx_mgmt_probe_resp+0xa4/0x1c0 [mac80211]
[38573.102007]  [&lt;f972bc59&gt;] ieee80211_sta_rx_queued_mgmt+0x919/0xc50 [mac80211]
[38573.102007]  [&lt;c1009707&gt;] ? sched_clock+0x27/0xa0
[38573.102007]  [&lt;c1009707&gt;] ? sched_clock+0x27/0xa0
[38573.102007]  [&lt;c105ffd0&gt;] ? mark_held_locks+0x60/0x80
[38573.102007]  [&lt;c1348be5&gt;] ? _spin_unlock_irqrestore+0x55/0x70
[38573.102007]  [&lt;c134baa5&gt;] ? sub_preempt_count+0x85/0xc0
[38573.102007]  [&lt;c1348bce&gt;] ? _spin_unlock_irqrestore+0x3e/0x70
[38573.102007]  [&lt;c12c1c0f&gt;] ? skb_dequeue+0x4f/0x70
[38573.102007]  [&lt;f972c021&gt;] ieee80211_sta_work+0x91/0xb80 [mac80211]
[38573.102007]  [&lt;c1009707&gt;] ? sched_clock+0x27/0xa0
[38573.102007]  [&lt;c134baa5&gt;] ? sub_preempt_count+0x85/0xc0
[38573.102007]  [&lt;c10479af&gt;] worker_thread+0x18f/0x320
[38573.102007]  [&lt;c104794e&gt;] ? worker_thread+0x12e/0x320
[38573.102007]  [&lt;c1348be5&gt;] ? _spin_unlock_irqrestore+0x55/0x70
[38573.102007]  [&lt;f972bf90&gt;] ? ieee80211_sta_work+0x0/0xb80 [mac80211]
[38573.102007]  [&lt;c104cbb0&gt;] ? autoremove_wake_function+0x0/0x50
[38573.102007]  [&lt;c1047820&gt;] ? worker_thread+0x0/0x320
[38573.102007]  [&lt;c104c854&gt;] kthread+0x84/0x90
[38573.102007]  [&lt;c104c7d0&gt;] ? kthread+0x0/0x90
[38573.102007]  [&lt;c1003ab7&gt;] kernel_thread_helper+0x7/0x10

Cc: stable@kernel.org
Signed-off-by: Bob Copeland &lt;me@bobcopeland.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 find_ie() function uses a size_t for the len parameter, and
directly uses len as a loop variable.  If any received packets
are malformed, it is possible for the decrease of len to overflow,
and since the result is unsigned, the loop will not terminate.
Change it to a signed int so the loop conditional works for
negative values.

This fixes the following soft lockup:

[38573.102007] BUG: soft lockup - CPU#0 stuck for 61s! [phy0:2230]
[38573.102007] Modules linked in: aes_i586 aes_generic fuse af_packet ipt_REJECT xt_tcpudp nf_conntrack_ipv4 nf_defrag_ipv4 xt_state iptable_filter ip_tables x_tables acpi_cpufreq binfmt_misc dm_mirror dm_region_hash dm_log dm_multipath dm_mod kvm_intel kvm uinput i915 arc4 ecb drm snd_hda_codec_idt ath5k snd_hda_intel hid_apple mac80211 usbhid appletouch snd_hda_codec snd_pcm ath cfg80211 snd_timer i2c_algo_bit ohci1394 video snd processor ieee1394 rfkill ehci_hcd sg sky2 backlight snd_page_alloc uhci_hcd joydev output ac thermal button battery sr_mod applesmc cdrom input_polldev evdev unix [last unloaded: scsi_wait_scan]
[38573.102007] irq event stamp: 2547724535
[38573.102007] hardirqs last  enabled at (2547724534): [&lt;c1002ffc&gt;] restore_all_notrace+0x0/0x18
[38573.102007] hardirqs last disabled at (2547724535): [&lt;c10038f4&gt;] apic_timer_interrupt+0x28/0x34
[38573.102007] softirqs last  enabled at (92950144): [&lt;c103ab48&gt;] __do_softirq+0x108/0x210
[38573.102007] softirqs last disabled at (92950274): [&lt;c1348e74&gt;] _spin_lock_bh+0x14/0x80
[38573.102007]
[38573.102007] Pid: 2230, comm: phy0 Tainted: G        W  (2.6.31-rc7-wl #8) MacBook1,1
[38573.102007] EIP: 0060:[&lt;f8ea2d50&gt;] EFLAGS: 00010292 CPU: 0
[38573.102007] EIP is at cmp_ies+0x30/0x180 [cfg80211]
[38573.102007] EAX: 00000082 EBX: 00000000 ECX: ffffffc1 EDX: d8efd014
[38573.102007] ESI: ffffff7c EDI: 0000004d EBP: eee2dc50 ESP: eee2dc3c
[38573.102007]  DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068
[38573.102007] CR0: 8005003b CR2: d8efd014 CR3: 01694000 CR4: 000026d0
[38573.102007] DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000
[38573.102007] DR6: ffff0ff0 DR7: 00000400
[38573.102007] Call Trace:
[38573.102007]  [&lt;f8ea2f8d&gt;] cmp_bss+0xed/0x100 [cfg80211]
[38573.102007]  [&lt;f8ea33e4&gt;] cfg80211_bss_update+0x84/0x410 [cfg80211]
[38573.102007]  [&lt;f8ea3884&gt;] cfg80211_inform_bss_frame+0x114/0x180 [cfg80211]
[38573.102007]  [&lt;f97255ff&gt;] ieee80211_bss_info_update+0x4f/0x180 [mac80211]
[38573.102007]  [&lt;f972b118&gt;] ieee80211_rx_bss_info+0x88/0xf0 [mac80211]
[38573.102007]  [&lt;f9739297&gt;] ? ieee802_11_parse_elems+0x27/0x30 [mac80211]
[38573.102007]  [&lt;f972b224&gt;] ieee80211_rx_mgmt_probe_resp+0xa4/0x1c0 [mac80211]
[38573.102007]  [&lt;f972bc59&gt;] ieee80211_sta_rx_queued_mgmt+0x919/0xc50 [mac80211]
[38573.102007]  [&lt;c1009707&gt;] ? sched_clock+0x27/0xa0
[38573.102007]  [&lt;c1009707&gt;] ? sched_clock+0x27/0xa0
[38573.102007]  [&lt;c105ffd0&gt;] ? mark_held_locks+0x60/0x80
[38573.102007]  [&lt;c1348be5&gt;] ? _spin_unlock_irqrestore+0x55/0x70
[38573.102007]  [&lt;c134baa5&gt;] ? sub_preempt_count+0x85/0xc0
[38573.102007]  [&lt;c1348bce&gt;] ? _spin_unlock_irqrestore+0x3e/0x70
[38573.102007]  [&lt;c12c1c0f&gt;] ? skb_dequeue+0x4f/0x70
[38573.102007]  [&lt;f972c021&gt;] ieee80211_sta_work+0x91/0xb80 [mac80211]
[38573.102007]  [&lt;c1009707&gt;] ? sched_clock+0x27/0xa0
[38573.102007]  [&lt;c134baa5&gt;] ? sub_preempt_count+0x85/0xc0
[38573.102007]  [&lt;c10479af&gt;] worker_thread+0x18f/0x320
[38573.102007]  [&lt;c104794e&gt;] ? worker_thread+0x12e/0x320
[38573.102007]  [&lt;c1348be5&gt;] ? _spin_unlock_irqrestore+0x55/0x70
[38573.102007]  [&lt;f972bf90&gt;] ? ieee80211_sta_work+0x0/0xb80 [mac80211]
[38573.102007]  [&lt;c104cbb0&gt;] ? autoremove_wake_function+0x0/0x50
[38573.102007]  [&lt;c1047820&gt;] ? worker_thread+0x0/0x320
[38573.102007]  [&lt;c104c854&gt;] kthread+0x84/0x90
[38573.102007]  [&lt;c104c7d0&gt;] ? kthread+0x0/0x90
[38573.102007]  [&lt;c1003ab7&gt;] kernel_thread_helper+0x7/0x10

Cc: stable@kernel.org
Signed-off-by: Bob Copeland &lt;me@bobcopeland.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>cfg80211: check lost scans later, fix bug</title>
<updated>2009-08-28T18:40:25+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes@sipsolutions.net</email>
</author>
<published>2009-08-20T19:36:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=01a0ac417ce9b4f1216a266f2fd454cffefc5aee'/>
<id>01a0ac417ce9b4f1216a266f2fd454cffefc5aee</id>
<content type='text'>
When we lose a scan, cfg80211 tries to clean up after
the driver. However, it currently does this too early,
it does this in GOING_DOWN already instead of DOWN, so
it may happen with mac80211. Besides fixing this, also
make it more robust by leaking the scan request so if
the driver later actually finishes the scan, it won't
crash. Also check in ___cfg80211_scan_done whether a
scan request is still pending and exit if not.

Reported-by: Felix Fietkau &lt;nbd@openwrt.org&gt;
Signed-off-by: Johannes Berg &lt;johannes@sipsolutions.net&gt;
Tested-by: Felix Fietkau &lt;nbd@openwrt.org&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>
When we lose a scan, cfg80211 tries to clean up after
the driver. However, it currently does this too early,
it does this in GOING_DOWN already instead of DOWN, so
it may happen with mac80211. Besides fixing this, also
make it more robust by leaking the scan request so if
the driver later actually finishes the scan, it won't
crash. Also check in ___cfg80211_scan_done whether a
scan request is still pending and exit if not.

Reported-by: Felix Fietkau &lt;nbd@openwrt.org&gt;
Signed-off-by: Johannes Berg &lt;johannes@sipsolutions.net&gt;
Tested-by: Felix Fietkau &lt;nbd@openwrt.org&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>cfg80211: check for and abort dangling scan requests</title>
<updated>2009-08-14T13:14:07+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes@sipsolutions.net</email>
</author>
<published>2009-08-12T20:21:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=36e6fea84905512ea776707e82b5b435220efc17'/>
<id>36e6fea84905512ea776707e82b5b435220efc17</id>
<content type='text'>
If you trigger a scan request on an interface and then
take it down, or rmmod the module or unplug the device
the driver might "forget" to cancel the scan request.
That is a bug in the driver, but the current behaviour
is that we just hang endlessly waiting for the netdev
refcount to become 0 which it never will. To improve
robustness, check for this situation in cfg80211, warn
about it and clean up behind the driver. I don't just
clean up silently because it's likely that the driver
also has some internal state it has now leaked.

Additionally, this fixes a locking bug, clearing the
scan_req pointer should be done under the rdev lock.

Finally, we also need to _wait_ for the scan work and
not just abort it since it might be pending and wanting
to do a cleanup.

Signed-off-by: Johannes Berg &lt;johannes@sipsolutions.net&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>
If you trigger a scan request on an interface and then
take it down, or rmmod the module or unplug the device
the driver might "forget" to cancel the scan request.
That is a bug in the driver, but the current behaviour
is that we just hang endlessly waiting for the netdev
refcount to become 0 which it never will. To improve
robustness, check for this situation in cfg80211, warn
about it and clean up behind the driver. I don't just
clean up silently because it's likely that the driver
also has some internal state it has now leaked.

Additionally, this fixes a locking bug, clearing the
scan_req pointer should be done under the rdev lock.

Finally, we also need to _wait_ for the scan work and
not just abort it since it might be pending and wanting
to do a cleanup.

Signed-off-by: Johannes Berg &lt;johannes@sipsolutions.net&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>cfg80211: fix alignment problem in scan request</title>
<updated>2009-08-14T13:13:44+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes@sipsolutions.net</email>
</author>
<published>2009-08-07T15:54:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=5ba63533bbf653631faab60f6988506160ec6ba4'/>
<id>5ba63533bbf653631faab60f6988506160ec6ba4</id>
<content type='text'>
The memory layout for scan requests was rather wrong,
we put the scan SSIDs before the channels which could
lead to the channel pointers being unaligned in memory.
It turns out that using a pointer to the channel array
isn't necessary anyway since we can embed a zero-length
array into the struct.

Signed-off-by: Johannes Berg &lt;johannes@sipsolutions.net&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 memory layout for scan requests was rather wrong,
we put the scan SSIDs before the channels which could
lead to the channel pointers being unaligned in memory.
It turns out that using a pointer to the channel array
isn't necessary anyway since we can embed a zero-length
array into the struct.

Signed-off-by: Johannes Berg &lt;johannes@sipsolutions.net&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>nl80211: add generation number to all dumps</title>
<updated>2009-08-14T13:13:43+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes@sipsolutions.net</email>
</author>
<published>2009-08-07T14:17:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=f5ea9120be2e5d5c846243416cfdce01d02f5836'/>
<id>f5ea9120be2e5d5c846243416cfdce01d02f5836</id>
<content type='text'>
In order for userspace to be able to figure out whether
it obtained a consistent snapshot of data or not when
using netlink dumps, we need to have a generation number
in each dump message that indicates whether the list has
changed or not -- its value is arbitrary.

This patch adds such a number to all dumps, this needs
some mac80211 involvement to keep track of a generation
number to start with when adding/removing mesh paths or
stations.

The wiphy and netdev lists can be fully handled within
cfg80211, of course, but generation numbers need to be
stored there as well.

Signed-off-by: Johannes Berg &lt;johannes@sipsolutions.net&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 order for userspace to be able to figure out whether
it obtained a consistent snapshot of data or not when
using netlink dumps, we need to have a generation number
in each dump message that indicates whether the list has
changed or not -- its value is arbitrary.

This patch adds such a number to all dumps, this needs
some mac80211 involvement to keep track of a generation
number to start with when adding/removing mesh paths or
stations.

The wiphy and netdev lists can be fully handled within
cfg80211, of course, but generation numbers need to be
stored there as well.

Signed-off-by: Johannes Berg &lt;johannes@sipsolutions.net&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6</title>
<updated>2009-08-13T00:44:53+00:00</updated>
<author>
<name>David S. Miller</name>
<email>davem@davemloft.net</email>
</author>
<published>2009-08-13T00:44:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=aa11d958d1a6572eda08214d7c6a735804fe48a5'/>
<id>aa11d958d1a6572eda08214d7c6a735804fe48a5</id>
<content type='text'>
Conflicts:
	arch/microblaze/include/asm/socket.h
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Conflicts:
	arch/microblaze/include/asm/socket.h
</pre>
</div>
</content>
</entry>
</feed>
