firefly-linux-kernel-4.4.55.git
16 years agolibertas: clean up is_command_allowed_in_ps()
Dan Williams [Mon, 10 Dec 2007 20:24:47 +0000 (15:24 -0500)]
libertas: clean up is_command_allowed_in_ps()

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

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

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

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

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

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

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

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

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

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

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

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

Previously, the display of subscribed events could be wrong.

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

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

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

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

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

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

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

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

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

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

This was making my brain hurt.

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

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

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

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

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

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

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

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

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

These wrappers only do two things.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Also attempt some locking in lbs_host_to_card_done()

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

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

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

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

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

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

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

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

No semantic changes.

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

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

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

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

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

Also clean up the double setting/clearing of IW_ENCODE_DISABLED.

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

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

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

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

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

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

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

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

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

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

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

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

And the death of libertas_prepare_and_send_command() starts...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: make more functions static
Holger Schurig [Wed, 5 Dec 2007 16:58:06 +0000 (17:58 +0100)]
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>
16 years agolibertas: remove cmd_ctrl_node->status
Holger Schurig [Wed, 5 Dec 2007 16:57:58 +0000 (17:57 +0100)]
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>
16 years agolibertas: remove cmd_ctrl_node->cmdflags
Holger Schurig [Wed, 5 Dec 2007 16:57:56 +0000 (17:57 +0100)]
libertas: remove cmd_ctrl_node->cmdflags

There was no code that ever did set this flag.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: Consolidate lbs_host_to_card_done() function.
David Woodhouse [Thu, 6 Dec 2007 14:36:11 +0000 (14:36 +0000)]
libertas: Consolidate lbs_host_to_card_done() function.

As we move towards having this done by a state machine, start by having
a single 'stuff sent' function, which is called by if_usb/if_sdio/if_cs
after sending both data and commands.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agolibertas: Remove cmd_oid from struct cmd_ctrl_node
David Woodhouse [Sat, 1 Dec 2007 15:15:41 +0000 (15:15 +0000)]
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>
16 years agolibertas: Fix memory leak of RX skbs
David Woodhouse [Wed, 28 Nov 2007 16:20:51 +0000 (16:20 +0000)]
libertas: Fix memory leak of RX skbs

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agob43: Fix for broken transmission
Michael Buesch [Wed, 12 Dec 2007 21:05:18 +0000 (22:05 +0100)]
b43: Fix for broken transmission

This patch fixes the transmission problems introduced by
commit f04b3787bbce4567e28069a9ec97dcd804626ac7

I'm not sure if the dummy read is really required.
The old code does it. I think it can't hurt and can possibly
fix some write posting problems (hardware bugs or whatever. Who knows).

Signed-off-by: Michael Buesch <mb@bu3sch.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agob43: Fix ofdmtab write regression
Michael Buesch [Sun, 9 Dec 2007 21:34:59 +0000 (22:34 +0100)]
b43: Fix ofdmtab write regression

commit f04b3787bbce4567e28069a9ec97dcd804626ac7 introduced
a regression for the ofdmtable writing.

It incorrectly removed the writing of the high 16bits for
a 32bit table write and initialized the direction identifier
too late.

This patch does also some cleanups to make the code much more
readable and adds a few comments, so non rocket scientists are
also able to understand what this address caching is all about.

Signed-off-by: Michael Buesch <mb@bu3sch.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: add missing comments
Tomas Winkler [Wed, 5 Dec 2007 18:59:59 +0000 (20:59 +0200)]
iwlwifi: add missing comments

This patch add comments that escaped from the previous merge

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: fix compliation warnings
Tomas Winkler [Wed, 5 Dec 2007 18:59:58 +0000 (20:59 +0200)]
iwlwifi: fix compliation warnings

This patch fixes compilation warnings introduced by 'fix ucode assertion
for RX queue overrun' patch

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: remove HT code from iwl-3945.h
Reinette Chatre [Wed, 5 Dec 2007 18:59:57 +0000 (20:59 +0200)]
iwlwifi: remove HT code from iwl-3945.h

