History log of /drivers/net/wireless/libertas/cmd.c
Revision Date Author Comments
c0f36ebf9f5e92d38a5859e88527109388fc398b 01-Jun-2014 Rickard Strandqvist <rickard_strandqvist@spectrumdigital.se> net: wireless: libertas: cmd.c: Cleaning up uninitialized variables

There is a risk that the variable will be used without being initialized.

This was largely found by using a static code analysis program called cppcheck.

Signed-off-by: Rickard Strandqvist <rickard_strandqvist@spectrumdigital.se>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
871fc09f1c8a9c0652afa7c673ae401fdb3f4aeb 11-Sep-2012 Daniel Drake <dsd@laptop.org> libertas: set mac control synchronously during init

CMD_MAC_CONTROL is currently sent async to the firmware, and is sent
from the lbs_setup_firmware() path during device init.

This means that device init can complete with commands pending, and
the if_sdio driver will sometimes power down the device (after init)
with this command still pending.

This was causing an occasional spurious command timeout after init,
leading to a device reset.

Fix this by making CMD_MAC_CONTROL synchronous when called from the
lbs_setup_firmware() path.

Signed-off-by: Daniel Drake <dsd@laptop.org>
Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
9c3099f7cb02adf5a3554bdef96bdc24a3d468e7 16-Jul-2012 Daniel Drake <dsd@laptop.org> libertas: handle command failure immediately

Fail commands immediately when the request cannot be sent to the hardware.

This solves the following deadlock:
1. Two commands are in the queue.
2. The first command is sent, but causes a timeout, which kicks off an
asynchronous device reset
3. The second command is submitted to the device, and fails. The failure
is noted but the existing code waits for the timeout handler to take
care of the failure.
4. The device reset kicks in, causing the device "surprise removed" flag
to be set as the device disappears from the bus.
5. lbs_thread notes this and enters "adapter removed; waiting to die"
mode, without processing any further command timeouts.

While adjusting lbs thread logic to handle this situation may be one way
to fix this, it seems more practical to simplify handling of host_to_card
failure so that the commands are failed immediately without waiting for
more compliated timeout logic to kick in.

Signed-off-by: Daniel Drake <dsd@laptop.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
20d2ebe512b9ad0f8fdd867a02d7a309344e8a6a 16-Jul-2012 Daniel Drake <dsd@laptop.org> libertas: Update 11d info only when interface is active

reg_notifier can be called before the interface is up.
Handle this correctly by storing the requested country code, then
apply the relevant configuration when the interface is brought up.

Signed-off-by: Daniel Drake <dsd@laptop.org>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
ee40fa0656a730491765545ff7550f3c1ceb0fbc 27-May-2011 Paul Gortmaker <paul.gortmaker@windriver.com> drivers/net: Add export.h to files using EXPORT_SYMBOL/THIS_MODULE

These were getting the macros from an implicit module.h
include via device.h, but we are planning to clean that up.

Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>

drivers/net: Add export.h to wireless/brcm80211/brcmfmac/bcmsdh.c

This relatively recently added file uses EXPORT_SYMBOL and hence
needs export.h included so that it is compatible with the module.h
split up work.

Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
d2e7b3425c474300318e1d28b10a93c2401b9255 01-Aug-2011 Daniel Drake <dsd@laptop.org> libertas: disable functionality when interface is down

Modify the driver so that it does not function when the interface is
down, in preparation for runtime power management.

No commands can be run while the interface is down, so the ndo_dev_stop
routine now directly does all necessary work (including asking the device
to disconnect from the network and disabling multicast functionality)
directly.

power_save and power_restore hooks are added meaning that card drivers
can take steps to turn the device off when the interface is down.

The MAC address can now only be changed when all interfaces are down;
the new address will be programmed when an interface gets brought up.
This matches mac80211 behaviour.

Also, some small cleanups/simplifications were made in the surrounding
device handling logic.

Signed-off-by: Daniel Drake <dsd@laptop.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
df90d84382b03faf81637db31b6be14f477482c7 09-Jul-2011 Daniel Drake <dsd@laptop.org> libertas: fix handling of command timeout, completion and interruption

When commands time out, corruption ensues. As lbs_complete_command()
is called without locking, the command node is mistakenly freed twice.
Also fixed up locking here in a few other places.

The nature of command timeout may be that the card didn't even
acknowledge receipt of the request. Detect this case and reset dnld_sent
so that other commands don't hang forever.

When cmdnodes are moved between the free list and the pending list,
their list heads should be reinitialized. Fixed this.

Sometimes commands are completed without actually submitting them or
removing them from cmdpendingq. We must remember to remove them from
cmdpendingq in these cases, so handle this in lbs_complete_command().

Harmless signals generated during suspend/resume were interrupting
lbs_cmd. Convert to an uninterruptible sleep to avoid this.

lbs_thread must be woken up every time there is some new work to do.
I found that when 2 commands are queued, ther completion of the first
command would not wake up lbs_thread to submit the second. Poke lbs_thread
at the end of lbs_complete_command() to fix this.

Signed-off-by: Daniel Drake <dsd@laptop.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
edcc3604805b37344d0569b61a34dbe22943ba9f 09-Jul-2011 Olivier Sobrie <olivier@sobrie.be> libertas: fix errors in functions accessing module registers

Problems located in the two functions lbs_set_reg() and lbs_get_reg():
- The offset field of struct cmd_ds_reg_access was not filled in
- The test on the return code of lbs_cmd_with_response() in function
lbs_get_reg() was inverted

Signed-off-by: Olivier Sobrie <olivier@sobrie.be>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
a6b7a407865aab9f849dd99a71072b7cd1175116 06-Jun-2011 Alexey Dobriyan <adobriyan@gmail.com> net: remove interrupt.h inclusion from netdevice.h

* remove interrupt.g inclusion from netdevice.h -- not needed
* fixup fallout, add interrupt.h and hardirq.h back where needed.

Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
71005be40a7fc95edda3cc462361ce0243e4f5fa 26-May-2011 Daniel Drake <dsd@laptop.org> libertas: Set command sequence number later to ensure consistency

Before this patch, the command sequence number is being set before
lbs_queue_cmd() adds the command to the queue. However, lbs_queue_cmd()
sometimes forces commands to queue-jump (e.g. CMD_802_11_WAKEUP_CONFIRM).
It currently does this without considering that sequence numbers might need
adjusting to keep things running in order.

Fix this by setting the sequence number at a later stage, just before
we're actually submitting the command to the hardware. Also fixes a
possible race where seqnum was being modified outside of the driver
lock.

Signed-off-by: Daniel Drake <dsd@laptop.org>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
f3a57fd148a4afd3c38f558c5b44972cb29ea8ba 03-May-2011 Joe Perches <joe@perches.com> libertas: Use netdev_<level> or dev_<level> where possible

Using the more descriptive logging styles gives a bit
more information about the device being operated on.

Makes the object trivially smaller too.

$ size drivers/net/wireless/libertas/built-in.o.*
187730 2973 38488 229191 37f47 drivers/net/wireless/libertas/built-in.o.new
188195 2973 38488 229656 38118 drivers/net/wireless/libertas/built-in.o.old

Signed-off-by: Joe Perches <joe@perches.com>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
0e4e06ae5e895864b4a4bca7eec2e3015fddca98 03-May-2011 Joe Perches <joe@perches.com> libertas: Convert lbs_pr_<level> to pr_<level>

Use the standard pr_<level> functions eases grep a bit.

Added a few missing terminating newlines to messages.
Coalesced long formats.

Signed-off-by: Joe Perches <joe@perches.com>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2ae1b8b35faba31a59b153cbad07f9c15de99740 09-May-2011 Paul Fox <pgf@laptop.org> libertas: fix cmdpendingq locking

We occasionally see list corruption using libertas.

While we haven't been able to diagnose this precisely, we have spotted
a possible cause: cmdpendingq is generally modified with driver_lock
held. However, there are a couple of points where this is not the case.

Fix up those operations to execute under the lock, it seems like
the correct thing to do and will hopefully improve the situation.

Signed-off-by: Paul Fox <pgf@laptop.org>
Signed-off-by: Daniel Drake <dsd@laptop.org>
Acked-by: Dan Williams <dcbw@redhat.com>
Cc: stable@kernel.org
Signed-off-by: John W. Linville <linville@tuxdriver.com>
8973a6e770fc891f92daacbc1c92c7cd396fcf7e 27-Apr-2011 Randy Dunlap <randy.dunlap@oracle.com> libertas: use kernel-doc notation, fix comment style

Convert all libertas/ files to use kernel-doc notation instead
of whatever it was (doxygen?).

Add or fix function parameters in several places.

Use expected style for multi-line comments in lots of places.

