1. 10 Jan, 2014 5 commits
    • Johannes Berg's avatar
      mac80211: handle MMPDUs at EOSP correctly · b77cf4f8
      Johannes Berg authored
      If a uAPSD service period ends with an MMPDU, we currently just
      send that MMPDU, but it obviously won't get the EOSP bit set as
      it doesn't have a QoS header. This contradicts the standard, so
      add a QoS-nulldata frame after the MMPDU to properly terminate
      the service period with a frame that has EOSP set.
      
      Also fix a bug wrt. the TID for the MMPDU, it shouldn't be set
      to 0 unconditionally but use the actual TID that was assigned.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      b77cf4f8
    • Johannes Berg's avatar
      mac80211: reset TX info flags when frame will be reprocessed · 03c8c06f
      Johannes Berg authored
      The temporary TX info flags need to be cleared if the frame will
      be processed through the TX handlers again, otherwise it can get
      messed up. This fixes a bug that happened when an aggregation
      session was stopped while the station was sleeping - some frames
      might get transmitted marked as aggregation erroneously without
      this fix.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      03c8c06f
    • Johannes Berg's avatar
      mac80211: release multiple ACs in uAPSD, fix more-data bug · f9f760b4
      Johannes Berg authored
      When a response for PS-Poll or a uAPSD trigger frame is sent, the
      more-data bit should be set according to 802.11-2012 11.2.1.5 h),
      meaning that it should indicate more data on the relevant ACs
      (delivery-enabled or nondelivery-enabled for uAPSD or PS-Poll.)
      
      In, for example, the following scenario:
       * 1 frame on VO queue (either in driver or in mac80211)
       * at least 1 frame on VI queue (in the driver)
       * both VO/VI are delivery-enabled
       * uAPSD trigger frame received
      
      The more-data flag to the driver would not be set, even though
      it should be.
      
      While fixing this, I noticed that we should really release frames
      from multiple ACs where there's data buffered in the driver for
      the corresponding TIDs.
      
      To address all this, restructure the code a bit to consider all
      ACs if we only release driver frames or only buffered frames.
      This also addresses the more-data bug described above as now the
      TIDs will all be marked as released, so the driver will have to
      check the number of frames.
      
      While at it, clarify some code and comments and remove the found
      variable, replacing it with the appropriate sw/hw release check.
      Reported-by: default avatarEliad Peller <eliad@wizery.com>
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      f9f760b4
    • Johannes Berg's avatar
      mac80211: fix PS-Poll driver release TID · 0a1cb809
      Johannes Berg authored
      Using ffs() for the PS-Poll release TID is wrong, it will cause
      frames to be released in order 0 1 2 3 4 5 6 7 instead of the
      correct 7 6 5 4 3 0 2 1. Fix this by adding a new function that
      implements "highest priority TID" properly.
      Reported-by: default avatarEliad Peller <eliad@wizery.com>
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      0a1cb809
    • Avinash Patil's avatar
      ieee80211: add definition for TDLS wide band extended capability · 852c0153
      Avinash Patil authored
      Seventh bit of 8th byte of extended capabilities specifies wide
      bandwidth support for TDLS links. Add this definition to ieee80211.
      Signed-off-by: default avatarAvinash Patil <patila@marvell.com>
      Signed-off-by: default avatarBing Zhao <bzhao@marvell.com>
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      852c0153
  2. 09 Jan, 2014 2 commits
  3. 07 Jan, 2014 5 commits
  4. 06 Jan, 2014 9 commits
  5. 30 Dec, 2013 1 commit
  6. 19 Dec, 2013 7 commits
  7. 18 Dec, 2013 2 commits
  8. 16 Dec, 2013 9 commits