aboutsummaryrefslogtreecommitdiff
path: root/drivers/net/wireless/intel/iwlwifi
AgeCommit message (Collapse)AuthorFilesLines
2016-03-30iwlwifi: mvm: allow setting the thermal state in D0i3Luca Coelho1-3/+0
We were not allowing the thermal state to be set when we were in D0i3 mode. It was not very clearly specified how it should work, but now a decision was made to allow the state to be set in D0i3 (which will cause a brief wake up). Remove the check in the set_cur_state operation. Signed-off-by: Luca Coelho <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-30iwlwifi: mvm: fix inconsistent lock in dqa modeLiad Kaufman1-4/+4
When working in DQA mode, there is a lockdep log warning about an inconsistent state of the mvmsta->lock and the mvm->queue_info_lock. Fix this. This mode is not activated for now. Signed-off-by: Liad Kaufman <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-30iwlwifi: store fw memory segments length and addresses in run-timeGolan Ben-Ami4-15/+125
Currently reading the fw memory segments is done according to addresses and data length that are hard-coded. Lately a new tlv was appended to the ucode, that contains the data type, length and address. Parse this tlv, and in run-time store the memory segments length and addresses that would be dumped upon a fw error. Signed-off-by: Golan Ben-Ami <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-30iwlwifi: pcie: Fix index iteration on free_irq in MSIX modeHaim Dreyfuss1-2/+2
In MSIX mode we iterate over the allocated interrupt vectors and register them to an handler. In case of registration failure, we free all the allocated irq. we use the outer index mistakenly instead of the inner one. Signed-off-by: Haim Dreyfuss <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-30iwlwifi: remove IWL_*_UCODE_API_OKEmmanuel Grumbach9-102/+21
_UCODE_API_OK was a intermediate version between MIN and MAX. If a user had a firmware below _OK but above _MIN, the driver would work but the user would get a warning in the kernel log telling him to update his firmware. This is not needed since most users won't look for these messages in the kernel log if their wifi is working. Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-30iwlwifi: mvm: enable TCP/UDP checksum support for 9000 familySara Sharon4-7/+133
Declare and enable support of RX and TX checksum for 9000 family. Configure offload_assist in the TX cmd accordingly to support TX csum. Signed-off-by: Sara Sharon <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-30iwlwifi: mvm: add a scan timeout for regular scansLuca Coelho3-0/+28
If something goes wrong with the firmware and we never get a scan complete notification, we stay stuck forever. In order to avoid this situation, add a timeout and trigger an NMI if it expires before receiving the notification., so we can clean things up. Signed-off-by: Luca Coelho <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-30iwlwifi: mvm: move cmd queue to be #0 in dqa modeLiad Kaufman4-4/+16
Change the CMD queue to be queue #0 (rather than queue #9) when working in DQA mode. Signed-off-by: Liad Kaufman <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-30iwlwifi: mvm: allocate dedicated queue for cab in dqa modeLiad Kaufman2-6/+14
In DQA mode, allocate a dedicated queue (#3) for content after beacon (AKA "CaB"). Signed-off-by: Liad Kaufman <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-30iwlwifi: mvm: set sta_id in SCD_QUEUE_CONFIG cmdLiad Kaufman2-0/+5
Set the correct sta_id in the SCD_QUEUE_CONFIG command sent to the FW when enabling/disabling queues. This is needed in DQA-mode to allow the FW to associate between queue and STA. Signed-off-by: Liad Kaufman <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-30iwlwifi: mvm: use bss client queue for bss stationLiad Kaufman2-5/+16
Use the reserved BSS Client queue when connecting to an AP in DQA mode. Signed-off-by: Liad Kaufman <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-30iwlwifi: edit the 9000 series PCI IDsOren Givon1-5/+7
Edit some of the 9560 series and 5165 series PCI IDs. These devices do not exist yet. Signed-off-by: Oren Givon <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-30iwlwifi: mvm: improve RSS configurationSara Sharon4-7/+11
Improve current RSS configuration: * Use netdev_rss_key instead of keeping a local copy. * Configure also UDP hashing to have UDP traffic spread across queues. * Do not direct RSS traffic to our fallback queue. Signed-off-by: Sara Sharon <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-30iwlwifi: pcie: request one more interrupt vectorSara Sharon1-1/+1
We want to request an interrupt vector for RSS queue per CPU, one vector for fallback queue, and one for non-rx interrupts. Future patch will make sure that no RSS traffic is directed to fallback queue. This will enable us to enable fast path on traffic that otherwise would have been received on the fallback queue. Signed-off-by: Sara Sharon <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-30iwlwifi: mvm: remove uneeded D0I3 checkingChaya Rachel Ivgi1-3/+0
The driver can read the current state during D0I3, therefore there is no reason not to do it. Signed-off-by: Chaya Rachel Ivgi <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-30iwlwifi: trans: fix iwl_trans_txq_scd_cfg.sta_id signLiad Kaufman1-1/+3
For some reason, this was defined as a signed variable. Make it unsigned. Signed-off-by: Liad Kaufman <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-30iwlwifi: mvm: set aux STA ID in scan configDavid Spinadel1-0/+1
Auxilary station ID in flag in scan config command wasn't set although we set the station ID. Add the flag. Signed-off-by: David Spinadel <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-30iwlwifi: mvm: report checksum is done also for IPv6 packetsSara Sharon2-3/+21
Currently the code checks if hardware reported both L4 and L3 checksums as valid, and only then reports it as validated to the stack. However, IPv6 does not have checksum at all and the L3 checksum valid bit is always off for IPv6 packets, with the result of the stack re-validating L4 checksum. Fix code to set CHECKSUM_UNNECESSARY also for IPv6 packets whose TCP/UDP checksum was verified. Signed-off-by: Sara Sharon <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-30iwlwifi: dvm: use alloc_ordered_workqueue()Eva Rachel Retuya1-1/+1
Use alloc_ordered_workqueue() to allocate the workqueue instead of create_singlethread_workqueue() since the latter is deprecated and is scheduled for removal. There are work items doing related operations that shouldn't be swapped when queued in a certain order hence preserve the strict execution ordering of a single threaded (ST) workqueue by switching to alloc_ordered_workqueue(). WQ_MEM_RECLAIM flag is not needed since the worker is not depended during memory reclaim. Signed-off-by: Eva Rachel Retuya <[email protected]> Acked-by: Tejun Heo <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-30iwlwifi: remove support for fw older than -16.ucodeSara Sharon12-1621/+41
API version lower than 16 is not supported anymore - don't load older ucode. Remove code handling older versions. Signed-off-by: Sara Sharon <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-30iwlwifi: mvm: update GSCAN capabilitiesAyala Beker1-3/+10
Gscan capabilities were updated with new capabilities supported by the device. Update GSCAN capabilities TLV. Signed-off-by: Ayala Beker <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-30iwlwifi: remove IWLWIFI_UAPSD KconfigEmmanuel Grumbach2-17/+0
We have a module parameter, this is enough. per platform customizations will be done through the init script of the platform. Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-30iwlwifi: pcie: write to legacy register also in MQSara Sharon1-2/+6
Due to hardware bug, upon any shadow free-queue register write access, a legacy RBD shadow register must be written as well. This is required in order to trigger a copy of the shadow registers values after MAC exits sleep state. Specifically, the driver has to write (any value) to the legacy RBD register each time FRBDCB is accessed. Signed-off-by: Sara Sharon <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-30iwlwifi: mvm: support bss dynamic alloc/dealloc of queuesLiad Kaufman9-16/+481
"DQA" is shorthand for "dynamic queue allocation". This enables on-demand allocation of queues per RA/TID rather than statically allocating per vif, thus allowing a potential benefit of various factors. Please refer to the DOC section this patch adds to sta.h to see a more in-depth explanation of this feature. There are many things to take into consideration when working in DQA mode, and this patch is only one in a series. Note that default operation mode is non-DQA mode, unless the FW indicates that it supports DQA mode. This patch enables support of DQA for a station connected to an AP, and works in a non-aggregated mode. When a frame for an unused RA/TID arrives at the driver, it isn't TXed immediately, but deferred first until a suitable queue is first allocated for it, and then TXed by a worker that both allocates the queues and TXes deferred traffic. When a STA is removed, its queues goes back into the queue pools for reuse as needed. Signed-off-by: Liad Kaufman <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-30iwlwifi: mvm: remove is_data_qos variable in TXJohannes Berg1-3/+2
"is_data_qos == true" is equivalent to "tid < IWL_MAX_TID_COUNT" since tid is only assigned (and range-checked) in that case. This removes a (harmless) smatch warning that occurs because it can't seem to follow the above logic from the code. Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-30iwlwifi: 9000: update device id and FW serial numberHaim Dreyfuss3-10/+10
Update device id and FW serial number for 2X2 antenna devices in 9000 generation product. These will not be available on the market in the coming year. Signed-off-by: Haim Dreyfuss <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-30iwlwifi: make uapsd_disable module param a bitmapEmmanuel Grumbach5-9/+18
This allows to disable uapsd for BSS only, or P2P client separately. Remove the now unneeded IWL_MVM_P2P_UAPSD_STANDALONE constant. Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-30iwlwifi: add missing mutex_destroy statementsEmmanuel Grumbach2-0/+4
iwlwifi / iwlmvm didn't destroy their mutexes. Fix that. Signed-off-by: Emmanuel Grumbach <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-30iwlwifi: mvm: add support for new TX CMD APISara Sharon2-3/+41
TX CMD API has changed to support offload assist. Currently we do not enable checksum yet, but must set the padding indication, to avoid FW errors. Set other amsdu flag as well. The rest of the flags will be configured only if HW csum is enabled and will be set in future patches. This change is backward compatible. Signed-off-by: Sara Sharon <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-30iwlwifi: pcie: do not pad QoS AMSDUSara Sharon1-7/+14
We insert padding if the MAC header's size is not a multiple of 4 to ensure that the SNAP header is DWORD aligned. When we do so, we let the firmware know by setting a bit in Tx command (TX_CMD_FLG_MH_PAD) which will instruct the firmware to drop those 2 bytes before sending the frame. However, this is not needed for AMSDU as the sub frame header (14B) complements the MAC header (26B) so that the SNAP header is DWORD aligned without adding any pad. Until 9000, the firmware didn't check the TX_CMD_FLG_MH_PAD bit but rather checked the length of the MAC header itself and assumed the entity that enqueued the frame (driver or internal firmware code) added the pad. Since the driver inserted the pad even for AMSDU this logic applied. Note that the padding is a DMA optimization but it's not strictly needed, so we could pad even if it was not needed. However, the CSUM hardware introduced for the 9000 devices requires to not pad AMSDU as it is not needed, and will fail if such a pad exists. Due to older FW not checking the padding bit but checking the mac header size itself - we cannot do this adjustments for older generations. Do not align the size if it is an AMSDU and HW checksum is enabled - which will only happen on 9000 devices and on. Signed-off-by: Sara Sharon <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-30iwlwifi: mvm: modify the max SP to infiniteEmmanuel Grumbach2-2/+2
This makes u-APSD work with more peers. Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-30iwlwifi: pcie: print error value as signed intEmmanuel Grumbach1-1/+1
Bjorn pointed out that printing an error value as an hexadecimal isn't very convenient. Change that. Reported-by: Bjorn Helgaas <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-30iwlwifi: mvm: handle async temperature notification with unlocked mutexChaya Rachel Ivgi2-10/+1
Use RX_HANDLER_ASYNC_UNLOCKED instead of unlock and re-lock the mutex independently. Signed-off-by: Chaya Rachel Ivgi <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-30iwlwifi: pcie: refcounting is not necessary anymoreLuca Coelho3-23/+10
We don't use the refcount value anymore, all the refcounting is done in the runtime PM usage_count value. Remove it. Signed-off-by: Luca Coelho <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-30iwlwifi: pcie: enable interrupts explicitly on resumeSara Sharon1-0/+1
When entering suspend the driver calls iwl_disable_interrupts() and then iwl_pcie_disable_ict(). On resume the driver calls only iwl_pcie_reset_ict() without calling explicitly to iwl_enable_interrupts(). This mostly works since iwl_pcie_reset_ict is calling to iwl_enable_interrupts, but it doesn't work when there is no ict_table in MSIx mode. The result is that driver tries to resume but fails since it doesn't get the RX interrupt from FW indicating that d0i3 exit was completed. Fix it by adding an explicit call to enable interrupts. Signed-off-by: Sara Sharon <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-30iwlwifi: pcie: fix global table sizeSara Sharon2-1/+3
My patch resized the pool size, but neglected to resize the global table, which is obviously wrong since the global table maps the pool's rxb to vid one to one. This results in a panic in 9000 devices. Add a build bug to avoid such a case in the future. Fixes: 7b5424361ec9 ("iwlwifi: pcie: fine tune number of rxbs") Reported-by: Haim Dreyfuss <[email protected]> Signed-off-by: Sara Sharon <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-30iwlwifi: add a debugfs hook for LQMAviya Erenfeld1-0/+85
Add debugfs entry named lqm_send_cmd for kicking a measurement. This hook takes the duration and the timeout as parameter. Signed-off-by: Aviya Erenfeld <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-30iwlwifi: mvm: add LQM vendor command and notificationAviya Erenfeld6-0/+166
LQM stands for Link Quality Measurement. The firmware will collect a defined set of statitics (see the notification for details) that allow to know how busy the medium is. The driver issues a request to the firmware that includes the duration of the measurement (the firmware needs to be on channel for that amount of time) and the timeout (in case the firmware has a lot of offchannel activities). If the timeout elapses, the firmware will send partial results which are still valuable. In case of disassociation / channel switch and alike, the driver is in charge of stopping the measurements and the firmware will reply with partial results. The user space API for now is debugfs only and will be implmemented in an upcoming patch. Signed-off-by: Aviya Erenfeld <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-20iwlwifi: mvm: fix memory leak in pagingMatti Gottlieb2-2/+2
Currently paging download buffer is freed during the the unloading of the opmode which happens when the driver is unloaded. This causes a memory leak since the paging download buffer is allocated every time we enable the interface, so the download buffer can be allocated many times, but only be freed once. Free paging download buffer during disabling of the interface. CC: [email protected] [4.3+] Signed-off-by: Matti Gottlieb <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-20iwlwifi: mvm: support dumping UMAC internal txfifosGolan Ben-Ami8-5/+146
In case of FW error, support dumping the UMAC internal txfifos. To do so, support version 2 of shared memory cfg command, which contains the sizes of the internal txfifos, and move the command to the system group. Signed-off-by: Golan Ben-Ami <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-20iwlwifi: mvm: make sure FW contains the right amount of paging sectionsMatti Gottlieb1-2/+6
Paging contains 3 sections in the fw. The first for the paging separator, The second for the CSS block, the third with the paging data. Currently if the driver finds the paging separator, and there is only section left (CSS), once reading the CSS section, the driver will attempt to read the paging data and will go out of the arrays bounds. Make sure that the FW image contains the right amount of sections for paging. Signed-off-by: Matti Gottlieb <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-20iwlwifi: pcie: lower the debug level for RSA semaphore accessEmmanuel Grumbach1-2/+2
IWL_INFO is not an error but still printed by default. "can't access the RSA semaphore it is write protected" seems worrisome but it is not really a problem. CC: <[email protected]> [4.1+] Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-20iwlwifi: mvm: Decrease size of the paging download bufferMatti Gottlieb1-1/+3
Currently the driver has 2 buffers for paging: 1. paging db - this contains all of the pages that were in the FW image, that the driver stores for the FW. This is allocated for each block separately (not contiguous). 2. download buffer - we need to provide this empty buffer for the iwl_sdio_load_fw_chunk function to copy the requested pages to the shared memory. This is one big buffer of contiguous memory whose size is the size of all the blocks that the fw paging section can contain. This download buffer size is too big, and causes the allocation to fail sometimes. Since the driver allocates memory for each block separately, it is not possible for the FW to request all of the pages in one request (the FW gives an address and size, so blocks need to be contiguous for this to happen), therefore the FW is limited to request only one block. Decrease the size of the paging download buffer to be the size of a paging block. Signed-off-by: Matti Gottlieb <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-20iwlwifi: pcie: clear trans reference on queue stopSara Sharon1-23/+36
Currently when stop flow is performed, there might be transport TX RTPM references that are not freed in case we unmap a queue that still has packets not reclaimed. Fix that. Signed-off-by: Sara Sharon <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-10Merge tag 'iwlwifi-next-for-kalle-2016-03-09_2' of ↵Kalle Valo27-351/+565
https://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-next * update GSCAN capabilities (Ayala) * fix AES-CMAC in AP mode (Johannes) * adapt prints to new firmware API * rx path improvements (Sara and Gregory) * fixes for the thermal / cooling device code (Chaya Rachel) * fixes for GO uAPSD handling * more code for the 9000 device family (Sara) * infrastructure work for firmware notification (Chaya Rachel) * improve association reliablity (Sara) * runtime PM fixes * fixes for ROC (HS2.0)
2016-03-09iwlwifi: mvm: update GSCAN capabilitiesAyala Beker3-14/+48
Gscan capabilities were updated with new capabilities supported by the device. While at it, simplify the firmware support conditional and move both conditions into the WARN() to make it easier to undertand and use the unlikely() for both. Signed-off-by: Ayala Beker <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-09iwlwifi: mvm: don't try to offload AES-CMAC in AP/IBSS modesJohannes Berg1-1/+5
The firmware/hardware only supports checking AES-CMAC on RX, not using it on TX. For station mode this is fine, since it's the only thing it will ever do. For AP mode, it never receives such frames, but must be able to transmit them. This is currently broken since we try to enable them for hardware crypto (for RX only) and then treat them as TX_CMD_SEC_EXT, leading to FIFO underruns during TX so the frames never go out to the air. To fix this, simply use software on TX in AP (and IBSS) mode. Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-09iwlwifi: mvm: adapt the firmware assert log to new firmwareEmmanuel Grumbach3-33/+30
Newer firmware versions put different data in the memory which is read by the driver upon firmware crash. Just change the variable names in the code and the name of the data in the log that we print withouth any functional change. On older firmware, there will be a mismatch between the names that are printed and the content itself, but that's harmless. Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-09iwlwifi: pcie: avoid restocks inside rx loop if not emergencyGregory Greenman1-26/+33
When trying to reach high Rx throughput of more than 500Mbps on a device with a relatively weak CPU (Atom x5-Z8500), CPU utilization may become a bottleneck. Analysis showed that we are looping in iwl_pcie_rx_handle for very long periods which led to starvation of other threads (iwl_pcie_rx_handle runs with _bh disabled). We were handling Rx and allocating new buffers and the new buffers were ready quickly enough to be available before we had finished handling all the buffers available in the hardware. As a consequence, we called iwl_pcie_rxq_restock to refill the hardware with the new buffers, and start again handling new buffers without exiting the function. Since we read the hardware pointer again when we goto restart, new buffers were handled immediately instead of exiting the function. This patch avoids refilling RBs inside rx handling loop, unless an emergency situation is reached. It also doesn't read the hardware pointer again unless we are in an emergency (unlikely) case. This significantly reduce the maximal time we spend in iwl_pcie_rx_handle with _bh disabled. Signed-off-by: Gregory Greenman <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>
2016-03-09iwlwifi: mvm: return the cooling state index instead of the budgetChaya Rachel Ivgi2-29/+31
iwl_mvm_tcool_get_cur_state is the function that returns the cooling state index to the sysfs handler. This function returns mvm->cooling_dev.cur_state but that variable was set to the budget and not the cooling state index. Fix that. Add a missing blank line while at it. Signed-off-by: Chaya Rachel Ivgi <[email protected]> Signed-off-by: Emmanuel Grumbach <[email protected]>