This pach removes HT code from iwl-3945.h - it is not needed here as 3945
does not support HT. The code ended up here during the header file split

Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoorinoco: always use latest BSS info when caching scan results
Dan Williams [Wed, 5 Dec 2007 16:01:23 +0000 (11:01 -0500)]
orinoco: always use latest BSS info when caching scan results

Always copy the latest BSS information from the firmware's results to
the driver's BSS table to ensure that everything is up-to-date (IEs,
supported rates, encryption status, etc).

Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoipg: add __devexit annotation
Adrian Bunk [Tue, 11 Dec 2007 22:20:30 +0000 (23:20 +0100)]
ipg: add __devexit annotation

ipg_remove() can become __devexit.

Signed-off-by: Adrian Bunk <bunk@kernel.org>
16 years agort2x00: correct "skb_buff" typo
John W. Linville [Tue, 4 Dec 2007 22:24:35 +0000 (17:24 -0500)]
rt2x00: correct "skb_buff" typo

Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
16 years agoipg: fix checkpatch reported errors
Pekka Enberg [Fri, 30 Nov 2007 07:55:43 +0000 (09:55 +0200)]
ipg: fix checkpatch reported errors

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Cc: Francois Romieu <romieu@fr.zoreil.com>
Cc: Sorbica Shieh <sorbica@icplus.com.tw>
Cc: Jesse Huang <jesse@icplus.com.tw>
16 years agoipg: naming convention fixes
Pekka Enberg [Thu, 24 Jan 2008 10:01:17 +0000 (02:01 -0800)]
ipg: naming convention fixes

This changes some camel-case names to follow proper kernel naming convention.

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Cc: Francois Romieu <romieu@fr.zoreil.com>
Cc: Sorbica Shieh <sorbica@icplus.com.tw>
Cc: Jesse Huang <jesse@icplus.com.tw>
Signed-off-by: David S. Miller <davem@davemloft.net>
16 years agoipg: remove some internal comments
Pekka Enberg [Fri, 30 Nov 2007 07:54:51 +0000 (09:54 +0200)]
ipg: remove some internal comments

This removes some now useless comments that were added when the driver was
developed out-of-tree.

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Cc: Francois Romieu <romieu@fr.zoreil.com>
Cc: Sorbica Shieh <sorbica@icplus.com.tw>
Cc: Jesse Huang <jesse@icplus.com.tw>
16 years agoipg: remove commented out code
Pekka Enberg [Fri, 30 Nov 2007 07:54:33 +0000 (09:54 +0200)]
ipg: remove commented out code

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Cc: Francois Romieu <romieu@fr.zoreil.com>
Cc: Sorbica Shieh <sorbica@icplus.com.tw>
Cc: Jesse Huang <jesse@icplus.com.tw>
16 years agoipg: remove driver version
Pekka Enberg [Fri, 30 Nov 2007 07:54:06 +0000 (09:54 +0200)]
ipg: remove driver version

The driver is in mainline now so there's no need to maintain a separate version
number.

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Cc: Francois Romieu <romieu@fr.zoreil.com>
Cc: Sorbica Shieh <sorbica@icplus.com.tw>
Cc: Jesse Huang <jesse@icplus.com.tw>
16 years agoipg: remove IPG_DEV_KFREE_SKB macro
Pekka Enberg [Fri, 30 Nov 2007 07:53:51 +0000 (09:53 +0200)]
ipg: remove IPG_DEV_KFREE_SKB macro

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Cc: Francois Romieu <romieu@fr.zoreil.com>
Cc: Sorbica Shieh <sorbica@icplus.com.tw>
Cc: Jesse Huang <jesse@icplus.com.tw>
16 years agoipg: remove boolean macros
Pekka Enberg [Fri, 30 Nov 2007 07:53:33 +0000 (09:53 +0200)]
ipg: remove boolean macros

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Cc: Francois Romieu <romieu@fr.zoreil.com>
Cc: Sorbica Shieh <sorbica@icplus.com.tw>
Cc: Jesse Huang <jesse@icplus.com.tw>
16 years agoipg: remove old contact information
Pekka Enberg [Fri, 30 Nov 2007 07:53:09 +0000 (09:53 +0200)]
ipg: remove old contact information

