pandora-kernel.git
12 years agoath6kl: add support for firmware API 2 format
Kalle Valo [Wed, 7 Sep 2011 07:55:17 +0000 (10:55 +0300)]
ath6kl: add support for firmware API 2 format

In the new format all the format images are embedded into one file.

Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: fix busy loop in ath6kl_bmi_get_rx_lkahd()
Kalle Valo [Wed, 7 Sep 2011 07:55:16 +0000 (10:55 +0300)]
ath6kl: fix busy loop in ath6kl_bmi_get_rx_lkahd()

Brent reported that ath6kl busy loops if firmware doesn't boot for some
reason (in this case he was using an older firmware which wasn't supported
by ath6kl).

Investigation revealed that this was even on purpose,
ath6kl_bmi_get_rx_lkahd() had a parameter to disable the timeout check,
which is extremely evil. I didn't find any reason why the timeout needs
to be disabled so I just removed the feature. The function already busyloops
a maximum of one second if it doesn't get an answer, even that's too long.
If something takes longer than that a more friendly approach is needed.

Reported-by: Brent Taylor <btaylor1@motorolasolutions.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: separate firmware fetch from upload
Kalle Valo [Wed, 7 Sep 2011 07:55:16 +0000 (10:55 +0300)]
ath6kl: separate firmware fetch from upload

In preparation for the new firmware image format.

Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: query device tree for firmware board-id
Sam Leffler [Wed, 7 Sep 2011 07:55:16 +0000 (10:55 +0300)]
ath6kl: query device tree for firmware board-id

When no default board data file is present query the device tree for a
board-id setting to identify the board data to use.  If the FDT lacks the
necesary info fall back to the previous behaviour of using a compile-time
board filename.

Signed-off-by: Sam Leffler <sleffler@chromium.org>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Allow enabling of P2P support
Jouni Malinen [Mon, 5 Sep 2011 14:38:47 +0000 (17:38 +0300)]
ath6kl: Allow enabling of P2P support

For now, use a module parameter (ath6kl_p2p) to allow P2P support
to be enabled. This is needed since there is no mechanism for
enabling the P2P mode more dynamically for a single netdev.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: unify rx function naming in htc.c
Kalle Valo [Tue, 6 Sep 2011 08:10:49 +0000 (11:10 +0300)]
ath6kl: unify rx function naming in htc.c

Similarly like with the tx path, unify naming in htc rx path. No functional
changes.

Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: unify tx function names in htc.c
Kalle Valo [Tue, 6 Sep 2011 08:10:49 +0000 (11:10 +0300)]
ath6kl: unify tx function names in htc.c

This is to make it easier follow tx code path inside htc.No functional
changes.

Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Process regulatory requests from firmware.
Vivek Natarajan [Tue, 6 Sep 2011 07:31:36 +0000 (13:01 +0530)]
ath6kl: Process regulatory requests from firmware.

Process the regulatory code from eeprom and pass the
country information to cfg80211.

kvalo: add space between struct name and *

Signed-off-by: Vivek Natarajan <nataraja@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Allow AP mode to be configured
Jouni Malinen [Mon, 5 Sep 2011 14:38:46 +0000 (17:38 +0300)]
ath6kl: Allow AP mode to be configured

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Fix AP mode connect event parsing and TIM updates
Jouni Malinen [Mon, 5 Sep 2011 14:38:45 +0000 (17:38 +0300)]
ath6kl: Fix AP mode connect event parsing and TIM updates

This cleans up the connect event parsing by defining a union in
struct wmi_connect_event to match with the three possible sets of
fields that the target uses depending on which type of connect
event is being indicated. In addition, two AP cases are now
separated from ath6kl_connect_event() so that correct field names
can be used to make it actually possible to understand what the
code is doing.

The bug hiding in the previous mess was in parsing the AID incorrectly
when processing the new station connecting event in AP mode. The fix
here for that is also fixing TIM updates for PS buffering to use the
correct AID.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Fix WMI message structure for AP_SET_PVB
Jouni Malinen [Mon, 5 Sep 2011 14:38:44 +0000 (17:38 +0300)]
ath6kl: Fix WMI message structure for AP_SET_PVB

There is a 2-octet reserved field between the flag and aid fields. Fix
that to make the target actually behave as requested.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoathk6l: Fix channel list processing in scan requests
Jouni Malinen [Fri, 2 Sep 2011 17:07:06 +0000 (20:07 +0300)]
athk6l: Fix channel list processing in scan requests

Limit the length of the channel list to WMI_MAX_CHANNELS to avoid
rejection of the request in wmi.c. Since there is not really much
point in using a specific list of more than 32 channels, drop the
channel list if more channels are specified and scan all channels.

Fix cfg80211 scan API use: ar->scan_req must be set only if returning
success from scan() handler. The previous version would result in use
of freed memory and likely kernel panic should the scan request fail
to be sent to the target.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Add debugfs support to write a chip register
Vasanthakumar Thiagarajan [Mon, 5 Sep 2011 08:19:46 +0000 (11:19 +0300)]
ath6kl: Add debugfs support to write a chip register

