<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/net/wireless/core.c, branch v2.6.36</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<entry>
<title>wireless: register wiphy rfkill w/o holding cfg80211_mutex</title>
<updated>2010-08-31T18:48:47+00:00</updated>
<author>
<name>John W. Linville</name>
<email>linville@tuxdriver.com</email>
</author>
<published>2010-08-30T21:36:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=c3d34d5d9654ec9c2510f9341bfb1030b8f029d1'/>
<id>c3d34d5d9654ec9c2510f9341bfb1030b8f029d1</id>
<content type='text'>
Otherwise lockdep complains...

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

[ INFO: possible circular locking dependency detected ]
2.6.36-rc2-git4 #12
-------------------------------------------------------
kworker/0:3/3630 is trying to acquire lock:
 (rtnl_mutex){+.+.+.}, at: [&lt;ffffffff813396c7&gt;] rtnl_lock+0x12/0x14

but task is already holding lock:
 (rfkill_global_mutex){+.+.+.}, at: [&lt;ffffffffa014b129&gt;]
rfkill_switch_all+0x24/0x49 [rfkill]

which lock already depends on the new lock.

the existing dependency chain (in reverse order) is:

-&gt; #2 (rfkill_global_mutex){+.+.+.}:
       [&lt;ffffffff81079ad7&gt;] lock_acquire+0x120/0x15b
       [&lt;ffffffff813ae869&gt;] __mutex_lock_common+0x54/0x52e
       [&lt;ffffffff813aede9&gt;] mutex_lock_nested+0x34/0x39
       [&lt;ffffffffa014b4ab&gt;] rfkill_register+0x2b/0x29c [rfkill]
       [&lt;ffffffffa0185ba0&gt;] wiphy_register+0x1ae/0x270 [cfg80211]
       [&lt;ffffffffa0206f01&gt;] ieee80211_register_hw+0x1b4/0x3cf [mac80211]
       [&lt;ffffffffa0292e98&gt;] iwl_ucode_callback+0x9e9/0xae3 [iwlagn]
       [&lt;ffffffff812d3e9d&gt;] request_firmware_work_func+0x54/0x6f
       [&lt;ffffffff81065d15&gt;] kthread+0x8c/0x94
       [&lt;ffffffff8100ac24&gt;] kernel_thread_helper+0x4/0x10

-&gt; #1 (cfg80211_mutex){+.+.+.}:
       [&lt;ffffffff81079ad7&gt;] lock_acquire+0x120/0x15b
       [&lt;ffffffff813ae869&gt;] __mutex_lock_common+0x54/0x52e
       [&lt;ffffffff813aede9&gt;] mutex_lock_nested+0x34/0x39
       [&lt;ffffffffa018605e&gt;] cfg80211_get_dev_from_ifindex+0x1b/0x7c [cfg80211]
       [&lt;ffffffffa0189f36&gt;] cfg80211_wext_giwscan+0x58/0x990 [cfg80211]
       [&lt;ffffffff8139a3ce&gt;] ioctl_standard_iw_point+0x1a8/0x272
       [&lt;ffffffff8139a529&gt;] ioctl_standard_call+0x91/0xa7
       [&lt;ffffffff8139a687&gt;] T.723+0xbd/0x12c
       [&lt;ffffffff8139a727&gt;] wext_handle_ioctl+0x31/0x6d
       [&lt;ffffffff8133014e&gt;] dev_ioctl+0x63d/0x67a
       [&lt;ffffffff8131afd9&gt;] sock_ioctl+0x48/0x21d
       [&lt;ffffffff81102abd&gt;] do_vfs_ioctl+0x4ba/0x509
       [&lt;ffffffff81102b5d&gt;] sys_ioctl+0x51/0x74
       [&lt;ffffffff81009e02&gt;] system_call_fastpath+0x16/0x1b

