GitHub/LineageOS/android_kernel_motorola_exynos9610.git
14 years agob43: Declare at least one real firmware file using MODULE_FIRMWARE.
Tim Gardner [Thu, 7 Jan 2010 18:10:38 +0000 (11:10 -0700)]
b43: Declare at least one real firmware file using MODULE_FIRMWARE.

BugLink: http://bugs.launchpad.net/bugs/488636
Enhances module information with the names of the firmware files
that could be used by this driver. This helps tools like Jockey to
correctly detect and/or install the firmware files relevant to
this driver.

Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoRevert "iwmc3200wifi: fix array out-of-boundary access"
John W. Linville [Thu, 14 Jan 2010 22:00:54 +0000 (17:00 -0500)]
Revert "iwmc3200wifi: fix array out-of-boundary access"

This reverts commit 6c853da3f30c93eae847ecbcd9fdf10ba0da04c2.

From Message-ID: <1262663293.551.117.camel@debian>
On Sat, 2010-01-02 at 22:09 +0800, Dan Carpenter wrote:
> It don't think 6c853da3f30c93 is right.  That's the patch
> titled "iwmc3200wifi: fix array out-of-boundary access"
>
>       Allocate priv->rx_packets[IWM_RX_ID_HASH + 1] because the max array
>       index is IWM_RX_ID_HASH according to IWM_RX_ID_GET_HASH().
>
> In 2.6.33-rc2 IWM_RX_ID_GET_HASH() doesn't go as high as IWM_RX_ID_HASH
> and I don't see any array out-of-bounds.
>
> #define IWM_RX_ID_GET_HASH(id) ((id) % IWM_RX_ID_HASH)

Ah, you are right. I took '%' for '&'. John, would you revert it? Sorry
for the false alarm.

Thanks,
-yi

Reported-by: Dan Carpenter <error27@gmail.com>
Reviewed-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: update version number (to 0.12) and copyright
Lennert Buytenhek [Tue, 12 Jan 2010 12:51:38 +0000 (13:51 +0100)]
mwl8k: update version number (to 0.12) and copyright

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: enable multi-BSS AP operation
Lennert Buytenhek [Tue, 12 Jan 2010 12:51:30 +0000 (13:51 +0100)]
mwl8k: enable multi-BSS AP operation