To write a value to register:
echo <register_offset>=<register_value> > <degfs_root>/ieee80211/phyX/ath6kl/reg_write

kvalo: rename file to reg_write to follow the style of other debugfs files

Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Fix endianness in register write
Vasanthakumar Thiagarajan [Mon, 5 Sep 2011 08:19:46 +0000 (11:19 +0300)]
ath6kl: Fix endianness in register write

Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Make ath6kl_diag_write32() non-static
Vasanthakumar Thiagarajan [Mon, 5 Sep 2011 08:19:45 +0000 (11:19 +0300)]
ath6kl: Make ath6kl_diag_write32() non-static

So that this can be called from debug.c when adding support
to write chip register.

Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Add debugfs entry to modify roaming parameters.
Vivek Natarajan [Wed, 31 Aug 2011 09:32:19 +0000 (15:02 +0530)]
ath6kl: Add debugfs entry to modify roaming parameters.

Firmware initiates roaming only after it reaches a rssi of 20.
This lower rssi threshold can be modified through a wmi command
to modify the roaming behavior.

kvalo: rename debugfs functions and move comment about rssi units next to
ath6kl_wmi_set_roam_lrssi_cmd()

Signed-off-by: Vivek Natarajan <nataraja@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Fix endianness in requesting chip register read
Vasanthakumar Thiagarajan [Wed, 31 Aug 2011 10:18:15 +0000 (15:48 +0530)]
ath6kl: Fix endianness in requesting chip register read

Need to make sure the chip address for which we need the value
si endian safe.

Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Add debugfs interface to dump diagnostic registers from firmware
Vasanthakumar Thiagarajan [Fri, 2 Sep 2011 07:40:06 +0000 (10:40 +0300)]
ath6kl: Add debugfs interface to dump diagnostic registers from firmware

To dump a particular register:

    echo <reg_addr> > <debugfs_root>/ieee80211/phyX/ath6kl/reg_addr

To dump the entire register set:

    echo 0 > <debugfs_root>/ieee80211/phyX/ath6kl/reg_addr

Register values will be available at:

    cat <debugfs_root>/ieee80211/phyX/ath6kl/reg_dump

kvalo: commit log cleanup, renamed few functions, removed a warning
message

Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: read fwlog from firmware ring buffer
Kalle Valo [Fri, 2 Sep 2011 07:32:05 +0000 (10:32 +0300)]
ath6kl: read fwlog from firmware ring buffer

Firmare sends the logs only when it's internal ring buffer is full. But
if firmware crashes we need to retrieve the latest logs through diagnose
window. This is now done everytime the debugfs file is read.

Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: cleanup diagnose window read and write functions
Kalle Valo [Fri, 2 Sep 2011 07:32:05 +0000 (10:32 +0300)]
ath6kl: cleanup diagnose window read and write functions

Just to make them a bit easier to read and unify naming. 32 suffix
in the function name means that it will be a 32 bit transfer. If there's
no number a buffer is transfered instead.

Use void pointers to get rid of ugly casts.

Don't provide target address as a pointer, pass it by value. Same for
the value used in write32().

Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: implement support to set firmware log parameters
Kalle Valo [Fri, 2 Sep 2011 07:32:04 +0000 (10:32 +0300)]
ath6kl: implement support to set firmware log parameters

Firmware log parameters can be controlled now with help of fwlog_mask
debugfs file.

Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: add firmware log support
Kalle Valo [Fri, 2 Sep 2011 07:32:04 +0000 (10:32 +0300)]
ath6kl: add firmware log support

Firmware sends binary logs with WMIX_DBGLOG_EVENTID event. Create
a buffer which stores the latest logs and which can be copied from
fwlog debugfs file with cp command.

To save memory firmware log support is enabled only when CONFIG_ATH6KL_DEBUG
is enabled.

Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Do not enable Probe Request reporting by default
Jouni Malinen [Thu, 1 Sep 2011 08:33:20 +0000 (11:33 +0300)]
ath6kl: Do not enable Probe Request reporting by default

Probe Request reporting will be needed for P2P and WPS, but some
firmware builds do not seem to like this when P2P is not enabled.
Since we do not yet enable P2P, the safest option here is to just
remove this call for now and bring it back as a more dynamic version
once ath6kl starts advertising support for P2P.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: fix compilation when NL80211_TESTMODE is disabled
Kalle Valo [Thu, 1 Sep 2011 09:04:59 +0000 (12:04 +0300)]
ath6kl: fix compilation when NL80211_TESTMODE is disabled

ERROR: "ath6kl_tm_rx_report_event"
[drivers/net/wireless/ath/ath6kl/ath6kl.ko] undefined

Reported-by: Jouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: add testmode support
Kalle Valo [Thu, 1 Sep 2011 07:14:21 +0000 (10:14 +0300)]
ath6kl: add testmode support