-&gt; #0 (rtnl_mutex){+.+.+.}:
       [&lt;ffffffff810796b0&gt;] __lock_acquire+0xa93/0xd9a
       [&lt;ffffffff81079ad7&gt;] lock_acquire+0x120/0x15b
       [&lt;ffffffff813ae869&gt;] __mutex_lock_common+0x54/0x52e
       [&lt;ffffffff813aede9&gt;] mutex_lock_nested+0x34/0x39
       [&lt;ffffffff813396c7&gt;] rtnl_lock+0x12/0x14
       [&lt;ffffffffa0185cb5&gt;] cfg80211_rfkill_set_block+0x1a/0x7b [cfg80211]
       [&lt;ffffffffa014aed0&gt;] rfkill_set_block+0x80/0xd5 [rfkill]
       [&lt;ffffffffa014b07e&gt;] __rfkill_switch_all+0x3f/0x6f [rfkill]
       [&lt;ffffffffa014b13d&gt;] rfkill_switch_all+0x38/0x49 [rfkill]
       [&lt;ffffffffa014b821&gt;] rfkill_op_handler+0x105/0x136 [rfkill]
       [&lt;ffffffff81060708&gt;] process_one_work+0x248/0x403
       [&lt;ffffffff81062620&gt;] worker_thread+0x139/0x214
       [&lt;ffffffff81065d15&gt;] kthread+0x8c/0x94
       [&lt;ffffffff8100ac24&gt;] kernel_thread_helper+0x4/0x10

Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Acked-by: Johannes Berg &lt;johannes@sipsolutions.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Otherwise lockdep complains...

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

[ INFO: possible circular locking dependency detected ]
2.6.36-rc2-git4 #12
-------------------------------------------------------
kworker/0:3/3630 is trying to acquire lock:
 (rtnl_mutex){+.+.+.}, at: [&lt;ffffffff813396c7&gt;] rtnl_lock+0x12/0x14

but task is already holding lock:
 (rfkill_global_mutex){+.+.+.}, at: [&lt;ffffffffa014b129&gt;]
rfkill_switch_all+0x24/0x49 [rfkill]

which lock already depends on the new lock.

the existing dependency chain (in reverse order) is:

-&gt; #2 (rfkill_global_mutex){+.+.+.}:
       [&lt;ffffffff81079ad7&gt;] lock_acquire+0x120/0x15b
       [&lt;ffffffff813ae869&gt;] __mutex_lock_common+0x54/0x52e
       [&lt;ffffffff813aede9&gt;] mutex_lock_nested+0x34/0x39
       [&lt;ffffffffa014b4ab&gt;] rfkill_register+0x2b/0x29c [rfkill]
       [&lt;ffffffffa0185ba0&gt;] wiphy_register+0x1ae/0x270 [cfg80211]
       [&lt;ffffffffa0206f01&gt;] ieee80211_register_hw+0x1b4/0x3cf [mac80211]
       [&lt;ffffffffa0292e98&gt;] iwl_ucode_callback+0x9e9/0xae3 [iwlagn]
       [&lt;ffffffff812d3e9d&gt;] request_firmware_work_func+0x54/0x6f
       [&lt;ffffffff81065d15&gt;] kthread+0x8c/0x94
       [&lt;ffffffff8100ac24&gt;] kernel_thread_helper+0x4/0x10

-&gt; #1 (cfg80211_mutex){+.+.+.}:
       [&lt;ffffffff81079ad7&gt;] lock_acquire+0x120/0x15b
       [&lt;ffffffff813ae869&gt;] __mutex_lock_common+0x54/0x52e
       [&lt;ffffffff813aede9&gt;] mutex_lock_nested+0x34/0x39
       [&lt;ffffffffa018605e&gt;] cfg80211_get_dev_from_ifindex+0x1b/0x7c [cfg80211]
       [&lt;ffffffffa0189f36&gt;] cfg80211_wext_giwscan+0x58/0x990 [cfg80211]
       [&lt;ffffffff8139a3ce&gt;] ioctl_standard_iw_point+0x1a8/0x272
       [&lt;ffffffff8139a529&gt;] ioctl_standard_call+0x91/0xa7
       [&lt;ffffffff8139a687&gt;] T.723+0xbd/0x12c
       [&lt;ffffffff8139a727&gt;] wext_handle_ioctl+0x31/0x6d
       [&lt;ffffffff8133014e&gt;] dev_ioctl+0x63d/0x67a
       [&lt;ffffffff8131afd9&gt;] sock_ioctl+0x48/0x21d
       [&lt;ffffffff81102abd&gt;] do_vfs_ioctl+0x4ba/0x509
       [&lt;ffffffff81102b5d&gt;] sys_ioctl+0x51/0x74
       [&lt;ffffffff81009e02&gt;] system_call_fastpath+0x16/0x1b

