platform/kernel/linux-3.10.git
16 years agoe1000: remove no longer used code for pci read/write cfg
Adrian Bunk [Thu, 13 Dec 2007 17:36:53 +0000 (09:36 -0800)]
e1000: remove no longer used code for pci read/write cfg

Signed-off-by: Adrian Bunk <bunk@stusta.de>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
16 years agoixgb endianness annotations
Al Viro [Mon, 10 Dec 2007 19:00:38 +0000 (19:00 +0000)]
ixgb endianness annotations

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
16 years agoixgbe endianness annotations
Al Viro [Mon, 10 Dec 2007 18:54:12 +0000 (18:54 +0000)]
ixgbe endianness annotations

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
16 years agoe100 endianness annotations
Al Viro [Mon, 10 Dec 2007 18:32:49 +0000 (18:32 +0000)]
e100 endianness annotations

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
16 years agoforcedeth endianness bugs
Al Viro [Sun, 9 Dec 2007 16:06:41 +0000 (16:06 +0000)]
forcedeth endianness bugs

* misannotation: struct register_test members are actually host-endian
* bug: cpu_to_le64(n) >> 32 instead of cpu_to_le32(n >> 32) in setting
->bufhigh and similar for ->buflow (take low bits, _then_ convert to
little-endian, not the other way round).
* bug: setup_hw_rings() should not convert to little-endian at all (we
feed the result to writel(), not store in shared data structure), let
alone try to play with shifting and masking little-endian values.  Introduced
when setup_hw_rings() went in, screwed both 64bit case and the old code for
32bit rings it had replaced.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
16 years agoNULL noise in drivers/net
Al Viro [Thu, 24 Jan 2008 10:06:46 +0000 (02:06 -0800)]
NULL noise in drivers/net

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agoe1000 endianness annotations
Al Viro [Tue, 11 Dec 2007 19:49:39 +0000 (19:49 +0000)]
e1000 endianness annotations

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
16 years agoe1000e endianness annotations
Al Viro [Tue, 11 Dec 2007 19:50:34 +0000 (19:50 +0000)]
e1000e endianness annotations

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
16 years agosungem endianness annotations\e
Al Viro [Mon, 17 Dec 2007 06:48:04 +0000 (06:48 +0000)]
sungem endianness annotations\e

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
16 years agosunhme endianness annotations
Al Viro [Sun, 16 Dec 2007 23:30:08 +0000 (23:30 +0000)]
sunhme endianness annotations

This one is interesting - SBUS and PCI variants have
opposite endianness in descriptors (SBUS is sparc-only, so there
host-endian == big-endian).

Solution: declare a bitwise type (hme32) and in accessor
helpers do typechecking and force-casts (once we know that the
type is right).

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
16 years agoendianness annotations and fixes for olympic
Al Viro [Sun, 16 Dec 2007 20:53:36 +0000 (20:53 +0000)]
endianness annotations and fixes for olympic

* missing braces in !readl(...) & ...
* trivial endianness annotations
* in olympic_arb_cmd() the loop collecting fragments of
packet is b0rken on big-endian - we have
(next_ptr && (buf_ptr=olympic_priv->olympic_lap + ntohs(next_ptr)))
as condition and it should have swab16(), not ntohs() - it's host-endian
byteswapped, not big-endian.  So if we get more than one fragment on big-endian
host, we get screwed.
This ntohs() got missed back when the rest of those had been switched
to swab16() in 2.4.0-test2-pre1 - at a guess, nobody had hit fragmented
packets during the testing of PPC fixes.

PS: Ken Aaker cc'd on assumption that he is the same guy who'd done the
original set of PPC fixes in olympic

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
16 years agolibertas: use spin_is_locked() instead of spin_trylock() in lbs_interrupt()
David Woodhouse [Thu, 13 Dec 2007 06:53:57 +0000 (01:53 -0500)]
libertas: use spin_is_locked() instead of spin_trylock() in lbs_interrupt()

We get scary warnings on UP if we use spin_trylock() and find, as we
hoped, that the lock in question is already locked.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: pass channel argument directly to lbs_mesh_config()
David Woodhouse [Thu, 13 Dec 2007 05:32:36 +0000 (00:32 -0500)]
libertas: pass channel argument directly to lbs_mesh_config()

