aboutsummaryrefslogtreecommitdiff
path: root/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h
AgeCommit message (Collapse)AuthorFilesLines
2018-04-20iwlwifi: mvm: clean up scan capability checksJohannes Berg1-0/+10
Introduce and use iwl_mvm_cdb_scan_api(), which checks the family. Most of this will go away once the 22000 firmware supports adaptive dwell, after which the V6 scan API won't be used, but the V3 scan *config* API will still need to be distinguished. In any case, this gets rid of the completely bogus has_new_tx_api() checks. Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2018-04-20iwlwifi: mvm: detect low latency and traffic load per bandSara Sharon1-0/+8
Detect low latency and traffic load per band. Add support for deciding on scan type and timings per band. Signed-off-by: Sara Sharon <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2018-04-20iwlwifi: mvm: detect U-APSD breaking aggregationJohannes Berg1-0/+9
Try to detect that the AP is not using aggregation even when there's enough traffic to make it worthwhile; if this is the case and U-APSD is enabled then assume the AP is broken (like so many) and doesn't enable aggregation when U-APSD is used. In this case, disconnect from the AP and blacklist U-APSD for a potential new connection to it. Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2018-04-20iwlwifi: mvm: add traffic condition monitoring (TCM)Luca Coelho1-0/+59
Traffic condition monitor gathers data about the traffic load and other conditions and can be used to make decisions regarding latency, throughput etc. This patch introduces the code and data structures to collect this data for future use. Signed-off-by: Luca Coelho <[email protected]>
2018-03-28iwlwifi: mvm: save low latency causes in an enumSara Sharon1-8/+28
Currently we have a boolean variable for each cause. This costs space, and requires to check each separately when determining low latency. Since we have another cause incoming, convert it to an enum. While at it, move the retrieval of the prev value and the assignment of the new value to be inside iwl_mvm_update_low_latency and save the need for each caller to do it separately. Signed-off-by: Sara Sharon <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2018-03-28iwlwifi: fw api: support the new scan request FW API versionAyala Beker1-0/+6
Remove fragmented_dwell_time and add num_of_fragments to support the new API version. Signed-off-by: Ayala Beker <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2018-03-28iwlwifi: mvm: add support for oceZamir, Roee1-0/+6
Add support for Optimized Connectivity Experience (OCE). Get capabilities from the fw, expose them with nl80211, and enable them in UMAC scan if the relevant nl80211 flags are set by the userspace. Signed-off-by: Roee Zamir <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2018-03-19iwlwifi: mvm: Increase session protection time after CSAndrei Otcheretianski1-0/+3
After switching to a new channel, driver schedules session protection time event in order to hear the beacon on the new channel. The duration of the protection is two beacon intervals. However, since we start to switch slightly before beacon with count 1, in case we don't hear (or AP doesn't transmit) the very first beacon on the new channel the protection ends without hearing any beacon at all. At this stage the switch is not complete, the queues are closed and the interface doesn't have quota yet or TBTT events. As the result, we are stuck forever waiting for iwl_mvm_post_channel_switch() to be called. Fix this by increasing the protection time to be 3 beacon intervals and in addition drop the connection if the time event ends before we got any beacon. Signed-off-by: Andrei Otcheretianski <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2018-02-16iwlwifi: align timestamp cancel with timestamp startShaul Triebitz1-0/+2
Canceling the periodic timestamp work should be done in the opposite flow to where it was started. This also prevents from sending the MARKER command during the mac_stop flow - causing a false queue hang (FW is no longer there to send a response). Fixes: 93b167c13a3a ("iwlwifi: runtime: sync FW and host clocks for logs") Signed-off-by: Shaul Triebitz <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2017-12-20iwlwifi: define and use if iwl_mvm_has_tlc_offloadEmmanuel Grumbach1-0/+6
This aligns the code with the existing pattern to check if the firmware has a certain capability. Signed-off-by: Emmanuel Grumbach <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2017-12-19Merge tag 'wireless-drivers-next-for-davem-2017-12-18' of ↵David S. Miller1-9/+9
git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next The drivers/net/wireless/intel/iwlwifi/pcie/drv.c conflict was resolved using a diff provided by Kalle in his pull request. Kalle Valo says: ==================== wireless-drivers-next patches for 4.16 A bigger pull request this time, the most visible change being the new driver mt76. But there's also Kconfig refactoring in ath9k and ath10k, work beginning in iwlwifi to have rate scaling in firmware/hardware, wcn3990 support getting closer in ath10k and lots of smaller changes. mt76 * a new driver for MT76x2e, a 2x2 PCIe 802.11ac chipset by MediaTek ath10k * enable multiqueue support for all hw using mac80211 wake_tx_queue op * new Kconfig option ATH10K_SPECTRAL to save RAM * show tx stats on QCA9880 * new qcom,ath10k-calibration-variant DT entry * WMI layer support for wcn3990 ath9k * new Kconfig option ATH9K_COMMON_SPECTRAL to save RAM wcn36xx * hardware scan offload support wil6210 * run-time PM support when interface is down iwlwifi * initial work for rate-scaling offload * Support for new FW API version 36 * Rename the temporary hw name A000 to 22000 ssb * make SSB a menuconfig to ease disabling it all mwl8k * enable non-DFS 5G channels 149-165 ==================== Signed-off-by: David S. Miller <[email protected]>
2017-12-05iwlwifi: mvm: rs: add size checks when printing to a bufferGregory Greenman1-1/+1
Replace sprintf by scnprintf throughout rs code. Signed-off-by: Gregory Greenman <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2017-12-05iwlwifi: mvm: rs: new rate scale API - add debugfs hooksGregory Greenman1-0/+6
This patch adds basic debugfs hooks for rate scaling. Signed-off-by: Gregory Greenman <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2017-12-05iwlwifi: mvm: rs: introduce new API for rate scalingGregory Greenman1-1/+1
New devices will have rate scaling algorithm running in the firmware. With this feature, the driver's responsiblity is to provide an initial configuration and to handle notifications regarding recent rates and some other parameters. Debugfs hooks will be still available for reading the current rate/statistics and setting a fixed rate. The old API is supported so far, though both APIs cannot be used simultaneously. This is the first patch in the series. It adds a new TLV specifying FW support for the new API and updates lq_sta to support two types of rate scaling. Signed-off-by: Gregory Greenman <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2017-12-05iwlwifi: mvm: flush queue before deleting ROCJohannes Berg1-0/+2
Before deleting a time event (remain-on-channel instance), flush the queue so that frames cannot get stuck on it. We already flush the AUX STA queues, but a separate station is used for the P2P Device queue. Cc: [email protected] Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2017-12-02Merge tag 'iwlwifi-next-for-kalle-2017-11-29' of ↵Kalle Valo1-7/+1
git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-next First batch of iwlwifi updates for v4.16 * Rename the temporary name A000 to 22000; * Change in the way we print the firmware version; * Remove some unused code; * Other small improvements; kvalo: There were conflicts, I fixed them with taking into account commit c2c48ddfc8b0 ("iwlwifi: fix firmware names for 9000 and A000 series hw"): CONFLICT (content): Merge conflict in drivers/net/wireless/intel/iwlwifi/iwl-config.h CONFLICT (modify/delete): drivers/net/wireless/intel/iwlwifi/cfg/a000.c deleted in ca495785063c428641cc6df8888afd2587ca6677 and modified in HEAD. Version HEAD of drivers/net/wireless/intel/iwlwifi/cfg/a000.c left in tree.
2017-11-28iwlwifi: rename the temporary name of A000 to the official 22000Luca Coelho1-1/+1
The family name A000 was just a place-holder when we didn't know what the official name would be yet. Now we know that the family name is 22000, so rename all occurrences accordingly. Signed-off-by: Luca Coelho <[email protected]>
2017-11-25iwlwifi: mvm: revert support new Coex firmware APIEmmanuel Grumbach1-6/+0
This new API will not be used, remove the code that supports it. Signed-off-by: Emmanuel Grumbach <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2017-11-25iwlwifi: mvm: fix packet injectionEmmanuel Grumbach1-0/+1
We need to have a station and a queue for the monitor interface to be able to inject traffic. We used to have this traffic routed to the auxiliary queue, but this queue isn't scheduled for the station we had linked to the monitor vif. Allocate a new queue, link it to the monitor vif's station and make that queue use the BE fifo. This fixes https://bugzilla.kernel.org/show_bug.cgi?id=196715 Cc: [email protected] Signed-off-by: Emmanuel Grumbach <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2017-11-15iwlwifi: mvm: support version 7 of the SCAN_REQ_UMAC FW commandLuca Coelho1-0/+6
Newer firmware versions (such as iwlwifi-8000C-34.ucode) have introduced an API change in the SCAN_REQ_UMAC command that is not backwards compatible. The driver needs to detect and use the new API format when the firmware reports it, otherwise the scan command will not work properly, causing a command timeout. Fix this by adding a TLV that tells the driver that the new API is in use and use the correct structures for it. This fixes https://bugzilla.kernel.org/show_bug.cgi?id=197591 Fixes: d7a5b3e9e42e ("iwlwifi: mvm: bump API to 34 for 8000 and up") Signed-off-by: Luca Coelho <[email protected]>
2017-11-03iwlwifi: mvm: Convert timers to use timer_setup()Kees Cook1-1/+2
In preparation for unconditionally passing the struct timer_list pointer to all timer callbacks, switch to using the new timer_setup() and from_timer() to pass the timer pointer explicitly. The RCU lifetime on baid_data is unclear, so this adds a direct copy of the rcu_ptr passed to the original callback. It may be possible to improve this to just use baid_data->mvm->baid_map[baid_data->baid] instead. Cc: Johannes Berg <[email protected]> Cc: Emmanuel Grumbach <[email protected]> Cc: Luca Coelho <[email protected]> Cc: Intel Linux Wireless <[email protected]> Cc: Kalle Valo <[email protected]> Cc: Sara Sharon <[email protected]> Cc: [email protected] Cc: [email protected] Signed-off-by: Kees Cook <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2017-11-03iwlwifi: remove dead code for internal devices onlyEmmanuel Grumbach1-1/+0
We had a bunch of code that was relevant for internal devices only. Those devices are now being depreceated. Kill all the now unneeded code. Signed-off-by: Emmanuel Grumbach <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2017-10-18iwlwifi: mvm: remove duplicated fields in mvm reorder bufferSara Sharon1-4/+0
The reason station id and tid fields are both in baid data and in the reorder buffer per queue is that we couldn't access the baid_data in the reorder timer functions. Now that we do some pointer math and access it anyway, those fields can be removed. This save some space and some code. Signed-off-by: Sara Sharon <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2017-10-18iwlwifi: mvm: allocate reorder buffer according to needJohannes Berg1-5/+34
Now that we may have up to 256 entries per reorder buffer, and possibly up to 16 queues, we can use a LOT of memory for this (64k for each station). Allocate it according to what we need, which is of course much less for HT stations (only 16k at a max of 16 queues). However, this comes at the expense of complicating the code a bit to calculate the right entry structure to use for each frame. Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2017-10-16Merge git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers.gitKalle Valo1-1/+4
Mark Brown reported that there are conflicts in iwlwifi between the two trees so fix those now.
2017-10-06iwlwifi: acpi: remove a couple of unnecessary ifdefsLuca Coelho1-2/+0
Some of the #ifdef CONFIG_ACPI are not needed anymore, so they can be removed. Signed-off-by: Luca Coelho <[email protected]>
2017-10-06iwlwifi: acpi: move ACPI-related definitions to acpi.hLuca Coelho1-8/+5
The ACPI table size definitions were spread around the different files that used them. Move them all to a common place. Signed-off-by: Luca Coelho <[email protected]>
2017-10-06iwlwifi: mvm: don't send identical PHY_CTXT_CMDEmmanuel Grumbach1-0/+2
When we have an AP which supports HT and a single HT station is connected, we change the min_width from NL80211_CHAN_WIDTH_20_NOHT to NL80211_CHAN_WIDTH_20. This of course has no implication on the channel width but still sends a command to the firmware. Remember the last width that was sent and refrain from sending unnecessary commands to the firmware. Sending a PHY_CTXT_CMD to the firmware has a cost since it recalculates the presence on the medium and because of that it closes the transmit queues for a short while. Signed-off-by: Emmanuel Grumbach <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2017-10-06iwlwifi: mvm: support firmware debug trigger on frame reorder timeoutEmmanuel Grumbach1-0/+6
The trigger that collects data when a frame is released because of the timer of the reordering buffer was not implemented for 9000 devices. Fix this. Signed-off-by: Emmanuel Grumbach <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2017-10-06iwlwifi: mvm: remove support for Link Quality MeasurementsEmmanuel Grumbach1-12/+0
This was never used by any product. Remove it. Signed-off-by: Emmanuel Grumbach <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2017-10-06iwlwifi: mvm: Add new quota command APIDavid Spinadel1-0/+27
New quota command adds a field indicating low latency direction per quota. A TLV API bit was added to indicate the new API. Signed-off-by: David Spinadel <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2017-10-06iwlwifi: nvm: set the correct offsets to 3168 seriesChaya Rachel Ivgi1-1/+1
The driver currently handles two NVM formats, one for 7000 family and below, and one for 8000 family and above. The 3168 series uses something in between, so currently the driver uses incorrect offsets for it. Fix the incorrect offsets. Fixes: c4836b056d83 ("iwlwifi: Add PCI IDs for the new 3168 series") Signed-off-by: Chaya Rachel Ivgi <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2017-10-06iwlwifi: mvm: do not print security error in monitor modeShaul Triebitz1-0/+3
In monitor mode we are not expected to decrypt encrypted packets (not having the keys). Hence we are expected to get an unknown rx security status. Keeping the print in monitor mode causes a print for each captured packet flooding the dmesg. Signed-off-by: Shaul Triebitz <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2017-08-18iwlwifi: mvm: remove useless argument in iwl_nvm_init()Luca Coelho1-1/+1
We always call iwl_nvm_init() with read_nvm_from_nic == true, so this argument is useless. Remove it. Signed-off-by: Luca Coelho <[email protected]>
2017-08-18iwlwifi: mvm: group all dummy SAR function declarations togetherLuca Coelho1-14/+0
We have some of the SAR dummy functions when ACPI is not set declared in mvm.h and some declared in fw.c. Group them all together in fw.c for consistency and to avoid static/non-static issues. Signed-off-by: Luca Coelho <[email protected]>
2017-08-18iwlwifi: mvm: support new Coex firmware APIEmmanuel Grumbach1-0/+6
The firmware now adds more information about time sharing with the Bluetooth core. Adapt the API structures and add the new fields in the debugfs hooks. Signed-off-by: Emmanuel Grumbach <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2017-08-18iwlwifi: mvm: remove the corunning supportEmmanuel Grumbach1-9/+0
The corunning block was supposed to help in coex scenarios. It required the driver to configure the firmware based on the coupling between the two antennas of the devices. This was never in use and the configuration sent by the driver has always been blank. Remove all that code. Signed-off-by: Emmanuel Grumbach <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2017-08-09iwlwifi: mvm: move a000 device NVM retrieval to a common placeShaul Triebitz1-1/+0
Getting the NVM data in a000 devices should be shared across operation mode. Signed-off-by: Shaul Triebitz <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2017-08-09iwlwifi: mvm: add debugfs to force CT-killChaya Rachel Ivgi1-0/+1
CT-kill is a thermal-based "RF-kill", which disables the NIC completely if the temperature gets too high, in order to avoid damage. Add a debugfs entry to simulate high temperatures, in order to test CT-kill flows in the driver without having to physically heat the device up. Signed-off-by: Chaya Rachel Ivgi <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2017-08-09iwlwifi: mvm: use firmware LED command where applicableJohannes Berg1-0/+4
On devices starting from 8000 series, the host can no longer toggle the LED through the CSR_LED_REG register, but must do it via the firmware instead. Add support for this. Note that this means that the LED cannot be turned on while the firmware is off, so using an arbitrary LED trigger may not work as expected. Fixes: 503ab8c56ca0 ("iwlwifi: Add 8000 HW family support") Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2017-08-07Merge tag 'wireless-drivers-next-for-davem-2017-08-07' of ↵David S. Miller1-98/+23
git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next Kalle Valo says: ==================== wireless-drivers-next patches for 4.14 The first wireless-drivers-next pull request for 4.14. I'm submitting this unusally late in the cycle as my vacation postponed this. But even if this is late there's not still that much new features, mostly cleanup or fixes. Major changes: ath10k * preparation for wcn3990 support iwlwifi * Reorganization of the code into separate directories continues qtnfmac * regulatory support updates * add get_channel, dump_survey and channel_switch cfg80211 handlers ==================== Signed-off-by: David S. Miller <[email protected]>
2017-08-01iwlwifi: mvm: remove non-DQA modeJohannes Berg1-36/+4
All the firmware versions the driver supports enable DQA, and thus the only way to get non-DQA mode is to modify the source. Remove this mode to simplify the code. Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2017-08-01iwlwifi: mvm: fix the FIFO numbers in A000 devicesEmmanuel Grumbach1-0/+8
The FIFO numbering is different in A000 devices. This means that we routed BE packets to BK FIFO. Fix this. Signed-off-by: Emmanuel Grumbach <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2017-08-01iwlwifi: mvm: add and use iwl_mvm_has_unified_ucode()Johannes Berg1-0/+6
This may need to be refined later, but for now using this, even with the TODO, is better than checking "has new TX API". Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2017-08-01iwlwifi: refactor firmware debug codeJohannes Berg1-38/+2
Split out the firmware debug code to be more general, so that it can be used by different subdrivers. Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2017-08-01iwlwifi: track current firmware image in common codeJohannes Berg1-1/+0
Track the current firmware image in the common code instead of in the opmode so that later patches can access it there in a common way. Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2017-08-01iwlwifi: refactor shared mem parsingJohannes Berg1-14/+0
Refactor the shared memory command parsing into common code. Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2017-08-01iwlwifi: refactor out paging codeJohannes Berg1-9/+3
Refactor the paging code from mvm to be used by different opmodes. Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2017-07-21iwlwifi: mvm: defer setting IWL_MVM_STATUS_IN_HW_RESTARTJohannes Berg1-0/+2
A hardware/firmware error may happen at any point in time. In particular, it might happen while mac80211 is in the middle of a flow. We observed the following situation: * mac80211 is in authentication flow, in ieee80211_prep_connection() * iwlwifi firmware crashes, but no error can be reported at this precise point (mostly because the driver method is void, but even if it wasn't we'd just shift to a race condition) * mac80211 continues the flow, trying to add the AP station * iwlwifi has already set its internal restart flag, and so thinks that adding the station is part of the restart and already set up, so it uses the information that's supposed to already be in the struct This can happen with any flow in mac80211 and with any information we try to preserve across hardware restarts. To fix this, only set a new HW_RESTART_REQUESTED flag and translate that to IN_HW_RESTART once mac80211 actually starts the restart by calling our start() method. As a consequence, any mac80211 flow in progress at the time of the restart will properly finish (certainly with errors), before the restart is attempted. This fixes https://bugzilla.kernel.org/show_bug.cgi?id=195299. Reported-by: djagoo <[email protected]> Reported-by: Łukasz Siudut <[email protected]> Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Luca Coelho <[email protected]>
2017-06-29iwlwifi: mvm: update rx statistics cmd apiLiad Kaufman1-1/+10
The API has changed - update the code. Signed-off-by: Liad Kaufman <[email protected]> Signed-off-by: Luca Coelho <[email protected]>