As follows:
- GET_HW_SPEC is now responsible for setting
  priv->{ap,sta}_macids_supported, which are bitmasks of supported
  macids for AP and STA mode.  (Typically, STA firmware images will
  support only one macid, #0, in STA mode, and AP firmware images
  will support macids #0-7, in AP mode.)
- Our wiphy ->interfaces_modes is now set based on the non-zero-ness
  of these two bitmasks.
- We main priv->macids_used, a bitmask of which macids are currently
  in use.  ->add_interface() will assign the lowest free macid for
  this interface type as it is created, or bail out if there are no
  more free macids to assign.  ->delete_interface() will mark the
  macid as being free again.

This enables the multi-BSS code added in the previous commits.

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: post per-vif firmware commands as per-vif commands
Lennert Buytenhek [Tue, 12 Jan 2010 12:50:36 +0000 (13:50 +0100)]
mwl8k: post per-vif firmware commands as per-vif commands

SET_BEACON, SET_MAC_ADDR, BSS_START and SET_NEW_STN are the currently
supported firmware commands that are actually per-vif commands.  Use
mwl8k_post_pervif_cmd() for these commands, so that the macid of the
vif they operate on gets passed down into the firmware.

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: prepare for posting per-vif firmware commands
Lennert Buytenhek [Tue, 12 Jan 2010 12:50:14 +0000 (13:50 +0100)]
mwl8k: prepare for posting per-vif firmware commands

One of the bytes in the mwl8k firmware command header is the 'macid'
byte, which for per-vif commands indicates which of the BSSes this
command is intended for.  (For commands that are not per-vif commands,
this byte can just be 0.)

This patch adds mwl8k_post_pervif_cmd(), which will take the macid
assigned to this interface (to be done in ->add_interface()), copy it
into the command packet macid field, and post the command as usual.

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: convert the priv->vif pointer to a list of vifs
Lennert Buytenhek [Tue, 12 Jan 2010 12:49:51 +0000 (13:49 +0100)]
mwl8k: convert the priv->vif pointer to a list of vifs

To prepare for adding multi-BSS support.

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: use firmware capability field to decide which bands to register
Lennert Buytenhek [Tue, 12 Jan 2010 12:49:41 +0000 (13:49 +0100)]
mwl8k: use firmware capability field to decide which bands to register

Make the decision about whether to register the 2.4 and 5 GHz bands
with mac80211 by looking at the capability field in GET_HW_SPEC (STA
firmware only for now).  This enables 5 GHz STA operation.

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: allow selecting 5 GHz channels
Lennert Buytenhek [Tue, 12 Jan 2010 12:49:18 +0000 (13:49 +0100)]
mwl8k: allow selecting 5 GHz channels

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: handle 5 GHz legacy rate bitmaps in firmware commands
Lennert Buytenhek [Tue, 12 Jan 2010 12:49:15 +0000 (13:49 +0100)]
mwl8k: handle 5 GHz legacy rate bitmaps in firmware commands

Whenever mac80211 gives us a legacy rate bitmap in the context of the
5 GHz band, we need to remember to shift the bitmap left by 5 positions
before giving it to the firmware, as the firmware follows the bitmap
bit assignment of the 2.4 GHz rate table even if we're on the 5 GHz
band, and the 2.4 GHz rate table includes five non-OFDM rates at the
start that are not valid in the 5 GHz band.

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: properly set receive status rate index on 5 GHz receive
Lennert Buytenhek [Tue, 12 Jan 2010 12:48:56 +0000 (13:48 +0100)]
mwl8k: properly set receive status rate index on 5 GHz receive

The mwl8k firmware uses indices into the 2.4 GHz band rate table for
the receive descriptor channel field even if the packet was received
on a 5 GHz channel, while mac80211 expects an index into the 5 GHz
band rate table when packets are received on the 5 GHz band, which
presents a mismatch as the 5 GHz band rate table lacks the five
non-OFDM rates that the 2.4 GHz rate table starts with.

To handle this properly, we need to substract 5 from the rate index
field if the packet was received on a 5 GHz channel (and was not
received at an MCS rate).

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: add 5 GHz band channels and rates
Lennert Buytenhek [Tue, 12 Jan 2010 12:48:32 +0000 (13:48 +0100)]
mwl8k: add 5 GHz band channels and rates

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: move responsibility for initialising wiphy bands to GET_HW_SPEC
Lennert Buytenhek [Tue, 12 Jan 2010 12:48:17 +0000 (13:48 +0100)]
mwl8k: move responsibility for initialising wiphy bands to GET_HW_SPEC

So that we can make 2.4 GHz and 5 GHz band registration conditional
on the capability bitmask returned by the firmware.

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: rename 2.4 GHz band/channels/rates related variables from FOO to FOO_24
Lennert Buytenhek [Tue, 12 Jan 2010 12:48:04 +0000 (13:48 +0100)]
mwl8k: rename 2.4 GHz band/channels/rates related variables from FOO to FOO_24

To prepare for adding 5 GHz band/channels/rates.

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: add another 88w8366 PCI ID
Lennert Buytenhek [Tue, 12 Jan 2010 12:47:53 +0000 (13:47 +0100)]
mwl8k: add another 88w8366 PCI ID

0x2a43 is a single-band (2.4GHz only) 88w8366 mini-PCIe card.

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: simplify sequence number assignment
Lennert Buytenhek [Tue, 12 Jan 2010 12:47:47 +0000 (13:47 +0100)]
mwl8k: simplify sequence number assignment

By storing the sequence counter in << 4 format, like other drivers do.

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: don't call SET_AID if we're not associated
Lennert Buytenhek [Tue, 12 Jan 2010 12:47:37 +0000 (13:47 +0100)]
mwl8k: don't call SET_AID if we're not associated

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: remove (mostly) write-only variable priv->current_channel
Lennert Buytenhek [Tue, 12 Jan 2010 12:47:32 +0000 (13:47 +0100)]
mwl8k: remove (mostly) write-only variable priv->current_channel

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: update MODULE_FIRMWARE tags
Lennert Buytenhek [Tue, 12 Jan 2010 12:47:22 +0000 (13:47 +0100)]
mwl8k: update MODULE_FIRMWARE tags

Add MODULE_FIRMWARE tags for the mwl8k firmware images that don't
have them yet, and move them to where the firmware image names are
declared.

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agowl1251: add U-APSD support
Kalle Valo [Tue, 12 Jan 2010 08:43:15 +0000 (10:43 +0200)]
wl1251: add U-APSD support

wl1251 firmware supports U-APSD just with a simple queue configuration
change so enable it.

Signed-off-by: Kalle Valo <kalle.valo@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agowl1251: create qos null data template
Kalle Valo [Tue, 12 Jan 2010 08:43:07 +0000 (10:43 +0200)]
wl1251: create qos null data template

The qos null data template is needed for U-APSD.

Signed-off-by: Kalle Valo <kalle.valo@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoieee80211: add struct ieee80211_hdr_qos
Kalle Valo [Tue, 12 Jan 2010 08:43:00 +0000 (10:43 +0200)]
ieee80211: add struct ieee80211_hdr_qos

The header can be used to create qos nullfunc frames, for example.

Signed-off-by: Kalle Valo <kalle.valo@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: check uapsd state for dynamic power save
Kalle Valo [Tue, 12 Jan 2010 08:42:53 +0000 (10:42 +0200)]
mac80211: check uapsd state for dynamic power save

To make U-APSD client mode effective, we must not wake up from dynamic power
save when transmitting frames. So if dynamic power save is enabled, it needs
check the queue the transmitted packet is in and decide if we need to wake
up or not.

In a perfect world, where all packets would have correct QoS tags, U-APSD
enabled queues should not trigger wakeup from power save. But in the real
world, where very few packets have correct QoS tags, this won't work. For
example, if only voip class has U-APSD enabled and we send a packet in voip
class, but the packets we receive are in best effort class, we would receive
the packets with the legacy power save method. And that would increase
latencies too much from a voip application point of view.

The workaround is to enable U-APSD for all qeueus and still use dynamic ps
wakeup for all other queues except voip. That way we can still save power
with a voip application and not sacrifice latency. Normal traffic (in
background, best effort or video class) would still trigger wakeup from
dynamic power save.

Signed-off-by: Kalle Valo <kalle.valo@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: create tx handler for dynamic ps
Kalle Valo [Tue, 12 Jan 2010 08:42:46 +0000 (10:42 +0200)]
mac80211: create tx handler for dynamic ps

Currently dynamic ps check is in ieee80211_xmit(), but it's cleaner
to have a separate tx handler for this. Also this is a prerequisite for
U-APSD client mode which needs to know the queue frame is in.

Also need_dynamic_ps() function is embedded to the tx handler.

No functional changes expect that the code is run in a later phase than
originally.

Signed-off-by: Kalle Valo <kalle.valo@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: add debugfs interface for U-APSD queue configuration
Kalle Valo [Tue, 12 Jan 2010 08:42:39 +0000 (10:42 +0200)]
mac80211: add debugfs interface for U-APSD queue configuration

Because it's not yet decided how to configure which queues are U-APSD
enabled, add a debugfs interface for testing purposes.

Signed-off-by: Kalle Valo <kalle.valo@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: add U-APSD client support
Kalle Valo [Tue, 12 Jan 2010 08:42:31 +0000 (10:42 +0200)]
mac80211: add U-APSD client support

Add Unscheduled Automatic Power-Save Delivery (U-APSD) client support. The
idea is that the data frames from the client trigger AP to send the buffered
frames with ACs which have U-APSD enabled. This decreases latency and makes it
possible to save even more power.

Driver needs to use IEEE80211_HW_UAPSD to enable the feature. The current
implementation assumes that firmware takes care of the wakeup and
hardware needing IEEE80211_HW_PS_NULLFUNC_STACK is not yet supported.

Tested with wl1251 on a Nokia N900 and Cisco Aironet 1231G AP and running
various test traffic with ping.

Signed-off-by: Kalle Valo <kalle.valo@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: remove unused type argument
Johannes Berg [Sun, 10 Jan 2010 16:12:41 +0000 (17:12 +0100)]
mac80211: remove unused type argument

The type argument to DEBUGFS_ADD() isn't used
and can be removed, it's around from before
the conversion to debugfs_remove_recursive().

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: flush workqueue before calling driver ->stop() method
Lennert Buytenhek [Sun, 10 Jan 2010 13:07:53 +0000 (14:07 +0100)]
mac80211: flush workqueue before calling driver ->stop() method

Since commit "mwl8k: handle station database update for AP's sta entry
via ->sta_notify()", mwl8k every now and then gets a command timeout
when ifconfig'ing a STA interface down.  This turns out to be due to
mwl8k_stop() being called while the work queue item that was scheduled
by mwl8k_sta_notify() to remove the STA entry for the associated AP is
still queued, and the former disables interrupts so that when the
latter eventually runs, a command completion interrupt is never seen.

Fix this by changing ieee80211_stop_device() so that the workqueue is
flushed before drv_stop() is called, instead of doing it the other way
around as is done now.  (As ->stop() is allowed to sleep, there isn't
any reason for drivers to queue work from within it.)

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agonet/mac80211/mlme.c: Remove unnecessary semicolons
Joe Perches [Sat, 9 Jan 2010 06:33:38 +0000 (22:33 -0800)]
net/mac80211/mlme.c: Remove unnecessary semicolons

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoiwl-debugfs.c: remove unnecessary casts of void *
H Hartley Sweeten [Fri, 8 Jan 2010 23:14:10 +0000 (16:14 -0700)]
iwl-debugfs.c: remove unnecessary casts of void *

void pointers do not need to be cast to other pointer types.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Acked-by: Zhu Yi <yi.zhu@intel.com>
Cc: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoiwlwifi: fix bug in tx byte count table
Wey-Yi Guy [Fri, 8 Jan 2010 18:04:44 +0000 (10:04 -0800)]
iwlwifi: fix bug in tx byte count table

When setting invalid byte count in txq byte count table, read pointer
should be used instead of write pointer.

Reported-by: Guo, Chaohong <chaohong.guo@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoiwlwifi: remove obsoleted host command
Wey-Yi Guy [Fri, 8 Jan 2010 18:04:43 +0000 (10:04 -0800)]
iwlwifi: remove obsoleted host command

"RADAR_NOTIFICATION" host command is not used and not supported by uCode,
remove it from driver code.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoiwlwifi: ucode statistics data structure update
Wey-Yi Guy [Fri, 8 Jan 2010 18:04:42 +0000 (10:04 -0800)]
iwlwifi: ucode statistics data structure update

Update data structure to match latest statistics report from uCode.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoiwlwifi: add IEEE80211_AMPDU_TX_OPERATIONAL
Wey-Yi Guy [Fri, 8 Jan 2010 18:04:41 +0000 (10:04 -0800)]
iwlwifi: add IEEE80211_AMPDU_TX_OPERATIONAL

mac80211 do not check the return code now, what if mac80211 does start
using the return code? IEEE80211_AMPDU_TX_OPERATIONAL is a valid action,
just iwlwifi driver do not need to take any action for it; so instead of
return "-EINVAL", it is a good program practice to return "-EOPNOTSUPP"
to make sure mac80211 will not get wrong impression.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: fix return from ieee80211_assoc_success
Johannes Berg [Fri, 8 Jan 2010 18:01:07 +0000 (19:01 +0100)]
mac80211: fix return from ieee80211_assoc_success

sparse pointed out that I made a mistake converting
the return value of ieee80211_assoc_success to bool,
this place should return false instead of one of the
enum values (which would be true).

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: move receive processing to tasklet
Lennert Buytenhek [Fri, 8 Jan 2010 17:32:18 +0000 (18:32 +0100)]
mwl8k: move receive processing to tasklet

Like how TX reclaim is done in a tasklet, move receive processing
to tasklet context as well.  This can have nice benefits for CPU
utilisation and throughput, especially at 3-stream rates.

(Use the same CLEAR_SEL trick as the TX reclaim tasklet does, to
avoid having to touch the interrupt mask registers.)

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: keep TX_DONE interrupt masked while transmit reclaim is running
Lennert Buytenhek [Fri, 8 Jan 2010 17:32:01 +0000 (18:32 +0100)]
mwl8k: keep TX_DONE interrupt masked while transmit reclaim is running

By making use of the CLEAR_SEL feature of the mwl8k host interface
interrupt controller, we can keep the TX_DONE interrupt source masked
while the transmit reclaim tasklet is running (NAPI style) without
having to touch the interrupt controller's interrupt mask register
when entering or exiting polling mode, and without having to do any
more register reads/writes than we do now.

When CLEAR_SEL is enabled on the TX_DONE interrupt source, reading
the interrupt status register will clear the TX_DONE status bit if
it was set, allowing it to be set again if a new TX_DONE event arrives
while we are running the TX reclaim tasklet, but such a new event will
then not trigger another PCI interrupt until a zero is written to the
TX_DONE interrupt status register bit.

I.e., if we write a zero to the TX_DONE interrupt source bit in the
interrupt status register when the TX reclaim tasklet thinks it's
done, a PCI interrupt will be triggered if a new TX_DONE event arrived
from the hardware between us deciding that there is no more work to do
and re-enabling the TX_DONE interrupt source, thereby avoiding the
classic NAPI poll mode exit race that would otherwise occur.

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: allow limiting the amount of transmit reclaim done
Lennert Buytenhek [Fri, 8 Jan 2010 17:31:47 +0000 (18:31 +0100)]
mwl8k: allow limiting the amount of transmit reclaim done

Add a limit argument to mwl8k_txq_reclaim(), to allow limiting the
number of packets that it will reclaim, and make it return the number
of packets that it reclaimed.

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: basic AP interface support
Lennert Buytenhek [Fri, 8 Jan 2010 17:31:39 +0000 (18:31 +0100)]
mwl8k: basic AP interface support

Add support for creating AP interfaces, and enabling beaconing.
This allows running a basic AP (11b/g mode only for now).

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: correctly set the mac_type field for AP SET_MAC_ADDR
Lennert Buytenhek [Fri, 8 Jan 2010 17:31:30 +0000 (18:31 +0100)]
mwl8k: correctly set the mac_type field for AP SET_MAC_ADDR

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: implement AP firmware station database maintenance
Lennert Buytenhek [Fri, 8 Jan 2010 17:30:58 +0000 (18:30 +0100)]
mwl8k: implement AP firmware station database maintenance

STA firmware uses UPDATE_STADB to manipulate the hardware station
database, whereas AP firmware uses SET_NEW_STN -- this implements the
latter, and hooks it into mwl8k_sta_notify(), to be used if we're
running on AP firmware.

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: add the AP version of USE_FIXED_RATE
Lennert Buytenhek [Fri, 8 Jan 2010 17:30:36 +0000 (18:30 +0100)]
mwl8k: add the AP version of USE_FIXED_RATE

As with the STA version, unicast will use auto rate adaptation, but
the AP version allows setting the rates to be used for management and
multicast transmissions, which can be set based on the BSS basic rate
set.

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: simplify mwl8k_cmd_use_fixed_rate()
Lennert Buytenhek [Fri, 8 Jan 2010 17:30:16 +0000 (18:30 +0100)]
mwl8k: simplify mwl8k_cmd_use_fixed_rate()

As we always use the auto rate adaptation feature and never pass in
a rate table, USE_FIXED_RATE can be simplified somewhat.  While we're
at it, rename it to *_sta, as this is the STA version of the command.

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: bump the transmit wait timeout to 5 seconds
Lennert Buytenhek [Fri, 8 Jan 2010 17:28:34 +0000 (18:28 +0100)]
mwl8k: bump the transmit wait timeout to 5 seconds

While it is reasonable to expect that at least one transmit ring entry
will be processed per second while we are waiting for the transmit
rings to drain, the firmware can end up doing batching of transmit ring
status writeback, which means that the transmit rings can appear stuck
for more than a second at a time.

Bump the TX drain wait timeout up from 1 to 5 seconds to account for
this.

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: undo transmit queue 0/1 swapping in mwl8k_cmd_set_edca_params()
Lennert Buytenhek [Fri, 8 Jan 2010 17:28:14 +0000 (18:28 +0100)]
mwl8k: undo transmit queue 0/1 swapping in mwl8k_cmd_set_edca_params()

The comment and code in mwl8k_cmd_set_edca_params() suggest that the
mapping between SET_EDCA_PARAMS queue numbers and transmit rings isn't
actually 1:1, while tests show that the mapping is in fact 1:1.  So,
get rid of the transmit queue 0/1 swapping.

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: minor cleanups
Lennert Buytenhek [Fri, 8 Jan 2010 17:27:59 +0000 (18:27 +0100)]
mwl8k: minor cleanups

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: do not transmit frames on unconfigured 4-addr vlan interfaces
Felix Fietkau [Fri, 8 Jan 2010 17:15:13 +0000 (18:15 +0100)]
mac80211: do not transmit frames on unconfigured 4-addr vlan interfaces

If frames are transmitted on 4-addr ap vlan interfaces with no station,
they end up being transmitted unencrypted, even if the ap interface
uses WPA. This patch add some sanity checking to make sure that this
does not happen.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Cc: stable@kernel.org
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: allow station updates on ap interfaces for vlan stations
Felix Fietkau [Fri, 8 Jan 2010 17:10:58 +0000 (18:10 +0100)]
mac80211: allow station updates on ap interfaces for vlan stations

Since the per-vif station changes, sta_info_get on the ap sdata no
longer returns entries for stations on ap vlans. This causes issues
with hostapd, which currently always passes the ap interface name to
nl80211 calls. This patch provides bug compatibility with the earlier
versions until hostapd is fixed.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: use nullfunc frames for 4-addr sta detection
Felix Fietkau [Fri, 8 Jan 2010 17:06:26 +0000 (18:06 +0100)]
mac80211: use nullfunc frames for 4-addr sta detection

To detect incoming 4-addr stations, hostapd needs to receive a 4-addr
data frame from the remote station, so that it can create the AP VLAN
for it. With this patch, the mlme code emits a 4-addr nullfunc frame
immediately after assoc. On the AP side it also drops 4-addr nullfunc
frames to the cooked monitor mode interface, if the interface hasn't
been fully set up to receive 4-addr data frames yet.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k: Fix monitor mode handling
Sujith [Fri, 8 Jan 2010 05:06:13 +0000 (10:36 +0530)]
ath9k: Fix monitor mode handling

mac80211 passes appropriate flags indicating whether
monitor mode is being used. Use this to set the HW opmode.

Signed-off-by: Sujith <Sujith.Manoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k: Add debugfs file for RX errors
Sujith [Fri, 8 Jan 2010 05:06:11 +0000 (10:36 +0530)]
ath9k: Add debugfs file for RX errors

This file can be used to track frame reception errors.
PHY error counts are also added.

Location: ath9k/phy#/recv

Signed-off-by: Sujith <Sujith.Manoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k: Fix queue handling
Sujith [Fri, 8 Jan 2010 05:06:09 +0000 (10:36 +0530)]
ath9k: Fix queue handling

The TX queues have to be stopped during an
internal reset. Not handling this would result
in packet loss - fix this.

Signed-off-by: Sujith <Sujith.Manoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k: Cleanup init/deinit routines
Sujith [Fri, 8 Jan 2010 05:06:07 +0000 (10:36 +0530)]
ath9k: Cleanup init/deinit routines

The device initialization and termination functions
were messy and convoluted. Introduce helper functions
to clarify init_softc() and simplify things in general.

Signed-off-by: Sujith <Sujith.Manoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k: Cleanup Powersave flags
Sujith [Fri, 8 Jan 2010 05:06:05 +0000 (10:36 +0530)]
ath9k: Cleanup Powersave flags

sc_flags has slowly become a kitchen sink over time.
Move powersave related flags to a separate variable.

Signed-off-by: Sujith <Sujith.Manoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k: Add new file init.c
Sujith [Fri, 8 Jan 2010 05:06:02 +0000 (10:36 +0530)]
ath9k: Add new file init.c

Move initialization/de-initialization related
code to this file.

Signed-off-by: Sujith <Sujith.Manoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k: Add a new file for GPIO
Sujith [Fri, 8 Jan 2010 05:06:00 +0000 (10:36 +0530)]
ath9k: Add a new file for GPIO

Move all LED/RFKILL/BTCOEX related code
to gpio.c

Signed-off-by: Sujith <Sujith.Manoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agocfg80211: Fix country IE parsing for single channel triplets
Luis R. Rodriguez [Thu, 7 Jan 2010 22:24:57 +0000 (17:24 -0500)]
cfg80211: Fix country IE parsing for single channel triplets

This enhances the way we parse country IEs to minimize
the number of regulatory rules that we create. It also fixes
our current implementation which treated country IE triplets
with only one channel as one independed regulatory rule even
though adjecent rules were also being provided.

Without this patch APs which send country IE information with
a channel triplet for each individual channel will force cfg80211
to deny HT40 operation as a regulatory rule would have been created
independently for each channel and as such configured only for
20 MHz operation.

Although 802.11n APs which send country IEs triplets in this fassion
are likely rare Benoit reports this against the Ubiquity NanoStation M5,
with Country "FR" and HT40 enabled.

Since we now have a helper which parses the triplets in intermediate
steps we now take care extra care to process padding.

Reported-by: Benoit PAPILLAULT <benoit.papillault@free.fr>
Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agocfg80211: process the max power on a country IE
Luis R. Rodriguez [Thu, 7 Jan 2010 22:24:56 +0000 (17:24 -0500)]
cfg80211: process the max power on a country IE

The max power from each country IE triplet was being ignored.
This fix isn't critical as CRDA was always being used for the lower
limit, but we should process it in case the AP still wants to
decrease power output even more for whatever reason.

Reported-by: Benoit PAPILLAULT <benoit.papillault@free.fr>
Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agocfg80211: add debug print when we drop a bogus country IE
Luis R. Rodriguez [Thu, 7 Jan 2010 22:24:54 +0000 (17:24 -0500)]
cfg80211: add debug print when we drop a bogus country IE

Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agob43: LP-PHY: note and explain specs inconsistency
Rafał Miłecki [Thu, 7 Jan 2010 13:09:27 +0000 (14:09 +0100)]
b43: LP-PHY: note and explain specs inconsistency

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: fix a few work bugs
Johannes Berg [Wed, 6 Jan 2010 14:30:58 +0000 (15:30 +0100)]
mac80211: fix a few work bugs

Kalle and Lennert reported problems with the new work
code, and at least Kalle's problem I was able to trace
to a missing jiffies initialisation.

I also ran into a problem where occasionally I couldn't
connect, which seems fixed with kicking the work items
after scanning.

Finally, also add some sanity checking code to verify
that we're not adding work items while an interface is
down -- that case could lead to something similar to
what Lennert was seeing.

There still seems to be a race condition that we're
trying to figure out separately.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Tested-by: Lennert Buytenhek <buytenh@marvell.com>
Tested-by: Kalle Valo <kalle.valo@iki.fi>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agocfg80211: Store IEs from both Beacon and Probe Response frames
Jouni Malinen [Wed, 6 Jan 2010 14:19:24 +0000 (16:19 +0200)]
cfg80211: Store IEs from both Beacon and Probe Response frames

Store information elements from Beacon and Probe Response frames in
separate buffers to allow both sets to be made available through
nl80211. This allows user space applications to get access to IEs from
Beacon frames even if we have received Probe Response frames from the
BSS. Previously, the IEs from Probe Response frames would have
overridden the IEs from Beacon frames.

This feature is of somewhat limited use since most protocols include
the same (or extended) information in Probe Response frames. However,
there are couple of exceptions where the IEs from Beacon frames could
be of some use: TIM IE is only included in Beacon frames (and it would
be needed to figure out the DTIM period used in the BSS) and at least
some implementations of Wireless Provisioning Services seem to include
the full IE only in Beacon frames).

