1. 20 4月, 2017 8 次提交
  2. 11 4月, 2017 6 次提交
  3. 08 2月, 2017 4 次提交
  4. 07 2月, 2017 1 次提交
  5. 26 1月, 2017 3 次提交
  6. 19 10月, 2016 1 次提交
  7. 19 9月, 2016 3 次提交
  8. 16 9月, 2016 8 次提交
  9. 30 8月, 2016 3 次提交
  10. 06 7月, 2016 3 次提交
    • S
      iwlwifi: pcie: centralize SCD status logging · 38398efb
      Sara Sharon 提交于
      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: NSara Sharon <sara.sharon@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      38398efb
    • S
      iwlwifi: pcie: load FW chunk for a000 devices · 564cdce7
      Sara Sharon 提交于
      Update the firmware load flow for TFH hardware.
      Signed-off-by: NSara Sharon <sara.sharon@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      564cdce7
    • E
      iwlwifi: pcie: fix a race in firmware loading flow · f16c3ebf
      Emmanuel Grumbach 提交于
      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: a6bd005f ("iwlwifi: pcie: fix RF-Kill vs. firmware load race")
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      f16c3ebf