-&gt; #0 (rtnl_mutex){+.+.+.}:
       [&lt;ffffffff810796b0&gt;] __lock_acquire+0xa93/0xd9a
       [&lt;ffffffff81079ad7&gt;] lock_acquire+0x120/0x15b
       [&lt;ffffffff813ae869&gt;] __mutex_lock_common+0x54/0x52e
       [&lt;ffffffff813aede9&gt;] mutex_lock_nested+0x34/0x39
       [&lt;ffffffff813396c7&gt;] rtnl_lock+0x12/0x14
       [&lt;ffffffffa0185cb5&gt;] cfg80211_rfkill_set_block+0x1a/0x7b [cfg80211]
       [&lt;ffffffffa014aed0&gt;] rfkill_set_block+0x80/0xd5 [rfkill]
       [&lt;ffffffffa014b07e&gt;] __rfkill_switch_all+0x3f/0x6f [rfkill]
       [&lt;ffffffffa014b13d&gt;] rfkill_switch_all+0x38/0x49 [rfkill]
       [&lt;ffffffffa014b821&gt;] rfkill_op_handler+0x105/0x136 [rfkill]
       [&lt;ffffffff81060708&gt;] process_one_work+0x248/0x403
       [&lt;ffffffff81062620&gt;] worker_thread+0x139/0x214
       [&lt;ffffffff81065d15&gt;] kthread+0x8c/0x94
       [&lt;ffffffff8100ac24&gt;] kernel_thread_helper+0x4/0x10

Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Acked-by: Johannes Berg &lt;johannes@sipsolutions.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>wireless: Convert wiphy_debug macro to function</title>
<updated>2010-07-27T19:14:13+00:00</updated>
<author>
<name>Joe Perches</name>
<email>joe@perches.com</email>
</author>
<published>2010-07-26T21:40:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=073730d771d97bb5bbef080bd5d6d0a5af7cba7d'/>
<id>073730d771d97bb5bbef080bd5d6d0a5af7cba7d</id>
<content type='text'>
Save a few bytes of text

(allyesconfig)
$ size drivers/net/wireless/built-in.o*
   text	   data	    bss	    dec	    hex	filename
3924568	 100548	 871056	4896172	 4ab5ac	drivers/net/wireless/built-in.o.new
3926520	 100548	 871464	4898532	 4abee4	drivers/net/wireless/built-in.o.old

$ size net/wireless/core.o*
   text	   data	    bss	    dec	    hex	filename
  12843	    216	   3768	  16827	   41bb	net/wireless/core.o.new
  12328	    216	   3656	  16200	   3f48	net/wireless/core.o

Signed-off-by: Joe Perches &lt;joe@perches.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>
Save a few bytes of text

(allyesconfig)
$ size drivers/net/wireless/built-in.o*
   text	   data	    bss	    dec	    hex	filename
3924568	 100548	 871056	4896172	 4ab5ac	drivers/net/wireless/built-in.o.new
3926520	 100548	 871464	4898532	 4abee4	drivers/net/wireless/built-in.o.old

$ size net/wireless/core.o*
   text	   data	    bss	    dec	    hex	filename
  12843	    216	   3768	  16827	   41bb	net/wireless/core.o.new
  12328	    216	   3656	  16200	   3f48	net/wireless/core.o

Signed-off-by: Joe Perches &lt;joe@perches.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>cfg80211: fix race between sysfs and cfg80211</title>
<updated>2010-07-21T19:13:42+00:00</updated>
<author>
<name>Maxime Bizon</name>
<email>mbizon@freebox.fr</email>
</author>
<published>2010-07-21T15:21:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=5a652052fedbd7869572c757dd2ffc2ed420c69d'/>
<id>5a652052fedbd7869572c757dd2ffc2ed420c69d</id>
<content type='text'>
device_add() is called before adding the phy to the cfg80211 device
list.