This is port from the staging version of ath6kl. The interface to user space
is exactly same.

Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Define __CHECK_ENDIAN__ for sparse
Jouni Malinen [Tue, 30 Aug 2011 18:58:11 +0000 (21:58 +0300)]
ath6kl: Define __CHECK_ENDIAN__ for sparse

Make sparse check endianness with "make C=1".

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Return error from wmi.c instead of -EIO in ath6kl_cfg80211_scan
Jouni Malinen [Tue, 30 Aug 2011 18:58:10 +0000 (21:58 +0300)]
ath6kl: Return error from wmi.c instead of -EIO in ath6kl_cfg80211_scan

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Include P2P IE(s) in GO Probe Response depending on request
Jouni Malinen [Tue, 30 Aug 2011 18:58:09 +0000 (21:58 +0300)]
ath6kl: Include P2P IE(s) in GO Probe Response depending on request

P2P has special rules on when to include P2P IE(s) in Probe Response
frame based on the Probe Request frame. Handle P2P IE(s) separately
to follow these rules.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Do not clear CONNECT bit setting in AP mode for STA disconnect
Edward Lu [Tue, 30 Aug 2011 18:58:08 +0000 (21:58 +0300)]
ath6kl: Do not clear CONNECT bit setting in AP mode for STA disconnect

Signed-off-by: Edward Lu <elu@qca.qualcomm.com>
Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Fix default key installation in AP mode
Edward Lu [Tue, 30 Aug 2011 18:58:07 +0000 (21:58 +0300)]
ath6kl: Fix default key installation in AP mode

Signed-off-by: Edward Lu <elu@qca.qualcomm.com>
Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Fix a typo in ath6k context
Edward Lu [Tue, 30 Aug 2011 18:58:06 +0000 (21:58 +0300)]
ath6kl: Fix a typo in ath6k context

Signed-off-by: Edward Lu <elu@qca.qualcomm.com>
Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Add support for new P2P iftypes in mode changes
Jouni Malinen [Tue, 30 Aug 2011 18:58:05 +0000 (21:58 +0300)]
ath6kl: Add support for new P2P iftypes in mode changes

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Advertise supported mgmt_stypes
Jouni Malinen [Tue, 30 Aug 2011 18:58:04 +0000 (21:58 +0300)]
ath6kl: Advertise supported mgmt_stypes

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Report received Action frames to cfg80211
Jouni Malinen [Tue, 30 Aug 2011 18:58:03 +0000 (21:58 +0300)]
ath6kl: Report received Action frames to cfg80211

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Notify cfg80211 of TX status of mgmt_tx frames
Jouni Malinen [Tue, 30 Aug 2011 18:58:02 +0000 (21:58 +0300)]
ath6kl: Notify cfg80211 of TX status of mgmt_tx frames

Use WMI_TX_STATUS_EVENTID event to generate cfg80211_mgmt_tx_frame()
calls. Since we support only a single pending frame for now, use the
hardcoded cookie value 1 and store a copy of the pending frame in
the driver.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Report received Probe Request frames to cfg80211
Jouni Malinen [Tue, 30 Aug 2011 18:58:01 +0000 (21:58 +0300)]
ath6kl: Report received Probe Request frames to cfg80211

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Support channel set request for startscan command
Edward Lu [Tue, 30 Aug 2011 18:58:00 +0000 (21:58 +0300)]
ath6kl: Support channel set request for startscan command

Signed-off-by: Edward Lu <elu@qca.qualcomm.com>
Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Use set_appie command to add Probe Request IEs
Jouni Malinen [Tue, 30 Aug 2011 18:57:59 +0000 (21:57 +0300)]
ath6kl: Use set_appie command to add Probe Request IEs

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Add cfg80211 calls for remain-on-channel events
Jouni Malinen [Tue, 30 Aug 2011 18:57:58 +0000 (21:57 +0300)]
ath6kl: Add cfg80211 calls for remain-on-channel events

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Request P2P capabilities during target init
Jouni Malinen [Tue, 30 Aug 2011 18:57:57 +0000 (21:57 +0300)]
ath6kl: Request P2P capabilities during target init

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Implement mgmt_tx
Jouni Malinen [Tue, 30 Aug 2011 18:57:56 +0000 (21:57 +0300)]
ath6kl: Implement mgmt_tx

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Implement remain_on_channel and cancel_remain_on_channel
Jouni Malinen [Tue, 30 Aug 2011 18:57:55 +0000 (21:57 +0300)]
ath6kl: Implement remain_on_channel and cancel_remain_on_channel

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Add new WMI commands and events for P2P
Jouni Malinen [Tue, 30 Aug 2011 18:57:54 +0000 (21:57 +0300)]
ath6kl: Add new WMI commands and events for P2P

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Use change_station() to authorize/unauthorize STAs
Jouni Malinen [Tue, 30 Aug 2011 18:57:53 +0000 (21:57 +0300)]
ath6kl: Use change_station() to authorize/unauthorize STAs

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Delay initial group key setup in AP mode
Jouni Malinen [Tue, 30 Aug 2011 18:57:52 +0000 (21:57 +0300)]
ath6kl: Delay initial group key setup in AP mode