The new BSS attribute for scan results is added to allow both the IE
sets to be delivered. This is done in a way that maintains the
previously used behavior for applications that are not aware of the
new NL80211_BSS_BEACON_IES attribute.

Signed-off-by: Jouni Malinen <j@w1.fi>
Acked-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agowl1251: fix sleep related error paths in wl1251_op_bss_info_changed()
Kalle Valo [Tue, 5 Jan 2010 18:17:10 +0000 (20:17 +0200)]
wl1251: fix sleep related error paths in wl1251_op_bss_info_changed()

In various cases wl1251_op_bss_info_changed() did not call elp_sleep()
after an error was noticed. Fix it by using correct goto label.

The bug was a theoretical one, in practise it doesn't matter because
if commands start returning errors there will be lots of other problems.

Signed-off-by: Kalle Valo <kalle.valo@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agowl1251: use mac80211 provided channel parameters in scanning
Kalle Valo [Tue, 5 Jan 2010 18:17:03 +0000 (20:17 +0200)]
wl1251: use mac80211 provided channel parameters in scanning

The number of channels to be used in scan was hard coded in wl1251. The
proper way is to use the channels array provided by mac80211.

Signed-off-by: Kalle Valo <kalle.valo@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agowl1251: get probe request template from mac80211
Kalle Valo [Tue, 5 Jan 2010 18:16:57 +0000 (20:16 +0200)]
wl1251: get probe request template from mac80211

