aboutsummaryrefslogtreecommitdiff
path: root/drivers/net/wireless/intel
AgeCommit message (Collapse)AuthorFilesLines
2016-01-07iwlwifi: mvm: reset mvm->scan_type when firmware is startedEmmanuel Grumbach2-1/+1
If we don't reset the scan type when the firmware is started, we will think the firmware is still configured after the interface has been brought down. When we will bring it up again, we will not configure the scan type in firmware and it will crash with the following assert: 0x0000100A | ADVANCED_SYSASSERT Fixes: 355346ba3050 ("iwlwifi: mvm: configure scheduled scan according to traffic conditions") Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-01-07iwlwifi: mvm: change mcc update APIMatti Gottlieb3-16/+100
New functionality for testing that is not relevant for this driver has been added. This required an API change. Add new cmd & response versions for the MCC update cmd & response. Add new TLV indicating that the FW is using the new API. Signed-off-by: Matti Gottlieb <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-01-07iwlwifi: mvm: let the firmware choose the antenna for beaconsEmmanuel Grumbach2-3/+9
The firmware knows better what antenna to choose. Old firmware still need the setting, so use a flag to know if the driver should choose the antenna or if the firmware can do it iself. Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-01-07iwlwifi: update and fix 7265 series PCI IDsOren Givon1-2/+3
Update and fix some 7265 PCI IDs entries. CC: <[email protected]> [3.13+] Signed-off-by: Oren Givon <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-01-07iwlwifi: dvm: fix WoWLANEmmanuel Grumbach1-0/+3
My commit below introduced a mutex in the transport to prevent concurrent operations. To do so, it added a flag (is_down) to make sure the transport is in the right state. This uncoverred an bug that didn't cause any harm until now: iwldvm calls stop_device and then starts the firmware without calling start_hw in between. While this flow is fine from the device configuration point of view (register, etc...), it is now forbidden by the new is_down flag. This led to this error to appear: iwlwifi 0000:05:00.0: Can't start_fw since the HW hasn't been started and the suspend would fail. This fixes: https://bugzilla.kernel.org/show_bug.cgi?id=109591 CC: <[email protected]> [4.3+] Reported-by: Bogdan Bogush <[email protected]> Fixes=fa9f3281cbb1 ("iwlwifi: pcie: lock start_hw / start_fw / stop_device") Signed-off-by: Emmanuel Grumbach <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-01-07ipw2x00: add checks for dma mapping errorsAlexey Khoroshilov1-2/+9
ipw2100_alloc_skb() and ipw2100_tx_send_data() do not check if mapping dma memory succeed. The patch adds the checks and failure handling. Found by Linux Driver Verification project (linuxtesting.org). Signed-off-by: Alexey Khoroshilov <[email protected]> Signed-off-by: Kalle Valo <[email protected]>
2016-01-07iwlegacy: 4965-mac: constify il_sensitivity_ranges structureJulia Lawall1-1/+1
The il_sensitivity_ranges is never modified, so declare it as const. Done with the help of Coccinelle. Signed-off-by: Julia Lawall <[email protected]> Acked-by: Stanislaw Gruszka <[email protected]> Signed-off-by: Kalle Valo <[email protected]>
2015-12-29Merge tag 'iwlwifi-next-for-kalle-2015-12-21' of ↵Kalle Valo82-715/+2224
https://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-next * Make scan parameters low latency aware (Avi Stern) * Fix in the NL80211_FEATURE_FULL_AP_CLIENT_STATE state case (Ayala) * Fix enable injection mode (Chaya Rachel) * Various cleanups (Dan / Julia / myself) * Allow to stay more time on popular channels (David Spinadel) * Bug fixes for D0i3 (Eliad / Luca) * Fixes for GO uAPSD (myself) * Start of TSO support (myself) * Rate control bug fixes (Eyal / Gregory) * Start the work on 9000 devices (Johannes / Sara / Oren) * Start the work on a new Tx queue allocation model (Liad) * Debug infrastructure enhancements (Golan)
2015-12-21iwlwifi: bail out in case of bad trans stateEliad Peller1-6/+18
In case of bad trans state (i.e. fw is not loaded) bail out immediately instead of calling the trans, which might not be fully initialized yet. Also add WARN_ON_ONCE to help debugging where the errorneous call is coming from. Signed-off-by: Eliad Peller <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-21iwlwifi: fix printf specifierEmmanuel Grumbach1-2/+2
Smatch warned about a bad specifier being used. Fix that. Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-21iwlwifi: remove unused parameter from grab_nic_accessEmmanuel Grumbach7-32/+28
All the callers used silent = false. Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-20iwlwifi: update key params on d0i3 entrance/exitEliad Peller4-45/+136
In order to let the fw do offloading properly, we need to provide various key data (e.g. PN). Configure the params on d0i3 entrance, and update them back on d0i3 exit. Since d3 code is now called in d0i3 which requires runtime pm only, make d3.0 depend on CONFIG_PM (rather than CONFIG_PM_SLEEP), and add required #ifdefs and wrappers where needed, so both CONFIG_PM=n and CONFIG_PM_RUNTIME=n configurations will build correctly. Signed-off-by: Eliad Peller <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-20iwlwifi: mvm: Change number of associated stations when station becomes ↵Ayala Beker2-11/+8
associated Currently, the number of associated stations gets updated when adding a new station or removing it. This is incorrect as it's possible that a station was inserted before it was associated Fix this by increasing/decreasing ap_assoc_sta_count whenever a station transitions in/out the associated state. Signed-off-by: Ayala Beker <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-20iwlwifi: Update PCI IDs for 8000 and 9000 seriesOren Givon1-5/+6
A new PCI IDs update to the 8000 and 9000 series. type=feature Signed-off-by: Oren Givon <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-20iwlwifi: mvm: dump more registers upon errorEmmanuel Grumbach1-13/+16
These registers can help to debug PHY issues. Since this adds a significant amount of work to the debug collection phase, dump the periphery registers only if the firmware is stopped. Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-20iwlwifi: mvm: infrastructure for frame-release messageSara Sharon4-1/+17
Incoming hardware will send frame release notifications to the reorder buffer in order to update with the BA session status and up to date NSSN. This patch enables the API. Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Sara Sharon <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-20iwlwifi: mvm: add 9000 series RX processingJohannes Berg5-4/+385
Convert the convert the new infrastructure added by previous patches to actually use the new RX descriptor layout. Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-20iwlwifi: mvm: change iwl_mvm_get_key_sta_id() to return the stationJohannes Berg1-31/+22
The code in iwl_mvm_update_tkip_key() is now pretty much duplicated with the code in iwl_mvm_get_key_sta_id() doing the station ID lookup again after it was already done. Change iwl_mvm_get_key_sta_id() to iwl_mvm_get_key_sta(), returning the mvm_sta pointer, to allow that duplicate code to be removed. Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-20iwlwifi: mvm: Add a station in monitor modeChaya Rachel Ivgi5-4/+58
Currently when creating a new vif in monitor mode the driver doesn't allocate a specific station. This causes that in the situation that tx traffic is injected, the tx queues are not scheduled, with the result of a TFD queue hang. Fix that by allocating a station and ensuring its tx queues are scheduled. This fixes https://bugzilla.kernel.org/show_bug.cgi?id=104591 Signed-off-by: Chaya Rachel Ivgi <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-20iwlwifi: mvm: add extended dwell timeDavid Spinadel2-18/+45
When doing active scan on crowded channels we are likely to miss probe responses due to collisions. To overcome this issue we use an extended dwell time on channels 1, 6 and 11; this dwell time is set to 100. In case of fragmented scan extended dwell time is the maximum out of channel time - 44 msec. Fragmented active scan will be addressed later. Extended dwell time isn't used in sched scan or p2p find. Signed-off-by: David Spinadel <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-20iwlwifi: mvm: small update in the firmware APIEmmanuel Grumbach1-1/+9
Small change in firmware API, no functional change. Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-20iwlwifi: mvm: support description for user triggered fw dbg collectionGolan Ben-Ami1-2/+3
Add to the user triggered fw debug collection support for describing the reason of the trigger. This could be useful for identifying a dump by a unique id, passed as a description. Signed-off-by: Golan Ben-Ami <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-20iwlwifi: mvm: enable L3 filteringSara Sharon3-3/+15
Firmware will support filtering multicast L3 packets. The L3 filtering is configured by the WOWLAN_CONFIG command. All flags should be enabled by default. Older firmware is not affected as it does not look into this field. Signed-off-by: Sara Sharon <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-20iwlwifi: mvm: refactor the way fw_key_table is handledLuca Coelho3-6/+8
Instead of keeping the fw_key_table bits set when the keys are removed (i.e. in D3 entry or HW_RESTART flows), clear them and set them again only when the keys have been successfully re-added. This makes the bitmask more closely tied to the actual firmware programming. Signed-off-by: Luca Coelho <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-20iwlwifi: 9000: increase the number of queuesEmmanuel Grumbach1-1/+1
9000 family devices have 31 queues. Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-20iwlwifi: pcie: build an A-MSDU using TSO coreEmmanuel Grumbach5-5/+328
When the op_mode sends an skb whose payload is bigger than MSS, PCIe will create an A-MSDU out of it. PCIe assumes that the skb that is coming from the op_mode can fit in one A-MSDU. It is the op_mode's responsibility to make sure that this guarantee holds. Additional headers need to be built for the subframes. The TSO core code takes care of the IP / TCP headers and the driver takes care of the 802.11 subframe headers. These headers are stored on a per-cpu page that is re-used for all the packets handled on that same CPU. Each skb holds a reference to that page and releases the page when it is reclaimed. When the page gets full, it is released and a new one is allocated. Since any SKB that doesn't go through the fast-xmit path of mac80211 will be segmented, we can assume here that the packet is not WEP / TKIP and has a proper SNAP header. Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-20iwlwifi: clear ieee80211_tx_info->driver_data in the op_modeEmmanuel Grumbach3-2/+4
The transport will need to use the info->driver_data pointers. Since the op_mode has this memory hot in cache, clear it there. Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-20iwlwifi: pcie: re-organize code towards TSOEmmanuel Grumbach1-49/+64
The code that handles the TBs that contain the WiFi payload will be changed for TSO. Move the current code into a separate function. Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-20iwlwifi: mvm: prepare the code towards TSO implementationEmmanuel Grumbach2-3/+78
Differentiate between the cases where the skb is a large send and the other cases. Advertise TSO even if, at this stage, skb_gso_segment will be called and it will do all the work. Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-20iwlwifi: pcie: allow to pretend to have Tx CSUM for debugEmmanuel Grumbach7-0/+24
Allow to configure the driver to pretend to have TX CSUM offload support. This will be useful to test the TSO flows that will come in further patches. This configuration is disabled by default. Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-20iwlwifi: change the Intel Wireless email addressEmmanuel Grumbach68-69/+69
[email protected] is not available anymore. [email protected] should be used instead. Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-20Merge tag 'iwlwifi-for-kalle-2015-12-16' into nextEmmanuel Grumbach2-20/+44
* don't load firmware that won't exist for 7260 * fix RCU splat
2015-12-16iwlwifi: dvm: fix compare_const_fl.cocci warningsJulia Lawall1-1/+1
Move constants to the right of binary operators. Generated by: scripts/coccinelle/misc/compare_const_fl.cocci type=cleanup Signed-off-by: Fengguang Wu <[email protected]> Signed-off-by: Julia Lawall <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-16iwlwifi: mvm: change protocol offload flowsSara Sharon5-20/+69
RFC4862 states that "In all cases, a node MUST NOT respond to a Neighbor Solicitation for a tentative address". Currently the driver configures the NS offload and does not wait for address to become permanent, thus violating the RFC. Just removing the address from the address list is not good enough for all cases, since the NS messages are needed for the duplicate address detection and should not be discarded. For d0i3 disable NS offload. Put tentative address in the address list so the NS packet will not be filtered out by ucode. For D3 the platform will not wake from NS packets - so enable NS offload while removing the tentative address from the list. Given that now NS offload might be disabled, and that the ucode uses the IP data for other puroposes (L3 filtering) add two independent flags indicating if IPv4\IPv6 data is valid. Signed-off-by: Sara Sharon <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-16iwlwifi: expose fw usniffer mode to more utilitiesGolan Ben-Ami1-5/+6
Today, in order to configure fw in usniffer mode, the ucode must have the corresponding tlv, which is revealed to the driver while parsing the ucode. Expose the mode of the usniffer to other utilities in the driver (other than the ucode parser) by passing back a pointer to the value. This can be very useful for allowing configuring the fw dbg data using an external configuration file, because this configuration depends on the fw usniffer mode. Signed-off-by: Golan Ben-Ami <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-13iwlwifi: replace d0i3_mode and wowlan_d0i3 with more generic variablesLuca Coelho5-39/+111
The d0i3_mode variable is used to distinguish between transports that handle d0i3 entry during suspend by themselves (i.e. the slave transports) and those which rely on the op_mode layer to do it. The reason why the former do it by themselves is that they need to transition from d0i3 in runtime_suspend into d0i3 in system-wide suspend and this transition needs to happen before the op_mode's suspend flow is called. The wowlan_d0i3 element is also a bit confusing, because it just reflects the wowlan->any value for the trans to understand. This is a bit unclear in the code and not generic enough for future use. To make it clearer and to generalize the platform power mode settings, introduce two variables to indicate the platform power management modes used by the transport. Additionally, in order not to take too big a step in one patch, treat this new variables semantically in the same way as the old d0i3_mode element, introducing a iwl_mvm_enter_d0i3_on_suspend() function to help with that. This commit also adds the foundation for a new concept where the firmware configuration state (i.e. D0, D3 or D0i3) is abstracted from the platform PM mode we are in (i.e. runtime suspend or system-wide suspend). Signed-off-by: Luca Coelho <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-13iwlwifi: mvm: remove the vif parameter of iwl_mvm_configure_bcast_filter()Eliad Peller1-6/+5
Remove the vif parameter of iwl_mvm_configure_bcast_filter() as it's not being used. Signed-off-by: Eliad Peller <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-13iwlwifi: avoid d0i3 commands when no/init ucode is loadedEliad Peller3-0/+10
d0i3 commands are not supported in the init image, so take a reference to ensure we don't enter d0i3 during init image, and additional checks to prevent d0i3 commands when no fw image is loaded. Add a few WARN_ON_ONCE to the d0i3 enter/exit commands to ensure we send d0i3 commands only when the normal ucode is loaded. Signed-off-by: Eliad Peller <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-13iwlwifi: mvm: close the SP if we send fewer frames than expected in SPEmmanuel Grumbach3-1/+41
When we have holes in the BA window, there might be frames that have been ACKed between the read and the right pointers. This means that these frames won't be scheduled again by the SCD and the firwmare won't see them. This invalidates the number of frames we tell the firmware to send. When we detect this case, tell mac80211 to close the SP and to send an EOSP so that the firmware can be in sync. Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-13iwlwifi: update host command messages to new formatSharon Dvir13-222/+345
Host commands now have a group id, express this in printed messages. Signed-off-by: Sharon Dvir <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-13iwlwifi: uninline iwl_trans_send_cmdEmmanuel Grumbach2-32/+35
This function got too big to be inlined. Uninline it. Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-13iwlwifi: block the queues when we send ADD_STA for uAPSDEmmanuel Grumbach2-1/+19
We send an ADD_STA to instruct the firmware to release frames despite the peer being in PS. Since the ADD_STA command and the Tx frame that comes immediately afterwards can be reordered by the DMA engine, we need to block the Tx queues until the firmware replies with the ADD_STA response. Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-13iwlwifi: trans: support a callback for ASYNC commandsEmmanuel Grumbach3-4/+21
This allows the op_mode to request from the transport to call a callback when an ASYNC commands is completed by the firmware. The same callback will be called for all the commands. Pass the command whose response triggers the callback as a parameter to the callback itself. Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-13iwlwifi: pcie: allow the op_mode to block the tx queuesEmmanuel Grumbach4-1/+48
In certain flows (see next patches), the op_mode may need to block the Tx queues for a short period. Provide an API for that. The transport is in charge of counting the number of times the queues are blocked since the op_mode may block the queues several times in a row before unblocking them. Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-13iwlwifi: mvm: check iwl_mvm_wowlan_config_key_params() return valueEliad Peller1-1/+5
commit 9a4c830007817e ("iwlwifi: mvm: refactor d3 key update functions") refactored some code into iwl_mvm_wowlan_config_key_params() function, but the return value was never checked, and not all the function flows returned valid values. fix it. Fixes: ac8ef0ce38de ("iwlwifi: mvm: refactor d3 key update functions") Signed-off-by: Eliad Peller <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-13iwlwifi: mvm: cleanup roc te on restart cleanupEliad Peller3-13/+27
iwl_mvm_restart_cleanup() calls ieee80211_remain_on_channel_expired() on cleanup, but it doesn't clean the actual roc time events, resulting in failure of further ROC attempts. Refactor iwl_mvm_stop_roc() a bit, and add a new function to only cleanup the roc time events (without sending further commands). Signed-off-by: Eliad Peller <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-13iwlwifi: mvm: remove an extra tabDan Carpenter1-1/+1
Smatch prints a static checker warning here: drivers/net/wireless/intel/iwlwifi/mvm/fw-dbg.c:386 iwl_dump_prph() warn: curly braces intended? Curly braces are NOT intended, the extra tab was added by mistake in commit 1a616dd2f171 ('iwlwifi: dump prph registers in a common place for all transports'). type=cleanup Signed-off-by: Dan Carpenter <[email protected]> Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-13iwlwifi: dvm: advertise NETIF_F_SGJohannes Berg1-0/+3
If the transport supports it, advertise NETIF_F_SG to mac80211 to be able to use frag SKBs. This will already improve performance by allowing software GSO to be used. Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-13iwlwifi: mvm: advertise NETIF_F_SGJohannes Berg1-0/+3
If the transport supports it, advertise NETIF_F_SG to mac80211 to be able to use frag SKBs. This will already improve performance by allowing software GSO to be used. Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-13iwlwifi: mvm: rs: fix a potential out of bounds accessEyal Shapira1-2/+3
Klocwork pointed these out. There is a theoretical possibility that rate->index might be set to IWL_RATE_INVALID (15). This could trigger an out of bounds access on ht_vht_rates or legacy_rates arrays. Fix it by adding some checks. Signed-off-by: Eyal Shapira <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>