Remove erroneous /** in multiple places.

Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
75abde4d193fe300a2c1d3ee7f632eb777aa48b2 21-Jan-2011 Vasily Khoruzhick <anarsoul@gmail.com> libertas: Prepare stuff for if_spi.c pm support

To support suspend/resume in if_spi we need two things:
- re-setup fw in lbs_resume(), because if_spi powercycles card;
- don't touch hwaddr on second lbs_update_hw_spec() call for same
reason;

Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
ae63a33ec9b598b3454cf0d29077fa17b616c42a 31-Oct-2010 Deepak Saxena <dsaxena@laptop.org> libertas: EHS_REMOVE_WAKEUP is not always supported

Certain firmware versions, particularly the 8388 found on the XO-1,
do not support the EHS_REMOVE_WAKEUP command that is used to disable
WOL. Sending this command to the card will return a failure that
would get propagated up the stack and cause suspend to fail.

Instead, fall back to an all-zero wakeup mask.

This fixes http://dev.laptop.org/ticket/9967

Signed-off-by: Deepak Saxena <dsaxena@laptop.org>
Signed-off-by: Daniel Drake <dsd@laptop.org>
[includes fixups by Paul Fox]
Signed-off-by: John W. Linville <linville@tuxdriver.com>
d06956b535d040c98ce7932fb34f99df8f049ecf 27-Jul-2010 Dan Williams <dcbw@redhat.com> libertas: rename lbs_get_cmd_ctrl_node() to lbs_get_free_cmd_node()

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
77ccdcf2e933d61176f67c4976f7ad4cbb9cb82a 27-Jul-2010 Dan Williams <dcbw@redhat.com> libertas: kill unused lbs_prepare_and_send_command()

Remove last bits of indirect command code.

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
53800f5dbf4a62126e34605be7db89702d76dec6 27-Jul-2010 Dan Williams <dcbw@redhat.com> libertas: convert DEEP_SLEEP timer to a direct command

Other uses were already used direct command paths.

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
0bb6408777227fcf5136e28aec29438606d5ac82 27-Jul-2010 Dan Williams <dcbw@redhat.com> libertas: convert PS_MODE to a direct command

Powersave looks like it got broken at some point but we'll fix that up
when the command submission stuff is more understandable, which this
series helps to do. That said, this patch should not further break
powersave.

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
a6bb1bcebced1eeed6a96f37cda7cbb7cbd6dae6 27-Jul-2010 Dan Williams <dcbw@redhat.com> libertas: convert CMD_FWT_ACCESS to a direct command

Slightly different approach here since there are so many arguments to
the firmware command. Just let the caller fill them in before pushing
the command to the firmware.

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
52148655608b31b7e18325ae7711de3a86466136 27-Jul-2010 Dan Williams <dcbw@redhat.com> libertas: convert Mesh Blinding Table access to a direct command

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
4c7c6e00f17365633638848197c44552dd353d49 27-Jul-2010 Dan Williams <dcbw@redhat.com> libertas: convert register access to direct commands

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
d6541c74484a5679a79a1f1df9884fc4da8d8cf6 27-Jul-2010 Dan Williams <dcbw@redhat.com> libertas: remove Beacon Control

For now; it's a pretty easy command to hook up and whenever OLPC
figures out how they want the userspace interface to look (ie,
not iwpriv commands) we can easily add it back in. Since the
cfg80211 conversion it wasn't working anyway.

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
db08006fc4e825e632083f2a2de827ca2121c28d 27-Jul-2010 Dan Williams <dcbw@redhat.com> libertas: remove unused Automatic Frequency Control command

It hasn't been hooked up to anything in a long time and it's not
even listed in any of the firmware documentation I have (and I
have v5.1, v8, v9, and v10).

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
49a08af5b9aa91207e3654ca3c88ca4d2596601c 27-Jul-2010 Dan Williams <dcbw@redhat.com> libertas: remove unused indirect TPC_CFG command leftovers

These were no longer used but were left around; Transmit Power
Control is done through the lbs_set_tpc_cfg() function.

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
cc4b9d3928d682c4a15690c2bd9ed11c2eac5921 27-Jul-2010 Dan Williams <dcbw@redhat.com> libertas: convert 11D_DOMAIN_INFO to a direct command

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
9fb7663d2b832183ec7558a19426666819636a64 27-Jul-2010 Dan Williams <dcbw@redhat.com> libertas: clean up RSSI command

Convert to a full direct command; previous code rolled a direct
command by hand but left the original indirect command code intact
but disabled.

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
a45b6f4f9ef7fde2321da5aaa7db0e1e793a5b1e 27-Jul-2010 Dan Williams <dcbw@redhat.com> libertas: clean up MONITOR_MODE command

Convert to a full direct command; previous code rolled a direct
command by handle but left the original indirect command code
lying around.

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
1311843c58ca606bab8bfe4cf6c0fe50deb9986d 08-Jul-2010 Amitkumar Karwar <akarwar@marvell.com> libertas: Added support for host sleep feature

Existing "ethtool -s ethX wol X" command configures hostsleep
parameters, but those are activated only during suspend/resume,
there is no way to configure host sleep without actual suspend.

This patch adds debugfs command to enable/disable host sleep based on
already configured host sleep parameters using wol command.

Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: Kiran Divekar <dkiran@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
1047d5edd4838f27dc86f24676178f2249c446ea 05-Jun-2010 Kiran Divekar <dkiran@marvell.com> Libertas: Added 11d support using cfg80211

Added 11d support for libertas driver using cfg80211. This is based on Holger
Shurig's initial work to add cfg80211 support libertas.
(https://patchwork.kernel.org/patch/64286/)

Please let us know, if there are any improvements comments.

Code is added to send 11d enable command to firmware while
initialisation and pass 11d specific information to firmware
when notifier handler is called by cfg80211.

Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: Kiran Divekar <dkiran@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
e86dc1ca4676445d9f0dfe35104efe0eb8a2f566 14-Jun-2010 Kiran Divekar <dkiran@marvell.com> Libertas: cfg80211 support

Holger Schurig's patch (https://patchwork.kernel.org/patch/64286/)
is rebased to latest wireless-testing tree.

(Includes patches from me originally posted as "libertas: fix build
error due to undefined symbol" and "libertas: unmangle capability
value". -- JWL)

Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: Kiran Divekar <dkiran@marvell.com>
Tested-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
66fceb69b72ff7e9cd8da2ca70033982d5376e0e 19-May-2010 Amitkumar Karwar <akarwar@marvell.com> libertas: Added callback functions to support SDIO suspend/resume.

In suspend() host sleep is activated using already configured
host sleep parameters through wol command, and in resume() host
sleep is cancelled. Earlier priv->fw_ready flag used to reset and
set in suspend and resume handler respectively. Since after suspend
only host goes into sleep state and firmware is always ready, those
changes in flag state are removed.

Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
5a0e3ad6af8660be21ca98a971cd00f331318c05 24-Mar-2010 Tejun Heo <tj@kernel.org> include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h

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 -> 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 <tj@kernel.org>
Guess-its-ok-by: Christoph Lameter <cl@linux-foundation.org>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>
e64c026dd09b73faf20707711402fc5ed55a8e70 21-Dec-2009 Stefani Seibold <stefani@seibold.net> kfifo: cleanup namespace

change name of __kfifo_* functions to kfifo_*, because the prefix __kfifo
should be reserved for internal functions only.

Signed-off-by: Stefani Seibold <stefani@seibold.net>
Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
Acked-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Acked-by: Andi Kleen <ak@linux.intel.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
45465487897a1c6d508b14b904dc5777f7ec7e04 21-Dec-2009 Stefani Seibold <stefani@seibold.net> kfifo: move struct kfifo in place

This is a new generic kernel FIFO implementation.

The current kernel fifo API is not very widely used, because it has to
many constrains. Only 17 files in the current 2.6.31-rc5 used it.
FIFO's are like list's a very basic thing and a kfifo API which handles
the most use case would save a lot of development time and memory
resources.

I think this are the reasons why kfifo is not in use:

- The API is to simple, important functions are missing
- A fifo can be only allocated dynamically
- There is a requirement of a spinlock whether you need it or not
- There is no support for data records inside a fifo

So I decided to extend the kfifo in a more generic way without blowing up
the API to much. The new API has the following benefits:

- Generic usage: For kernel internal use and/or device driver.
- Provide an API for the most use case.
- Slim API: The whole API provides 25 functions.
- Linux style habit.
- DECLARE_KFIFO, DEFINE_KFIFO and INIT_KFIFO Macros
- Direct copy_to_user from the fifo and copy_from_user into the fifo.
- The kfifo itself is an in place member of the using data structure, this save an
indirection access and does not waste the kernel allocator.
- Lockless access: if only one reader and one writer is active on the fifo,
which is the common use case, no additional locking is necessary.
- Remove spinlock - give the user the freedom of choice what kind of locking to use if
one is required.
- Ability to handle records. Three type of records are supported:
- Variable length records between 0-255 bytes, with a record size
field of 1 bytes.
- Variable length records between 0-65535 bytes, with a record size
field of 2 bytes.
- Fixed size records, which no record size field.
- Preserve memory resource.
- Performance!
- Easy to use!

This patch:

Since most users want to have the kfifo as part of another object,
reorganize the code to allow including struct kfifo in another data
structure. This requires changing the kfifo_alloc and kfifo_init
prototypes so that we pass an existing kfifo pointer into them. This
patch changes the implementation and all existing users.

[akpm@linux-foundation.org: fix warning]
Signed-off-by: Stefani Seibold <stefani@seibold.net>
Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
Acked-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Acked-by: Andi Kleen <ak@linux.intel.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
0e78ff8fcc6dabeda313719deb751afbd20bea41 02-Dec-2009 Holger Schurig <holgerschurig@googlemail.com> libertas: remove priv->capability

This variable was once set to WLAN_CAPABILITY_SHORT_PREAMBLE and
there's no code that could change the variable to something else.
Therefore it seems this is not necessary :-)

Signed-off-by: Holger Schurig <holgerschurig@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
4143a23de096910e3ceb0939f41de6ffb8c59475 02-Dec-2009 Holger Schurig <holgerschurig@googlemail.com> libertas: make mesh configurable

Mostly for the embedded people that know beforehand that they don't need
MESH at all and want to save some bytes, but also helpful for the upcoming
cfg80211 transition.

text data bss dec hex filename
114264 2308 140 116712 1c7e8 libertas.ko with mesh
105026 2000 140 107166 1a29e libertas.ko without mesh
--------------------------------------------------
-9238 -308 -9546

Signed-off-by: Holger Schurig <holgerschurig@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
602114ae595af6c89eab149cf9f939e3f7ef4a34 02-Dec-2009 Holger Schurig <holgerschurig@googlemail.com> libertas: add access functions for mesh open/connect status

Signed-off-by: Holger Schurig <holgerschurig@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
c24ef46e6b1597e54f185e0b48eb9073ef155a8c 02-Dec-2009 Holger Schurig <holgerschurig@googlemail.com> libertas: use priv->mesh_tlv instead of priv->mesh_fw_ver

Both variables contained the same information (no mesh, old mesh, new mesh).
So we can get rid of one variable.

Also move the mesh-version test from cmd.c into mesh.c.

Signed-off-by: Holger Schurig <holgerschurig@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
ece1e3c61e59ba184150e5aff57bbc6355613e3e 25-Nov-2009 Holger Schurig <holgerschurig@gmail.com> libertas: move mesh command handling into mesh.c

Signed-off-by: Holger Schurig <holgerschurig@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
fef0640e1e5d5f79c48d1de1f54ed285429b4a6c 22-Oct-2009 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: remove some references to IW_MODE_abc

... in pursue to quaff the wide-spread references to WEXT constants.

When setting SNMP_MIB_OID_BSS_TYPE, wext.c can directly calculate the value
the firmware wants.

Reading of SNMP_MIB_OID_BSS_TYPE doesn't happen anywhere, so no need to
convert the firmware value into WEXT values anyway.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
e93156e7c4c3e2be355cac27c58664e4385c58fd 22-Oct-2009 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: sort and categorize entries in decl.h

This now makes decl.h only contain declarations for functions that don't
have their own *.h file.

No function change.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
8ec97cc803e1d52022e916074415acaec276288c 22-Oct-2009 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: remove "struct cmd_ds_gen"

It was only used as a source for S_DS_GEN, but the size of this struct
is equal to the size of "struct cmd_header".

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
b856f73b39ca6b619e6e8d088141aec3ff62852c 22-Oct-2009 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: remove handling for CMD_GET_TSF

... which just resided as an old-style command in cmd/cmdresp, but
was nowhere useed. If we ever need it, we can re-add it as a newstyle
command.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
f57bd284e435d1ddf69b4266f63d856865152271 22-Oct-2009 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: remove handling for CMD_802_11_LED_GPIO_CTRL

... which just resided as an old-style command in cmd/cmdresp, but
was nowhere useed. If we ever need it, we can re-add it as a newstyle
command.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
6e85e0b7ab1cafd6ff63c391d231b5a39934802e 22-Oct-2009 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: move lbs_send_iwevcustom_event() to wext.c

... because it's purely a WEXT function.

No functional change.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
d0de37417e51219d7d56a452d18fa7b829342fcc 22-Oct-2009 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: move association related commands into assoc.c

That's because the new cfg80211 implementation will provide cleaner
implementations.

No functional changes.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
c14951fec6c292dca60e3cf8ab0edfdf11e6c0e2 22-Oct-2009 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: get current channel out of priv->curbssparams

... as priv->curbssparams won't exist once libertas+cfg80211 lands.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2d46502dce3c79c3c15ac537cb271911f58d12d1 22-Oct-2009 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: move scan/assoc related stuff

Another cfg80211-preparation patch: removes some code/definitions from
main.c and dev.h and put's it into assoc.c/.h, scan.c/.h.

No function change.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
243e84e91ed810f7dca5ba1c2d1a611811948566 22-Oct-2009 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: change IW_ESSID_MAX_SIZE -> IEEE80211_MAX_SSID_LEN

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
d37b4fdd43f7e5686c40181f33a50a7ee03ddbd8 22-Oct-2009 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: remove unused 11d code

Most of the 11d code was protected with an "if (priv->enable11d)" clause.
But there was no code that anywhere that was able to set this
variable to true. So all 11d code was dead for almost a year and no one
complained. That's enought incentive to remove this code.

Besides removing old cruft, we gain back the 11d capability in a common way
when we merge the cfg80211 functionality.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
8ef37f1cb24bfc89297eab6cd6f1e1096d954139 16-Oct-2009 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: remove unused lbs_cmd_802_11_inactivity_timeout()

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
a3cbfb08ca634019516c91f3d5266b18e3dbbf77 16-Oct-2009 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: make lbs_get_channel() static

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
9e66e701d0e42efd548f0f7249af8a56f8e07b67 16-Oct-2009 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: cleanup host.h and hostcmd.h

Also remove some unused definitions and make tab usage consistent.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
6d898b1983b62ad52f862014748ddce35aad005a 14-Oct-2009 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: make __lbs_cmd_async() non-static

This function will be needed for the cfg80211-enabled libertas driver.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
d43c36dc6b357fa1806800f18aa30123c747a6d1 07-Oct-2009 Alexey Dobriyan <adobriyan@gmail.com> headers: remove sched.h from interrupt.h

After m68k's task_thread_info() doesn't refer to current,
it's possible to remove sched.h from interrupt.h and not break m68k!
Many thanks to Heiko Carstens for allowing this.

Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
63f275df64dc69a46bbc21e6a68d5506d2da9c51 07-Oct-2009 Amitkumar Karwar <akarwar@marvell.com> libertas: Use lbs_is_cmd_allowed() check in command handling routines.

lbs_is_cmd_allowed() check is added in __lbs_cmd_async() and
lbs_prepare_and_send_command(). The check is removed from other places.

Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
4912545472d71e3dd546b18b397aec4c89fd7403 01-Oct-2009 Amitkumar Karwar <akarwar@marvell.com> libertas: Add auto deep sleep support for SD8385/SD8686/SD8688

Add timer based auto deep sleep feature in libertas driver which can be
configured using iwconfig command. This is tested on SD8688, SD8686 cards
with firmware versions 10.38.1.p25, 9.70.4.p0 respectively on 32-bit and 64-bit
platforms. Tests have been done for USB/CS cards to make sure that the patch
won't break USB/CS code. We didn't test the if_spi driver.

Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
154839962a582b8eb661cde94ef3af0e03b374d7 16-Jul-2009 Marek Vasut <marek.vasut@gmail.com> libertas: Fix problem with broken V4 firmware on CF8381

Firmware V4 on CF8381 reports region code shifted by 1 byte to left.
The following patch checks for this and handles it properly.

Signed-off-by: Marek Vasut <marek.vasut@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
822ac03a07cc9e714727a6d49ea050b92483f82a 23-May-2009 Dan Williams <dcbw@redhat.com> libertas: convert CMD_802_11_ASSOCIATE to a direct command

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
be0d76e48f6cc1f8b01eeb5efbeea41f2efdab49 23-May-2009 Dan Williams <dcbw@redhat.com> libertas: convert CMD_802_11_AUTHENTICATE to a direct command

And fix up setting authentication suite for v9+ firmware too.

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
75b6a61a47353fd404277ae3f2dda03af96a8c1a 23-May-2009 Dan Williams <dcbw@redhat.com> libertas: restyle Marvell & IEEE TLV structure names

Easier to read and more conformant with kernel style.

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
684d6b360222f31b6b9be9a63aa5c6ed5674c890 25-Mar-2009 Bing Zhao <bzhao@marvell.com> libertas: support mesh for various firmware versions

CMD_MESH_CONFIG command ID and a couple of structure members in TxPD,
RxPD have been changed in firmware version 10.x.y.z and newer.

Signed-off-by: Kiran Divekar <dkiran@marvell.com>
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
877d03105d04b2c13e241130277fa69c8d2564f0 26-Jan-2009 Nick Andrew <nick@nick-andrew.net> trivial: Fix misspelling of firmware

Fix misspelling of firmware.

Signed-off-by: Nick Andrew <nick@nick-andrew.net>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
582c1b538fb47a2d6a41dbdadb031086c49446c1 21-Oct-2008 Anna Neal <anna@cozybit.com> libertas: Fine grained configuration of wake-on-lan.

Based on a patch from Shailendra Govardhan <shailen@marvell.com>.
This patch allows implementation of more specific wake-on-lan rules than those
of ethtool.

Please note that only firmware 5.110.22.p20 and above supports this feature.

This patch only implements the driver/firmware interface, not the
userspace/driver interface.

Signed-off-by: Anna Neal <anna@cozybit.com>
Signed-off-by: Javier Cardona <javier@cozybit.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2c706002fc147decdba2658ea48e4436faca3af2 30-Oct-2008 Johannes Berg <johannes@sipsolutions.net> don't use net/ieee80211.h

Convert all the drivers using net/ieee80211.h to use linux/ieee80211.h.
Contains a bugfix in libertas where the SSID parsing could overrun the
buffer when the AP sends invalid information.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Acked-by: Dan Williams <dcbw@redhat.com> [airo, libertas]
Acked-by: Pavel Roskin <proski@gnu.org> [orinoco]
Acked-by: David Kilroy <kilroyd@googlemail.com> [orinoco]
Signed-off-by: John W. Linville <linville@tuxdriver.com>
9387b7caf3049168fc97a8a9111af8fe2143af18 01-Oct-2008 John W. Linville <linville@tuxdriver.com> wireless: use individual buffers for printing ssid values

Also change escape_ssid to print_ssid to match print_mac semantics.

Signed-off-by: John W. Linville <linville@tuxdriver.com>
7e272fcff6f0a32a3d46e600ea5895f6058f4e2d 25-Sep-2008 John W. Linville <linville@tuxdriver.com> wireless: consolidate on a single escape_essid implementation

Signed-off-by: John W. Linville <linville@tuxdriver.com>
87bf24f3d2e076468deaa5181d44184887072904 29-Oct-2008 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: remove two libertas sparse warning

Johannes Berg detected this two sparse warnings:

drivers/net/wireless/libertas/cmd.c:609:16: warning: cast to restricted __le16
drivers/net/wireless/libertas/cmd.c:611:16: warning: cast to restricted __le16

... but cmd.minlevel is "s8", so we can access it directly and hope
for the sign-extension-code in the compiler to convert that to the
"s16" type.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
e174961ca1a0b28f7abf0be47973ad57cb74e5f0 27-Oct-2008 Johannes Berg <johannes@sipsolutions.net> net: convert print_mac to %pM

This converts pretty much everything to print_mac. There were
a few things that had conflicts which I have just dropped for
now, no harm done.

I've built an allyesconfig with this and looked at the files
that weren't built very carefully, but it's a huge patch.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
96d46d5d792d96f80e9bd274ab6d433b8a3c22bc 13-Oct-2008 Manish Katiyar <mkatiyar@gmail.com> libertas : Remove unused variable warning for "old_channel" from cmd.c

Below patch removes the following warning during compilation.

drivers/net/wireless/libertas/cmd.c:826: warning: unused variable 'old_channel'

Signed-off-by : Manish Katiyar <mkatiyar@gmail.com>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
3ed6e0803b4fe95107f6cb5a432587d03cd4d17a 26-Sep-2008 Anna Neal <anna@cozybit.com> libertas: Improvements on automatic tx power control via SIOCSIWTXPOW (fixups)

This patch addresses comments from Dan Williams about the patch
committed as "libertas: Improvements on automatic tx power control via
SIOCSIWTXPOW."

Signed-off-by: Anna Neal <anna@cozybit.com>
Signed-off-by: Javier Cardona <javier@cozybit.com>
Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
39fcf7a315e098430e878a5c0c4d39561c93ebf6 10-Sep-2008 Dan Williams <dcbw@redhat.com> libertas: convert SNMP_MIB to a direct command

And support setting both long and short retries independently.

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
f8e77caefea8940ee1fb09c9ebb0107ca2eadb72 10-Sep-2008 Dan Williams <dcbw@redhat.com> libertas: remove unused generic RESET command

The generic reset command is unused. Each interface type needs to
handle the reset command differently since after reset, the firmware is
dead and interface-specific mechanisms must be used to reinitialize the
card.

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
0112c9e9e8d47f1d1e6ce1323675cb43ca6aae86 11-Sep-2008 Anna Neal <anna@cozybit.com> libertas: Improvements on automatic tx power control via SIOCSIWTXPOW.

iwconfig txpower can now be used to set tx power to fixed or auto. If set to
auto the default firmware settings are used.

The command CMD_802_11_PA_CFG is only sent to older firmware, as Dan Williams
noted the command was no longer supported in firmware V9+.

Signed-off-by: Anna Neal <anna@cozybit.com>
Signed-off-by: Javier Cardona <javier@cozybit.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
f5fe1fdaae86a74d6977fafd8fdd8697e398dafd 22-Aug-2008 Dan Williams <dcbw@redhat.com> libertas: convert adhoc operations to direct commands

with fixes for v9 and later firmware too.

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
d5db2dfa660de13c3643149b89c7602dd49aa168 21-Aug-2008 Dan Williams <dcbw@redhat.com> libertas: convert CMD_802_11_RADIO_CONTROL to a direct command

and return errors for operations like join & scan that aren't possible
when the radio is turned off.

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
191bb40e725304c5fcfabd92c57eef58799f0e25 21-Aug-2008 Dan Williams <dcbw@redhat.com> libertas: convert CMD_802_11_DEAUTHENTICATE to a direct command

and remove DISASSOCIATE because it's not in any of the specs and has
never been used.

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
87c8c72d532f96257162f978d5945dcf7f0df19e 19-Aug-2008 Dan Williams <dcbw@redhat.com> libertas: convert CMD_802_11_RF_TX_POWER to a direct command

And while we're at it, grab min/max TX power from the firmware and use
that to validate incoming TX power requests from WEXT.

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
1556c0f22df77800d2e99342ce354a4ce94c5a0f 21-Jul-2008 Brian Cavagnolo <brian@cozybit.com> libertas: support boot commands to write persistent firmware and bootloader

Add locking and non-locking versions of if_usb_prog_firmware to support
programming firmware after and before driver bring-up respectively. Add more
suitable error codes for firmware programming process. Add capability checks
for persistent features before attempting to use them.

Based on patches from Brajesh Dave and Priyank Singh.

Signed-off-by: Brian Cavagnolo <brian@cozybit.com>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
a01f5450401f081f07a866612121e780e0730cfd 04-Jun-2008 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: fix sleep confirmation

This fixes an issus that made "iwconfig eth1 power on" non-working.
When we get a "PS sleep" event, we have to confirm this to the firmware.
The confirm happens with a command, but this command is special: the
firmware won't send us a response. if_cs_host_to_card() is setting
priv->dnld_sent anyway, so this variable stayed at DNLD_DATA_SENT and
was never cleared back.

Now I put the special knowledge that the CMD_802_11_PS_MODE with
CMD_SUBCMD_SLEEP_CONFIRMED doesn't need to need a response by directly
clearing the dnld_sent state in lbs_send_confirmsleep().

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
85319f933a703a92652a8f23339f1ec1694cd594 24-May-2008 Javier Cardona <javier@cozybit.com> libertas: rate adaptation configuration via iwconfig.

Implemented rate adaptation support via 'iwconfig rate' API. It is now
possible to specify a bit-rate value and append 'auto'. That will configure
rate adaptation to use all bit-rates equal or lower than than selected value.

Made lbs_cmd_802_11_rate_adapt_rateset a direct command.

Signed-off-by: Javier Cardona <javier@cozybit.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
df349f9fe7500fcb98f560c74b5e99477ca1df1c 23-May-2008 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: use lbs_pr_XX instead of printk

... because lbs_pr_XXX prefixes all messages with "libertas: "

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
57962f0b9d76487a660619f97c0aa811924274a0 14-May-2008 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: reduce command retry time

[PATCH, take 2] libertas: reduce command retry time

In the normal case, an unsuccessful command would be retried for 10*5 seconds,
or 10*10 seconds in the worst case. This patch reduces this to 3*3 seconds,
or 3*10 seconds in the worst case.

I also reduced the time it takes to start a new command downloaded.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
edaea5ce05ca804cc55438c586ca2f947d49f56f 17-May-2008 Javier Cardona <javier@cozybit.com> libertas: Extend MESH_CONFIG command to access non-volatile configuration

This patch is based on a patch from Shailendra Govardhan and Brian Cavagnolo.
It extends the MESH_CONFIG command to configure non-volatile parameters on
libertas devices that support them (e.g. OLPC Active Antenna).

This patch only implements the driver/firmware interface.

See http://dev.laptop.org/ticket/6823 for minimal testing results and known
issues.

Signed-off-by: Javier Cardona <javier@cozybit.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
75bf45a7b4ab81cfa5c5eab68b57bbfee8b8ede2 20-May-2008 David Woodhouse <dwmw2@infradead.org> libertas: fix multicast filtering on eth and msh interfaces

We weren't properly handling multicast on the mesh interface. Fix that,
which involves setting up the hardware to use the union of dev->mc_list
for both eth%d and msh%d devices.

This means we can't do it directly from ->set_multicast_list() because
we'd need to lock the other device to read its list, and we can't do
that because it might deadlock. So punt the actual work to keventd.

Also, invoke the same when taking an interface down; for some reason the
core calls ->set_multicast_list while IFF_UP is still set in dev->flags
when we're taking it down, so its addresses don't get removed then.

We also convert MAC_MULTICAST_ADR to a direct command while we're at it,
removing one more entry from the big switch statement in the deprecated
lbs_prepare_and_send_command() function.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
e37fc6e11c79899451e394319cff18cc53d6448d 20-May-2008 David Woodhouse <dwmw2@infradead.org> libertas: Increase priority of 'unknown command' warnings

Using the deprecated lbs_prepare_and_send_command() function for a
command which it doesn't understand is an error; complain loudly about
it even when we're not debugging.

The mesh stats bug, where we converted MESH_ACCESS to a direct command
but accidentally missed one user which was still trying to do it through
lbs_prepare_and_send_command(), would have been caught a lot quicker if
we'd done this sooner. Such bugs aren't entirely unlikely in future too,
as we convert more code to stop using this function.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
ef85ad541f9a6ccd3f89ec73f92b2d6f45a9d3e8 14-May-2008 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: remove lbs_get_data_rate()

lbs_get_data_rate() gets called, but no-one uses it's result.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
8d0c7fad35538e02dff6fdb2d67943ae582819b3 09-Apr-2008 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: un-garbage various command structs

Some command structs contain reserved or unused fields, which the driver
send uninitialized down to the card.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
7919b89c8276d657976d4d4d6b7cb58ea1aa08c3 01-Apr-2008 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: convert libertas driver to use an event/cmdresp queue

This patch (co-developed by Dan Williams and Holger Schurig) uses a kfifo
object for events and a swapping buffer scheme for the command response to
preserve the zero-copy semantics of the CF driver and keep memory usage low.
The main thread should only ever touch the buffer indexed by priv->resp_idx,
while the interface code is free to write to the second buffer, then swap
priv->resp_idx under the driver spinlock. The firmware specs only permit
one in-flight command, so there will only ever be one command response to
process at a time.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
73ab1f25d4a3a22a1547d44199c2171c04e59cb8 02-Apr-2008 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: move lbs_update_channel out of assoc.c

... as it has nothing to do with pure association

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
697900ac14528e985b66f471ecb81082fc00baa9 02-Apr-2008 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: move association code from join.c into scan.c

Besides code moving, I did the following changes:

* made some functions static
* removed some unneeded #include's
* made patch checkpatch.pl clean

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
f539f2efe9fdf9e7db2022a757190858576d34fd 26-Mar-2008 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: convert sleep/wake config direct commands

Confirm sleep event: they come very regularly, eventually several times per
second. Therefore we want to send the config command as fast as possible.
The old code pre-set the command in priv->lbs_ps_confirm_sleep. However, the
byte sequence to be sent to the hardware is the same for all interfaces. So
this patch make this an extern structure, initialized at module load time.

Config wake event: normal conversion to a direct command. However, I don't know
how to trigger a "HOST AWAKE" event from the firmware, so this part is
untested.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
7460f5a69055357bf97f1890db547aba0c4bf2fa 26-Mar-2008 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: convert CMD_802_11_EEPROM_ACCESS to a direct command

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2af9f039a17c0acd9e5b21d10058688687bad86d 26-Mar-2008 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: convert CMD_802_11_MAC_ADDRESS to a direct command

* directly call lbs_cmd_with_response()
* only overwrite priv->current_addr once the firmware call succeeded

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
e5225b397308f9eea86327293b73dc88068e0179 26-Mar-2008 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: reduce debug output

This patch tries to make dmesg logs between different runs easier
to compare by

* removing the jiffies (use CONFIG_PRINTK_TIME if you need
timing)
* remove the line numbers, they change with each applied patch

It also changes the deprecated __FUNCTION__ to __func__ to make
checkpatch.pl happy.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
62436138c83f221943c1f5d9cff41305d3d26ac4 26-Mar-2008 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: remove CMD_802_11_PWR_CFG

This has nowhere been used. Note: in the firmware manual this was
documented as CMD_802_11_PA_CFG. If we ever need it, we can/should
re-implement it as a direct command.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
e98a88dd33b7188ce84533e128101dd9630ae592 19-Mar-2008 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: remove lots of unused stuff

This removes many unused function parameters as well as some not-implemented
functions, e.g. CMD_802_11_GET_STATS. The silly lbs_set_cmd_ctrl_node()
function is now also gone.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
d4ff0ef635b222d5f66dad65e9364d702e5f94e0 19-Mar-2008 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: misc power saving adjusts

* firmware for the CF card supports power saving
* the driver currenly only accept "iwconfig ethX power on|off", so
I fixed what the range wext ioctl reports.
* initialize value/flags in lbs_get_power()
* get rid of unused parameter psmode in lbs_ps_confirm_sleep()
* some minor debug output tweaks

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
c49c3b77c8c611f562ca4e201d88d3e69465f928 17-Mar-2008 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: convert GET_LOG to a direct command

Now uses __lbs_cmd() to get the "log" (it's actually more a snapshot of
various counters, not a sequential log). Besides the "mechanical" convertion
the patch add the following logical changes:

* Removes the priv->logmsg variable, it was only used in one place anyway,
also don't blindly get the counters when associating. Getting the
counters then the user asks via WEXT for them is good enought.
* don't set wstats.discard.fragment with log.rxfrag, because the latter is
a counter for successfully received packets, not for fragmented packets.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
c97329e21fc487ebf251c920d46537ff5fb4d8a7 18-Mar-2008 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: fix scheduling while atomic bug in CMD_MAC_CONTROL

The old code incorrectly used lbs_cmd_with_response() and now uses
lbs_cmd_async().

While there I noticed that there is no real useful return values for
asynchronous command functions, so I made the function "void".

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
8db4a2b986befabd2ad25c269e40444f06a6bda3 19-Mar-2008 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: make a handy lbs_cmd_async() command

This uses a static lbs_cmd_async_callback function, which is a
noop. Just setting the callback argument to __lbs_cmd_async()
to NULL won't work, because then the cmdnode wouldn't be
released.

This also makes __lbs_cmd_async() a static method, which is
now only used by lbs_cmd() and lbs_cmd_async().

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
56ca84c61b667e23cdc6e5179df57b9baa0eddc3 12-Mar-2008 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: remove some unused commands

Neither CMD_802_11_PAIRWISE_TSC nor CMD_802_11_GROUP_TSC is used or
documented. It might have something to do with TKIP sequence counters,
but that's just an educated guess. Remove all occurences of them.

CMD_CODE_DNLD is also neither used nor documented.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
d9e9778c2ac5bac02fc118e9a2954e4c70f88eb6 12-Mar-2008 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: rename packetfilter to mac_control

The CMD_MAC_CONTROL can be used for other things than just filtering
packets, e.g. to enable and disable WMM. This uses the same term mac_control
for the define, the function and the shadow value in struct lbs_private.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
835d3ac5e8cbe1fec2c02c7fc662586b30b1f5a8 12-Mar-2008 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: convert CMD_MAC_CONTROL to a direct command

convert CMD_MAC_CONTROL to a direct command

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
fa62f99cf80af9c65bfc0f731d780e03e3ce6ede 03-Mar-2008 David Woodhouse <dwmw2@infradead.org> libertas: convert 802_11_SCAN to a direct command

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
9e1228d00a8e959dd3f4d0bd7949fda1ce11b314 03-Mar-2008 David Woodhouse <dwmw2@infradead.org> libertas: convert KEY_MATERIAL to a direct command

The struct enc_key probably wants to die too, but that can come later.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
1afc09ab7c62d0e59596ce76e8e256b0cf695654 29-Jan-2008 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: trim overly long debug statement

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
4b7524a42e14a7f86fa12611f3419650e99e2526 26-Feb-2008 Roland Dreier <rdreier@cisco.com> libertas: Remove unused exports

The libertas driver exports a number of symbols with no in-tree users;
remove these unused exports. lbs_reset_device() is completely unused, with
no callers at all, so remove the function completely.

A couple of these unused exported symbols are static, which causes the
following build error on ia64 with gcc 4.2.3:

drivers/net/wireless/libertas/main.c:1375: error: __ksymtab_lbs_remove_mesh causes a section type conflict
drivers/net/wireless/libertas/main.c:1354: error: __ksymtab_lbs_add_mesh causes a section type conflict

Signed-off-by: Roland Dreier <rolandd@cisco.com>
Acked-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
dac10a9f286c75cffa75c7ec8b05d566a6ece95e 16-Jan-2008 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: always show firmware release

Always shows the firmware release.

Also converts the firmware release into something that is easily comparable.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
5844d12ea30bacae9224db6561a16e86ad31c6e5 18-Dec-2007 David Woodhouse <dwmw2@infradead.org> libertas: convert SUBSCRIBE_EVENT to a direct command

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
4f59abf190b15350167bec5382dda205030ac9d0 18-Dec-2007 David Woodhouse <dwmw2@infradead.org> libertas: convert ENABLE_RSN to a direct command

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
f70dd4515a8ad9c9d59ebb8c1d1fa2c610fb4020 18-Dec-2007 David Woodhouse <dwmw2@infradead.org> libertas: convert SET_WEP to a direct command

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
3fbe104cecdb8c812976fdb0cc41be65491b85ee 18-Dec-2007 David Woodhouse <dwmw2@infradead.org> libertas: convert SLEEP_PARAMS to a direct command

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
6e5cc4fb35c45a8f8478d25c4e89e8d9c543056e 18-Dec-2007 David Woodhouse <dwmw2@infradead.org> libertas: convert INACTIVITY_TIMEOUT to a direct command

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
a7c458906542aacdda7289bb21f527a2dc4097ca 18-Dec-2007 David Woodhouse <dwmw2@infradead.org> libertas: convert RADIO_CONTROL to a direct command

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
18c52e7c3e3d0e7fbddd0334b58030bb89554cb9 17-Dec-2007 David Woodhouse <dwmw2@infradead.org> libertas: make lbs_submit_command always 'succeed' and set command timer

Even if it fails, we want to wait a while and try again, with an
ultimate timeout if it the condition persists. So again, just use the
standard command timeout behaviour.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
24dba5f39194c57f98090d1ee504be5740dc521c 17-Dec-2007 David Woodhouse <dwmw2@infradead.org> libertas: don't clear priv->dnld_sent after sending sleep confirm

DNLD_RES_RECEIVED is a bit of a misnomer -- we never wait for the result
to be received; it's purely representing the state of the TX path, and
in this case the TX path is definitely busy.

Of course, that means that we don't actually care about DATA_SENT vs.
CMD_SENT either, but that's a can of worms for another day...

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
38bfab1a01c66cb1a5001dc702b0856b2f942fd5 17-Dec-2007 David Woodhouse <dwmw2@infradead.org> libertas: fix buffer handling of PS_MODE commands and responses

Commit 5b8845345e7385d2eb37fac22ba9ab6905988be5 (or, in case the git
workflow is broken and patches get recommitted, the commit entitled
'libertas: rename and re-type bufvirtualaddr to cmdbuf' by dcbw),
introduced a number of bugs where we once had a pointer to a command
_payload_, but now we use the pointer to the command header instead.

The fix isn't wonderfully pretty for now, but it'll get better when we
finish converting all commands so the structures include the header.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
681ffbb7d42435332fff0812145c7050d6153925 16-Dec-2007 David Woodhouse <dwmw2@infradead.org> libertas: kill 'addtail' argument to lbs_queue_cmd() and make it static

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
9fae899c2b5dc224042da63b14118abdb22ae9b6 15-Dec-2007 David Woodhouse <dwmw2@infradead.org> libertas: ensure response buffer size is always set for lbs_cmd_with_response

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
3399ea5f239d49522212db179bca4de9e84b09df 15-Dec-2007 David Woodhouse <dwmw2@infradead.org> libertas: add __lbs_cmd_async() for asynchronous command submission

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
ae125bf8278249b8c44168c5183f551c3ed28b84 15-Dec-2007 David Woodhouse <dwmw2@infradead.org> libertas: store command result in cmdnode instead of priv->cur_cmd_retcode

... at least for users of __lbs_cmd().

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
75567670c66329a111c2b4f12d6c1fc02b3b14d2 15-Dec-2007 David Woodhouse <dwmw2@infradead.org> libertas: kill pdata_buf member of struct cmd_ctrl_node

We can use the callback_arg for it; that's the way we're heading anyway...

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
ad12d0f418b7d3bbc6d1ccc4ff0858361cf0aafe 15-Dec-2007 David Woodhouse <dwmw2@infradead.org> libertas: let __lbs_cmd() free its own cmdnode

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
5ba2f8a0217cd6116fcbac056b360bb0db045379 15-Dec-2007 David Woodhouse <dwmw2@infradead.org> libertas: kill cleanup_cmdnode()

Move the wakeup into lbs_complete_command(), and leave the other bits
in __lbs_cleanup_and_insert_cmd() which was the only caller now anyway.

There are two remaining direct callers of lbs_cleanup_and_insert_cmd(),
and they are both fine without the wakeup.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
ecfe9b487c0d3f6b7ad58006888a56f01ae52b58 15-Dec-2007 David Woodhouse <dwmw2@infradead.org> libertas: don't re-initialise cmdnode when taking it off the free queue

We initialise it when we add it to the queue. No need to do it again.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
183aeac1c49869ba9a14c7ead86ce268da397a0e 15-Dec-2007 David Woodhouse <dwmw2@infradead.org> libertas: introduce and use lbs_complete_command() for command completion

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
c4ab41272b55a08741d2e68966aae700e2e6d597 15-Dec-2007 David Woodhouse <dwmw2@infradead.org> libertas: remove some pointless checks for cmdnode buffer being present

We allocate them all at the same time, at startup. If they go missing,
we have more serious things to worry about, and the resulting oops will
be a perfectly acceptable result.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
d9896ee14768e3dd6ce2f57a0d518b5b18a924a1 15-Dec-2007 David Woodhouse <dwmw2@infradead.org> libertas: rename and clean up DownloadcommandToStation

Call it lbs_submit_command(), remove a bunch of things which can be (or,
in the case of zeroing ->cmdwaitqwoken, already are) done elsewhere.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
8e5b6b2d32304f4d6a096a6dfae23d12dc6f9287 15-Dec-2007 David Woodhouse <dwmw2@infradead.org> libertas: kill unused wait_option field in struct cmd_ctrl_node

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
7e226272fcf9c1ec8b67fac995ce4227f4f76971 15-Dec-2007 David Woodhouse <dwmw2@infradead.org> libertas: kill whitespace at end of lines

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
860621347e88b23517fc4ec93fa5af940401c3ec 13-Dec-2007 David Woodhouse <dwmw2@infradead.org> 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>
020f3d0001cb249ceae623c1a7ae0c196326ef3f 13-Dec-2007 David Woodhouse <dwmw2@infradead.org> 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>
506e9025e030c441679fb1ae77fb0d6266c34443 13-Dec-2007 David Woodhouse <dwmw2@infradead.org> 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>
689442dca16eb27fee19074499d42845fe54c12a 12-Dec-2007 David Woodhouse <dwmw2@infradead.org> 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>
6ce4fd2a3a84e64a27c42aaa7de6e0e85dee3573 12-Dec-2007 David Woodhouse <dwmw2@infradead.org> 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>
23d36eec263d2c913ee651dc43472524397e4a0b 12-Dec-2007 David Woodhouse <dwmw2@infradead.org> libertas: add missing newlines in debugging statements

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
e1258177e437cb8b892622f2b7beedd4701540ac 12-Dec-2007 David Woodhouse <dwmw2@infradead.org> 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>
06113c1c70349f5f888436ac2af28c707f4602ef 12-Dec-2007 David Woodhouse <dwmw2@infradead.org> 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>
23a397ac821ab0aa263bda47131bb0628e49101a 12-Dec-2007 David Woodhouse <dwmw2@infradead.org> 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>
2fd6cfe307557f3022b47288db3dc094c076e539 11-Dec-2007 David Woodhouse <dwmw2@infradead.org> 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>
cb182a602802b36ff992afe238e1a3eafc0956b2 11-Dec-2007 Dan Williams <dcbw@redhat.com> 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>
2dd4b26264d48f10e802cc9f2d75542be5a3c7fa 11-Dec-2007 Dan Williams <dcbw@redhat.com> 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>
8e3c91bb70372da692a5fefae9f698c94bb1e641 11-Dec-2007 Dan Williams <dcbw@redhat.com> 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>
301eacbf30e33f461701df91cb250d3fc24c5fe5 11-Dec-2007 David Woodhouse <dwmw2@infradead.org> 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>
ad9d7a7f3cc73a6288920cc17c807f56bd8327fc 11-Dec-2007 David Woodhouse <dwmw2@infradead.org> 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>
ddac452680a5164bb47d61ea54f596ddaf3aea7d 11-Dec-2007 Dan Williams <dcbw@redhat.com> 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>
6e66f03ff78b23d845920739373b1561c546b13f 11-Dec-2007 Dan Williams <dcbw@redhat.com> 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>
a8bdcd71fd33e4a919f9f0cb32207c644b70853f 11-Dec-2007 Dan Williams <dcbw@redhat.com> 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>
7ad994dec7d36c319cb35cbf3a920d3bda96e6b0 11-Dec-2007 Dan Williams <dcbw@redhat.com> 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>
852e1f2a2627274102a3c2dc70a6547aeab99cb6 10-Dec-2007 Dan Williams <dcbw@redhat.com> 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>
14e865ba5d9e9adc90363e572743ac238935ba38 10-Dec-2007 Dan Williams <dcbw@redhat.com> 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>
1309b55b4de18bbfe19c73225a5481d6cdc8a463 10-Dec-2007 David Woodhouse <dwmw2@infradead.org> 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>
aa21c004f80bdf943736c62dccf0c0398d7824f3 08-Dec-2007 David Woodhouse <dwmw2@infradead.org> 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>
448a51ae0684c146c9f9ba4e178ab2182512258f 08-Dec-2007 David Woodhouse <dwmw2@infradead.org> 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>
ac47246e246c183ed68b3fdb307a83d00313a325 08-Dec-2007 David Woodhouse <dwmw2@infradead.org> libertas: kill adapter->nr_cmd_pending

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
c2df2efe96742b78454acdffe6d278ae334fc838 07-Dec-2007 Holger Schurig <hs4233@mail.mn-solutions.de> 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>
1723047d6742cc172d5c0f1a5245deaee67ff331 07-Dec-2007 David Woodhouse <dwmw2@infradead.org> 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>
f9f6890e41815cfb8aa34fe9efb216fcc16eea9e 06-Dec-2007 David Woodhouse <dwmw2@infradead.org> 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>
abe3ed14d39adcea9ae186cf741b15d11544458f 06-Dec-2007 Li Zefan <lizf@cn.fujitsu.com> 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>
6228c0aea544f5292977e6b27cd231a4ea137a62 06-Dec-2007 David Woodhouse <dwmw2@infradead.org> 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>
ad9de29130599d4be3467932643797da3b9869f6 06-Dec-2007 David Woodhouse <dwmw2@infradead.org> 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>
675787e29fd97d08bf7e6253c89ab6de23bf7089 05-Dec-2007 Holger Schurig <h.schurig@mn-solutions.de> 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>
0d61d04210b617963c202a3c4dcbcd26a024d5d3 05-Dec-2007 Holger Schurig <h.schurig@mn-solutions.de> libertas: make more functions static

These functions were used in the old debugfs code for events, but
as this code is now gone, there's no need to export those functions.

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>
c68b3bbdb596b5f82f1f0731f6fcb210735aff39 05-Dec-2007 Holger Schurig <h.schurig@mn-solutions.de> libertas: remove cmd_ctrl_node->status

There was no code that ever did set this variable.

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>
f5ece8fc8d3f5e36bda3554b74b0fbecb0a14309 01-Dec-2007 David Woodhouse <dwmw2@infradead.org> libertas: Remove cmd_oid from struct cmd_ctrl_node

This is only needed for SNMP and key operations; it doesn't need to be
preserved outside that context.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
3a1886491710c196656a005fcc693172f5bb4c8a 26-Nov-2007 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: rework event subscription

This patch moves re-works the implementation of event subscription
via debugfs. For this:

* it tells cmd.c and cmdresp.c about CMD_802_11_SUBSCRIBE_EVENT
* removes lots of low-level cmd stuff from debugfs.c
* create unified functions to read/write snr, rssi, bcnmiss and
failcount
* introduces #define's for subscription event bitmask values
* add a function to search for a specific element in an IE
(a.k.a. TLV)
* add a function to find out the size of the TLV. This is needed
because lbs_prepare_and_send_command() has an argument for a
data buffer, but not for it's lengths and TLVs can be, by
definition, vary in size.
* fix a bug where it was not possible to disable an event

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
69f9032d9dfeb763b467fdbe8cf5938f5457083a 23-Nov-2007 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: remove arbitrary typedefs

New typedefs are usually frowned upon. This patch changes
libertas_adapter -> struct libertas_adapter
libertas_priv -> struct libertas_priv

While passing, make everything checkpatch.pl-clean that gets touches.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
96287ac4f7b387acbe17e24b5e1bcbf3bc0e75cd 20-Nov-2007 Brajesh Dave <brajeshd@marvell.com> libertas: configurable beacon interval

Requires firmware version 5.110.19.p0 or newer, available here:
http://dev.laptop.org/pub/firmware/libertas/

Signed-off-by: Ashish Shukla <ashishs@marvell.com>
Signed-off-by: Javier Cardona <javier@cozybit.com>
Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
01d77d8d4747d73cfb6daf35cdc906a2db8ded9d 20-Nov-2007 Brajesh Dave <brajeshd@marvell.com> libertas: separate mesh connectivity from that of the main interface

The transmit and receive traffic as soon as the mesh interface is
brought up.

Test case 1: Bring up only the mesh interface and ping. No need for
any iwconfig commands on the main interface.

$ ifconfig msh0 192.168.5.3
$ iwconfig msh0 channel X
$ ping 192.168.5.2
If ping succeeds, PASS

Test case 2: Associate with the main interface, and turn off AP. Mesh
interface should not lose connectivity.

$ iwconfig eth0 mode managed essid "my_ssid"
$ ifconfig msh0 192.168.5.3
$ ping 192.168.5.2
<turn off access point>
If ping continues uninterrupted, PASS

This feature requires firmware version 5.110.19.p0 or newer, available
here: http://dev.laptop.org/pub/firmware/libertas/

Signed-off-by: Ashish Shukla <ashishs@marvell.com>
Signed-off-by: Javier Cardona <javier@cozybit.com>
Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
1007832103d016d1563fab71d4cf2b057a0bcceb 16-Nov-2007 Holger Schurig <hs4233@mail.mn-solutions.de> libertas: move to uniform lbs_/LBS_ namespace

This patch unifies the namespace of variables, functions defines
and structures. It does:

- rename libertas_XXX to lbs_XXX
- rename LIBERTAS_XXX to lbs_XXX
- rename wlan_XXX to lbs_XXX
- rename WLAN_XXX to LBS_XXX (but only those that were
defined in libertas-local *.h files, e.g. not defines
from net/ieee80211.h)

While passing, I fixed some checkpatch.pl errors too.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
29f5f2a19b055feabfcc6f92e1d40ec092c373ea 30-Oct-2007 Marcelo Tosatti <marcelo@kvack.org> libertas: properly account for queue commands

Properly account for queue commands, this fixes a problem reported
by Holger Schurig when using the debugfs interface.

Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
6470a89de90167cc1ff8a0312197ca422f5fe35f 08-Oct-2007 Holger Schurig <hs4233@mail.mn-solutions.de> [PATCH] libertas: fix u8 constant

Don't write constants that are (per documentation and struct) u8
as 0x0001, use 0x01 instead. Also remove an useless cast.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Acked-By: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
794760f750655d987499d7a5034519afc84af63b 20-Aug-2007 Pierre Ossman <drzeus-list@drzeus.cx> [PATCH] libertas: properly end commands on hardware failure

Make sure that errors reported by the hardware layer is properly
handled. Otherwise commands tend to get stuck in limbo.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
63f0023bc34073bea8452a4770540c954f98208f 02-Aug-2007 Luis Carlos Cobo <luisca@cozybit.com> [PATCH] libertas: pass boot2 version to firmware

Boot2 version used to be hardcoded in the uploaded firmware,
this patch preserves the boot2 version before uploading firmware
and sends it to the firmware again on resume.

Signed-off-by: Luis Carlos Cobo <luisca@cozybit.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
b031ac10264fa9b805d84b4a440407ac950390cf 02-Aug-2007 Eugene Teo <eugeneteo@kernel.sg> [PATCH] drivers/net/wireless/libertas/cmd.c: fix adapter->driver_lock dereference

adapter is NULL if cmdnode is not.

Signed-off-by: Eugene Teo <eugeneteo@kernel.sg>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
5707708111ca6c4e9a1160acffdc98a98d95e462 02-Aug-2007 Dan Williams <dcbw@redhat.com> [PATCH] libertas: fix assignment of WEP key type

keytype is a u8

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
965f8bbc6c92233600b176f4c80299f6766df9bd 02-Aug-2007 Luis Carlos Cobo <luisca@cozybit.com> [PATCH] libertas: monitor mode support for OLPC firmware

Driver support for the monitor mode support that will be available in the next
OLPC 'bleeding edge' Marvell firmware release (most likely, 5.110.16.p2).

To activate monitor mode,

echo mode > /sys/class/net/{ethX,mshX}/device/libertas_rtap

where mode is the hex mask that specifies which frames to sniff (in short, 0x1
for data, 0x2 for all management but beacons, 0x4 for beacons). Any non zero
mode will activate the monitor mode, inhibiting transmission in ethX and mshX
interfaces and routing all the incoming traffic to a new rtapX interface that
will output the packets in 802.11+radiotap headers format.

Signed-off-by: Luis Carlos Cobo <luisca@cozybit.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
56c4656e84d068ecc4da670799216e5b2aaee50e 02-Aug-2007 Holger Schurig <hs4233@mail.mn-solutions.de> [PATCH] libertas: remove adapter->multipledtim

multipledtim was initialized with MRVDRV_DEFAULT_MULTIPLE_DTIM and then
kept at that value, so we could use that define directly.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
252cf0d10f76d3edcd808d462dcfbd544875a0be 02-Aug-2007 Holger Schurig <hs4233@mail.mn-solutions.de> [PATCH] libertas: remove adapter->locallisteninterval

locallisteninterval was initialized with 0, but there is no code that
changes it, rendering it rather useless.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
97605c3eb3dee943a45584be92c46be1305b3ef5 02-Aug-2007 Holger Schurig <hs4233@mail.mn-solutions.de> [PATCH] libertas: remove adapter->nullpktinterval

No code ever initialized this variable, so it was 0 because of kzalloc().
But no other code changes it, making it rather useless.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
a783f1ee5b112a0258762877ec7c1ce8810f3cd8 02-Aug-2007 Holger Schurig <hs4233@mail.mn-solutions.de> [PATCH] libertas: remove adapter->{data,bcn}_avg_factor

Those two variables were initialized with some default values, but there
is no code that would ever change them. So we could use as well the defaults
directly.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
cad9d9b17a4ab80da1593de004a1163b359de268 02-Aug-2007 Holger Schurig <hs4233@mail.mn-solutions.de> [PATCH] libertas: remove adapter->txrate

The value of txrate was only set by a CMD_802_11_TX_RATE_QUERY command,
but there was no code in the driver that ever issued this command.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
fdde7084e033263f48d26d5b24ecf626aed29b5b 02-Aug-2007 Holger Schurig <hs4233@mail.mn-solutions.de> [PATCH] libertas: remove adapter->{rx,tx}antenna

There was nowhere any code that used the values of those
variables.

This patch also removes two static functions that are now unused.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
8ff12da121af175a14c4cedbba0fd16ff0cfc07a 02-Aug-2007 Holger Schurig <hs4233@mail.mn-solutions.de> [PATCH] libertas: use LBS_DEB_HOST for host-to-card communications

... and LBS_DEB_CMD for command execution. Also tidies misc
comments to give a consistent output.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
ece561919326236c7fb791a5e883f0eb76af029e 02-Aug-2007 Holger Schurig <hs4233@mail.mn-solutions.de> [PATCH] libertas: make the hex dumper nicer

Currently, when you define LBS_DEB_HEX, you get every hex dump in the
whole driver, e.g. for LBS_DEB_CMD, LBS_DEB_RX, LBS_DEB_TX etc. This
patch makes sure that you only get the hexdump that you're interested in.

Renamed lbs_dbg_hex() into lbs_deb_hex(), like the other lbs_deb_XXX()
macros.

Made lbs_deb_hex() issue a line feed (and a new prompt) after 16 bytes.

As lbs_deb_hex() now prints the ":" after the prompt by itself, removed
the misc colons in the various *.c files.

lbs_deb_XXX() now print the debug category as well.

As lbs_deb_XXX() --- and especially lbs_deb_11d() --- now print the
category, I removed various "11D:" prefixes in 11d.c as well.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
ac558ca2ae878bd7a77831cda684702a2fa23d95 02-Aug-2007 Holger Schurig <hs4233@mail.mn-solutions.de> [PATCH] libertas: make more functions static & remove unused functions

Some functions where declared in header files, but used only once. They are
now static functions.

After doing this, I found out that some functions weren't used at all. I
removed this dead code.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
8c5127657549d055ac9d709cdea73902a6ef392c 02-Aug-2007 Dan Williams <dcbw@redhat.com> [PATCH] libertas: simplify and clean up data rate handling

Remove unused/duplicated fields and consolidate static data rate arrays,
for example the libertas_supported_rates[] and datarates[] arrays in
the bss_descriptor structure, and the libertas_supported_rates field
in the wlan_adapter structure.

Introduce libertas_fw_index_to_data_rate and libertas_data_rate_to_fw_index
functions and use them everywhere firmware requires a rate index rather
than a rate array.

The firmware requires the 4 basic rates to have the MSB set, but most
other stuff doesn't, like WEXT and mesh ioctls. Therefore, only set the MSB
on basic rates when pushing rate arrays to firmware instead of doing a ton
of (rate & 0x7f) everywhere.

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
ffcae953ac021f5051a201c18e133cb0ce38c2b9 02-Aug-2007 Dan Williams <dcbw@redhat.com> [PATCH] libertas: fix more mixed-case abuse

Mistakently introduced by a previous patch to upper-case all command
constants.

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
fe3361507af44d00d5b42b91c1626321765a11bc 02-Aug-2007 Dan Williams <dcbw@redhat.com> [PATCH] libertas: remove thread.h and make kthread usage clearer

Remove the thread.h abstractions and opencode kthread stuff
to make it clearer.

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
0aef64d75851c9f3545d0793f26486ed862306d8 02-Aug-2007 Dan Williams <dcbw@redhat.com> [PATCH] libertas: re-uppercase command defines and other constants

For readability.

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
1443b6530d8db779082dc9fabbd894e2b551b101 02-Aug-2007 Dan Williams <dcbw@redhat.com> [PATCH] libertas: rename WLAN_802_11_KEY to enc_key and clean up usage

It doesn't touch hardware and therefore doesn't need endian notations
either.

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
777fa98194f91dae24fd12de47eec1cbb0375b29 06-Jul-2007 Dan Williams <dcbw@redhat.com> [PATCH] libertas: fix disabling WPA

Found by Guillaume LECERF <glecerf@gmail.com>

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
18c96c3497aa871608d57ca5e08de3558159a6c9 18-Jun-2007 Dan Williams <dcbw@redhat.com> [PATCH] libertas: fix WPA associations by handling ENABLE_RSN correctly

Don't clobber the firmware's internal state machine by setting
ENABLE_RSN more than once during the 4-way handshake. Check what
the ENABLE_RSN status is and only set if it should be changed.

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
981f187b7c4b237011d4175cae0120d5d203c0fd 26-May-2007 David Woodhouse <dwmw2@infradead.org> [PATCH] libertas: first pass at fixing up endianness issues

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
90a42210f275e1f828eb6c08bf8252c2d6a774e0 26-May-2007 Dan Williams <dcbw@redhat.com> [PATCH] libertas: Make WPA work through supplicant handshake

Fix WPA so it works up through the supplicant 4-Way handshake process.
Doesn't successfully pass traffic yet; may be problems installing
the GTK to the firmware.

- RSN needs to be enabled before the association command is sent
- Use keys from the association request not the adapter structure
- cmd_act_mac_strict_protection_enable != IW_AUTH_DROP_UNENCRYPTED
- Fix network filtering logic in is_network_compatible() WPA helpers

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
24d443b5d568c6e11b07267e2d784f5f04aa5dac 25-May-2007 Dan Williams <dcbw@redhat.com> [PATCH] libertas: fix debug enter/leave prints for libertas_execute_next_command

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
90e8eafc93ed159846bb7126af8502f2a8570a11 25-May-2007 Luis Carlos Cobo <luisca@cozybit.com> [PATCH] libertas: updated mesh commands for 5.220.9.p11

Updated commands fwt_add and fwt_list, bt_list.
New commands: bt_get_invert, bt_set_invert, to invert the blinding table,
i.e., receive only frames from nodes listed in the BT.

This patch needs/is needed for firmware 5.220.9.p11.

Signed-off-by: Luis Carlos Cobo <luisca@cozybit.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
634b8f49c11f49272b09d13a34b22a17b8c3d419 25-May-2007 Holger Schurig <hs4233@mail.mn-solutions.de> [PATCH] libertas: remove unused variables in wlan_dev_t

Actually, this patch removev wlan_dev_t totally and puts the used variables
of it directly into wlan_private. That reduces one level of indirection and
looks a little bit simpler. It's now "priv->card" and not
"priv->wlan_dev.card" and "priv->dev" instead of "priv->wlan_dev.netdev"

Changed two occurences of "((wlan_private *) dev->priv)->wlan_dev.netdev"
into "dev", because I didn't see the point in doing pointer-ping-pong.

The variables "ioport", "upld_rcv" and "upld_type" where unused. They have
been removed.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
084708b61014776198c56d1606343d4f504c691e 25-May-2007 Holger Schurig <hs4233@mail.mn-solutions.de> [PATCH] libertas: split module into two (libertas.ko and usb8xxx.ko)

* add CONFIG_LIBERTAS to Kconfig
* remove global variable libertas_fw_name, the USB module might want to
use a different default FW name than the CF module, so libertas_fw_name
is now local to if_usb.c
* exported some symbols as GPL

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
208fdd2f447899164bd139452c291b155e53cee9 25-May-2007 Holger Schurig <hs4233@mail.mn-solutions.de> [PATCH] libertas: indirect all hardware access via hw_XXXX functions

This functions makes all libertas_sbi_XXX functions static to the
if_usb.c file and renames them to if_usb_XXXX(). The get called from
other places of the source code via priv->hw_XXXX().

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
fb3dddf22c63d7e0622d4819a87dbb8563f0e968 25-May-2007 Holger Schurig <hs4233@mail.mn-solutions.de> [PATCH] libertas: changed some occurences of kmalloc() + memset(&a,0,sz) to kzalloc()

The subject says it all.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
9012b28a407511fb355f6d2176a12d4653489672 25-May-2007 Holger Schurig <hs4233@mail.mn-solutions.de> [PATCH] libertas: make debug configurable

The debug output of libertas was either not present or it was overwhelming.
This patch adds the possibility to specify a bitmask for the area of
interest. One should then only get the desired output.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
4269e2ad83036e1d8c076b1f1348f879a93be008 11-May-2007 Dan Williams <dcbw@redhat.com> [PATCH] libertas: 64-bit cleanups

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
0dc5a29044d56912bf0d4e5cd19127f82b90c29c 11-May-2007 Dan Williams <dcbw@redhat.com> [PATCH] libertas: remove WLAN_802_11_NETWORK_INFRASTRUCTURE enum

Use standard IW_MODE_* constants instead.

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
876c9d3aeb989cf1961f2c228d309ba5dcfb1172 10-Feb-2007 Marcelo Tosatti <marcelo@kvack.org> [PATCH] Marvell Libertas 8388 802.11b/g USB driver

Add the Marvell Libertas 8388 802.11 USB driver.

Signed-off-by: Marcelo Tosatti <marcelo@kvack.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>