Instead of creating the template in driver, get it from mac80211 instead.
Thanks to this, three functions can be now removed.

Signed-off-by: Kalle Valo <kalle.valo@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agowl1251: cleanup scanning code
Kalle Valo [Tue, 5 Jan 2010 18:16:51 +0000 (20:16 +0200)]
wl1251: cleanup scanning code

The current scanning code wasn't following the preferred style. Move code
related to scan and trigger scan to commans to wl1251_cmd.c. Because
there's now less code in wl1251_hw_scan(), the function can be now
merged with wl1251_op_hw_scan().

Signed-off-by: Kalle Valo <kalle.valo@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: use Probe Request template when sending a direct scan
Kalle Valo [Tue, 5 Jan 2010 18:16:44 +0000 (20:16 +0200)]
mac80211: use Probe Request template when sending a direct scan

As mac80211 now has a separate function for creating Probe Request templates,
better to use it when sending direct Probe Requests to an AP. Only the
bssid needs to be updated in the template before sending it.

Signed-off-by: Kalle Valo <kalle.valo@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: create Probe Request template
Kalle Valo [Tue, 5 Jan 2010 18:16:38 +0000 (20:16 +0200)]
mac80211: create Probe Request template

Certain type of hardware, for example wl1251 and wl1271, need a template
for the Probe Request. Create a function ieee80211_probereq_get() which
creates the template and drivers send it to hardware.

