1. 20 4月, 2017 5 次提交
  2. 11 4月, 2017 1 次提交
  3. 08 2月, 2017 1 次提交
  4. 07 2月, 2017 1 次提交
  5. 19 10月, 2016 1 次提交
  6. 19 9月, 2016 3 次提交
  7. 16 9月, 2016 2 次提交
  8. 30 8月, 2016 1 次提交
  9. 06 7月, 2016 1 次提交
  10. 01 7月, 2016 4 次提交
  11. 10 6月, 2016 1 次提交
  12. 11 5月, 2016 8 次提交
    • S
      iwlwifi: mvm: loosen nssn comparison to reorder buffer head · 74dd1764
      Sara Sharon 提交于
      Up till now, the reorder buffer uses standard spec based comparison
      when comparing the buffer status to NSSN. This indeed works for the
      regular case, since we shouldn't cross the 2048 boundary without
      getting a frame release notification.
      However, this is problematic due to packet filtering that may be
      performed by the FW while we are in d0i3. Theoretically we may
      filter over 2048 packets, and then the check of the NSSN will get
      incorrect.
      Change the comparison to always trust nssn unless it is 64 or less
      frames behind the head - which might happen due to a timeout.
      This new comparison is to be used only when comparing reorder buffer
      head with nssn, and not when comparing the packet SN to nssn or
      reorder buffer head.
      Put this in a separate commit as the logic is a bit tricky and
      stands for its own commit message.
      Signed-off-by: NSara Sharon <sara.sharon@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      74dd1764
    • J
      iwlwifi: mvm: pass station to mac80211 RX where known · 43ec72b7
      Johannes Berg 提交于
      When we've already looked up the transmitter station, we can just
      pass it to mac80211 using the new ieee80211_rx_napi(). This saves
      the overhead of looking it up in mac80211 again.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      43ec72b7
    • S
      iwlwifi: mvm: utilize the frame release infrastructure · a338384b
      Sara Sharon 提交于
      The firmware will send frame release notification in order
      to release "stuck" frames on a queue where no more frames
      arrive on.
      Upon receiving the message the driver shall indicate the frames
      up to the NSSN.
      Signed-off-by: NSara Sharon <sara.sharon@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      a338384b
    • S
      iwlwifi: mvm: add reorder timeout per frame · 0690405f
      Sara Sharon 提交于
      Add a timer in order to release expired frames from the
      reorder buffer.
      This is needed since some APs do not retransmit frames
      to fill in the reorder holes and in TCP it results with
      a complete stall of traffic.
      
      This has a few side effects on the general design:
      
      The nssn may not reflect the the head of the reorder buffer.
      This situation is valid, and packets with SN lower than the
      reorder buffer head will be dropped.
      
      Another side effect is that since the reorder timer might expire
      we need to lock the reorder buffer.
      This however is fine since the locking is only inside a
      single reorder buffer between RX path and reorder timeout and
      there is no outside contention.
      Signed-off-by: NSara Sharon <sara.sharon@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      0690405f
    • S
      iwlwifi: mvm: add reorder buffer per queue · b915c101
      Sara Sharon 提交于
      Next hardware will direct packets to core based on the TCP/UDP
      streams.
      This logic can create holes in reorder buffer since packets that
      belong to other stream were directed to a different core.
      However, those are valid holes and the packets can be indicated
      in L3 order.
      
      The hardware will utilize a mechanism of informing the driver of
      the normalized ssn and the driver shall release all packets that
      SN is lower than the nssn.
      This enables managing the reorder across the queues without sharing
      any data between them.
      
      The reorder buffer is allocated and released directly in the RX path
      in order to avoid various races between control path and rx path.
      The code utilizes the internal messaging to notify rx queues of when
      to delete the reorder buffer.
      Signed-off-by: NSara Sharon <sara.sharon@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      b915c101
    • S
      iwlwifi: mvm: add infrastructure for tracking BA session in driver · 10b2b201
      Sara Sharon 提交于
      According to the spec when a BA session is started there
      is a timeout set for the session in the ADDBA request.
      If there is not activity on the TA/TID then the session
      expires and a DELBA is sent.
      In order to check for the timeout, data must be shared
      among the rx queues.
      Add a timer that runs as long as BA session is active
      for the station and stops aggregation session if needed.
      This patch also lays the infrastructure for the reordering
      buffer which will be enabled in the next patches.
      Signed-off-by: NSara Sharon <sara.sharon@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      10b2b201
    • S
      iwlwifi: mvm: change RX sync notification to be an attribute and not a type · d0ff5d22
      Sara Sharon 提交于
      Currently the sync notification is a type of notification. However, it
      is better fitted as an attribute of a notification, since there might
      be another message in the payload (delba for instance) that should be
      sent while control path is waiting for all queues to process.
      Signed-off-by: NSara Sharon <sara.sharon@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      d0ff5d22
    • S
      iwlwifi: mvm: implement driver RX queues sync command · 0636b938
      Sara Sharon 提交于
      mac80211 will call the driver whenever there is a race between
      RSS queues and control path that requires a processing of all
      pending frames in RSS queues.
      Implement that by utilizing the internal notification mechanism:
      queue a message to all queues. When the message is received on
      a queue it decrements the atomic counter. This guarantees that
      all pending frames in the RX queue were processed since the message
      is in order inside the queue.
      Signed-off-by: NSara Sharon <sara.sharon@intel.com>
      Signed-off-by: NLuca Coelho <luciano.coelho@intel.com>
      0636b938
  13. 12 4月, 2016 1 次提交
  14. 06 4月, 2016 1 次提交
  15. 30 3月, 2016 1 次提交
  16. 10 3月, 2016 1 次提交
  17. 28 2月, 2016 4 次提交
    • S
      iwlwifi: mvm: take care of padded packets · e29cc6b9
      Sara Sharon 提交于
      To ensure that the SNAP/TCP/IP headers are DW aligned, the firmware
      may add 2-byte pad at the end of the mac header - after the IV, before
      the SNAP.
      In that case the mpdu descriptor pad bit will be turned on.
      Driver should take it into consideration, and remove the padding before
      passing the packet to mac80211. Do that.
      Signed-off-by: NSara Sharon <sara.sharon@intel.com>
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      e29cc6b9
    • S
      iwlwifi: mvm: add RSS queues notification infrastructure · 94bb4481
      Sara Sharon 提交于
      In multi rx queue HW, without execessive locking, there is no sync
      between the ctrl path (default queue) and the rest of the rx queues.
      This might cause issues on certain situations. For example, in case
      a delBA was processed on a default queue but out of order packets
      still wait for processing on the other queue.
      
      The solution is to introduce internal messaging between the CTRL path
      and the other rx queues.
      The driver will send a message to the firmware, which will echo it to
      all the requested queues. The message will be in order inside the queue.
      This way we can avoid CTRL path and RSS queues races.
      
      Add support for this messaging mechanism. As the firmware is agnostic to
      the data sent, add internal representation of the data as well.
      Although currently only delBA flow will use it, the internal representation
      will enable generic use of this infrastructure for future uses.
      Next patch will utilize this messaging mechanism for the reorder buffer
      delBA flow.
      Signed-off-by: NSara Sharon <sara.sharon@intel.com>
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      94bb4481
    • S
      iwlwifi: mvm: add duplicate packet detection per rx queue · a571f5f6
      Sara Sharon 提交于
      Next hardware will direct TCP/UDP streams to different cores.
      Packets belonging to the same stream will be directed to the same
      core.
      The result is that duplicates will be always directed to the same
      rx queue were the first packet was received.
      This enabled parallelizing the duplicate packet detection across
      the different cores, without sharing data between the rx queues.
      Signed-off-by: NSara Sharon <sara.sharon@intel.com>
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      a571f5f6
    • S
      iwlwifi: mvm: update rx_status with mactime flag · 77fe7395
      Sara Sharon 提交于
      When forming IBSS, mac80211 scans in order to find an already
      existing cell to join.
      In case the scan does not find any existing cell a new IBSS
      cell is formed.
      When receiving the beacons of another IBSS cell we should
      merge if the other IBSS cell's TSF is higher than ours.
      However, currently iwlmvm does not set any timestamp flag in
      rx_status so there is no valid rx timestamp to compare the
      beacon's TSF to.
      The reason for that is that TSF as indicated by the firmware
      is at INA time, but up till now mac80211 expected the TSF at
      the beginning or end of the MPDU.
      Set the flag to the newly added RX_FLAG_MACTIME_PLCP_START flag.
      Signed-off-by: NSara Sharon <sara.sharon@intel.com>
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      77fe7395
  18. 01 2月, 2016 2 次提交
  19. 08 1月, 2016 1 次提交
    • J
      iwlwifi: mvm: check PN for CCMP/GCMP in the driver · f5e28eac
      Johannes Berg 提交于
      As we're working on multi-queue RX, we want to parallelise checking
      the PN in order to avoid having to serialise the RX processing.
      
      It may seem that doing parallel PN checking is insecure, but it turns
      out to be OK because queue assignment is done based on the data in the
      frame (IP/TCP) and thus cannot be manipulated by an attacker, since
      the data is encrypted and must first have been decrypted successfully.
      
      There are some corner cases, in particular when the peer starts using
      fragmentation which redirects the packet to the default queue. However
      this redirection is remembered (for the STA, per TID) and thus cannot
      be exploited by an attacker either.
      
      Leave checking on the default queue (queue 0) to mac80211, since we
      get fragmented packets there and those are subject to stricter checks
      during reassembly.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NSara Sharon <sara.sharon@intel.com>
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      f5e28eac