The target is not ready to accept addkey commands until the connect
event has been delivered, so delay these operations for the initial GTK.
In addition, properly set interface connected and mark netdev ready when
the AP mode setup has been completed.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Fix AP mode (Re)AssocReq IE processing
Jouni Malinen [Tue, 30 Aug 2011 18:57:51 +0000 (21:57 +0300)]
ath6kl: Fix AP mode (Re)AssocReq IE processing

Need to use correct length field for association request frame and
parse the IEs to find WPA/WPS/RSN IE. In addition, copying of the
IE better make sure it fits in into the buffer to avoid buffer
overflows.

In addition, add the (Re)AssocReq IEs to the cfg80211 new station
event for user space.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Add functionality for starting AP mode
Jouni Malinen [Tue, 30 Aug 2011 18:57:50 +0000 (21:57 +0300)]
ath6kl: Add functionality for starting AP mode

Use cfg80211 add/del_beacon callbacks for starting/stopping AP mode and
set_beacon to update AP configuration (mainly, to update Beacon and
Probe Response IEs).

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Add debugfs file entry to dump credit distribution stats
Vasanthakumar Thiagarajan [Fri, 26 Aug 2011 07:36:33 +0000 (13:06 +0530)]
ath6kl: Add debugfs file entry to dump credit distribution stats

It would be at <dbgfs_root>/ieee80211/phyX/ath6kl/credit_dist_stats.

Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Add debugfs entry to dump target stats
Vasanthakumar Thiagarajan [Fri, 26 Aug 2011 07:36:32 +0000 (13:06 +0530)]
ath6kl: Add debugfs entry to dump target stats

It would be at <debugfs_root>/ieee80211/phyX/ath6kl/tgt_stats.

Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Add initial debugfs changes
Vasanthakumar Thiagarajan [Fri, 26 Aug 2011 07:36:31 +0000 (13:06 +0530)]
ath6kl: Add initial debugfs changes

Just initial debugfs changes. The debugfs directory would
be created at <debugfs_root>/ieee80211/phyX/ath6kl.

Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Avoid rolling back of entire scatter setup in case of failure
Vasanthakumar Thiagarajan [Mon, 22 Aug 2011 15:10:22 +0000 (20:40 +0530)]
ath6kl: Avoid rolling back of entire scatter setup in case of failure

Current tx scatter gather implementation rolls back the entire
scatter setup in case of a failure in setting up just one packet
into the bundle. Instead of dopping the whole scatter setup,
send the packets available just before the failure one using
scatter gather I/O.

Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Add wmi meta data information only it is available
Vasanthakumar Thiagarajan [Mon, 22 Aug 2011 15:10:21 +0000 (20:40 +0530)]
ath6kl: Add wmi meta data information only it is available

Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Remove unused meta_v2 from ath6kl_data_tx()
Vasanthakumar Thiagarajan [Mon, 22 Aug 2011 15:10:20 +0000 (20:40 +0530)]
ath6kl: Remove unused meta_v2 from ath6kl_data_tx()

Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Fix system freeze under heavy data load
Vasanthakumar Thiagarajan [Mon, 22 Aug 2011 14:44:31 +0000 (20:14 +0530)]
ath6kl: Fix system freeze under heavy data load

Patch "ath6kl: Fix buffer alignment for scatter-gather write" does
memmove for a length (scat_req->scat_list[i].len) which is not the
actual length of data that is suppossed to be moved. The right
lengh is packet->act_len + HTC_HDR_LENGTH. Using wrong length
for data move during buffer alignment causes system freeze after
the following WARN_ON and sometimes target assert.

WARNING: at drivers/net/wireless/ath/ath6kl/main.c:771 ath6k_credit_distribute+0x196/0x1a0
 [<ffffffffa051cf5f>] ath6kl_htc_rxmsg_pending_handler+0x83f/0xe00 [ath6kl]
 [<ffffffff8104a743>] ? __wake_up+0x53/0x70
 [<ffffffffa0518b18>] ath6kldev_intr_bh_handler+0x188/0x650 [ath6kl]
 [<ffffffffa052d316>] ath6kl_sdio_irq_handler+0x36/0x80 [ath6kl]
 [<ffffffff81492b3c>] sdio_irq_thread+0xfc/0x360
 [<ffffffff81051c52>] ? default_wake_function+0x12/0x20
 [<ffffffff81492a40>] ? sdio_claim_irq+0x220/0x220
 [<ffffffff81080c36>] kthread+0x96/0xa0
 [<ffffffff815b9fb4>] kernel_thread_helper+0x4/0x10
 [<ffffffff81080ba0>] ? kthread_worker_fn+0x190/0x190
 [<ffffffff815b9fb0>] ? gs_change+0x13/0x13

Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: implement suspend support
Kalle Valo [Fri, 22 Jul 2011 05:26:20 +0000 (08:26 +0300)]
ath6kl: implement suspend support