Signed-off-by: Kalle Valo <kalle.valo@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agowl1251: get PS Poll and Nullfunc templates from mac80211
Kalle Valo [Tue, 5 Jan 2010 18:16:32 +0000 (20:16 +0200)]
wl1251: get PS Poll and Nullfunc templates from mac80211

Now that mac80211 creates templates for PS Poll and Nullfunc frames, use
them instead of creating our own.

Signed-off-by: Kalle Valo <kalle.valo@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: use PS Poll and Nullfunc templates when sending such frames
Kalle Valo [Tue, 5 Jan 2010 18:16:26 +0000 (20:16 +0200)]
mac80211: use PS Poll and Nullfunc templates when sending such frames

To avoid duplicate code, use ieee80211_[pspoll|nullfunc]_get() to get
templates for PS Poll and Nullfunc frames in mlme.c.

Compile-tested only.

Signed-off-by: Kalle Valo <kalle.valo@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: add functions to create PS Poll and Nullfunc templates
Kalle Valo [Tue, 5 Jan 2010 18:16:19 +0000 (20:16 +0200)]
mac80211: add functions to create PS Poll and Nullfunc templates

Some hardware, for example wl1251 and wl1271, handle the transmission
of power save related frames in hardware, but the driver is responsible
for creating the templates. It's better to create the templates in mac80211,
that way all drivers can benefit from this.