Remove old comment as up-to-date contact information is in MAINTAINERS.

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Cc: Francois Romieu <romieu@fr.zoreil.com>
Cc: Sorbica Shieh <sorbica@icplus.com.tw>
Cc: Jesse Huang <jesse@icplus.com.tw>
16 years agogianfar driver: eliminate compiler warnings and unnecessary macros
Grant Likely [Sun, 2 Dec 2007 05:12:45 +0000 (22:12 -0700)]
gianfar driver: eliminate compiler warnings and unnecessary macros

This patch eliminates the warning of unused return values when the driver
registers it sysfs files.  Now the driver will print an error if it is
unable to register the sysfs files.

It also eliminates the macros used to wrap the DEVICE_ATTR macro and the
device_create_file function call.  The macros don't reduce the number of
lines of source code in the file and the name munging makes is so that
cscope and friends don't see the references to the functions.  It's better
to just call the kernel API directly.

While we're at it, the DEVICE_ATTR instances have been moved down to
be grouped with the functions they depend on.

Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
16 years agortl8187: fix tx power reading
Andrea Merello [Sun, 2 Dec 2007 22:17:51 +0000 (17:17 -0500)]
rtl8187: fix tx power reading

CCK and OFDM power levels are stored in adjacent bytes, not nibbles.

Signed-off-by: Michael Wu <flamingice@sourmilk.net>
Signed-off-by: Andrea Merello <andreamrl@tiscali.it>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: 802.11n add support to 8K A-MSDU Rx frames
Ron Rindjunsky [Mon, 26 Nov 2007 14:14:42 +0000 (16:14 +0200)]
iwlwifi: 802.11n add support to 8K A-MSDU Rx frames

This patch give the iwlwifi the ability to support A-MSDU up to 8K

Please notice - in order to work in 8K A-MSDU ucode support is needed,
version 4.44.1.19 (soon to be published). 4K A-MSDU works in current ucode
version as well.

Signed-off-by: Ron Rindjunsky <ron.rindjunsky@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: 802.11n comply HT rate scaling flows with mac80211 framework
Ron Rindjunsky [Mon, 26 Nov 2007 14:14:41 +0000 (16:14 +0200)]
iwlwifi: 802.11n comply HT rate scaling flows with mac80211 framework

This patch conforms the rate scaling flows according to the new mac80211's
HT framework

Signed-off-by: Ron Rindjunsky <ron.rindjunsky@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: 802.11n comply HT add station flow with mac80211 framework
Ron Rindjunsky [Mon, 26 Nov 2007 14:14:40 +0000 (16:14 +0200)]
iwlwifi: 802.11n comply HT add station flow with mac80211 framework

This patch conforms the addition of a new station to the iwlwifi station
table according to the new mac80211's HT framework

Signed-off-by: Ron Rindjunsky <ron.rindjunsky@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: 802.11n comply HT self configuration flow with mac80211 framework
Ron Rindjunsky [Mon, 26 Nov 2007 14:14:39 +0000 (16:14 +0200)]
iwlwifi: 802.11n comply HT self configuration flow with mac80211 framework

This patch conforms HW configuration changes according to new mac80211's
HT framework

Signed-off-by: Ron Rindjunsky <ron.rindjunsky@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: 802.11n handling probe request HT IE
Ron Rindjunsky [Mon, 26 Nov 2007 14:14:38 +0000 (16:14 +0200)]
iwlwifi: 802.11n handling probe request HT IE

This patch conforms the probe request's HT IE with the
new structures used in iwlwifi HT.

Signed-off-by: Ron Rindjunsky <ron.rindjunsky@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: 802.11n configuring hw_mode parameters to support HT in A/G
Ron Rindjunsky [Mon, 26 Nov 2007 14:14:37 +0000 (16:14 +0200)]
iwlwifi: 802.11n configuring hw_mode parameters to support HT in A/G