There is weirdness here; the firmware seems to refuse to change channels
at will.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: cope with both old and new mesh TLV values
David Woodhouse [Thu, 13 Dec 2007 04:29:13 +0000 (23:29 -0500)]
libertas: cope with both old and new mesh TLV values

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: make lbs_update_channel() function non-static
David Woodhouse [Thu, 13 Dec 2007 03:50:21 +0000 (22:50 -0500)]
libertas: make lbs_update_channel() function non-static

We'll want to use this for meshfrobbing

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: add ethtool support for wake-on-lan configuration
David Woodhouse [Thu, 13 Dec 2007 01:06:06 +0000 (20:06 -0500)]
libertas: add ethtool support for wake-on-lan configuration

Also, check that suspend is refused if HOST_SLEEP_CFG hasn't been done.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: implement suspend/resume for USB devices
David Woodhouse [Wed, 12 Dec 2007 22:40:56 +0000 (17:40 -0500)]
libertas: implement suspend/resume for USB devices

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: implement suspend and resume core methods
David Woodhouse [Wed, 12 Dec 2007 22:38:56 +0000 (17:38 -0500)]
libertas: implement suspend and resume core methods

We (ab)use priv->fw_ready to stop the worker thread from sending more
commands or data after the response to the HOST_SLEEP_ACTIVATE command
comes in. And we set it from the callback function _directly_ to ensure
that the worker thread sees it immediately; if we did it in
lbs_suspend() after waking up, that might be too late.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: make worker thread not freezable
David Woodhouse [Wed, 12 Dec 2007 21:04:12 +0000 (16:04 -0500)]
libertas: make worker thread not freezable

We want it to send the HOST_SLEEP_ACTIVATE command on the way down...

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: switch lbs_cmd() to take a _pointer_ to the command structure
David Woodhouse [Wed, 12 Dec 2007 21:00:42 +0000 (16:00 -0500)]
libertas: switch lbs_cmd() to take a _pointer_ to the command structure

This way, it looks more like a normal function.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: add lbs_host_sleep_cfg() command function
David Woodhouse [Wed, 12 Dec 2007 20:19:29 +0000 (15:19 -0500)]
libertas: add lbs_host_sleep_cfg() command function

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: slight cleanup of netif queue stop/wake
David Woodhouse [Wed, 12 Dec 2007 05:41:51 +0000 (00:41 -0500)]
libertas: slight cleanup of netif queue stop/wake

In particular, we shouldn't be waking the queues in lbs_host_to_card_done()
any more.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: add missing newlines in debugging statements
David Woodhouse [Wed, 12 Dec 2007 05:14:21 +0000 (00:14 -0500)]
libertas: add missing newlines in debugging statements

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: be more careful about command responses matching cur_cmd
David Woodhouse [Wed, 12 Dec 2007 04:42:49 +0000 (23:42 -0500)]
libertas: be more careful about command responses matching cur_cmd

Especially in the light of OLPC trac #5461, in which the firmware starts
sending us seemingly random command responses which bear little relation
to the command we sent it.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: add debugging output to lbs_mesh_config()
David Woodhouse [Wed, 12 Dec 2007 03:52:03 +0000 (22:52 -0500)]
libertas: add debugging output to lbs_mesh_config()

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: disable mesh temporarily while setting eth channel/assoc
David Woodhouse [Wed, 12 Dec 2007 01:03:01 +0000 (20:03 -0500)]
libertas: disable mesh temporarily while setting eth channel/assoc

Otherwise the device won't let us change channels.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: add missing newline on debug message
David Woodhouse [Wed, 12 Dec 2007 00:57:05 +0000 (19:57 -0500)]
libertas: add missing newline on debug message

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: allow setting channel on mshX device
David Woodhouse [Wed, 12 Dec 2007 00:56:28 +0000 (19:56 -0500)]
libertas: allow setting channel on mshX device

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: allow get/set SSID on mshX device
David Woodhouse [Wed, 12 Dec 2007 00:30:57 +0000 (19:30 -0500)]
libertas: allow get/set SSID on mshX device

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: whitespace cleanup in host.h
David Woodhouse [Tue, 11 Dec 2007 23:53:20 +0000 (18:53 -0500)]
libertas: whitespace cleanup in host.h

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: kill rx_urb_recall and eth_dev members of struct usb_card_rec
David Woodhouse [Tue, 11 Dec 2007 23:36:35 +0000 (18:36 -0500)]
libertas: kill rx_urb_recall and eth_dev members of struct usb_card_rec

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: kill references to mesh autostart
David Woodhouse [Tue, 11 Dec 2007 23:57:49 +0000 (18:57 -0500)]
libertas: kill references to mesh autostart

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: add lbs_mesh sysfs attribute for enabling mesh
David Woodhouse [Tue, 11 Dec 2007 23:56:42 +0000 (18:56 -0500)]
libertas: add lbs_mesh sysfs attribute for enabling mesh

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: fix sparse endianness warnings in scan.c
David Woodhouse [Tue, 11 Dec 2007 22:54:36 +0000 (17:54 -0500)]
libertas: fix sparse endianness warnings in scan.c

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: make some more functions static
David Woodhouse [Tue, 11 Dec 2007 22:44:10 +0000 (17:44 -0500)]
libertas: make some more functions static