Add two new functions, ieee80211_pspoll_get() and ieee80211_nullfunc_get()
which drivers need to call to get the frame. Drivers are also responsible
for updating the templates after each association.

Also new struct ieee80211_hdr_3addr is added to ieee80211.h to make it
easy to calculate length of the Nullfunc frame.

Signed-off-by: Kalle Valo <kalle.valo@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agort2x00: Make rt2800_init_led static and don't export it.
Gertjan van Wingerde [Wed, 30 Dec 2009 10:36:34 +0000 (11:36 +0100)]
rt2x00: Make rt2800_init_led static and don't export it.

It is only used within the rt2800lib module itself.

Signed-off-by: Gertjan van Wingerde <gwingerde@gmail.com>
Acked-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agort2x00: Unify rt2800 WPDMA ready waiting functions.
Gertjan van Wingerde [Wed, 30 Dec 2009 10:36:32 +0000 (11:36 +0100)]
rt2x00: Unify rt2800 WPDMA ready waiting functions.

The rt2800pci_wait_wpdma_ready and rt2800usb_wait_wpdma_ready functions are
exactly the same, so unify them into rt200lib.

Signed-off-by: Gertjan van Wingerde <gwingerde@gmail.com>
Acked-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agort2x00: RF3052 is a valid RF chipset for USB devices as well.
Gertjan van Wingerde [Wed, 30 Dec 2009 10:36:31 +0000 (11:36 +0100)]
rt2x00: RF3052 is a valid RF chipset for USB devices as well.

The RF3052 chipset is now also being integrated onto USB devices, so
allow the RF chipset and don't treat it as PCI/SOC only.

Signed-off-by: Gertjan van Wingerde <gwingerde@gmail.com>
Acked-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agonl80211: New command for setting TX rate mask for rate control
Jouni Malinen [Tue, 29 Dec 2009 10:59:45 +0000 (12:59 +0200)]
nl80211: New command for setting TX rate mask for rate control

Add a new NL80211_CMD_SET_TX_BITRATE_MASK command and related
attributes to provide support for setting TX rate mask for rate
control. This uses the existing cfg80211 set_bitrate_mask operation
that was previously used only with WEXT compat code (SIOCSIWRATE). The
nl80211 command allows more generic configuration of allowed rates as
a mask instead of fixed/max rate.

Signed-off-by: Jouni Malinen <jouni.malinen@atheros.com>
Acked-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agocfg80211/mac80211: Use more generic bitrate mask for rate control
Jouni Malinen [Wed, 6 Jan 2010 11:09:08 +0000 (13:09 +0200)]
cfg80211/mac80211: Use more generic bitrate mask for rate control

Extend struct cfg80211_bitrate_mask to actually use a bitfield mask
instead of just a single fixed or maximum rate index. This change
itself does not modify the behavior (except for debugfs files), but it
prepares cfg80211 and mac80211 for a new nl80211 command for setting
which rates can be used in TX rate control.

