#
2c6262b7 |
| 07-Dec-2016 |
Sara Sharon <sara.sharon@intel.com> |
iwlwifi: pcie: fix the set of DMA memory mask
Our 9000 device supports 64 bit DMA address for RX only, and not for TX. Setting DMA mask to 64 for the whole device is erroneous - we can do it only fo
iwlwifi: pcie: fix the set of DMA memory mask
Our 9000 device supports 64 bit DMA address for RX only, and not for TX. Setting DMA mask to 64 for the whole device is erroneous - we can do it only for a000 devices where device is capable of both RX & TX DMA with 64 bit address space.
Fixes: 96a6497bc3ed ("iwlwifi: pcie: add 9000 series multi queue rx DMA support") Signed-off-by: Sara Sharon <sara.sharon@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
show more ...
|
#
727c02df |
| 26-Oct-2016 |
Sara Sharon <sara.sharon@intel.com> |
iwlwifi: pcie: cleanup rfkill checks
Move repeating code to a separate function.
Signed-off-by: Sara Sharon <sara.sharon@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
|
#
3ce4a038 |
| 08-Nov-2016 |
Kirtika Ruchandani <kirtika.ruchandani@gmail.com> |
iwlwifi: pcie: trans: Remove unused 'shift_param'
shift_param is defined and set in iwl_pcie_load_cpu_sections but not used. Fix this to avoid -Wunused-but-set-variable warning.
The code using it t
iwlwifi: pcie: trans: Remove unused 'shift_param'
shift_param is defined and set in iwl_pcie_load_cpu_sections but not used. Fix this to avoid -Wunused-but-set-variable warning.
The code using it turned into dead code with commit dcab8ecd5617 ("iwlwifi: mvm: support ucode load for family_8000 B0 only") which added a separate function iwl_pcie_load_given_ucode_8000 (then 8000b) for IWL_DEVICE_FAMILY_8000. Commit 76f8c0e17edc ("iwlwifi: pcie: remove dead code") removed the dead code but left shift_param as is.
iwlwifi/pcie/trans.c: In function ‘iwl_pcie_load_cpu_sections’: iwlwifi/pcie/trans.c:871:6: warning: variable ‘shift_param’ set but not used [-Wunused-but-set-variable]
Fixes: dcab8ecd5617 ("iwlwifi: mvm: support ucode load for family_8000 B0 only") Fixes: 76f8c0e17edc ("iwlwifi: pcie: remove dead code") Signed-off-by: Kirtika Ruchandani <kirtika@google.com> Cc: Sara Sharon <sara.sharon@intel.com> Cc: Luca Coelho <luciano.coelho@intel.com> Cc: Liad Kaufman <liad.kaufman@intel.com> Cc: Emmanuel Grumbach <emmanuel.grumbach@intel.com> [removed some unnecessary braces] Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
show more ...
|
#
eef187a7 |
| 25-Oct-2016 |
Sara Sharon <sara.sharon@intel.com> |
iwlwifi: enlarge number of ucode sections
The maximum number of firmware sections is now 32 instead of 16 for a000 devices. Set the appropriate define. Avoid out of bounds access in case there are
iwlwifi: enlarge number of ucode sections
The maximum number of firmware sections is now 32 instead of 16 for a000 devices. Set the appropriate define. Avoid out of bounds access in case there are more sections than the maximum set by driver.
Make the driver extensible to FW size changes by allocating the section memory dynamically.
Signed-off-by: Sara Sharon <sara.sharon@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
show more ...
|
Revision tags: v4.7.5, v4.4.22, v4.4.21, v4.7.4, v4.7.3, v4.4.20, v4.7.2, v4.4.19, openbmc-4.4-20160819-1 |
|
#
64fa3aff |
| 17-Aug-2016 |
Sharon Dvir <sharon.dvir@intel.com> |
iwlwifi: pcie: give a meaningful name to interrupt request
Instead of passing DRV_NAME pass a string that represents the reason for the interrupt.
Signed-off-by: Sharon Dvir <sharon.dvir@intel.com>
iwlwifi: pcie: give a meaningful name to interrupt request
Instead of passing DRV_NAME pass a string that represents the reason for the interrupt.
Signed-off-by: Sharon Dvir <sharon.dvir@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
show more ...
|
Revision tags: v4.7.1, v4.4.18, v4.4.17 |
|
#
5a41a86c |
| 10-Aug-2016 |
Sharon Dvir <sharon.dvir@intel.com> |
iwlwifi: migrate to devm_* API
Change PCIE and trans resource allocations to managed resources.
Signed-off-by: Sharon Dvir <sharon.dvir@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.c
iwlwifi: migrate to devm_* API
Change PCIE and trans resource allocations to managed resources.
Signed-off-by: Sharon Dvir <sharon.dvir@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
show more ...
|
#
5b88792c |
| 15-Aug-2016 |
Sara Sharon <sara.sharon@intel.com> |
iwlwifi: move to wide ID for all commands
Due to firmware design considerations, move to wide ID for all commands.
Signed-off-by: Sara Sharon <sara.sharon@intel.com> Signed-off-by: Luca Coelho <luc
iwlwifi: move to wide ID for all commands
Due to firmware design considerations, move to wide ID for all commands.
Signed-off-by: Sara Sharon <sara.sharon@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
show more ...
|
#
8352e62a |
| 04-Aug-2016 |
Sara Sharon <sara.sharon@intel.com> |
iwlwifi: pcie: fix typo in struct name for a000 devices
commit 3cd1980b0cdf ("iwlwifi: pcie: introduce new tfd and tb formats") Signed-off-by: Sara Sharon <sara.sharon@intel.com> Signed-off-by: Luca
iwlwifi: pcie: fix typo in struct name for a000 devices
commit 3cd1980b0cdf ("iwlwifi: pcie: introduce new tfd and tb formats") Signed-off-by: Sara Sharon <sara.sharon@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
show more ...
|
Revision tags: openbmc-4.4-20160804-1, v4.4.16 |
|
#
9fb064df |
| 26-Jul-2016 |
Haim Dreyfuss <haim.dreyfuss@intel.com> |
iwlwifi: pcie: replace possible_cpus() with online_cpus() in MSIX mode
In MSIX mode the number of irq depends on the number of possible cpus existing on the host. This cause to bug in case there are
iwlwifi: pcie: replace possible_cpus() with online_cpus() in MSIX mode
In MSIX mode the number of irq depends on the number of possible cpus existing on the host. This cause to bug in case there are offline cores. Take into account only the online CPUs instead. Also save it in temporary variable.
Fixes: commit 2e5d4a8f61dc ("iwlwifi: pcie: Add new configuration to enable MSIX") Signed-off-by: Haim Dreyfuss <haim.dreyfuss@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
show more ...
|
Revision tags: v4.7, openbmc-4.4-20160722-1, openbmc-20160722-1 |
|
#
06f4b081 |
| 21-Jul-2016 |
Sara Sharon <sara.sharon@intel.com> |
iwlwifi: pcie: change indentation of iwl_pcie_set_interrupt_capa()
Function is very indented. Go to msi section if needed to avoid it and by that make the code more readable.
Signed-off-by: Sara Sh
iwlwifi: pcie: change indentation of iwl_pcie_set_interrupt_capa()
Function is very indented. Go to msi section if needed to avoid it and by that make the code more readable.
Signed-off-by: Sara Sharon <sara.sharon@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
show more ...
|
Revision tags: openbmc-20160713-1, v4.4.15, v4.6.4, v4.6.3, v4.4.14, v4.6.2, v4.4.13, openbmc-20160606-1, v4.6.1, v4.4.12, openbmc-20160521-1, v4.4.11, openbmc-20160518-1, v4.6, v4.4.10, openbmc-20160511-1, openbmc-20160505-1, v4.4.9, v4.4.8, v4.4.7, openbmc-20160329-2, openbmc-20160329-1, openbmc-20160321-1, v4.4.6, v4.5 |
|
#
7c8d91eb |
| 13-Mar-2016 |
Haim Dreyfuss <haim.dreyfuss@intel.com> |
iwlwifi: pcie: Set affinity mask for rx interrupt vectors per cpu
In order to utilize the host's CPUs in the most efficient way we bind each rx interrupt vector to each CPU on the host. Each rx inte
iwlwifi: pcie: Set affinity mask for rx interrupt vectors per cpu
In order to utilize the host's CPUs in the most efficient way we bind each rx interrupt vector to each CPU on the host. Each rx interrupt is prioritized to execute only on the designated CPU rather than any CPU. Processor affinity takes advantage of the fact that some remnants of a process that was run on a given processor may remain in that processor's memory state for example, data in the CPU cache after another process is run on that CPU. Scheduling that process to execute on the same processor could result in an efficient use of process by reducing performance-degrading situations such as cache misses and parallel processing.
Signed-off-by: Haim Dreyfuss <haim.dreyfuss@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
show more ...
|
#
496d83ca |
| 20-Mar-2016 |
Haim Dreyfuss <haim.dreyfuss@intel.com> |
iwlwifi: pcie: Configure shared interrupt vector in MSIX mode
In case the OS provides fewer interrupts than requested, different causes will share the same interrupt vector as follow: 1.One interrup
iwlwifi: pcie: Configure shared interrupt vector in MSIX mode
In case the OS provides fewer interrupts than requested, different causes will share the same interrupt vector as follow: 1.One interrupt less: non rx causes shared with FBQ. 2.Two interrupts less: non rx causes shared with FBQ and RSS. 3.More than two interrupts: we will use fewer RSS queues.
Also make the request depend on the number of online CPUs instead of possible CPUs.
Signed-off-by: Haim Dreyfuss <haim.dreyfuss@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
show more ...
|
#
bb98ecd4 |
| 07-Jul-2016 |
Sara Sharon <sara.sharon@intel.com> |
iwlwifi: pcie: merge iwl_queue and iwl_txq
The original intent was to have the general iwl_queue shared between RX and TX queues, but it is not the actual status. Since it is not shared with any str
iwlwifi: pcie: merge iwl_queue and iwl_txq
The original intent was to have the general iwl_queue shared between RX and TX queues, but it is not the actual status. Since it is not shared with any struct but iwl_txq, it adds unnecessary complexity. Merge those structs.
Signed-off-by: Sara Sharon <sara.sharon@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
show more ...
|
#
6983ba69 |
| 26-Jun-2016 |
Sara Sharon <sara.sharon@intel.com> |
iwlwifi: pcie: assign and access a000 TFD & TBs
Previous patch introduced the new formats. This patch allocates the new structures and adjusts code accordingly.
Signed-off-by: Sara Sharon <sara.sha
iwlwifi: pcie: assign and access a000 TFD & TBs
Previous patch introduced the new formats. This patch allocates the new structures and adjusts code accordingly.
Signed-off-by: Sara Sharon <sara.sharon@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
show more ...
|
#
8aacf4b7 |
| 04-Jul-2016 |
Sara Sharon <sara.sharon@intel.com> |
iwlwifi: introduce trans API to get byte count table
In future HW the byte count table address will be configured by ucode per queue. Add API to expose the byte count table to the opmode
Signed-off
iwlwifi: introduce trans API to get byte count table
In future HW the byte count table address will be configured by ucode per queue. Add API to expose the byte count table to the opmode
Signed-off-by: Sara Sharon <sara.sharon@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
show more ...
|
#
3cd1980b |
| 23-Jun-2016 |
Sara Sharon <sara.sharon@intel.com> |
iwlwifi: pcie: introduce new tfd and tb formats
New hardware supports bigger TFDs and TBs. Introduce the new formats and adjust defines and code relying on old format. Changing the actual TFD alloca
iwlwifi: pcie: introduce new tfd and tb formats
New hardware supports bigger TFDs and TBs. Introduce the new formats and adjust defines and code relying on old format. Changing the actual TFD allocation is trickier and deferred to the next patch.
Signed-off-by: Sara Sharon <sara.sharon@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
show more ...
|
#
76f8c0e1 |
| 29-Jun-2016 |
Sara Sharon <sara.sharon@intel.com> |
iwlwifi: pcie: remove dead code
If device family is 8000 then iwl_pcie_load_cpu_sections() won't be called at all (iwl_pcie_load_cpu_sections_8000() is called in that case) so this piece of code nev
iwlwifi: pcie: remove dead code
If device family is 8000 then iwl_pcie_load_cpu_sections() won't be called at all (iwl_pcie_load_cpu_sections_8000() is called in that case) so this piece of code never gets called.
Signed-off-by: Sara Sharon <sara.sharon@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
show more ...
|
#
d6a2c5c7 |
| 29-Jun-2016 |
Sara Sharon <sara.sharon@intel.com> |
iwlwifi: pcie: fix ucode load flow for a000 devices
Turns out we should access TFH relative addresses. Also, the FH_UCODE_LOAD_STATUS was replaced by UREG_UCODE_LOAD_STATUS.
Signed-off-by: Sara Sha
iwlwifi: pcie: fix ucode load flow for a000 devices
Turns out we should access TFH relative addresses. Also, the FH_UCODE_LOAD_STATUS was replaced by UREG_UCODE_LOAD_STATUS.
Signed-off-by: Sara Sharon <sara.sharon@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
show more ...
|
#
ae79785f |
| 30-Jun-2016 |
Sara Sharon <sara.sharon@intel.com> |
iwlwifi: pcie: refrain from SCD accesses
Up till now we accessed SCD configuration only for initial configuration and for enabling command queue. For a000 generation the command queue is open by def
iwlwifi: pcie: refrain from SCD accesses
Up till now we accessed SCD configuration only for initial configuration and for enabling command queue. For a000 generation the command queue is open by default and firmware configures the rest. No driver SCD accesses are expected. Make sure this is the case.
Signed-off-by: Sara Sharon <sara.sharon@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
show more ...
|
#
38398efb |
| 30-Jun-2016 |
Sara Sharon <sara.sharon@intel.com> |
iwlwifi: pcie: centralize SCD status logging
Centralize the logging of SCD status. The motivation is that for a000 devices we will have new SCD HW, but this code was duplicate anyway, so it is a pro
iwlwifi: pcie: centralize SCD status logging
Centralize the logging of SCD status. The motivation is that for a000 devices we will have new SCD HW, but this code was duplicate anyway, so it is a proper cleanup.
Signed-off-by: Sara Sharon <sara.sharon@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
show more ...
|
#
564cdce7 |
| 22-Jun-2016 |
Sara Sharon <sara.sharon@intel.com> |
iwlwifi: pcie: load FW chunk for a000 devices
Update the firmware load flow for TFH hardware.
Signed-off-by: Sara Sharon <sara.sharon@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
|
#
f16c3ebf |
| 13-Jun-2016 |
Emmanuel Grumbach <emmanuel.grumbach@intel.com> |
iwlwifi: pcie: fix a race in firmware loading flow
Upon firmware load interrupt (FH_TX), the ISR re-enables the firmware load interrupt only to avoid races with other flows as described in the commi
iwlwifi: pcie: fix a race in firmware loading flow
Upon firmware load interrupt (FH_TX), the ISR re-enables the firmware load interrupt only to avoid races with other flows as described in the commit below. When the firmware is completely loaded, the thread that is loading the firmware will enable all the interrupts to make sure that the driver gets the ALIVE interrupt. The problem with that is that the thread that is loading the firmware is actually racing against the ISR and we can get to the following situation:
CPU0 CPU1 iwl_pcie_load_given_ucode ... iwl_pcie_load_firmware_chunk wait_for_interrupt <interrupt> ISR handles CSR_INT_BIT_FH_TX ISR wakes up the thread on CPU0 /* enable all the interrupts * to get the ALIVE interrupt */ iwl_enable_interrupts ISR re-enables CSR_INT_BIT_FH_TX only /* start the firmware */ iwl_write32(trans, CSR_RESET, 0);
BUG! ALIVE interrupt will never arrive since it has been masked by CPU1.
In order to fix that, change the ISR to first check if STATUS_INT_ENABLED is set. If so, re-enable all the interrupts. If STATUS_INT_ENABLED is clear, then we can check what specific interrupt happened and re-enable only that specific interrupt (RFKILL or FH_TX).
All the credit for the analysis goes to Kirtika who did the actual debugging work.
Cc: <stable@vger.kernel.org> [4.5+] Fixes: a6bd005fe92 ("iwlwifi: pcie: fix RF-Kill vs. firmware load race") Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
show more ...
|
#
21cb3222 |
| 21-Jun-2016 |
Johannes Berg <johannes.berg@intel.com> |
iwlwifi: decouple PCIe transport from mac80211
The PCIe transport needs to store two pointers in each TX SKB, and currently assumes mac80211's ieee80211_tx_info is present in the CB to do that.
In
iwlwifi: decouple PCIe transport from mac80211
The PCIe transport needs to store two pointers in each TX SKB, and currently assumes mac80211's ieee80211_tx_info is present in the CB to do that.
In order to remove that assumption, have the opmodes pass in the offset to where the pointers can be stored in the CB and use the offset in the PCIe code.
To make the disentanglement complete, remove mac80211.h includes from everywhere in the generic iwlwifi code. This required adding an include of cfg80211.h in one place.
Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
show more ...
|
#
54f315cb |
| 14-Jun-2016 |
Ido Yariv <ido@wizery.com> |
iwlwifi: pcie: Enable MSI mode when using MSI interrupts
On some of the chipsets MSI & INTA interrupts are disabled by default in the HW registers, and need to be explicitly enabled to be used.
In
iwlwifi: pcie: Enable MSI mode when using MSI interrupts
On some of the chipsets MSI & INTA interrupts are disabled by default in the HW registers, and need to be explicitly enabled to be used.
In case MSI-X isn't used, make sure MSI mode is enabled by setting the relevant HW register.
Signed-off-by: Ido Yariv <idox.yariv@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
show more ...
|
#
2aabdbdc |
| 08-Jun-2016 |
Emmanuel Grumbach <emmanuel.grumbach@intel.com> |
iwlwifi: pcie: enable interrupts before releasing the NIC's CPU
The NIC's CPU gets started after the firmware has been written to its memory. The first thing it does is to send an interrupt to let t
iwlwifi: pcie: enable interrupts before releasing the NIC's CPU
The NIC's CPU gets started after the firmware has been written to its memory. The first thing it does is to send an interrupt to let the driver know that it is running. In order to get that interrupt, the driver needs to make sure it is not masked. Of course, the interrupt needs to be enabled in the driver before the CPU starts to run. I mistakenly inversed those two steps leading to races which prevented the driver from getting the alive interrupt from the firmware. Fix that.
Cc: <stable@vger.kernel.org> [4.5+] Fixes: a6bd005fe92 ("iwlwifi: pcie: fix RF-Kill vs. firmware load race") Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
show more ...
|