So if a userspace program uses sysfs uevents to detect new phy
devices, and queries nl80211 to get phy info, it can get ENODEV even
though the phy exists in sysfs.

An easy workaround is to hold the cfg80211 mutex until the phy is
present in sysfs/cfg80211/debugfs.

Signed-off-by: Maxime Bizon &lt;mbizon@freebox.fr&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>
device_add() is called before adding the phy to the cfg80211 device
list.

So if a userspace program uses sysfs uevents to detect new phy
devices, and queries nl80211 to get phy info, it can get ENODEV even
though the phy exists in sysfs.

An easy workaround is to hold the cfg80211 mutex until the phy is
present in sysfs/cfg80211/debugfs.

Signed-off-by: Maxime Bizon &lt;mbizon@freebox.fr&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>cfg80211: move cfg80211_exit to .exit.text</title>
<updated>2010-06-18T19:11:13+00:00</updated>
<author>
<name>Uwe Kleine-König</name>
<email>u.kleine-koenig@pengutronix.de</email>
</author>
<published>2010-06-18T07:38:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=f884e3879b7a098565e963e771cb342b67b1f5cd'/>
<id>f884e3879b7a098565e963e771cb342b67b1f5cd</id>
<content type='text'>
cfg80211_exit is only used as module_exit function, so it can go to
.exit.text saving a few bytes when CONFIG_CFG80211=y.

Signed-off-by: Uwe Kleine-König &lt;u.kleine-koenig@pengutronix.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>
cfg80211_exit is only used as module_exit function, so it can go to
.exit.text saving a few bytes when CONFIG_CFG80211=y.

Signed-off-by: Uwe Kleine-König &lt;u.kleine-koenig@pengutronix.de&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 into for-davem</title>
<updated>2010-05-05T20:14:16+00:00</updated>
<author>
<name>John W. Linville</name>
<email>linville@tuxdriver.com</email>
</author>
<published>2010-05-05T20:14:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=83163244f845c296a118ce85c653872dbff6abfe'/>
<id>83163244f845c296a118ce85c653872dbff6abfe</id>
<content type='text'>
Conflicts:
	drivers/net/wireless/libertas_tf/cmd.c
	drivers/net/wireless/libertas_tf/main.c
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Conflicts:
	drivers/net/wireless/libertas_tf/cmd.c
	drivers/net/wireless/libertas_tf/main.c
</pre>
</div>
</content>
</entry>
<entry>
<title>cfg80211: Remove default dynamic PS timeout value</title>
<updated>2010-04-27T20:09:22+00:00</updated>
<author>
<name>Juuso Oikarinen</name>
<email>juuso.oikarinen@nokia.com</email>
</author>
<published>2010-04-27T09:47:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=9043f3b89abebfbfe4b8d64c7b71b9ac0b9eaa0b'/>
<id>9043f3b89abebfbfe4b8d64c7b71b9ac0b9eaa0b</id>
<content type='text'>
Now that the mac80211 is choosing dynamic ps timeouts based on the ps-qos
network latency configuration, configure a default value of -1 as the dynamic
ps timeout in cfg80211. This value allows the mac80211 to determine the value
to be used.

Signed-off-by: Juuso Oikarinen &lt;juuso.oikarinen@nokia.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>
Now that the mac80211 is choosing dynamic ps timeouts based on the ps-qos
network latency configuration, configure a default value of -1 as the dynamic
ps timeout in cfg80211. This value allows the mac80211 to determine the value
to be used.

Signed-off-by: Juuso Oikarinen &lt;juuso.oikarinen@nokia.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h</title>
<updated>2010-03-30T13:02:32+00:00</updated>
<author>
<name>Tejun Heo</name>
<email>tj@kernel.org</email>
</author>
<published>2010-03-24T08:04:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=5a0e3ad6af8660be21ca98a971cd00f331318c05'/>
<id>5a0e3ad6af8660be21ca98a971cd00f331318c05</id>
<content type='text'>
percpu.h is included by sched.h and module.h and thus ends up being
included when building most .c files.  percpu.h includes slab.h which
in turn includes gfp.h making everything defined by the two files
universally available and complicating inclusion dependencies.