For now this is implemented so that if host supports power is kept in
the chip. If that's not supported, an error is returned and sdio stack
will remove the device during suspend.

Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Fix buffer alignment for scatter-gather I/O
Vasanthakumar Thiagarajan [Wed, 17 Aug 2011 13:15:10 +0000 (18:45 +0530)]
ath6kl: Fix buffer alignment for scatter-gather I/O

For non-scatter buffers, there is already a bounce buffer which
takes care of alignment. This patch is influenced by a rough patch of
Kalle.

Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Fix bug in computing AMSU subframe padding
Vasanthakumar Thiagarajan [Tue, 16 Aug 2011 05:49:38 +0000 (11:19 +0530)]
ath6kl: Fix bug in computing AMSU subframe padding

This fixes AMSDU rx, otherwise it fails with the following warnings.

"802.3 AMSDU frame bound check failed"

Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Cleanup ath6kl_wmi_data_hdr_remove()
Vasanthakumar Thiagarajan [Sun, 14 Aug 2011 11:38:35 +0000 (17:08 +0530)]
ath6kl: Cleanup ath6kl_wmi_data_hdr_remove()

Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Minor cleanup in min_hdr_len computation
Vasanthakumar Thiagarajan [Sun, 14 Aug 2011 11:38:34 +0000 (17:08 +0530)]
ath6kl: Minor cleanup in min_hdr_len computation

Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Release ar->lock right afer updating net_stats in ath6kl_rx()
Vasanthakumar Thiagarajan [Sun, 14 Aug 2011 11:38:33 +0000 (17:08 +0530)]
ath6kl: Release ar->lock right afer updating net_stats in ath6kl_rx()

This lock is intended to protect stats there, not neccessary to
hold it beyond that.

Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: fix indentation in htc_issued_send()
Kalle Valo [Mon, 15 Aug 2011 01:10:03 +0000 (18:10 -0700)]
ath6kl: fix indentation in htc_issued_send()

One line used space to indent. Oddly enough checkpatch didn't complain
about this.

Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Check sme state before delivering disconnect event to cfg80211
Raja Mani [Fri, 12 Aug 2011 12:22:24 +0000 (17:52 +0530)]
ath6kl: Check sme state before delivering disconnect event to cfg80211

 In some random cases, the firmware is sending two disconnect event to
 the host. In the current model, both diconnect events are passed to
 cfg80211 without checking local sme state machine, which is screwing
 cfg80211 layer state.

Signed-off-by: Raja Mani <rmani@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Avoid finding bss presence in cfg80211 scan list
Raja Mani [Fri, 12 Aug 2011 12:22:23 +0000 (17:52 +0530)]
ath6kl: Avoid finding bss presence in cfg80211 scan list

Connect event handler function is always reporting BSS info
to CFG80211 layer first and then followed by connect event is passed.

Before these steps, BSS presence is retrieved from CFG80211 layer,
but it is not used. Hence, removing that part.

Signed-off-by: Raja Mani <rmani@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Add beginning of AR6004 initialisation support
Kevin Fang [Mon, 11 Jul 2011 09:14:13 +0000 (17:14 +0800)]
ath6kl: Add beginning of AR6004 initialisation support

Support isn't complete yet.

Signed-off-by: Kevin Fang <kevin.fang@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoath6kl: Use cfg80211_inform_bss instead of cfg80211_inform_bss_frame
Jouni Malinen [Wed, 10 Aug 2011 21:32:49 +0000 (00:32 +0300)]
ath6kl: Use cfg80211_inform_bss instead of cfg80211_inform_bss_frame

There is no point in generating a bogus Beacon frame for
cfg80211_inform_bss_frame when cfg80211_inform_bss can be used
instead.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
12 years agoiwlwifi: iwl-agn-rs.c: remove old comment
Greg Dietsche [Sun, 28 Aug 2011 13:22:38 +0000 (08:22 -0500)]
iwlwifi: iwl-agn-rs.c: remove old comment

this comment refers to some code that was removed.

Signed-off-by: Greg Dietsche <Gregory.Dietsche@cuw.edu>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoath9k: defer ath_tx_setup_buffer setup to the first tx attempt during aggr
Felix Fietkau [Sat, 27 Aug 2011 22:32:25 +0000 (00:32 +0200)]
ath9k: defer ath_tx_setup_buffer setup to the first tx attempt during aggr

With sequence number and buffer allocation deferred to when they're needed
for the first time, it becomes much easier to start dropping packets from
the tid queue if necessary, e.g. when latency suddenly increases. This can
lead to some future improvements in buffer management for better latency.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoath9k: move seqno allocation in the tx path to ath_tx_setup_buffer
Felix Fietkau [Sat, 27 Aug 2011 22:32:24 +0000 (00:32 +0200)]
ath9k: move seqno allocation in the tx path to ath_tx_setup_buffer

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoath9k: move the sequence number from ath_frame_info to ath_buf
Felix Fietkau [Sat, 27 Aug 2011 22:32:23 +0000 (00:32 +0200)]
ath9k: move the sequence number from ath_frame_info to ath_buf