sparse was getting on my tits.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: endianness fixes for get_channel/set_channel
Dan Williams [Tue, 11 Dec 2007 22:35:51 +0000 (17:35 -0500)]
libertas: endianness fixes for get_channel/set_channel

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: convert RF_CHANNEL to a direct command
Dan Williams [Tue, 11 Dec 2007 21:54:15 +0000 (16:54 -0500)]
libertas: convert RF_CHANNEL to a direct command

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: convert DATA_RATE to a direct command
Dan Williams [Tue, 11 Dec 2007 20:50:59 +0000 (15:50 -0500)]
libertas: convert DATA_RATE to a direct command

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: fix case of FWT_ACCESS_LIST_ROUTE and FWT_ACCESS_LIST_NEIGHBOR commands
Dan Williams [Tue, 11 Dec 2007 20:29:10 +0000 (15:29 -0500)]
libertas: fix case of FWT_ACCESS_LIST_ROUTE and FWT_ACCESS_LIST_NEIGHBOR commands

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: remove casts from lbs_cmd() and lbs_cmd_with_response() macros
David Woodhouse [Tue, 11 Dec 2007 20:28:18 +0000 (15:28 -0500)]
libertas: remove casts from lbs_cmd() and lbs_cmd_with_response() macros

If stupid people like me give it arguments with the wrong type (like a
pointer to the structure, for example, instead of the structure itself),
then we should probably notice that at compile time. Otherwise, much
confusion ensues.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: convert CMD_MESH_ACCESS to a direct command
David Woodhouse [Tue, 11 Dec 2007 20:23:59 +0000 (15:23 -0500)]
libertas: convert CMD_MESH_ACCESS to a direct command

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: fix debug output in lbs_cmd_copyback() function.
David Woodhouse [Tue, 11 Dec 2007 20:22:27 +0000 (15:22 -0500)]
libertas: fix debug output in lbs_cmd_copyback() function.

Bad dcbw. Always test on big-endian, or at least use sparse.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: rename and re-type bufvirtualaddr to cmdbuf
Dan Williams [Tue, 11 Dec 2007 18:49:39 +0000 (13:49 -0500)]
libertas: rename and re-type bufvirtualaddr to cmdbuf

Make it a struct cmd_header, since that's what it is, and clean up
the places that it's used.

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: wait for 'firmware ready' event from firmware after loading
David Woodhouse [Tue, 11 Dec 2007 18:15:25 +0000 (13:15 -0500)]
libertas: wait for 'firmware ready' event from firmware after loading

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: move removal of lbs_rtap file to lbs_stop_card()
David Woodhouse [Tue, 11 Dec 2007 17:54:43 +0000 (12:54 -0500)]
libertas: move removal of lbs_rtap file to lbs_stop_card()

This prevents us from trying to remove it when it didn't exist, in the
error case.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: switch USB cardp->priv to 'struct lbs_private *' and resulting fix
David Woodhouse [Tue, 11 Dec 2007 17:53:43 +0000 (12:53 -0500)]
libertas: switch USB cardp->priv to 'struct lbs_private *' and resulting fix

Amazing what interesting things the compiler will tell you if you let it
know what types you expect to be passing around.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: convert GET_HW_SPEC to a direct command
Dan Williams [Tue, 11 Dec 2007 17:42:16 +0000 (12:42 -0500)]
libertas: convert GET_HW_SPEC to a direct command

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: add simple copyback command callback
Dan Williams [Tue, 11 Dec 2007 17:40:35 +0000 (12:40 -0500)]
libertas: add simple copyback command callback