percpu.h -&gt; slab.h dependency is about to be removed.  Prepare for
this change by updating users of gfp and slab facilities include those
headers directly instead of assuming availability.  As this conversion
needs to touch large number of source files, the following script is
used as the basis of conversion.

  http://userweb.kernel.org/~tj/misc/slabh-sweep.py

The script does the followings.

* Scan files for gfp and slab usages and update includes such that
  only the necessary includes are there.  ie. if only gfp is used,
  gfp.h, if slab is used, slab.h.

* When the script inserts a new include, it looks at the include
  blocks and try to put the new include such that its order conforms
  to its surrounding.  It's put in the include block which contains
  core kernel includes, in the same order that the rest are ordered -
  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there
  doesn't seem to be any matching order.

* If the script can't find a place to put a new include (mostly
  because the file doesn't have fitting include block), it prints out
  an error message indicating which .h file needs to be added to the
  file.

The conversion was done in the following steps.

1. The initial automatic conversion of all .c files updated slightly
   over 4000 files, deleting around 700 includes and adding ~480 gfp.h
   and ~3000 slab.h inclusions.  The script emitted errors for ~400
   files.

2. Each error was manually checked.  Some didn't need the inclusion,
   some needed manual addition while adding it to implementation .h or
   embedding .c file was more appropriate for others.  This step added
   inclusions to around 150 files.

3. The script was run again and the output was compared to the edits
   from #2 to make sure no file was left behind.

4. Several build tests were done and a couple of problems were fixed.
   e.g. lib/decompress_*.c used malloc/free() wrappers around slab
   APIs requiring slab.h to be added manually.

5. The script was run on all .h files but without automatically
   editing them as sprinkling gfp.h and slab.h inclusions around .h
   files could easily lead to inclusion dependency hell.  Most gfp.h
   inclusion directives were ignored as stuff from gfp.h was usually
   wildly available and often used in preprocessor macros.  Each
   slab.h inclusion directive was examined and added manually as
   necessary.

6. percpu.h was updated not to include slab.h.

7. Build test were done on the following configurations and failures
   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my
   distributed build env didn't work with gcov compiles) and a few
   more options had to be turned off depending on archs to make things
   build (like ipr on powerpc/64 which failed due to missing writeq).

   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.
   * powerpc and powerpc64 SMP allmodconfig
   * sparc and sparc64 SMP allmodconfig
   * ia64 SMP allmodconfig
   * s390 SMP allmodconfig
   * alpha SMP allmodconfig
   * um on x86_64 SMP allmodconfig

8. percpu.h modifications were reverted so that it could be applied as
   a separate patch and serve as bisection point.

Given the fact that I had only a couple of failures from tests on step
6, I'm fairly confident about the coverage of this conversion patch.
If there is a breakage, it's likely to be something in one of the arch
headers which should be easily discoverable easily on most builds of
the specific arch.

Signed-off-by: Tejun Heo &lt;tj@kernel.org&gt;
Guess-its-ok-by: Christoph Lameter &lt;cl@linux-foundation.org&gt;
Cc: Ingo Molnar &lt;mingo@redhat.com&gt;
Cc: Lee Schermerhorn &lt;Lee.Schermerhorn@hp.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
percpu.h is included by sched.h and module.h and thus ends up being
included when building most .c files.  percpu.h includes slab.h which
in turn includes gfp.h making everything defined by the two files
universally available and complicating inclusion dependencies.

percpu.h -&gt; slab.h dependency is about to be removed.  Prepare for
this change by updating users of gfp and slab facilities include those
headers directly instead of assuming availability.  As this conversion
needs to touch large number of source files, the following script is
used as the basis of conversion.

  http://userweb.kernel.org/~tj/misc/slabh-sweep.py

The script does the followings.

* Scan files for gfp and slab usages and update includes such that
  only the necessary includes are there.  ie. if only gfp is used,
  gfp.h, if slab is used, slab.h.

* When the script inserts a new include, it looks at the include
  blocks and try to put the new include such that its order conforms
  to its surrounding.  It's put in the include block which contains
  core kernel includes, in the same order that the rest are ordered -
  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there
  doesn't seem to be any matching order.