It is only necessary for BAW tracking and moving it to the ath_buf
makes it easier to add further improvements, such as deferring
seqno allocation in the aggregation path.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoath9k: clean up the aggregation tid queue
Felix Fietkau [Sat, 27 Aug 2011 22:32:22 +0000 (00:32 +0200)]
ath9k: clean up the aggregation tid queue

Use a sk_buff_head instead containing skbs instead of a list_head
containing ath_bufs. This makes it easier to decouple the aggregation
code from the ath_buf struct

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoath9k: use u8 for the tx key index
Felix Fietkau [Sat, 27 Aug 2011 22:32:21 +0000 (00:32 +0200)]
ath9k: use u8 for the tx key index

This saves some space in struct ath_frame_info

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoath: Make ath_printk void not int and remove unused struct ath_common *
Joe Perches [Fri, 26 Aug 2011 08:56:39 +0000 (01:56 -0700)]
ath: Make ath_printk void not int and remove unused struct ath_common *

Changing the return type and removing the unused argument from
ath_printk reduces code size.

Add an __always_unused struct ath_common * to the macros
that call ath_printk to avoid unused variable warnings.

$ size drivers/net/wireless/ath/built-in.o*
   text    data     bss     dec     hex filename
1159859   16235  212000 1388094  152e3e drivers/net/wireless/ath/built-in.o.new
1164175   16235  212032 1392442  153f3a drivers/net/wireless/ath/built-in.o.old

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoath: Make ath_dbg void not int
Joe Perches [Fri, 26 Aug 2011 08:56:38 +0000 (01:56 -0700)]
ath: Make ath_dbg void not int

The return value is never used so make it void.

Reduces object size a tiny bit.

$ size drivers/net/wireless/ath/built-in.o*
   text    data     bss     dec     hex filename
1164175   16235  212032 1392442  153f3a drivers/net/wireless/ath/built-in.o.new
1164819   16235  212032 1393086  1541be drivers/net/wireless/ath/built-in.o.old

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agowl12xx/sdio_test.c: fix build breakage from WL127X_FW_NAME change
John W. Linville [Mon, 29 Aug 2011 19:47:58 +0000 (15:47 -0400)]
wl12xx/sdio_test.c: fix build breakage from WL127X_FW_NAME change