A simple callback which copies the response back into the
command buffer that was used to send the command to the
card.  Will allow for direct command processing outside
the mega-switches in cmd.c and cmdresp.c.

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: clean up direct command handling
Dan Williams [Tue, 11 Dec 2007 17:33:30 +0000 (12:33 -0500)]
libertas: clean up direct command handling

Move direct command handling through __lbs_cmd() over to using the
header as the first member of the command structure, and only define
the __lbs_cmd() callback in one place rather than 3.  Convert boot2
version command to new usage.

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: don't run thread while firmware not yet ready
David Woodhouse [Tue, 11 Dec 2007 16:55:37 +0000 (11:55 -0500)]
libertas: don't run thread while firmware not yet ready

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: switch to a waitqueue and timer for handling USB firmware load
David Woodhouse [Tue, 11 Dec 2007 05:07:58 +0000 (00:07 -0500)]
libertas: switch to a waitqueue and timer for handling USB firmware load

No need to busy-wait, even if we did have a 100ms delay in the loop.
This makes it easier to support the new 'firmware ready' event which is
in the new firmware, too.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: improve reliability of firmware reloading on USB
David Woodhouse [Mon, 10 Dec 2007 23:53:34 +0000 (18:53 -0500)]
libertas: improve reliability of firmware reloading on USB

Increase the delay between issuing the RESET command and the usb reset,
and be prepared to discard more than one 'normal' packet from it before
it resets.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: make rtap and normal modes mutually exclusive, clean up open/stop
David Woodhouse [Mon, 10 Dec 2007 21:38:18 +0000 (16:38 -0500)]
libertas: make rtap and normal modes mutually exclusive, clean up open/stop

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: clean up is_command_allowed_in_ps()
Dan Williams [Mon, 10 Dec 2007 20:24:47 +0000 (15:24 -0500)]
libertas: clean up is_command_allowed_in_ps()

Total overkill to have an array when there's only one command in it.

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: remove pre_open_check()
David Woodhouse [Mon, 10 Dec 2007 20:25:42 +0000 (15:25 -0500)]
libertas: remove pre_open_check()

The firmware is always initialised before we register the netdevices.
It's not possible for pre_open_check() to fail.

One day we might try loading firmware in ->open(), but still it won't be
just a _check_, like this.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: make lbs_cmd() usage nicer
Dan Williams [Mon, 10 Dec 2007 20:11:23 +0000 (15:11 -0500)]
libertas: make lbs_cmd() usage nicer

Define a macro that relieves the caller from having to use sizeof on
the command structure when calling lbs_cmd(), and move the prototype
of __lbs_cmd() to a new cmd.h file.

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: clean up lbs_interrupt()
David Woodhouse [Mon, 10 Dec 2007 19:58:37 +0000 (14:58 -0500)]
libertas: clean up lbs_interrupt()

Make it take struct lbs_private as argument; that's all it wants anyway,
and all callers were starting off from that. Don't wake the netif
queues, because those should be handled elsewhere. And sort out the
locking, with a big nasty warning for those who don't have the
driver_lock locked when they call it.

Oh, and fix if_cs.c to lock the driver_lock before calling it.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: add opaque extra argument to cmd callback function
David Woodhouse [Mon, 10 Dec 2007 18:36:10 +0000 (13:36 -0500)]
libertas: add opaque extra argument to cmd callback function

This will be useful for letting callbacks do stuff like copying the
response into a buffer provided by the caller of lbs_cmd()

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: fix use-after-free error
Holger Schurig [Mon, 10 Dec 2007 11:19:55 +0000 (12:19 +0100)]
libertas: fix use-after-free error

Previously, the display of subscribed events could be wrong.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: kill (IS,SET,UNSET)_MESH_FRAME.
David Woodhouse [Mon, 10 Dec 2007 05:51:35 +0000 (00:51 -0500)]
libertas: kill (IS,SET,UNSET)_MESH_FRAME.

No need for these any more. We've collapsed all the unneeded nests of
functions which needed to keep track of which device the skb belonged to.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: kill lbs_upload_tx_packet()
David Woodhouse [Mon, 10 Dec 2007 05:49:26 +0000 (00:49 -0500)]
libertas: kill lbs_upload_tx_packet()