* If the script can't find a place to put a new include (mostly
  because the file doesn't have fitting include block), it prints out
  an error message indicating which .h file needs to be added to the
  file.

The conversion was done in the following steps.

1. The initial automatic conversion of all .c files updated slightly
   over 4000 files, deleting around 700 includes and adding ~480 gfp.h
   and ~3000 slab.h inclusions.  The script emitted errors for ~400
   files.

2. Each error was manually checked.  Some didn't need the inclusion,
   some needed manual addition while adding it to implementation .h or
   embedding .c file was more appropriate for others.  This step added
   inclusions to around 150 files.

3. The script was run again and the output was compared to the edits
   from #2 to make sure no file was left behind.

4. Several build tests were done and a couple of problems were fixed.
   e.g. lib/decompress_*.c used malloc/free() wrappers around slab
   APIs requiring slab.h to be added manually.

5. The script was run on all .h files but without automatically
   editing them as sprinkling gfp.h and slab.h inclusions around .h
   files could easily lead to inclusion dependency hell.  Most gfp.h
   inclusion directives were ignored as stuff from gfp.h was usually
   wildly available and often used in preprocessor macros.  Each
   slab.h inclusion directive was examined and added manually as
   necessary.

6. percpu.h was updated not to include slab.h.

7. Build test were done on the following configurations and failures
   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my
   distributed build env didn't work with gcov compiles) and a few
   more options had to be turned off depending on archs to make things
   build (like ipr on powerpc/64 which failed due to missing writeq).

   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.
   * powerpc and powerpc64 SMP allmodconfig
   * sparc and sparc64 SMP allmodconfig
   * ia64 SMP allmodconfig
   * s390 SMP allmodconfig
   * alpha SMP allmodconfig
   * um on x86_64 SMP allmodconfig

8. percpu.h modifications were reverted so that it could be applied as
   a separate patch and serve as bisection point.

Given the fact that I had only a couple of failures from tests on step
6, I'm fairly confident about the coverage of this conversion patch.
If there is a breakage, it's likely to be something in one of the arch
headers which should be easily discoverable easily on most builds of
the specific arch.

Signed-off-by: Tejun Heo &lt;tj@kernel.org&gt;
Guess-its-ok-by: Christoph Lameter &lt;cl@linux-foundation.org&gt;
Cc: Ingo Molnar &lt;mingo@redhat.com&gt;
Cc: Lee Schermerhorn &lt;Lee.Schermerhorn@hp.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>nl80211: add power save commands</title>
<updated>2010-02-19T20:52:40+00:00</updated>
<author>
<name>Kalle Valo</name>
<email>kalle.valo@nokia.com</email>
</author>
<published>2010-02-17T15:58:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=ffb9eb3d8b450c22bbbc688c6b630141ac476fd9'/>
<id>ffb9eb3d8b450c22bbbc688c6b630141ac476fd9</id>
<content type='text'>
The most needed command from nl80211, which Wireless Extensions had,
is support for power save mode. Add a simple command to make it possible
to enable and disable power save via nl80211.

I was also planning about extending the interface, for example adding the
timeout value, but after thinking more about this I decided not to do it.
Basically there were three reasons:

Firstly, the parameters for power save are very much hardware dependent.
Trying to find a unified interface which would work with all hardware, and
still make sense to users, will be very difficult.

Secondly, IEEE 802.11 power save implementation in Linux is still in state
of flux. We have a long way to still to go and there is no way to predict
what kind of implementation we will have after few years. And because we
need to support nl80211 interface a long time, practically forever, adding
now parameters to nl80211 might create maintenance problems later on.

Third issue are the users. Power save parameters are mostly used for
debugging, so debugfs is better, more flexible, interface for this.
For example, wpa_supplicant currently doesn't configure anything related
to power save mode. It's better to strive that kernel can automatically
optimise the power save parameters, like with help of pm qos network
and other traffic parameters.

Later on, when we have better understanding of power save, we can extend
this command with more features, if there's a need for that.

Signed-off-by: Kalle Valo &lt;kalle.valo@nokia.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 most needed command from nl80211, which Wireless Extensions had,
is support for power save mode. Add a simple command to make it possible
to enable and disable power save via nl80211.

