aboutsummaryrefslogtreecommitdiff
path: root/drivers/net/wireless/intel
AgeCommit message (Collapse)AuthorFilesLines
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]>
2015-12-13iwlwifi: mvm: configure scheduled scan according to traffic conditionsAvraham Stern3-23/+34
Change scan configuration (dwell time, suspend time etc.) according to traffic conditions. This is useful for scans that are managed by the FW (e.g. scheduled scan). Signed-off-by: Avraham Stern <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-13iwlwifi: mvm: set default new STA as non-aggregatedLiad Kaufman1-0/+2
When sending the first ADD_STA HCMD for a STA, the %add_modify field indicates an addition of a STA and not a modification of one. In such a case, all fields of the HCMD are used to initialize the corresponding fields in the FW, regardless of what bits are set in %modify_mask. Set the %tid_disable_tx field to mvm_sta->tid_disable_agg in iwl_mvm_sta_send_to_fw(). If the STA is only updated this will have no effect, but if it is added - it will make sure the STA starts with the correct queues - if any - configured as non-aggregated by default (until told otherwise). Signed-off-by: Liad Kaufman <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-13iwlwifi: mvm: add an option to start rs from HT/VHT ratesGregory Greenman1-15/+52
Extend the configurable option of setting initial rate to RSSI based. Make the initial rate to be set to VHT/HT SISO or legacy depending on the AP capabilities. Signed-off-by: Gregory Greenman <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-11iwlegacy: mark il_adjust_beacon_interval as noinlineArnd Bergmann1-1/+1
With the new optimized do_div() code, some versions of gcc produce obviously incorrect code that leads to a link error in iwlegacy/common.o: drivers/built-in.o: In function `il_send_rxon_timing': :(.text+0xa6b4d4): undefined reference to `____ilog2_NaN' :(.text+0xa6b4f0): undefined reference to `__aeabi_uldivmod' In a few thousand randconfig builds, I have seen this problem a couple of times in this file, but never anywhere else in the kernel, so we can try to work around this in the only file that shows the behavior, by marking the il_adjust_beacon_interval function as noinline, which convinces gcc to use the unoptimized do_div() all the time. Signed-off-by: Arnd Bergmann <[email protected]> Acked-by: Nicolas Pitre <[email protected]> Acked-by: Stanislaw Gruszka <[email protected]> Signed-off-by: Kalle Valo <[email protected]>
2015-12-11iwlegacy: cleanup end of il_send_add_sta()Dan Carpenter1-6/+6
This code causes a static checker warning because we check for "if (ret == 0)" but we have already had verified that was true. Clean it up a little. Signed-off-by: Dan Carpenter <[email protected]> Acked-by: Stanislaw Gruszka <[email protected]> Signed-off-by: Kalle Valo <[email protected]>
2015-12-07iwlwifi: mvm: don't keep an mvm ref when the interface is downLuca Coelho2-13/+13
There is no reason to keep a reference when the interface is down, since we are not really doing anything. The reference is only needed when the mac80211 start op (or a hw restart) is running, to prevent going into runtime or system supend in the meantime. This will allow us to support runtime PM when the interface is down (in another patch). Signed-off-by: Luca Coelho <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-01iwlwifi: remove IWL_DL_LEDEliad Peller2-4/+0
no need to have a separate debug level for a single debug print (which is pretty much useless anyway). remove them both. Signed-off-by: Eliad Peller <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-01iwlwifi: mvm: ROC: Extend the ROC max delay duration & limit ROC durationMatti Gottlieb1-4/+38
When associated to an AP and a ROC event with a long duration is scheduled the FW may have a hard time scheduling a consecutive time event, since it has to remain on the connection channel to hear the AP's DTIM. In addition, when associated and a ROC is requested with a duration greater than the DTIM interval, the FW will not be able to schedule the ROC event, since it needs to wake up for the DTIM. Increasing the "max delay" duration to the DTIM period will allow the FW to wait until after the DTIM and then schedule the ROC time event. Limiting the ROC to be less than the DTIM interval will assure that the time event will be scheduled for at least part of the time (instead of automatically failing) Extend the ROC max delay duration to min(dtim_interval * 3, 600TU), and limit the duration to be less than the DTIM interval. Signed-off-by: Matti Gottlieb <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-01iwlwifi: mvm: add 9000-series RX APIJohannes Berg3-0/+115
Define the RX API that's used by the 9000 series hardware. Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-01iwlwifi: mvm: report wakeup for wowlanDerek Basehore1-0/+2
When the wifi wakes up the system, we need to report it via calling pm_wakeup_event for lucid sleep. This is so userspace knowns that the wifi woke up the system via the /sys/power/wakeup_type sysfs interface. Signed-off-by: Derek Basehore <[email protected]> Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-01iwlwifi: mvm: rs: fix a warning messageDan Carpenter1-1/+1
WARN_ON_ONCE() doesn't take a message, it only takes a condition. I have changed this to WARN(1, ...). Signed-off-by: Dan Carpenter <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-01iwlwifi: print index in api/capa flags parsing messageJohannes Berg1-2/+6
If the API or capabilities index is bigger than the driver expects, an error message is printed. Make that message print the index and distinguish between API and capabilities. Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2015-12-01iwlwifi: change the Intel Wireless email addressEmmanuel Grumbach52-52/+52
[email protected] is not available anymore. [email protected] should be used instead. Signed-off-by: Emmanuel Grumbach <[email protected]>