summaryrefslogtreecommitdiff
path: root/drivers/net/wireless/ath/wil6210/wmi.c (follow)
Commit message (Collapse)AuthorAge
* BACKPORT: cfg80211: remove enum ieee80211_bandJohannes Berg2020-02-02
| | | | | | | | | | | | | | This enum is already perfectly aliased to enum nl80211_band, and the only reason for it is that we get IEEE80211_NUM_BANDS out of it. There's no really good reason to not declare the number of bands in nl80211 though, so do that and remove the cfg80211 one. Change-Id: Ifc56e6297146c9095432b757fabd0c463d7cc583 Signed-off-by: Johannes Berg <johannes.berg@intel.com> Bug: 62057517 Signed-off-by: Nick Desaulniers <ndesaulniers@google.com> Link: https://android.googlesource.com/kernel/msm/+/56f601d6bb9e51c3c8a79a5f40878b8d1e6ff481 Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
* wil6210: drop RX probe reponses with low SNRDedy Lansky2017-11-08
| | | | | | | | FW now reports SNR for RX management frames. Drop probe responses with SNR lower than the configured threshold. Change-Id: Ife1863b07aebe5cb6097420290c0c10b590c2da1 Signed-off-by: Dedy Lansky <dlansky@codeaurora.org>
* wil6210: add sysfs for setting connect SNR thresholdDedy Lansky2017-11-08
| | | | | | | | snr_thresh sysfs can be used to set omni and direct SNR threshold for connection. Change-Id: I091a6b61a1a4cb98e0e8c0f70b2fff4d22486e61 Signed-off-by: Dedy Lansky <dlansky@codeaurora.org>
* wil6210: missing length check in wmi_set_ieLior David2017-11-03
| | | | | | | | Add a length check in wmi_set_ie to detect unsigned integer overflow. Change-Id: Id1ec6a6218f3fe6e00cc3f9a8e674f8f843273f2 Signed-off-by: Lior David <liord@codeaurora.org>
* wil6210: add block size checks during FW loadLior David2017-11-03
| | | | | | | | | When loading FW from file add block size checks to ensure a corrupted FW file will not cause the driver to write outside the device memory. Change-Id: I6d7342cd33b2c47b701bcca4ee3cd84febbc56a2 Signed-off-by: Lior David <liord@codeaurora.org>
* wil6210: fix length check in __wmi_sendLior David2017-11-03
| | | | | | | | | | | | The current length check: sizeof(cmd) + len > r->entry_size will allow very large values of len (> U16_MAX - sizeof(cmd)) and can cause a buffer overflow. Fix the check to cover this case. In addition, ensure the mailbox entry_size is not too small, since this can also bypass the above check. Change-Id: Iecb4f53ef05da0e015bc954b57b0e40debb7c8b7 Signed-off-by: Lior David <liord@codeaurora.org>
* wil6210: store FW RF calibration resultDedy Lansky2017-08-21
| | | | | | | | | | | | | | Store initial FW RF calibration result in driver. Set this calibration result back to FW after each FW reset in order to avoid future calibration procedures. Change-Id: Id7dec17d6306e3234285874bd83b71ba4009afef Signed-off-by: Dedy Lansky <qca_dlansky@qca.qualcomm.com> Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com> Git-commit: eb4c02155881696ee6abb090d554b765e41d46ed Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git Signed-off-by: Maya Erez <merez@codeaurora.org>
* wil6210: support FW RSSI reportingDedy Lansky2017-08-21
| | | | | | | | | | | | | New FW supports reporting RSSI signal in dBm. Report RSSI to kernel in case FW has this capability. Change-Id: I85fdae2e92a38cfb7ab9a5f97dcf363add51b959 Signed-off-by: Dedy Lansky <qca_dlansky@qca.qualcomm.com> Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com> Git-commit: 30868f5d4413759ba82c0703290f2483402fea39 Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git Signed-off-by: Maya Erez <merez@codeaurora.org>
* wil6210: support devices with different PCIe bar sizeMaya Erez2017-06-04
| | | | | | | | | | | | wil6210 devices can have different PCIe bar size, hence get the bar size from PCIe device instead of using a constant bar size. Change-Id: I02fe3f05e184b141c9a5519dd97c3f2d2eb99baf Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com> Git-commit: d86d47164b227f01c3ec34c3f5a1613977d563eb Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git Signed-off-by: Maya Erez <merez@codeaurora.org>
* wil6210: add support for PCIe D3hot in system suspendMaya Erez2017-05-15
| | | | | | | | | | | | | In order to preserve the connection in suspend/resume flow, wil6210 host allows going to PCIe D3hot state in suspend, instead of performing a full wil6210 device reset. This requires the platform ability to initiate wakeup in case of RX data. To check that, a new platform API is added. In addition, add cfg80211 suspend/resume callbacks implementation. Change-Id: I3846eaaa8d6e9ecbe5adbb0c04c7574865d5af5e Signed-off-by: Maya Erez <merez@codeaurora.org>
* wil6210: support 8KB RX buffersLior David2017-05-04
| | | | | | | | | | | | | | | | | | | | | | | | | The 11ad spec requires 11ad devices to be able to receive 8KB packets over the air. Currently this is only possible by loading the driver with mtu_max=7912 but this also forces a smaller block ACK window size which reduces performance for stations which transmit normal sized packets (<2KB). Fix this problem as follows: 1. Add a module parameter rx_large_buf that when set, will allocate 8KB RX buffers regardless of mtu_max setting. 2. When receiving block ACK request agree to any window size not above our maximum, regardless of the mtu_max setting. This means if the other side transmits small packets (2KB) it can still set up block ACK with a large window size, and get better performance. Change-Id: I8d18d9306d2546b54125b77df82c984878d0f84f Signed-off-by: Lior David <qca_liord@qca.qualcomm.com> Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com> Git-commit: 52a457020a89158f4eb886544165dc162ca9a35e Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git Signed-off-by: Maya Erez <merez@codeaurora.org>
* wil6210: Fix protection against connections during resetHamad Kadmany2017-04-13
| | | | | | | | | | | | Existing code that ignores connection events during reset flow will never take effect since it locks the same mutex taken by the reset flow. In addition, in case of unsolicited disconnect events ignore those as well since device is about to get reset. Change-Id: I132040822b8c1b3d1d92965d578ed5bee0b3d1cf Signed-off-by: Hamad Kadmany <hkadmany@codeaurora.org>
* Merge "wil6210: add sysfs file for enable/disable fst link loss"Linux Build Service Account2017-04-12
|\
| * wil6210: add sysfs file for enable/disable fst link lossHamad Kadmany2017-04-05
| | | | | | | | | | | | | | | | The new "fst_link_loss" sysfs can be used to enable/disable the fst link loss behavior for specific connection. Change-Id: I7afcf86a575ca3add581c8823a3d5567483abcb0 Signed-off-by: Hamad Kadmany <hkadmany@codeaurora.org>
* | wil6210: correctly report locally generated disconnect in STA modeDedy Lansky2017-04-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Driver always invoke cfg80211_disconnected() with locally_generated as false. Fix this by reporting true whenever the disconnect is triggered from upper layers (cfg80211) or from within the driver itself (reset, deinit). Change-Id: I367797e0eeb1e71a28674415121a054daee04cbc Signed-off-by: Dedy Lansky <qca_dlansky@qca.qualcomm.com> Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com> Git-commit: 3b56c15fa3315942b4cb02e57ff842f2f9b14ef7 Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git Signed-off-by: Maya Erez <merez@codeaurora.org>
* | wil6210: store bss object and use cfg80211_connect_bss()Dedy Lansky2017-04-09
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | In a fast disconnect/connect sequence, cfg80211_connect_result() can fail to find the bss object which the driver is connecting to. Detailed sequence of events: * Driver is connected in STA mode * Disconnect request arrives from user space. Driver disconnects and calls cfg80211_disconnected() which adds new event to the cfg80211_wq worker thread * Connect request arrives from user space. cfg80211_connect() stores ssid/ssid_len and calls rdev_connect() * __cfg80211_disconnected() runs in worker thread and zero wdev->ssid_len * Connect succeeds. Driver calls cfg80211_connect_result() which fails to find the bss because wdev->ssid_len is zero To overcome this, upon connect request, store the bss object in the driver and upon connect completion pass it to kernel using cfg80211_connect_bss(). Change-Id: I48b7f638e3c69bf2c223ecf65d080fb603fc26f8 Signed-off-by: Dedy Lansky <qca_dlansky@qca.qualcomm.com> Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com> Git-commit: bcdd49b074d0ea48f54bc6d24a66efab8688b43a Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git Signed-off-by: Maya Erez <merez@codeaurora.org>
* wil6210: add sysfs for thermal throttling configurationDedy Lansky2017-03-21
| | | | | | | | | | | | | | | | | New sysfs entry "thermal_throttling" can be used to configure boundaries of each thermal zone. There are two sets of configurations, one for baseband and one for rf. Each config contains 3 thermal zones: high, max, critical. Each zone has high and low temperature set points (in Celsius). The format for writing is a series of 12 unsigned bytes: <bb_zone1_high> <bb_zone1_low> <bb_zone2_high> <bb_zone2_low> \ <bb_zone3_high> <bb_zone3_low> <rf_zone1_high> <rf_zone1_low> \ <rf_zone2_high> <rf_zone2_low> <rf_zone3_high> <rf_zone3_low> To disable thermal throttling for baseband or for rf, use 0 for all its six set points. Change-Id: I6990cc0e8375905e4d95e2533d2188be785d9f4a Signed-off-by: Dedy Lansky <dlansky@codeaurora.org>
* wil6210: convert symbolic permissions to octal permissionsMaya Erez2017-02-17
| | | | | | | | | | | | | Symbolic permissions are no longer recommended. This patch changes the symbolic permissions in wil6210 driver to octal permissions. Change-Id: I4d762724938a6c615698ea92bd668f0b4ee6963c Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com> Git-commit: 78484c44e4b305b23cbfcfb9257ed96c8753e86d Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git Signed-off-by: Maya Erez <merez@codeaurora.org>
* wil6210: option to override A-BFT length in start AP/PCPLior David2017-02-17
| | | | | | | | | | | | | | | Add an option to specify and override the A-BFT length when starting an AP/PCP. See IEEE P802.11-2016, 10.38.5. The abft_len must be set before starting AP/PCP. It is only needed for diagnostics and certification. Change-Id: Idb7a72b1a3c87c0ca085ca55a9e2507d14eecbdb Signed-off-by: Lior David <qca_liord@qca.qualcomm.com> Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com> Git-commit: c3bfea05a6fdecee03c7cf08f5bfee6aa0645cee Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git Signed-off-by: Maya Erez <merez@codeaurora.org>
* wil6210: report association ID (AID) per station in debugfsLior David2017-02-17
| | | | | | | | | | | | | | | Add reporting of the association ID (AID) for each station as part of the stations file in the debugfs. Valid AID values are 1-254. 0 is reported if the AID is unknown or not reported by firmware. Change-Id: Ifa79ccfa91d60eb0aeada0c849f8694d27c3b333 Signed-off-by: Lior David <qca_liord@qca.qualcomm.com> Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com> Git-commit: 9d865ee232eccf51950b16f223f4130f7dc06e0f Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git Signed-off-by: Maya Erez <merez@codeaurora.org>
* wil6210: remove __func__ from debug printoutsLazar Alexei2017-02-17
| | | | | | | | | | | | | | __func__ is automatically added to printouts by dynamic debug mechanism and by wil_info/wil_err macros. Remove __func__ from debug printouts to avoid duplication. Change-Id: I3c8f8088bbff17954eb774b6dcd64b6dfd2de932 Signed-off-by: Lazar Alexei <qca_ailizaro@qca.qualcomm.com> Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com> Git-commit: af3db60a30331d3a37b534570bc52dd64a7c0e5d Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git Signed-off-by: Maya Erez <merez@codeaurora.org>
* Merge "wil6210: support loading dedicated image for sparrow-plus devices"Linux Build Service Account2017-02-15
|\
| * wil6210: add disable_ap_sme module parameterDedy Lansky2017-02-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | By default, AP SME is handled by driver/FW. In case disable_ap_sme is true, driver doesn't turn-on WIPHY_FLAG_HAVE_AP_SME and the responsibility for AP SME is passed to user space. With AP SME disabled, driver reports assoc request frame to user space which is then responsible for sending assoc response frame and for sending NL80211_CMD_NEW_STATION. Driver also reports disassoc frame to user space which should then send NL80211_CMD_DEL_STATION. NL80211_CMD_SET_STATION with NL80211_STA_FLAG_AUTHORIZED is used by user space to allow/disallow data transmit. Change-Id: I3484efd474d6def408f61b74c1553ead78bf8c83 Signed-off-by: Dedy Lansky <qca_dlansky@qca.qualcomm.com> Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com> Git-commit: 849a564b7e28db7afed18d4b921303b7bd883112 Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git Signed-off-by: Maya Erez <merez@codeaurora.org>
* | wil6210: protect list of pending wmi events during flushHamad Kadmany2017-02-06
|/ | | | | | | | | | | When flush is done, pending events list is manipulated without taking the proper spinlock, which could lead to memory corruption if list is manipulated by wmi worker or by interrupt routine. Change-Id: Iccbc65d94f837402c12d9794cfdde21339599a0b CRs-Fixed: 2002638 Signed-off-by: Hamad Kadmany <hkadmany@codeaurora.org>
* wil6210: bus_request platform operation refinementLior David2017-01-24
| | | | | | | | | | | | | | | | The driver uses the bus_request platform operation to request resources from the platform for a specific bandwidth. Currently the driver requests resources for the maximum theoretical bandwidth, when interface is brought up. Refine this process a bit: now the driver will request a small amount of resources when interface is up, and will only issue the maximum request when connected. This mechanism will be improved further in the future to make more refined requests based on actual bandwidth. Change-Id: Iada383f8183338190bfb082c1128d2ea38053ebc CRs-Fixed: 1114406 Signed-off-by: Lior David <liord@codeaurora.org>
* Merge "wil6210: align to latest auto generated wmi.h"Linux Build Service Account2016-12-30
|\
| * wil6210: add debugfs blobs for UCODE code and dataLior David2016-12-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added new areas to fw_mappings area for UCODE code and data areas. The new areas are only exposed through debugfs blobs, and mainly needed to access UCODE logs. The change does not affect crash dumps because the newly added areas overlap with the "upper" area which is already dumped. Change-Id: Ica26263badf008a512b3e7f19b76b1461fbc8164 Signed-off-by: Lior David <qca_liord@qca.qualcomm.com> Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com> Git-commit: 615788200557d8a555bf7f02a365aee627400912 Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git Signed-off-by: Maya Erez <merez@codeaurora.org>
| * wil6210: delay remain on channel when scan is activeLior David2016-12-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently it was possible to call remain_on_channel(ROC) while scan was active and this caused a crash in the FW. In order to fix this problem and make the behavior consistent with other drivers, queue the ROC in case a scan is active and try it again when scan is done. As part of the fix, clean up some locking issues and return error if scan is called while ROC is active. Change-Id: Ic074ec19142c55e80eb34c26168357b4398ba1ce Signed-off-by: Lior David <qca_liord@qca.qualcomm.com> Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com> Git-commit: bb6743f7c2ffc467002dfe24bea5dedc96c7da04 Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git Signed-off-by: Maya Erez <merez@codeaurora.org>
| * wil6210: support NL80211_ATTR_WIPHY_RETRY_SHORTLior David2016-12-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add support for setting retry limit for short frames, using NL80211_CMD_SET_WIPHY with the attribute NL80211_ATTR_WIPHY_RETRY_SHORT. Update wiphy->retry_short from the FW default when interface is brought up. Change-Id: I09868f4727e7ce84a546e1b87a3318163ee0e5a2 Signed-off-by: Lior David <qca_liord@qca.qualcomm.com> Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com> Git-commit: 3fea18d079e2f1f50bc2a37db826c9e6e8a4003e Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git Signed-off-by: Maya Erez <merez@codeaurora.org>
| * wil6210: add support for abort scanMaya Erez2016-12-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Implement cfg80211 abort_scan op to allow the upper layer to abort an ongoing scan request. In addition, notify wil6210 device on scan abort request instead of just ignoring the scan response. Change-Id: Iddd8c0658ded28b07c618ca09d59150238b190a0 Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com> Git-commit: 035859a5117bc609132c3586b6c6bf4aba72425c Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git Signed-off-by: Maya Erez <merez@codeaurora.org>
| * wil6210: add support for power save enable / disableMaya Erez2016-12-08
| | | | | | | | | | | | | | | | | | | | | | | | New power management wmi commands provide the ability to change the device power save profile (enable / disable power save). Change-Id: I028bdf4fe898d41e80925ae62151b13abfe48514 Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com> Git-commit: 2c207eb8e6ab3f46d6c6a0daab16dc756562802b Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git Signed-off-by: Maya Erez <merez@codeaurora.org>
| * wil6210: fix net queue stop/wakeDedy Lansky2016-12-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Driver calls to netif_tx_stop_all_queues/netif_tx_wake_all_queues are inconsistent. In several cases, driver can get to a situation where net queues are stopped forever and data cannot be sent. The fix is to stop net queues if there is at least one vring which is "full" and to wake net queues if all vrings are not "full". Change-Id: Ibf207de2cbf87b2be48c66ac1302d87b498a3a5e Signed-off-by: Dedy Lansky <qca_dlansky@qca.qualcomm.com> Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com> Git-commit: f9e3033ff7eb9a0018856f5295312f78828a34f2 Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git Signed-off-by: Maya Erez <merez@codeaurora.org>
* | wil6210: missing reinit_completion in wmi_callHamad Kadmany2016-12-26
|/ | | | | | | | | | | | | | | | | The code in wmi_call uses the wil->wmi_call completion structure to wait for a reply. In some scenarios, complete was called twice on the completion structure. This happened mainly with a disconnect event which can arrive both unsolicited and as a reply to a disconnect request. In this case the completion structure was left marked as "done" and the next wmi_call returned immediately with a corrupted reply buffer. This caused unexpected results including crashes. Fix this by adding the missing call to reinit_completion. CRs-Fixed: 1105246 Change-Id: I4de26881620dde4230d0a907bd0fd39bebe2bb3d Signed-off-by: Hamad Kadmany <hkadmany@codeaurora.org>
* wil6210: initial support for FTM and AOALior David2016-10-07
| | | | | | | | | | | | | | | | | | | | Added initial support for fine timing measurement(FTM) and angle of arrival (AOA). These features allow a station to get an accurate indoor location by measuring distance (FTM) and azimuth/elevation (AOA) to one or more stations/APs with a known location. The following APIs are supported: 1. Get FTM/AOA capabilities, currently hard-coded for a single-shot measurement to an associated AP 2. Start FTM session 3. Receive FTM results 4. Start standalone AOA measurement 5. Receive AOA results Change-Id: I54ebc1bdff6ed7d91644165b16eb0a4240069321 CRs-Fixed: 1057307 Signed-off-by: Lior David <liord@codeaurora.org>
* wil6210: extract firmware version from file headerLior David2016-09-30
| | | | | | | | | | | | | | | | | | Currently the FW version is taken from the sw_version field of the FW ready event. This version is based on internal version control revision and it is difficult to map to actual FW version. Fix this by using the actual FW version stored in the FW file header record. Change-Id: I37ac0cf1845c96e6d9e0f8fffd6481e8c32efa50 Signed-off-by: Lior David <qca_liord@qca.qualcomm.com> Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com> Git-commit: 13cd9f758a555d1ab547b0dbed3f9d1e529230c3 Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git CRs-Fixed: 1063261 Signed-off-by: Maya Erez <merez@codeaurora.org>
* wil6210: fix protection of wil->scan_requestMaya Erez2016-09-18
| | | | | | | | | | | | | | | | | | | | Currently the places that check wil->scan_request and call cfg80211_scan_done are not consistently protected, so there is a risk that cfg80211_scan_done will be called with NULL scan_request, causing a kernel crash. Fix this by using p2p_wdev_mutex in few other places that access scan_request. This makes sense since scan_request may point to p2p_wdev, and it is not worth the extra complexity of adding a new mutex. Signed-off-by: Lior David <qca_liord@qca.qualcomm.com> Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com> Git-commit 5ffae43208ec160e584117fabee2cddc5ad0e39a Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git CRs-Fixed: 1063261 Change-Id: Ibc1e6dc2994268a60384b7d9bd459abc3791a0c4 Signed-off-by: Maya Erez <merez@codeaurora.org>
* wil6210: add support for device led configurationMaya Erez2016-06-07
| | | | | | | | | | | | | | | Add the ability to configure the device led to be used for notifying the AP activity (60G device supports leds 0-2). The host can also configure the blinking frequency of the led in three states. Change-Id: I3b7770b0cbaec634ca566a82ccc648b6835d75a0 Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com> git-commit: 10d599ad84a1b98450c8867ce548ea4bf0f6df1a Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git CRs-Fixed: 1015627 Signed-off-by: Maya Erez <merez@codeaurora.org>
* wil6210: prevent deep sleep of 60G device in critical pathsMaya Erez2016-06-07
| | | | | | | | | | | | | | | | | | | | | | In idle times 60G device can enter deep sleep and turn off its XTAL clock. Host access triggers the device power-up flow which will hold the AHB during XTAL stabilization until device switches from slow-clock to XTAL clock. This behavior can stall the PCIe bus for some arbitrary period of time. In order to prevent this stall, host can vote for High Latency Access Policy (HALP) before reading from PCIe bus. This vote will wakeup the device from deep sleep and prevent deep sleep until unvote is done. Change-Id: Ic6bbe8b2aee53d019013159cd21597c2fa0f298f Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com> git-commit: 349214c1e7d718684e19dc3559dffe4e62f55296 Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git CRs-Fixed: 1015627 Signed-off-by: Maya Erez <merez@codeaurora.org>
* wil6210: pass is_go flag to firmwareLior David2016-05-27
| | | | | | | | | | | | | | | | When starting a PCP, pass the is_go flag to firmware in wmi_pcp_start. This flag indicates whether we started a PCP which is also a GO(P2P group owner) or just a regular PCP. Change-Id: I619abba9ef6e6fda3ea5fecd5ee87652b8ef37a5 Signed-off-by: Lior David <qca_liord@qca.qualcomm.com> Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com> Git-commit: b4944f2c081ea0e2fa7bc8bb510e1e6e5667f30b Git-repo: https://github.com/kvalo/ath.git CRs-Fixed: 982931 Signed-off-by: Maya Erez <merez@codeaurora.org>
* wil6210: P2P_DEVICE virtual interface supportLior David2016-05-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | Added support for the P2P_DEVICE virtual interface. This interface is intended for P2P management operations such as discovery and GO negotiation. Normally it is implemented by drivers to allow a separate interface for P2P management with its own MAC address, but for 11ad drivers it is needed to support P2P search, since it cannot otherwise be separated from normal scan. Since we only support a single interface/MAC address, we can't easily separate between primary and P2P_DEVICE interfaces. For example when a management packet arrives we can't tell for which interface it is intended. To work around this, we store a pointer to the interface where the last "radio operation" was triggered such as scan or remain on channel, and we forward management packets and scan results to this interface. Change-Id: Ief04b007c0507f9240d8f0b02b98fe7712213a0e Signed-off-by: Lior David <qca_liord@qca.qualcomm.com> Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com> Git-commit: 4332cac17b5c0cb80d8b99fda33a0faad3238b0e Git-repo: https://github.com/kvalo/ath.git CRs-Fixed: 982931 [merez@codeaurora.org: conflict in wil_cfg80211_add_iface definition] Signed-off-by: Maya Erez <merez@codeaurora.org>
* wil6210: p2p initial supportDedy Lansky2016-05-27
| | | | | | | | | | | | | | | supporting p2p_find, p2p_listen and p2p_connect Use updated cfg80211_get_bss API (additional argument) Change-Id: I847ccd10da574bdc83c7eec8c8315c4e0d207d8b Signed-off-by: Dedy Lansky <qca_dlansky@qca.qualcomm.com> Signed-off-by: Lior David <qca_liord@qca.qualcomm.com> Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com> Git-commit: e6d68341e7286386451adf14cebb635a52b0effe Git-repo: https://github.com/kvalo/ath.git CRs-Fixed: 982931 Signed-off-by: Maya Erez <merez@codeaurora.org>
* wil6210: switch to generated wmi.hLior David2016-04-05
| | | | | | | | | | | | | | | | | | | | | Switch to auto-generated version of wmi.h which is maintained by FW team. This will allow better sync between teams in the future and avoid bugs because of unexpected API changes. The wmi.h will have many differences but most are cosmetic. It also includes these real differences: 1. is_go parameter added to BCON_CTRL and START_PCP commands. 2. max_rx_pl_per_desc added to CFG_RX_CHAIN command. 3. various small API updates that are not currently used by driver. Change-Id: I20921a97b02dce0507f58c4951ce539a2aae5597 Signed-off-by: Lior David <qca_liord@qca.qualcomm.com> Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com> Git-commit: b874ddecae0a087aee024ef808c63060434a2d50 Git-repo: https://github.com/kvalo/ath.git CRs-Fixed: 987415 Signed-off-by: Maya Erez <merez@codeaurora.org>
* wil6210: AP: prevent connecting to already connected stationMaya Erez2016-04-05
| | | | | | | | | | | | | | | | | | | wmi_evt_connect doesn't check if the connect event is received for an already connected station. This can lead to memory leak as a new vring is allocated without freeing the previously allocated vring and to unexpected behavior of nl80211 layer due to unexpected notification of a new station. Add a check in wmi_evt_connect in AP mode to verify that the requested CID is not associated to an already connected station. Change-Id: I0e438d437154b1b47c572218072a736da5013c80 Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com> Git-commit: 3d287fb398c03189a1394778162f6404e4d44ad2 Git-repo: https://github.com/kvalo/ath.git CRs-Fixed: 982882 Signed-off-by: Maya Erez <merez@codeaurora.org>
* wil6210: protect synchronous wmi commands handlingMaya Erez2016-04-05
| | | | | | | | | | | | | | | | | | | | | | | | In case there are multiple WMI commands with the same reply_id, the following scenario can occur: - Driver sends the first command to the device - The reply didn’t get on time and there is timeout - Reply_id, reply_buf and reply_size are set to 0 - Driver sends second wmi command with the same reply_id as the first - Driver sets wil->reply_id - Reply for the first wmi command arrives and handled by wmi_recv_cmd - As its ID fits the reply_id but the reply_buf is not set yet it is handled as a reply with event handler, and WARN_ON is printed This patch guarantee atomic setting of all the reply variables and prevents the above scenario. Change-Id: I7eac78d7beb90436d24468547aeb789f7c8ec878 Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com> Git-commit: fe5c271e2878fb080f1b32fec5b4e3f7a6070152 Git-repo: https://github.com/kvalo/ath.git CRs-Fixed: 982882 Signed-off-by: Maya Erez <merez@codeaurora.org>
* wil6210: handle multiple connect/disconnect eventsMaya Erez2016-03-23
| | | | | | | | | | | | | | | | | | | | | | In the current solution wil6210 configures the vring in a worker and holds only one pending CID. This implementation may lead to race conditions between connect and disconnect events of multiple stations or fast connect/disconnect events of the same station. In order to allow the removal of the connect worker and handling of WMI_VRING_CFG_DONE_EVENTID in the connect event, the WMI replies that provide the reply in a given buffer needs to be handled immediately in the WMI event interrupt thread. To prevent deadlocks, WMI replies that requires additional handling are still handled via the events list. Change-Id: I81f08011ef98be845d98fbe15d98bbf050032f88 Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com> Git-commit: 0916d9f2b6bea53a830ae5061b63a515c04da62e Git-repo: https://github.com/kvalo/ath.git CRs-Fixed: 971604 Signed-off-by: Maya Erez <merez@codeaurora.org>
* wil6210: prevent external wmi commands during suspend flowMaya Erez2016-03-23
| | | | | | | | | | | | In __wmi_send we check if fw is ready at the beginning of the function. While we wait for the completion of the previous command, system suspend can be invoked and reset the HW, causing __wmi_send to read from HW registers while it is not ready. Taking the wmi_mutex in the reset flow when setting the FW ready bit to zero will prevent the above race condition. Change-Id: I5d2e823a27beaeaaf5b8b1e25457c158efd3ea46 Signed-off-by: Maya Erez <merez@codeaurora.org>
* wil6210: fix device ready detectionVladimir Kondratiev2015-10-29
| | | | | | | | | | | | | | Adjust driver behavior during FW boot. Proper sequence of events after reset and FW download, is as following: - FW prepares mailbox structure and reports IRQ "FW_READY" - driver caches mailbox registers, marks mailbox readiness - FW sends WMI_FW_READY event, ignore it - FW sends WMI_READY event with some data - driver stores relevant data marks FW is operational Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* wil6210: ignore selected WMI eventsVladimir Kondratiev2015-10-29
| | | | | | | | | | Some events are ignored for purpose; such events should not be treated as "unhandled events". Replace info message saying "unhandled" with debug one saying "ignore", to reduce dmesg pollution Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* wil6210: capture all frames in sniffer modeVladimir Kondratiev2015-10-09
| | | | | | | | | | | | For the sniffer (monitor) mode, capture either control only or both control and data PHY. It used to be control only or data only PHY due to firmware issues with configuration for PHY auto-detection; but now it is resolved. Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* wil6210: match wait_for_completion_timeout return typeNicholas Mc Guire2015-08-17
| | | | | | | | | | | | | | | | | | | Return type of wait_for_completion_timeout is unsigned long not int. As remain is exclusively used for wait_for_completion_timeout here its type is simply changed to unsigned long. API conformance testing for completions with coccinelle spatches are being used to locate API usage inconsistencies: ./drivers/net/wireless/ath/wil6210/wmi.c:827 int return assigned to unsigned long Patch was compile tested with x86_64_defconfig + CONFIG_ATH_CARDS=m, CONFIG_WIL6210=m Patch is against 4.1-rc3 (localversion-next is -next-20150514) Signed-off-by: Nicholas Mc Guire <hofrat@osadl.org> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>