I was also planning about extending the interface, for example adding the
timeout value, but after thinking more about this I decided not to do it.
Basically there were three reasons:

Firstly, the parameters for power save are very much hardware dependent.
Trying to find a unified interface which would work with all hardware, and
still make sense to users, will be very difficult.

Secondly, IEEE 802.11 power save implementation in Linux is still in state
of flux. We have a long way to still to go and there is no way to predict
what kind of implementation we will have after few years. And because we
need to support nl80211 interface a long time, practically forever, adding
now parameters to nl80211 might create maintenance problems later on.

Third issue are the users. Power save parameters are mostly used for
debugging, so debugfs is better, more flexible, interface for this.
For example, wpa_supplicant currently doesn't configure anything related
to power save mode. It's better to strive that kernel can automatically
optimise the power save parameters, like with help of pm qos network
and other traffic parameters.

Later on, when we have better understanding of power save, we can extend
this command with more features, if there's a need for that.

Signed-off-by: Kalle Valo &lt;kalle.valo@nokia.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>cfg80211/mac80211: allow registering for and sending action frames</title>
<updated>2010-02-15T21:14:15+00:00</updated>
<author>
<name>Jouni Malinen</name>
<email>jouni.malinen@atheros.com</email>
</author>
<published>2010-02-15T10:53:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=026331c4d9b526561ea96f95fac4bfc52b69e316'/>
<id>026331c4d9b526561ea96f95fac4bfc52b69e316</id>
<content type='text'>
This implements a new command to register for action frames
that userspace wants to handle instead of the in-kernel
rejection. It is then responsible for rejecting ones that
it decided not to handle. There is no unregistration, but
the socket can be closed for that.

Frames that are not registered for will not be forwarded
to userspace and will be rejected by the kernel, the
cfg80211 API helps implementing that.

Additionally, this patch adds a new command that allows
doing action frame transmission from userspace. It can be
used either to exchange action frames on the current
operational channel (e.g., with the AP with which we are
currently associated) or to exchange off-channel Public
Action frames with the remain-on-channel command.

Signed-off-by: Jouni Malinen &lt;jouni.malinen@atheros.com&gt;
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>
This implements a new command to register for action frames
that userspace wants to handle instead of the in-kernel
rejection. It is then responsible for rejecting ones that
it decided not to handle. There is no unregistration, but
the socket can be closed for that.

Frames that are not registered for will not be forwarded
to userspace and will be rejected by the kernel, the
cfg80211 API helps implementing that.

Additionally, this patch adds a new command that allows
doing action frame transmission from userspace. It can be
used either to exchange action frames on the current
operational channel (e.g., with the AP with which we are
currently associated) or to exchange off-channel Public
Action frames with the remain-on-channel command.

Signed-off-by: Jouni Malinen &lt;jouni.malinen@atheros.com&gt;
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: export multiple MAC addresses in sysfs</title>
<updated>2010-01-22T21:11:16+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes@sipsolutions.net</email>
</author>
<published>2010-01-20T11:02:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=ef15aac6073b27fd4f70007784d2d52ed394bf43'/>
<id>ef15aac6073b27fd4f70007784d2d52ed394bf43</id>
<content type='text'>
If a device has multiple MAC addresses, userspace will
need to know about that. Similarly, if it allows the
MAC addresses to vary by a bitmask.

If a driver exports multiple addresses, it is assumed
that it will be able to deal with that many different
addresses, which need not necessarily match the ones
programmed into the device; if a mask is set then the
device should deal addresses within that mask based
on an arbitrary "base address".

To test it all and show how it is used, add support
to hwsim even though it can't actually deal with
addresses different from the default.

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 a device has multiple MAC addresses, userspace will
need to know about that. Similarly, if it allows the
MAC addresses to vary by a bitmask.

If a driver exports multiple addresses, it is assumed
that it will be able to deal with that many different
addresses, which need not necessarily match the ones
programmed into the device; if a mask is set then the
device should deal addresses within that mask based
on an arbitrary "base address".

To test it all and show how it is used, add support
to hwsim even though it can't actually deal with
addresses different from the default.

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>
</feed>