Since frames are now going through the rate control algorithm
unconditionally, the internal IEEE80211_TX_INTFL_RCALGO flag can now
be removed. The RC implementations can use the rate_idx_mask value to
optimize their behavior if only a single rate is enabled.

The old max_rate_idx in struct ieee80211_tx_rate_control is maintained
(but commented as deprecated) for backwards compatibility with existing
RC implementations. Once these implementations have been updated to
use the more generic rate_idx_mask, the max_rate_idx value can be
removed.

Signed-off-by: Jouni Malinen <jouni.malinen@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: Select lowest rate based on basic rate set in AP mode
Jouni Malinen [Tue, 29 Dec 2009 10:59:19 +0000 (12:59 +0200)]
mac80211: Select lowest rate based on basic rate set in AP mode

If the basic rate set is configured to not include the lowest rate
(e.g., basic rate set = 6, 12, 24 Mbps in IEEE 802.11g mode), the AP
should not send out broadcast frames at 1 Mbps. This type of
configuration can be used to optimize channel usage in cases where
there is no need for backwards compatibility with IEEE 802.11b-only
devices.

In AP mode, mac80211 was unconditionally using the lowest rate for
Beacon frames and similarly, with all rate control algorithms that use
rate_control_send_low(), the lowest rate ended up being used for all
broadcast frames (and all unicast frames that are sent before
association). Change this to take into account the basic rate
configuration in AP mode, i.e., use the lowest rate in the basic rate
set instead of the lowest supported rate when selecting the rate.

Signed-off-by: Jouni Malinen <jouni.malinen@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: quit addba_resp_timer if Tx BA session is torn down
Zhu Yi [Mon, 28 Dec 2009 08:57:15 +0000 (16:57 +0800)]
mac80211: quit addba_resp_timer if Tx BA session is torn down

Make addba_resp_timer aware the HT_AGG_STATE_REQ_STOP_BA_MSK mask
so that when ___ieee80211_stop_tx_ba_session() is issued the timer
will quit. Otherwise when suspend happens before the timer expired,
the timer handler will be called immediately after resume and
messes up driver status.

Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Acked-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath5k: Implement mac80211 callback set_coverage_class
Lukáš Turek [Mon, 21 Dec 2009 21:50:51 +0000 (22:50 +0100)]
ath5k: Implement mac80211 callback set_coverage_class

The callback sets slot time as specified in IEEE 802.11-2007 section
17.3.8.6 (for 20MHz channels only for now) and raises ACK and CTS
timeouts accordingly. The values are persistent, they are restored after
device reset.

Signed-off-by: Lukas Turek <8an@praha12.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath5k: Reimplement clock rate to usec conversion
Lukáš Turek [Mon, 21 Dec 2009 21:50:50 +0000 (22:50 +0100)]
ath5k: Reimplement clock rate to usec conversion

The original code was correct in 802.11a mode only, 802.11b/g uses
different clock rates. The new code uses values taken from FreeBSD HAL
and should be correct for all modes including turbo modes.

The former rate calculation was used by slope coefficient calculation
function ath5k_hw_write_ofdm_timings. However, this function requires
the 802.11a values even in 802.11g mode. Thus the use of
ath5k_hw_htoclock was replaced by hardcoded values. Possibly the slope
coefficient calculation is not related to clock rate at all.

Signed-off-by: Lukas Turek <8an@praha12.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath5k: Fix functions for getting/setting slot time
Lukáš Turek [Mon, 21 Dec 2009 21:50:49 +0000 (22:50 +0100)]
ath5k: Fix functions for getting/setting slot time

Functions ath5k_hw_get_slot_time and ath5k_hw_set_slot_time were
converting microseconds to clocks only for AR5210, although it's needed
for all supported devices. The conversion was moved outside the
hardware-specific branches.

The original code also limited minimum slot time to 9, while turbo modes
use 6, this was fixed too.

Signed-off-by: Lukas Turek <8an@praha12.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: Add new callback set_coverage_class
Lukáš Turek [Mon, 21 Dec 2009 21:50:48 +0000 (22:50 +0100)]
mac80211: Add new callback set_coverage_class

Mac80211 callback to driver set_coverage_class() sets slot time and ACK
timeout for given IEEE 802.11 coverage class. The callback is optional,
but it's essential for long distance links.

Signed-off-by: Lukas Turek <8an@praha12.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agonl80211: Add new WIPHY attribute COVERAGE_CLASS
Lukáš Turek [Mon, 21 Dec 2009 21:50:47 +0000 (22:50 +0100)]
nl80211: Add new WIPHY attribute COVERAGE_CLASS

The new attribute NL80211_ATTR_WIPHY_COVERAGE_CLASS sets IEEE 802.11
Coverage Class, which depends on maximum distance of nodes in a
wireless network. It's required for long distance links (more than a few
hundred meters).

The attribute is now ignored by two non-mac80211 drivers, rndis and
iwmc3200wifi, together with WIPHY_PARAM_RETRY_SHORT and
WIPHY_PARAM_RETRY_LONG. If it turns out to be a problem, we could split
set_wiphy_params callback or add new capability bits.

Signed-off-by: Lukas Turek <8an@praha12.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoath9k: re-enable ps by default for new single chip families
Luis R. Rodriguez [Fri, 18 Dec 2009 16:26:04 +0000 (11:26 -0500)]
ath9k: re-enable ps by default for new single chip families

The newer single chip hardware family of chipsets have not been
experiencing issues with power saving set by default with recent
fixes merged (even into stable). The remaining issues are only
reported with AR5416 and since enabling PS by default can increase
power savings considerably best to take advantage of that feature
as this has been tested properly.

For more details on this issue see the bug report:

http://bugzilla.kernel.org/show_bug.cgi?id=14267

We leave AR5416 with PS disabled by default, that seems to require
some more work.

Cc: stable@kernel.org
Cc: Peter Stuge <peter@stuge.se>
Cc: Justin P. Mattock <justinmattock@gmail.com>
Cc: Kristoffer Ericson <kristoffer.ericson@gmail.com>
Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoMerge git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
John W. Linville [Wed, 6 Jan 2010 22:22:54 +0000 (17:22 -0500)]
Merge git://git./linux/kernel/git/linville/wireless-2.6