Commit c302b2c959164622558474871ae942da0e484a38 ("wl12xx: Use a single
fw for both STA and AP roles") changed the name of the firmware name
definition, breaking the build of wl12xx/sdio_test.c.

Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agob43: Fix swatch warning
Larry Finger [Sat, 27 Aug 2011 20:53:42 +0000 (15:53 -0500)]
b43: Fix swatch warning

Swatch reports the following warning for main.c:

  CHECK   drivers/net/wireless/b43/main.c
drivers/net/wireless/b43/main.c +4115 b43_wireless_core_stop(7) warn: variable dereferenced before check 'dev'

After analysis, this is not a bug, but a false warning. Nonetheless,
a cleanup is in order to prevent some future janitor proposing
the wrong fix, as I did in my original patch.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoath9k: Fix a smatch warnings
Larry Finger [Sat, 27 Aug 2011 18:56:00 +0000 (13:56 -0500)]
ath9k: Fix a smatch warnings

Smatch shows the following warnings:

  CHECK   drivers/net/wireless/ath/ath9k/htc_drv_main.c
drivers/net/wireless/ath/ath9k/htc_drv_main.c +1315 ath9k_htc_configure_filter(27) warn: inconsistent returns mutex:&priv->mutex: locked (1303) unlocked (1315)

  CHECK   drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
drivers/net/wireless/ath/ath9k/ar9003_eeprom.c +3321 ar9300_eeprom_restore_internal(20) warn: returning -1 instead of -ENOMEM is sloppy

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoath9k: Add debugfs support for mac/baseband samples
Rajkumar Manoharan [Sat, 27 Aug 2011 10:47:47 +0000 (16:17 +0530)]
ath9k: Add debugfs support for mac/baseband samples

This patch keep track of number of samples that includes
DMA debugs registers, PCU observe, CR, channel noise,
cycle conters, noisefloor history buffer and last N number
of tx and rx descriptor status. These samples are grouped
in table manner which dumping in debgufs.

Debugfs file location:
    <debugfs_mnt>/ieee80211/phy#/ath9k/samples

Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoath9k: fix regression in sending aggregated packets
Felix Fietkau [Sat, 27 Aug 2011 08:25:27 +0000 (10:25 +0200)]
ath9k: fix regression in sending aggregated packets

The recent commit "ath9k: Send legacy rated frames as unaggregated"
introduced a check to ensure that packets with non-MCS rates set in
the rate series will not be aggregated. However, it failed to check
if the rate series is valid before testing the flags, thus breaking
aggregation for normal MCS-only packets if the last series is unset.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoath9k: Fix eifs/usec timeout for AR9287 v1.3+
Rajkumar Manoharan [Sat, 27 Aug 2011 06:43:21 +0000 (12:13 +0530)]
ath9k: Fix eifs/usec timeout for AR9287 v1.3+

For AR9287 v1.3+ chips, MAC runs at 117MHz. But the initvals
IFS parameters are loaded based on 44/88MHz clockrate. So
eifs/usec from ini should not be used for AR9287 v1.3+.
The mentioned values are tested on 2 chain HT40 mode.

Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoath9k_hw: Set default slottime as 9us
Rajkumar Manoharan [Sat, 27 Aug 2011 05:52:59 +0000 (11:22 +0530)]
ath9k_hw: Set default slottime as 9us

Initialize 9us slot time as that is what is used mostly
(for non-ERP cases) and also to be in sync with initvals.

Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agob43: make HT-PHY support experimental
Rafał Miłecki [Fri, 26 Aug 2011 18:41:40 +0000 (20:41 +0200)]
b43: make HT-PHY support experimental

It was tested on three BCM4331 devices, code has been written from MMIO
dumps only, but seems to be quite stable.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agob43: use 8K buffers for 64-bit DMA to workaround hardware bug
Rafał Miłecki [Fri, 26 Aug 2011 18:41:39 +0000 (20:41 +0200)]
b43: use 8K buffers for 64-bit DMA to workaround hardware bug

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agob43: Relax requirement for descriptors to be in the DMA zone
Larry Finger [Fri, 26 Aug 2011 18:41:38 +0000 (20:41 +0200)]
b43: Relax requirement for descriptors to be in the DMA zone

When 64-bit DMA was first used, there were problems with the
BCM4311 (14e4:4311). The problem was "fixed" by using the GFP_DMA
flag in the allocation of coherent ring descriptor memory.

The original problem is now believed to have been due to bugs in
the 64-bit DMA implementation in the rest of the kernel, and that
those bugs have been fixed. Accordingly, the requirement for the
descriptors to be in the DMA zone is relaxed.

Bounce buffers are left in the DMA zone.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: Michael Buesch <m@bues.ch>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agop54spi: add "spi:" prefix for stlc45xx modalias
Axel Lin [Fri, 26 Aug 2011 06:34:59 +0000 (14:34 +0800)]
p54spi: add "spi:" prefix for stlc45xx modalias

Since commit e0626e38 (spi: prefix modalias with "spi:"),
the spi modalias is prefixed with "spi:".

This patch adds "spi:" prefix for modalias of stlc45xx.
Also move it to be group with other modalias.

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Acked-By: Christian Lamparter <chunkeey@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoiwlagn: handle GO powersave
Johannes Berg [Fri, 26 Aug 2011 06:13:56 +0000 (23:13 -0700)]
iwlagn: handle GO powersave

In order to implement support for GO powersave on
the P2P client side, the ucode needs to know what
GO we're trying to authenticate/associate with,
it needs to have a station entry and the BSSID in
the RXON set.

Implement the new mac80211 callbacks to give this
data to the device.

Since this is also useful for the device when a
normal connection is established, also program it
with the information in that case.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoiwlagn: move tx queues to transport layer
Emmanuel Grumbach [Fri, 26 Aug 2011 06:11:32 +0000 (23:11 -0700)]
iwlagn: move tx queues to transport layer

This finalizes the move of the data path to the transport layer.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoiwlagn: move the stop / wake queue logic to transport layer
Emmanuel Grumbach [Fri, 26 Aug 2011 06:11:31 +0000 (23:11 -0700)]
iwlagn: move the stop / wake queue logic to transport layer

priv->mac80211_registered and priv->hw needed to move to shared.
stop_queue API was added in order to allow the upper layer to stop
the SW queues for regulatory purposes.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoiwlagn: move check_stuck_queue to transport layer
Emmanuel Grumbach [Fri, 26 Aug 2011 06:11:30 +0000 (23:11 -0700)]
iwlagn: move check_stuck_queue to transport layer

This one is really transport related.

==== moves Stanislaw's code to BSD area ====

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoiwlagn: move wait_for_tx_queue_empty to transport layer
Emmanuel Grumbach [Fri, 26 Aug 2011 06:11:29 +0000 (23:11 -0700)]
iwlagn: move wait_for_tx_queue_empty to transport layer

This one is really transport related.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoiwlagn: cosmetics in iwl-trans.h
Emmanuel Grumbach [Fri, 26 Aug 2011 06:11:28 +0000 (23:11 -0700)]
iwlagn: cosmetics in iwl-trans.h

Remove a few dereferences of priv from the transport layer while
at it.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoiwlagn: move the disable agg logic to transport layer
Emmanuel Grumbach [Fri, 26 Aug 2011 06:11:27 +0000 (23:11 -0700)]
iwlagn: move the disable agg logic to transport layer

Since all the check_empty logic is now in the transport layer,
the upper layer doesn't need to know anything about tx queues.
The disable aggregation flow was the last to know what a tx queue
is, so move it too.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoiwlagn: move the check_empty logic to the transport layer
Emmanuel Grumbach [Fri, 26 Aug 2011 06:11:26 +0000 (23:11 -0700)]
iwlagn: move the check_empty logic to the transport layer

This logic is responsible to tell mac80211 when the HW queues are
empty and the BA session can be started / torn down.

Fix a bug on the way:
When the the Tx BA session is stopped and the HW queues aren't empty,
we stop the SW queue to drain the HW queue and then switch to the
legacy HW queue. This is the IWL_EMPTYING_HW_QUEUE_DELBA state.

While in this state, we never wake the SW queue, even when the HW
queue is almost empty, since we need to drain it completely. Look
at iwl_trans_pcie_reclaim regarding this.

Once the HW queue is really empty, we must wake the SW queue in order
to get traffic to the legacy queue.
This step was missing leading to an odd situation were the traffic
would just stall after we tore down a Tx BA session while the HW
queue was not empty.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoiwlagn: allocate resources for TX BA session in transport
Emmanuel Grumbach [Fri, 26 Aug 2011 06:11:25 +0000 (23:11 -0700)]
iwlagn: allocate resources for TX BA session in transport

The queues and all the related logic suits to the transport layer.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoiwlagn: move the mapping ac to queue / fifo to transport
Emmanuel Grumbach [Fri, 26 Aug 2011 06:11:24 +0000 (23:11 -0700)]
iwlagn: move the mapping ac to queue / fifo to transport

This mapping is transport related.
This allows us to remove the notion of tx queue from the tx path in
the upper layer.
iwl_wake_any_queue moved to transport layer since it needs to access
these mappings.
The TX API is nicer now:

int (*tx)(struct iwl_trans *trans, struct sk_buff *skb,
struct iwl_device_cmd *dev_cmd, u8 ctx, u8 sta_id);

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoiwlagn: upper layer uses slabs to allocate tx cmds
Emmanuel Grumbach [Fri, 26 Aug 2011 06:11:23 +0000 (23:11 -0700)]
iwlagn: upper layer uses slabs to allocate tx cmds

In a near future, the upper layer won't be aware of the tx queues.
This allows to remove one place where the upper layer needed to
provide the tx queue index to the transport layer.
This also saves around 1.5MB.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoiwlagn: set tx_fifo for ampdu in transport layer
Emmanuel Grumbach [Fri, 26 Aug 2011 06:11:22 +0000 (23:11 -0700)]
iwlagn: set tx_fifo for ampdu in transport layer

the mapping tx_queue -> fifo is really transport related. The upper
layer should be involved in such things.

Note that upon agg_disable, the queue is always mapped to fifo 0, but
this doesn't matter since when the queue will be setup again for a
new BA session, it will be configured to the good fifo anyway.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoiwlagn: upper layer stores iwl_rxon_context in skb's CB
Emmanuel Grumbach [Fri, 26 Aug 2011 06:11:21 +0000 (23:11 -0700)]
iwlagn: upper layer stores iwl_rxon_context in skb's CB

This removes the need for iwl_tx_info.
Each tx queue holds an array of skbs, the transport layer doesn't
need to know anything about the context in which a specific skb is
sent.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoiwlagn: stop the device before freeing it
Emmanuel Grumbach [Fri, 26 Aug 2011 06:11:20 +0000 (23:11 -0700)]
iwlagn: stop the device before freeing it

When we remove the module, we free all the tx and rx resources.
Before doing that, we'd better stop the tx / rx activity. Calling
iwl_trans_stop_device in iwl_remove helps also to remove a few API
functions:
 * rx_free: happens in iwl_trans_free
 * tx_free: happens in iwl_trans_free
 * disable_sync_irq: happens in iwl_trans_stop_device

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoiwlagn: remove dereferences of priv from transport
Emmanuel Grumbach [Fri, 26 Aug 2011 06:11:19 +0000 (23:11 -0700)]
iwlagn: remove dereferences of priv from transport

There are still quite a few, but much less.
A few fields have been moved /copied to hw_params which sits in the
shared area:
 * priv->cfg->base_params->num_of_ampdu_queues
 * priv->cfg->base_params->shadow_reg_enable
 * priv->cfg->sku
 * priv->ucode_owner

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
12 years agoiwlagn: iwl_tid_data moves to iwl-shared
Emmanuel Grumbach [Fri, 26 Aug 2011 06:11:18 +0000 (23:11 -0700)]
iwlagn: iwl_tid_data moves to iwl-shared

The rate scaling and the transport need to access the data in
iwl_tid_data, hence the move.

Note that the only component in the upper layer that needs this data
is the rate scaling. Refactoring the rate scaling may help to move
iwl_tid_data from the shared area to the transport area.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>