It replaces two lines of code. And even for those it has to make
inferences about things (i.e. which device) which the caller would have
just known.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: fix error cases in lbs_process_rxed_802_11_packet()
David Woodhouse [Mon, 10 Dec 2007 05:17:28 +0000 (00:17 -0500)]
libertas: fix error cases in lbs_process_rxed_802_11_packet()

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: remove unreachable code from process_rxed_802_11_packet()
David Woodhouse [Mon, 10 Dec 2007 05:05:37 +0000 (00:05 -0500)]
libertas: remove unreachable code from process_rxed_802_11_packet()

The function is only ever called if we're in rtap mode. So the bit in it
which is conditional on rtap mode seems a little superfluous.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: Move actual transmission to main thread
David Woodhouse [Mon, 10 Dec 2007 04:54:27 +0000 (23:54 -0500)]
libertas: Move actual transmission to main thread

The locking issues with TX, especially TX from multiple netdevs, get
_so_ much easier if you do it like this.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: refactor the 'should I sleep?' decision in lbs_thread()
David Woodhouse [Mon, 10 Dec 2007 04:44:43 +0000 (23:44 -0500)]
libertas: refactor the 'should I sleep?' decision in lbs_thread()

This was making my brain hurt.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: free successfully transmitted skbs again
David Woodhouse [Mon, 10 Dec 2007 03:02:46 +0000 (22:02 -0500)]
libertas: free successfully transmitted skbs again

I was so busy cleaning up the failure modes that I accidentally forgot
to make sure we still free them in the success case. Oops.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: TX packet is radiotap iff it comes from rtap_dev
David Woodhouse [Mon, 10 Dec 2007 03:00:55 +0000 (22:00 -0500)]
libertas: TX packet is radiotap iff it comes from rtap_dev

Fix one of the barriers to simultaneous radiotap and normal operation --
stop misinterpreting the TX packets on the normal devices. We're also
going to have to clone the incoming skbs and feed them into both
devices, and there seem to be firmware problems with staying associated
too. But this is a reasonable start...

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: set dev_addr on rtap device
David Woodhouse [Mon, 10 Dec 2007 00:54:11 +0000 (19:54 -0500)]
libertas: set dev_addr on rtap device

This lets us bring it up, because eth_validate_addr() succeeds instead
of returning -EINVAL. And finally monitor mode seems to (mostly) work.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: stop using ieee80211 for radiotap device
David Woodhouse [Sun, 9 Dec 2007 21:22:21 +0000 (16:22 -0500)]
libertas: stop using ieee80211 for radiotap device

There seems to be no point in doing it as an ieee80211 device instead of
a normal netdev, and when we override its ->priv and then call
free_ieee80211() it has a distressing tendency to crash horribly.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: kill lbs_pre_start_xmit(), lib_mesh_pre_start_xmit()
David Woodhouse [Sun, 9 Dec 2007 20:04:19 +0000 (15:04 -0500)]
libertas: kill lbs_pre_start_xmit(), lib_mesh_pre_start_xmit()

These wrappers only do two things.

Firstly, they set the frame type, which isn't necessary since
lbs_hard_start_xmit() gets to see which device it belongs to anyway.

Secondly, they return -EOPNOTSUPP if the device is in monitor mode.
Which is a strange thing to do and will provide nasty warnings from
qdisc_restart(). And lbs_hard_start_xmit() seems to have code to cope
with monitor mode anyway.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: clean up lbs_hard_start_xmit()
David Woodhouse [Sun, 9 Dec 2007 19:37:59 +0000 (14:37 -0500)]
libertas: clean up lbs_hard_start_xmit()

Having merged the nest of functions into one, now we can clean it up and
fix the error handling, and the duplication -- and at least make a start
on the locking.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: kill lbs_process_tx() by merging it into lbs_hard_start_xmit()
David Woodhouse [Sun, 9 Dec 2007 17:57:14 +0000 (12:57 -0500)]
libertas: kill lbs_process_tx() by merging it into lbs_hard_start_xmit()

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: move lbs_hard_start_xmit() into tx.c
David Woodhouse [Sun, 9 Dec 2007 17:52:19 +0000 (12:52 -0500)]
libertas: move lbs_hard_start_xmit() into tx.c

... where it can shortly be merged with lbs_process_tx()...

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: kill SendSinglePacket() function.
David Woodhouse [Sun, 9 Dec 2007 17:48:10 +0000 (12:48 -0500)]
libertas: kill SendSinglePacket() function.