Conflicts:
net/mac80211/scan.c
net/mac80211/wme.c

14 years agoRevert "mac80211: replace netif_tx_{start,stop,wake}_all_queues"
John W. Linville [Wed, 6 Jan 2010 20:39:39 +0000 (15:39 -0500)]
Revert "mac80211: replace netif_tx_{start,stop,wake}_all_queues"

This reverts commit 53623f1a09c7a7d23b74f0f7d93dba0ebde1006b.

This was inadvertantly missed in "mac80211: fix skb buffering issue",
and is required with that patch to restore proper queue operation.

Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomac80211: fix-up build breakage in 2.6.33
John W. Linville [Wed, 6 Jan 2010 20:35:49 +0000 (15:35 -0500)]
mac80211: fix-up build breakage in 2.6.33

"mac80211: fix skb buffering issue" is based on what will become 2.6.34,
so it includes an incompatible usage of sta_info_get.  This patch will
need to be effectively reverted when merging for 2.6.34.

Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agowireless: fix build breakage when CONFIG_CFG80211_REG_DEBUG not set
John W. Linville [Tue, 5 Jan 2010 22:57:20 +0000 (17:57 -0500)]
wireless: fix build breakage when CONFIG_CFG80211_REG_DEBUG not set

Bad macro definition in "cfg80211: add a regulatory debug print"...

Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agoMerge git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
John W. Linville [Tue, 5 Jan 2010 22:18:59 +0000 (17:18 -0500)]
Merge git://git./linux/kernel/git/linville/wireless-2.6

Conflicts:
net/mac80211/iface.c

14 years agomac80211: fix ampdu_action tx_start ssn
Christian Lamparter [Sun, 3 Jan 2010 23:52:56 +0000 (00:52 +0100)]
mac80211: fix ampdu_action tx_start ssn

The start_seq_num is taken from the station's tid_seq[tid].
This is fine, except tid_seq sequence counter is shifted
by 4 bits to accommodate for frame fragmentation.

Both (iwlagn & ath9k) were unaffected by this minor glitch,
because they don't read the *ssn for the AMPDU_TX_START action.

Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: pass GET_HW_SPEC capability bitmask up the stack
Lennert Buytenhek [Mon, 4 Jan 2010 20:58:40 +0000 (21:58 +0100)]
mwl8k: pass GET_HW_SPEC capability bitmask up the stack

This enables HT association and AMPDU in the receive direction for
STA firmware images on hardware that supports it.

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: trivial rx-only ampdu implementation
Lennert Buytenhek [Mon, 4 Jan 2010 20:58:12 +0000 (21:58 +0100)]
mwl8k: trivial rx-only ampdu implementation

AMPDU receive doesn't need any special handling, so let's enable
this before tackling the transmit side.

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: pass in HT capabilities and rates when associating
Lennert Buytenhek [Mon, 4 Jan 2010 20:57:59 +0000 (21:57 +0100)]
mwl8k: pass in HT capabilities and rates when associating

Pass the AP's MCS rate mask to SET_RATE when associating, and make
UPDATE_STADB pass in the peer's HT caps and rates when adding a new
hardware station database entry.

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: allow setting HT channels
Lennert Buytenhek [Mon, 4 Jan 2010 20:56:46 +0000 (21:56 +0100)]
mwl8k: allow setting HT channels

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: add support for 88w8363 in STA mode
Lennert Buytenhek [Mon, 4 Jan 2010 20:56:19 +0000 (21:56 +0100)]
mwl8k: add support for 88w8363 in STA mode

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: fix changed flags handling in mwl8k_bss_info_changed()
Lennert Buytenhek [Mon, 4 Jan 2010 20:56:07 +0000 (21:56 +0100)]
mwl8k: fix changed flags handling in mwl8k_bss_info_changed()

Previously, mwl8k_bss_info_changed() would refuse to do anything if
the 'changed' argument indicated that the association status hadn't
changed.  Fix this up so that it will allow changing things like the
preamble type, the slot time and the CTS-to-self protection method
without having to reassociate.

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: honor peer rate set
Lennert Buytenhek [Mon, 4 Jan 2010 20:55:52 +0000 (21:55 +0100)]
mwl8k: honor peer rate set

When calling SET_RATE, SET_AID, or when creating a station database
entry for our AP, pass in the AP's rate set instead of just blindly
enabling all legacy rates, so as to end up doing the right thing when
talking to 11b-only APs.

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: move ->peer_id from mwl8k_vif to mwl8k_sta
Lennert Buytenhek [Mon, 4 Jan 2010 20:55:42 +0000 (21:55 +0100)]
mwl8k: move ->peer_id from mwl8k_vif to mwl8k_sta

For STA firmware, move the per-peer hardware station ID to the
driver-private part of struct ieee80211_sta, where it belongs.

(Since issuing a hardware station database maintenance command sleeps,
we can't hold a reference to the ieee80211_sta * across the command,
and since we won't know the station ID until after the command
completes, we need to re-lookup the sta when the command is done to
write the returned station ID back to its driver-private part.)

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: remove mwl8k_vif::bssid, which is now useless
Lennert Buytenhek [Mon, 4 Jan 2010 20:55:21 +0000 (21:55 +0100)]
mwl8k: remove mwl8k_vif::bssid, which is now useless

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
14 years agomwl8k: handle station database update for AP's sta entry via ->sta_notify()
Lennert Buytenhek [Mon, 4 Jan 2010 20:55:12 +0000 (21:55 +0100)]
mwl8k: handle station database update for AP's sta entry via ->sta_notify()

Inserting and removing a hardware station database entry for the AP
when we are in managed mode is currently done in ->bss_info_changed().

To prepare for adding AP mode support, implement the ->sta_notify()
driver method, and let that handle inserting and removing the hardware
station database entry for our AP instead.

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>