Kalle Valo [Wed, 7 Sep 2011 07:55:17 +0000 (10:55 +0300)]
ath6kl: refactor firmware ext data addr and reserved ram handling size
Less if clauses this way and again easier to override the values.
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
Kalle Valo [Wed, 7 Sep 2011 07:55:17 +0000 (10:55 +0300)]
ath6kl: refactor firmware load address code
Currently the load address was calculated everytime when it was needed,
and with a mess if clauses. Simplify this by adding a field to struct
ath6kl for each address and choose the address with simple switch
statements.
Also move the code just after target version is retrieved. That way it's
easier to override the values later in the boot process.
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>