This patch fills the mac80211's ieee80211_hw_mode structures with the
needed 802.11n data needed for the new framework

Signed-off-by: Ron Rindjunsky <ron.rindjunsky@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: 802.11n new framework structures preperation
Ron Rindjunsky [Mon, 26 Nov 2007 14:14:36 +0000 (16:14 +0200)]
iwlwifi: 802.11n new framework structures preperation

This patch removes unnecessary or duplicate 802.11n data from structures
in the code, and prepares them for new mac80211's 802.11n framework

Signed-off-by: Ron Rindjunsky <ron.rindjunsky@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: 802.11n remove unnecessary config dependency
Ron Rindjunsky [Mon, 26 Nov 2007 14:14:35 +0000 (16:14 +0200)]
iwlwifi: 802.11n remove unnecessary config dependency

This patch removes MAC80211_HT config dependency as it has been
eliminated in mac80211, and adds a needed QoS dependency

Signed-off-by: Ron Rindjunsky <ron.rindjunsky@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: cache mac80211 conf setting during a hardware scan
Zhu Yi [Thu, 22 Nov 2007 02:53:22 +0000 (10:53 +0800)]
iwlwifi: cache mac80211 conf setting during a hardware scan

This patch caches mac80211 configuration setting during a hardware
scan for the iwlwifi drivers.

Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: remove redundant declaration of 'iwl3945_priv' and 'iwl4965_priv' structs
Miguel Botón [Sun, 25 Nov 2007 14:58:07 +0000 (15:58 +0100)]
iwlwifi: remove redundant declaration of 'iwl3945_priv' and 'iwl4965_priv' structs

This patch removes a redundant declaration of 'iwl3945_priv' and 'iwl4965_priv' structs.

Signed-off-by: Miguel Boton <mboton@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: update version number to 1.2.22
Zhu Yi [Thu, 29 Nov 2007 03:10:16 +0000 (11:10 +0800)]
iwlwifi: update version number to 1.2.22

Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: avoid firmware command sending if rfkill is enabled
Mohamed Abbas [Thu, 29 Nov 2007 03:10:15 +0000 (11:10 +0800)]
iwlwifi: avoid firmware command sending if rfkill is enabled

This patch fixed a ucode timeout issue and worked code with suspend
to disk.

Signed-off-by: Mohamed Abbas <mabbas@linux.intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: fix ucode assertion for RX queue overrun
Mohamed Abbas [Thu, 29 Nov 2007 03:10:14 +0000 (11:10 +0800)]
iwlwifi: fix ucode assertion for RX queue overrun

This patch allows the driver to restock the RX queue early if the RX
queue is almost empty. This will help on avoiding any ucode assert
for the RX overrun problem.

Signed-off-by: Mohamed Abbas <mabbas@linux.intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: enhance WPA authenication stability
Mohamed Abbas [Thu, 29 Nov 2007 03:10:13 +0000 (11:10 +0800)]
iwlwifi: enhance WPA authenication stability

This patch enhanced WPA authenication stability by avoiding scan
immediately followed by association. We don't do any scanning right
after association in next several seconds. This will allow WPA
authentication to take place without any interruption.

Signed-off-by: Mohamed Abbas <mabbas@linux.intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: document 4965 rate scaling
Ben Cahill [Thu, 29 Nov 2007 03:10:12 +0000 (11:10 +0800)]
iwlwifi: document 4965 rate scaling

Document 4965 rate scaling

Signed-off-by: Ben Cahill <ben.m.cahill@intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: add comments to Tx commands
Ben Cahill [Thu, 29 Nov 2007 03:10:11 +0000 (11:10 +0800)]
iwlwifi: add comments to Tx commands

Add comments to Tx commands

Clean up unused definitions in iwl-3945-commands.h

Signed-off-by: Ben Cahill <ben.m.cahill@intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: add comments to QOS and ADD_STA commands
Ben Cahill [Thu, 29 Nov 2007 03:10:10 +0000 (11:10 +0800)]
iwlwifi: add comments to QOS and ADD_STA commands