Make a start on reducing the number of pointless nested functions,
starting with the StudlyCaps. No semantic changes (yet) -- we can sort
out the now-obvious discrepancy in the failure paths in a separate
commit.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: kill internal tx queue for PS mode
David Woodhouse [Sun, 9 Dec 2007 17:37:27 +0000 (12:37 -0500)]
libertas: kill internal tx queue for PS mode

It was buggy as hell anyway, since it was just spewing packets at the
device when it wasn't necessarily ready for them (in the USB case, while
the URB was still busy).

We could probably do with a better way of flushing packets to the device
_immediately_, before we stick it back into sleep mode. But we can no
longer just dequeue packets directly, it seems.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: stop debugfs code looking at cmdpendingq
David Woodhouse [Sun, 9 Dec 2007 16:08:25 +0000 (11:08 -0500)]
libertas: stop debugfs code looking at cmdpendingq

It doesn't need to wait until no commands are pending anyway -- it only
needs to wait until the scan is finished.

We can hopefully find it something else to wait on too -- it's the only
user of the cmd_pending waitqueue.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: cope with device which already has firmware loaded
David Woodhouse [Sat, 8 Dec 2007 23:49:06 +0000 (23:49 +0000)]
libertas: cope with device which already has firmware loaded

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: use lbs_host_to_card_done() in lbs_tx_timeout()
David Woodhouse [Sat, 8 Dec 2007 20:56:44 +0000 (20:56 +0000)]
libertas: use lbs_host_to_card_done() in lbs_tx_timeout()

Also attempt some locking in lbs_host_to_card_done()

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: kill struct lbs_adapter
David Woodhouse [Sat, 8 Dec 2007 20:04:36 +0000 (20:04 +0000)]
libertas: kill struct lbs_adapter

There seems to be no reason for a separate structure; move it all
into struct lbs_private.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: kill TxLockFlag
David Woodhouse [Sat, 8 Dec 2007 19:46:19 +0000 (19:46 +0000)]
libertas: kill TxLockFlag

We don't need this. We can use adapter->currenttxskb instead.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: fix lbs_rtap attribute in sysfs
David Woodhouse [Sat, 8 Dec 2007 18:29:16 +0000 (18:29 +0000)]
libertas: fix lbs_rtap attribute in sysfs

At least it doesn't oops when you attempt to read or write it now.
Only when you enable it and then later turn it off. And when it's
enabled I don't see how it actually works.

But one fewer oops is good, for now...

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: clean up lbs_thread() to make it slightly more readable
David Woodhouse [Sat, 8 Dec 2007 17:42:59 +0000 (17:42 +0000)]
libertas: clean up lbs_thread() to make it slightly more readable

No semantic changes.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: switch lbs_cmd() to take a callback function pointer
David Woodhouse [Sat, 8 Dec 2007 00:59:54 +0000 (00:59 +0000)]
libertas: switch lbs_cmd() to take a callback function pointer

All existing code which sends commands is set up to have some function
called with the results, not to get data back. It's more versatile this
way, and providing it with a callback function which involves memcpy()
is hardly difficult.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: kill adapter->nr_cmd_pending
David Woodhouse [Sat, 8 Dec 2007 00:35:00 +0000 (00:35 +0000)]
libertas: kill adapter->nr_cmd_pending

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: Fix up error handling in lbs_setuserscan()
David Woodhouse [Sat, 8 Dec 2007 00:23:55 +0000 (00:23 +0000)]
libertas: Fix up error handling in lbs_setuserscan()

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: Don't set IW_ENCODE_NOKEY when returning WEP keys.
David Woodhouse [Fri, 7 Dec 2007 19:32:12 +0000 (19:32 +0000)]
libertas: Don't set IW_ENCODE_NOKEY when returning WEP keys.

Also clean up the double setting/clearing of IW_ENCODE_DISABLED.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: endianness fixes
Holger Schurig [Fri, 7 Dec 2007 15:30:44 +0000 (15:30 +0000)]
libertas: endianness fixes

Recently I found that that sparse by default doesn't endianness
checks. So I changed my compilation habit to be

make modules C=1 SUBDIRS=drivers/net/wireless/libertas
CHECKFLAGS="-D__CHECK_ENDIAN__"

