summaryrefslogtreecommitdiff
path: root/drivers/net/wireless/iwlwifi
AgeCommit message (Collapse)AuthorFilesLines
2014-12-02iwlwifi: mvm: update values for Smart FifoEmmanuel Grumbach1-1/+1
Interoperability issues were identified and root caused to the Smart Fifo watermarks. These issues arose with NetGear R7000. Fix this. Cc: <stable@vger.kernel.org> [3.14+] Fixes: 1f3b0ff8ecce ("iwlwifi: mvm: Add Smart FIFO support") Reviewed-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
2014-12-02iwlwifi: dvm: fix flush support for old firmwareEmmanuel Grumbach2-36/+42
Since the commit below, iwldvm sends the FLUSH command to the firmware. All the devices that use iwldvm have a firmware that expects the _v3 version of this command, besides 5150. 5150's latest available firmware still expects a _v2 version of the FLUSH command. This means that since the commit below, we had a mismatch for this specific device only. This mismatch led to the NMI below: Loaded firmware version: 8.24.2.2 Start IWL Error Log Dump: Status: 0x0000004C, count: 5 0x00000004 | NMI_INTERRUPT_WDG 0x000006F4 | uPc 0x000005BA | branchlink1 0x000006F8 | branchlink2 0x000008C2 | interruptlink1 0x00005B02 | interruptlink2 0x00000002 | data1 0x07030000 | data2 0x00000068 | line 0x3E80510C | beacon time 0x728A0EF4 | tsf low 0x0000002A | tsf hi 0x00000000 | time gp1 0x01BDC977 | time gp2 0x00000000 | time gp3 0x00010818 | uCode version 0x00000000 | hw version 0x00484704 | board version 0x00000002 | hcmd 0x2FF23080 | isr0 0x0103E000 | isr1 0x0000001A | isr2 0x1443FCC3 | isr3 0x11800112 | isr4 0x00000068 | isr_pref 0x000000D4 | wait_event 0x00000000 | l2p_control 0x00000007 | l2p_duration 0x00103040 | l2p_mhvalid 0x00000007 | l2p_addr_match 0x00000000 | lmpm_pmg_sel 0x00000000 | timestamp 0x00000200 | flow_handler This was reported here: https://bugzilla.kernel.org/show_bug.cgi?id=88961 Cc: <stable@vger.kernel.org> Fixes: a0855054e59b ("iwlwifi: dvm: drop non VO frames when flushing") Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
2014-12-02iwlwifi: use correct fw file in 8000 b-stepLiad Kaufman1-0/+54
In 8000 B-step the FW file has changed, but by the time we know the HW step, the FW file is already requested. This patch defaults 8000 family to B-step if no HW step is detected in time. When it can it checks what HW step it really is (in 8000 family) and if it isn't B-step, the FW file is released and the A-step file is requested. Signed-off-by: Liad Kaufman <liad.kaufman@intel.com> Reviewed-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
2014-12-02iwlwifi: fix 4165 series nameOren Givon2-2/+3
Fix the 4165 series name that was called 4265 by mistake. Signed-off-by: Oren Givon <oren.givon@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
2014-12-01iwlwifi: pcie: add fh registers to dump dataLiad Kaufman2-0/+33
Adds all FH registers between FH_MEM_UPPER_BOUND and FH_MEM_LOWER_BOUND (which should be readable to the driver) to the dump data when it is collected. Signed-off-by: Liad Kaufman <liad.kaufman@intel.com> Reviewed-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
2014-12-01iwlwifi: mvm: support ucode load for family_8000 B0 onlyEran Harary2-71/+72
The ucode load flow changed for B0 hardware step. Change the code accordingly. Signed-off-by: Eran Harary <eran.harary@intel.com> Signed-off-by: Liad Kaufman <liad.kaufman@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
2014-12-01iwlwifi: mvm: remove a dangling line of documentationDavid Spinadel1-1/+0
Signed-off-by: David Spinadel <david.spinadel@intel.com> Reviewed-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
2014-12-01iwlwifi: pcie: claim ownership on the device after stop_device()Emmanuel Grumbach1-0/+3
Not doing so would allow other possible users of the device to take ownership and prevent normal WiFi operation. This fixes the second part of: https://bugzilla.kernel.org/show_bug.cgi?id=87191 Reviewed-by: Moshe Harel <moshe.harel@intel.com> Reviewed-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
2014-12-01iwlwifi: don't load on 7265D with old NVMEmmanuel Grumbach1-3/+5
7265D are new devices that should always have a new NVM (at least 0x0c11). The firmware has issues with older versions of the NVM which are not and will not be available to the common mortals. Reviewed-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
2014-12-01iwlwifi: mvm: support NVM file with headerIdan Kahlon1-8/+23
Handle NVM file header. When NVM header detected, skip the header and reading only the sections data. Signed-off-by: Idan Kahlon <idanx.kahlon@intel.com> Reviewed-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
2014-12-01iwlwifi: mvm: add channel information to the netdetect notificationsLuciano Coelho2-11/+54
Add the channels on which there was a match for every match reported by the firmware. The firmware reports the channels as indices to the array of channels that was passed in the scheduled scan request, so we need to save the array when entering D3 to make sure it is available when we resume. Signed-off-by: Luciano Coelho <luciano.coelho@intel.com> Reviewed-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
2014-12-01iwlwifi: mvm: add SSID match information for net-detectLuciano Coelho2-5/+68
Add SSID information to the net-detect indication to userspace. Fetch the matched profiles from the firmware in order to find the correct SSIDs in the profiles that matched. Since the net-detect information is stored in cfg80211, and in theory it could change while we are waking up and reading the matched profiles, we need to save it when we enter D3 so it is available during resume. Signed-off-by: Luciano Coelho <luciano.coelho@intel.com> Reviewed-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
2014-12-01iwlwifi: pcie: refactor cmd_in_flight set/clear codeEliad Peller1-36/+66
A following patche will use trans_pcie->cmd_in_flight for reference accounting as well. get ready for it. Signed-off-by: Eliad Peller <eliadx.peller@intel.com> Reviewed-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
2014-12-01iwlwifi: mvm: add missing mvm ref debug printEliad Peller1-0/+1
IWL_MVM_REF_PROTECT_CSA is missing from the ref strings used by debugfs. Signed-off-by: Eliad Peller <eliadx.peller@intel.com> Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Reviewed-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
2014-12-01iwlwifi: mvm: BT Coex - change the MPLUT registers' valueEmmanuel Grumbach1-2/+2
This impacts the partition between BT and Wifi. Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
2014-12-01iwlwifi: mvm: remove IWL_UCODE_TLV_API_CSA_FLOWEmmanuel Grumbach1-2/+1
All the supported firmwares have this TLV flag set. Reviewed-by: Luciano Coelho <luciano.coelho@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
2014-12-01iwlwifi: mvm: remove IWL_UCODE_TLV_API_WOWLAN_CONFIG_TIDEmmanuel Grumbach5-51/+34
All the supported firmwares have this TLV flag set. Reviewed-by: Luciano Coelho <luciano.coelho@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
2014-12-01iwlwifi: mvm: remove IWL_UCODE_TLV_CAPA_EXTENDED_BEACONEmmanuel Grumbach1-14/+5
This TLV flag is set for all the supported firmwares. Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
2014-12-01iwlwifi: deprecate -8.ucode for 3160 / 7260 / 7265Emmanuel Grumbach3-7/+6
This firmware is not supported anymore. Stop loading this firmware - and remove the code that handled older versions. Reviewed-by: Luciano Coelho <luciano.coelho@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
2014-12-01iwlwifi: mvm: check and report if wake up was due to net detectLuciano Coelho4-12/+94
Query the firmware for scan offload matches when waking up in order to report net detect as the reason for the wake up. This requires a new command API to be implemented. Additionally, remove some net detect command entries that are not valid anymore. Signed-off-by: Luciano Coelho <luciano.coelho@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
2014-12-01iwlwifi: move firmware file format definitions to correct headerJohannes Berg3-183/+184
The firmware file-format is described in iwl-fw-file.h, while the internal handling structures and functions are in iwl-fw.h. Fix the separation between the files by moving file format definitions to iwl-fw-file.h. Also add a missing description for a kernel-doc member, and it's not needed to include iwl-fw-file.h again from the code (thanks to Liad Kaufman). Signed-off-by: Johannes Berg <johannes.berg@intel.com> Reviewed-by: Liad Kaufman <liad.kaufman@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
2014-11-25Merge remote-tracking branch 'iwlwifi-fixes/master' into iwlwifi-nextEmmanuel Grumbach2-3/+11
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Conflicts: drivers/net/wireless/iwlwifi/iwl-fw.h
2014-11-24iwlwifi: update the secure mem space and for the CPUsEmmanuel Grumbach1-3/+3
Also update the timeout for the data verification. Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
2014-11-24iwlwifi: sdio: new SDIO card id for 4165 seriesOren Givon2-0/+16
Add a new SDIO card id intended for the new 4165 series. Signed-off-by: Oren Givon <oren.givon@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
2014-11-24iwlwifi: declare d0i3 support for IWL_DEVICE_8000Eliad Peller1-0/+1
Signed-off-by: Eliad Peller <eliadx.peller@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
2014-11-24iwlwifi: mvm: disconnect TDLS peers before channel switchArik Nemtsov1-0/+3
In case of channel switch, we need to teardown the TDLS peers. Signed-off-by: Arik Nemtsov <arikx.nemtsov@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
2014-11-24iwlwifi: mvm: declare support for VHT BF info in radiotapEyal Shapira1-1/+2
The driver knows whether an rx frame was beamformed and marks it in the radiotap VHT flags. However it should also declare that it knows to extract this info otherwise this gets discarded by sniffers like Wireshark. Signed-off-by: Eyal Shapira <eyalx.shapira@intel.com> Reviewed-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
2014-11-24iwlwifi: mvm: add support to MFUART loading notificationChaya Rachel Ivgy4-0/+36
Add support to MFUART loading notification (print notification data with IWL_DEBUG_INFO) Signed-off-by: Chaya Rachel Ivgy <chaya.rachel.ivgi@intel.com> Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
2014-11-24iwlwifi: mvm: call iwl_trans_suspend/resumeEliad Peller1-0/+3
call the appropriate iwl_trans_suspend/resume ops on iwl_mvm_suspend/resume calls. Signed-off-by: Eliad Peller <eliadx.peller@intel.com> Reviewed-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
2014-11-24iwlwifi: trans: add suspend/resume opsEliad Peller1-0/+14
Add suspend/resume trans ops that will be called from mac80211's suspend/resume ops. Signed-off-by: Eliad Peller <eliadx.peller@intel.com> Reviewed-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
2014-11-24iwlwifi: mvm: treat netdetect wake up separatelyLuciano Coelho2-3/+38
When the device wakes up due to netdetect, we need to query different things from the firmware than when it wakes up with a normal WoWLAN. To make this easier, separate the netdetect wake up handling from the rest. For now, we don't send netdetect as a wake up reason, treating it as a non-wireless wake up. Signed-off-by: Luciano Coelho <luciano.coelho@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
2014-11-24iwlwifi: mvm: refactor iwl_mvm_query_wakeup_reasons()Luciano Coelho1-26/+47
Refactor the iwl_mvm_query_wakeup_reasons() function to split the part that gets the firmware status from the part that sets up the WoWLAN status. This will allow netdetect to reuse the code. Signed-off-by: Luciano Coelho <luciano.coelho@intel.com> Reviewed-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
2014-11-24iwlwifi: mvm: refactor wowlan and netdetect configuration when suspendingLuciano Coelho1-22/+45
We need to send a WOWLAN_CONFIGURATION command also for netdetect and configure the rfkill release trigger if needed. To do so, refactor the code that configures wowlan and netdetect when suspending and send the WOWLAN_CONFIGURATION command also for net_detect. Signed-off-by: Luciano Coelho <luciano.coelho@intel.com> Reviewed-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
2014-11-24iwlwifi: mvm: add support for net detectLuciano Coelho2-4/+8
Add the net detect WoWLAN flag to indicate support and use the nd_config from the WoWLAN configuration to start net detect, if it is set. The WoWLAN configuration takes precedence over the debugfs configuration. Signed-off-by: Luciano Coelho <luciano.coelho@intel.com> Reviewed-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
2014-11-24iwlwifi: mvm: protect session during CSALuciano Coelho2-0/+22
When another vif is also running during a channel switch, we need to use a session protection when we move to the new channel, so that we don't miss the beacons. Without this, sometimes the other vif repeatedly gets time exactly when we should be hearing the beacons, preventing channel switch from completing. Adding a session protection that lasts from the moment the channel changes until 2 TBTTs later, ensures that we will hear the beacons on the destination channel. Signed-off-by: Luciano Coelho <luciano.coelho@intel.com>
2014-11-24iwlwifi: mvm: clear TE data if CSA time event fails to startLuciano Coelho1-0/+1
If setting the CSA time event fails, we must clear the TE data, otherwise we'll try to remove it when, for instance, a disconnection occurs, causing a SYSASSERT. Signed-off-by: Luciano Coelho <luciano.coelho@intel.com>
2014-11-24iwlwifi: mvm: disable beacon filtering during CSALuciano Coelho1-0/+10
After a channel switch, transmission on the new channel is only started once we see a beacon on it. Thus, beacon filtering needs to be disabled during channel switch so that mac80211 receives this beacon and finishes the process. Signed-off-by: Luciano Coelho <luciano.coelho@intel.com>
2014-11-24iwlwifi: mvm: add a channel_switch op to bypass mac80211 timerLuciano Coelho2-0/+16
We need to call ieee80211_chswitch_done() ourselves just when the absence TE started, so we perform the actual context switch early enough. To do so, add a dummy channel_switch op, which will cause mac80211 to skip the countdown timer and allow us to call ieee80211_chswitch_done() to complete the operation. Signed-off-by: Luciano Coelho <luciano.coelho@intel.com>
2014-11-24iwlwifi: mvm: finalize on post_switch instead of unassignLuciano Coelho1-12/+19
Now that mac80211 waits for the first beacon on the new channel before calling post_channel_switch, the reconfiguration of the firmware should be done in the post_channel_switch operation instead of when assigning the vif to the new context. Signed-off-by: Luciano Coelho <luciano.coelho@intel.com>
2014-11-24iwlwifi: mvm: schedule CSA time event a bit before beacon 1Luciano Coelho2-8/+17
Instead of using a hardcoded number of TUs before beacon 0 as the time to start the absence and actual channel switch, calculate it in relation to the beacon interval. We use 10 TUs + beacon interval before beacon 0 to target a bit before beacon 1. This gives us enough time to switch to the new channel before the AP/GO switches. Signed-off-by: Luciano Coelho <luciano.coelho@intel.com>
2014-11-24iwlwifi: mvm: add CSA absent time event for clientsLuciano Coelho5-18/+81
Add an absent time event when pre_channel_switch is called and use the time event started indication to set the disable_tx bit instead of doing it in unassign_vif(). This is done so that the firmware queues are stopped before the actual switch takes place to avoid losing packets while the AP/GO is performing its actual switch. Signed-off-by: Luciano Coelho <luciano.coelho@intel.com>
2014-11-24iwlwifi: mvm: use switching_chanctx argument instead of csa_activeLuciano Coelho1-4/+4
Now that all CSA flows are using the switch_vif_chanctx op, we can rely on the switching_chanctx boolean that is passed to the __iwl_mvm_assign_vif_chanctx() and __iwl_mvm_unassign_vif_chanctx() functions to decide whether the context switch flows need to be executed. In this way we make the chanctx switch flow more generic, without having to rely on the csa_active flag being set. Signed-off-by: Luciano Coelho <luciano.coelho@intel.com>
2014-11-24iwlwifi: mvm: disable PS during channel switchLuciano Coelho1-3/+25
Disable PS when pre_channel_switch is called and add the post_channel_switch operation to re-enable PS when the channel switch is completed. Signed-off-by: Luciano Coelho <luciano.coelho@intel.com>
2014-11-24iwlwifi: mvm: Handle failed beacon transmissions during CSAAndrei Otcheretianski3-6/+29
The spec requires to decrement the CSA counters based on TBTT, regardless if the beacon was actually transmitted. Previously, the fw would send beacon notifications only for successfully transmitted beacons. This behavior resulted in inaccurate CSA countdown. In order to address this issue, the fw was changed to send beacon notifications also for not transmitted beacons. Such notifications have TX_STATUS_INTERNAL_ABORT (0x92). Don't start the CSA countdown before first successfully transmitted beacon, in order to guarantee that the CSA is announced for a required period. Signed-off-by: Andrei Otcheretianski <andrei.otcheretianski@intel.com>
2014-11-24iwlwifi: mvm: return the actual error code when switch_vif_chanctx failsLuciano Coelho1-5/+3
We have code to recover and go back to the original channel context if something fails in the middle of switch_vif_chanctx, but we return the error code of the recover calls instead of the original code, so if the recovery succeeds, we will return 0 (success). Fix this by not assigning the return value of the recovery calls to ret. Signed-off-by: Luciano Coelho <luciano.coelho@intel.com>
2014-11-24iwlwifi: mvm: add support for CHANCTX_SWMODE_REASSIGN_VIFLuciano Coelho1-1/+39
Add support to reassign vif in switch_vif_chanctx. This is similar to the existing CHANCTX_SWMODE_SWAP_CONTEXTS mode, but doesn't delete the old context nor creates a new one, doing to switch between two existing contexts. Signed-off-by: Luciano Coelho <luciano.coelho@intel.com>
2014-11-24iwlwifi: mvm: refactor iwl_mvm_switch_vif_chanctx to support other modesLuciano Coelho1-9/+31
Currently we only support the CHANCTX_SWMODE_SWAP_CONTEXTS mode, but we need to support other modes as well. Spin a new function off in order to make it easier to support other modes. Signed-off-by: Luciano Coelho <luciano.coelho@intel.com>
2014-11-24iwlwifi: mvm: only save csa_vif in AP/GO modeLuciano Coelho1-10/+18
We only need the csa_vif in AP/GO modes, and assigning for other interfaces may cause problems, because csa_vif is never cleared. To prevent this, only assign the value if the iftype is NL80211_IFTYPE_AP. Use a switch to do this, even though, for now, only the AP interface type is handled, because soon other interface types will be added as well. Additionally, convert the WARN() in the error case when a channel-switch is already running to WARN_ONCE(). Signed-off-by: Luciano Coelho <luciano.coelho@intel.com>
2014-11-24iwlwifi: mvm: use new pre_channel_switch op instead of channel_switch_beaconLuciano Coelho1-6/+13
A new callback has been added to prepare the device for a channel switch. Use the new callback instead of the old channel_switch_beacon operation. This makes it possible to remove the channel_switch_beacon operation from mac80211. Signed-off-by: Luciano Coelho <luciano.coelho@intel.com>
2014-11-24iwlwifi: mvm: implement mac80211 TDLS channel-switch APIsArik Nemtsov6-0/+557
Maintain a TDLS channel-switch state and update it according to notifications from FW and timeouts. Explicitly check all state transitions are valid. When switching is initiated by mac80211, use a delayed work to periodically reschedule it from iwlwifi. Give the FW mac80211 generated TDLS channel-switch request/response templates. It will change appropriate values (switch timings) and Tx them at appropriate times. Enable the channel switch wiphy capability bit when the FW supports it. Signed-off-by: Arik Nemtsov <arikx.nemtsov@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>