Add comments to QOS and ADD_STA commands

Signed-off-by: Ben Cahill <ben.m.cahill@intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: add comments to RXON command and txpower formats
Ben Cahill [Thu, 29 Nov 2007 03:10:09 +0000 (11:10 +0800)]
iwlwifi: add comments to RXON command and txpower formats

Add comments to RXON command and txpower formats

Signed-off-by: Ben Cahill <ben.m.cahill@intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: document command header and "alive" responses
Ben Cahill [Thu, 29 Nov 2007 03:10:08 +0000 (11:10 +0800)]
iwlwifi: document command header and "alive" responses

Document command header and "alive" responses

Signed-off-by: Ben Cahill <ben.m.cahill@intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: document 4965 Tx scheduler
Ben Cahill [Thu, 29 Nov 2007 03:10:07 +0000 (11:10 +0800)]
iwlwifi: document 4965 Tx scheduler

Document 4965 Tx scheduler

Signed-off-by: Ben Cahill <ben.m.cahill@intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: document shared Tx structures
Ben Cahill [Thu, 29 Nov 2007 03:10:06 +0000 (11:10 +0800)]
iwlwifi: document shared Tx structures

Document shared Tx structures

Signed-off-by: Ben Cahill <ben.m.cahill@intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: document Tx registers
Ben Cahill [Thu, 29 Nov 2007 03:10:05 +0000 (11:10 +0800)]
iwlwifi: document Tx registers

Document Tx registers

Clean up unused definitions

Signed-off-by: Ben Cahill <ben.m.cahill@intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: document Rx registers
Ben Cahill [Thu, 29 Nov 2007 03:10:04 +0000 (11:10 +0800)]
iwlwifi: document Rx registers

Document Rx registers

Document Tx circular buffer base registers

Signed-off-by: Ben Cahill <ben.m.cahill@intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: document keep-warm buffer
Ben Cahill [Thu, 29 Nov 2007 03:10:03 +0000 (11:10 +0800)]
iwlwifi: document keep-warm buffer

Document keep-warm buffer

Consolidate flow handler address definitions

Signed-off-by: Ben Cahill <ben.m.cahill@intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: document txpower calculations
Ben Cahill [Thu, 29 Nov 2007 03:10:02 +0000 (11:10 +0800)]
iwlwifi: document txpower calculations

Document txpower calculations

Signed-off-by: Ben Cahill <ben.m.cahill@intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: document temperature calculation
Ben Cahill [Thu, 29 Nov 2007 03:10:01 +0000 (11:10 +0800)]
iwlwifi: document temperature calculation

Document temperature calculation

Signed-off-by: Ben Cahill <ben.m.cahill@intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: move HT_IE_EXT_CHANNEL_* driver definitions to iwl-4965.h
Ben Cahill [Thu, 29 Nov 2007 03:10:00 +0000 (11:10 +0800)]
iwlwifi: move HT_IE_EXT_CHANNEL_* driver definitions to iwl-4965.h

Move HT_IE_EXT_CHANNEL_* driver definitions to iwl-4965.h

Add comments to guide .h file usage (hw/api/driver definitions)

Minor comment cleanup

Signed-off-by: Ben Cahill <ben.m.cahill@intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: move uCode API definitions to iwl-4965-commands.h
Ben Cahill [Thu, 29 Nov 2007 03:09:59 +0000 (11:09 +0800)]
iwlwifi: move uCode API definitions to iwl-4965-commands.h

Move uCode API definitions to iwl-4965-commands.h

Signed-off-by: Ben Cahill <ben.m.cahill@intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
16 years agoiwlwifi: clean up unused definitions in iwl-4965-hw.h
Ben Cahill [Thu, 29 Nov 2007 03:09:58 +0000 (11:09 +0800)]
iwlwifi: clean up unused definitions in iwl-4965-hw.h

Clean up unused definitions in iwl-4965-hw.h

Signed-off-by: Ben Cahill <ben.m.cahill@intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>