1. 05 Nov, 2012 1 commit
    • Johannes Berg's avatar
      mac80211: send deauth only with channel context · 86552017
      Johannes Berg authored
      When userspace asks to deauthenticate and we're just
      authenticated (or still authenticating) send a deauth
      frame instead of deleting the auth request.
      
      On the other hand, if we've just disassociated and
      therefore deleted all our state already, drop the
      deauth request because we no longer have a channel
      context to send it on.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      86552017
  2. 30 Oct, 2012 8 commits
    • Johannes Berg's avatar
      mac80211: use a counter for remain-on-channel cookie · 50febf6a
      Johannes Berg authored
      Instead of using the pointer which can be re-used
      fairly quickly due to allocator patterns and then
      makes debugging difficult, maintain a counter and
      use its value. Since it's a 64-bit value it can't
      really wrap, but catch that case anyway since it
      most likely points to a bug somewhere.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      50febf6a
    • Johannes Berg's avatar
      mac80211: combine status/drop reporting · 8a2fbedc
      Johannes Berg authored
      The TX status reporting is done for both the
      nl80211 report as well as the socket option.
      The socket option is also reported when an
      skb is dropped to guarantee that the copy in
      the IDR tree is freed and status is reported
      to userspace.
      
      However, when a frame is dropped, no nl80211
      status is reported. This can cause userspace
      to stop making progress while waiting for a
      status notification.
      
      Combine the nl80211 and socket option status
      reporting into a new function and call it in
      both places -- when the status comes in from
      the driver and when the skb is dropped.
      
      While at it, also simplify the code in the
      nl80211 portion a bit.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      8a2fbedc
    • Johannes Berg's avatar
      mac80211_hwsim: print per interface TX power · cbc668a7
      Johannes Berg authored
      Just for debugging, print the interface TX
      power whenever it changes.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      cbc668a7
    • Johannes Berg's avatar
      mac80211: handle TX power per virtual interface · 1ea6f9c0
      Johannes Berg authored
      Even before channel contexts/multi-channel, having a
      single global TX power limit was already problematic,
      in particular if two managed interfaces connected to
      two APs with different power constraints. The channel
      context introduction completely broke this though and
      in fact I had disabled TX power configuration there
      for drivers using channel contexts.
      
      Change everything to track TX power per interface so
      that different user settings and different channel
      maxima are treated correctly. Also continue tracking
      the global TX power though for compatibility with
      applications that attempt to configure the wiphy's
      TX power globally.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      1ea6f9c0
    • Johannes Berg's avatar
      cfg80211: allow per interface TX power setting · c8442118
      Johannes Berg authored
      The TX power setting is currently per wiphy (hardware
      device) but with multi-channel capabilities that doesn't
      make much sense any more.
      
      Allow drivers (and mac80211) to advertise support for
      per-interface TX power configuration. When the TX power
      is configured for the wiphy, the wdev will be NULL and
      the driver can still handle that, but when a wdev is
      given the TX power can be set only for that wdev now.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      c8442118
    • Johannes Berg's avatar
      nl80211: move "can set channel" check · 71fe96bf
      Johannes Berg authored
      Setting the wdev to NULL when the channel can't be
      set for that interface type (to treat the channel
      setting for the wiphy/monitor) currently works, but
      is confusing in the code if netdev/wdev aren't both
      set/unset in the same way. Move the check whether
      the channel can be set to where it's needed so that
      wdev and netdev are always both assigned or NULL.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      71fe96bf
    • Johannes Berg's avatar
      mac80211_hwsim: allow using channel contexts · e8261171
      Johannes Berg authored
      To use mac80211_hwsim for testing channel contexts it
      has to support them, and for that it has to support
      hw scan and hw-remain-on-channel.
      
      Since it's pure software, the off-channel activities
      are really not off-channel but listening and sending
      on a second channel. Also, the multi-channel isn't
      really doing TDM, it's just on both channels at the
      same time.
      
      For testing purposes, you can specify the number of
      concurrent channels with a module parameter, it is
      set to one by default. When set to two or more, the
      userspace API for wmediumd is disabled as it has no
      provisions for multi-channel yet.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      e8261171
    • Johannes Berg's avatar
  3. 29 Oct, 2012 31 commits