1. 06 7月, 2016 10 次提交
  2. 01 7月, 2016 4 次提交
  3. 11 5月, 2016 10 次提交
  4. 12 4月, 2016 1 次提交
  5. 30 3月, 2016 12 次提交
  6. 20 3月, 2016 2 次提交
  7. 10 3月, 2016 1 次提交
    • G
      iwlwifi: pcie: avoid restocks inside rx loop if not emergency · e0e168dc
      Gregory Greenman 提交于
      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: NGregory Greenman <gregory.greenman@intel.com>
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      e0e168dc