so that I get the little-endian checks from sparse as well. That
showed up a good bunch of problems.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: Switch to using a callback function pointer for commands
David Woodhouse [Fri, 7 Dec 2007 15:13:05 +0000 (15:13 +0000)]
libertas: Switch to using a callback function pointer for commands

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: when usb_submit_usb fails, include the error code in the printk
David Woodhouse [Fri, 7 Dec 2007 15:12:26 +0000 (15:12 +0000)]
libertas: when usb_submit_usb fails, include the error code in the printk

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: implement new scanning logic
Holger Schurig [Fri, 7 Dec 2007 15:52:10 +0000 (16:52 +0100)]
libertas: implement new scanning logic

This changes the code that is used for scanning and makes it hopefully
easier to understand:

* move function into logical blocks
* create a bunch of lbs_scan_add_XXXX_tlv() functions, that
  help to create the TLV parameter of CMD_802_11_SCAN
* all of them are now called from the much simpler lbs_do_scan()
* no **puserscancfg double-pointers :-)

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: Fix endianness in boot2_version handling.
David Woodhouse [Fri, 7 Dec 2007 12:56:45 +0000 (12:56 +0000)]
libertas: Fix endianness in boot2_version handling.

We read it from the card. We byte-swap it. We write it back to the card.
D'oh.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: Remove SET_BOOT2_VER support from the Big Switch Statement.
David Woodhouse [Thu, 6 Dec 2007 14:44:21 +0000 (14:44 +0000)]
libertas: Remove SET_BOOT2_VER support from the Big Switch Statement.

And the death of libertas_prepare_and_send_command() starts...

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: Use lbs_cmd() for setting Boot2 version
David Woodhouse [Thu, 6 Dec 2007 12:51:00 +0000 (12:51 +0000)]
libertas: Use lbs_cmd() for setting Boot2 version

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: fix data packet size errors
Holger Schurig [Thu, 6 Dec 2007 12:50:30 +0000 (13:50 +0100)]
libertas: fix data packet size errors

I wondered about junk bytes at the end when using "lbsdebug +hex +host"
until I noticed that firmware for the CF card sends my extranous bytes.
It says "I have 20 bytes", I take 20 bytes, but the last 8 bytes of this
are just data junk.

Also, in the new lbs_cmd() where was a size miscalulation
that made itself clear after fixing this bug.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: don't cast a pointer to pointer of
Li Zefan [Thu, 6 Dec 2007 12:01:21 +0000 (13:01 +0100)]
libertas: don't cast a pointer to pointer of

Don't cast struct foo * to struct list_head *, it's safe only when
the list member is the first member of struct foo.

Also don't cast struct list_head * to struct foo *.

Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: Byteswap cmdptr->size in lbs_cmd()
David Woodhouse [Thu, 6 Dec 2007 12:38:31 +0000 (12:38 +0000)]
libertas: Byteswap cmdptr->size in lbs_cmd()

Bad Holger. Always test on big-endian machines, if it's little-endian
you need to be swapping to/from.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: Zero 'pdata_size' field in cmd_ctrl_node reliably.
David Woodhouse [Thu, 6 Dec 2007 12:37:31 +0000 (12:37 +0000)]
libertas: Zero 'pdata_size' field in cmd_ctrl_node reliably.

Otherwise, lbs_process_rx_command() will take the new path for
lbs_cmd() responses, when it shouldn't.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: Move SET_BOOT2_VER command to if_usb where it belongs
David Woodhouse [Thu, 6 Dec 2007 14:41:08 +0000 (14:41 +0000)]
libertas: Move SET_BOOT2_VER command to if_usb where it belongs

This is meaningless for non-USB devices and unimplemented in their
firmware. It's somewhat dubious for USB devices too, but that's a
different story.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: Don't claim to have checksummed incoming packets.
David Woodhouse [Thu, 6 Dec 2007 10:36:08 +0000 (10:36 +0000)]
libertas: Don't claim to have checksummed incoming packets.

This explains why we never noticed the corruption of checksums on
outgoing packets... we weren't actually checking them either.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: handy function to call firmware commands
Holger Schurig [Wed, 5 Dec 2007 16:58:11 +0000 (17:58 +0100)]
libertas: handy function to call firmware commands

Using an arbitrary firmware command was actually very painful. One
had to change big switch() statements in cmd.c, cmdresp.c, add
structs to the big union in "struct cmd_ds_command" and add the
define for the CMD_802_11_xxx to the proper place.

With this function, this is now much easier. For now, it implements
a blocking (a.k.a. CMD_OPTION_WAITFORRSP) way where one deals directly
with command requests and response buffers. You can do everything in
one place:

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>