1. 06 Jan, 2013 1 commit
  2. 30 Nov, 2012 1 commit
    • Johannes Berg's avatar
      cfg80211: fix BSS struct IE access races · 9caf0364
      Johannes Berg authored
      When a BSS struct is updated, the IEs are currently
      overwritten or freed. This can lead to races if some
      other CPU is accessing the BSS struct and using the
      IEs concurrently.
      
      Fix this by always allocating the IEs in a new struct
      that holds the data and length and protecting access
      to this new struct with RCU.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      9caf0364
  3. 27 Nov, 2012 2 commits
  4. 26 Nov, 2012 5 commits
    • Johannes Berg's avatar
      nl80211/cfg80211: add VHT MCS support · db9c64cf
      Johannes Berg authored
      Add support for reporting and calculating VHT MCSes.
      
      Note that I'm not completely sure that the bitrate
      calculations are correct, nor that they can't be
      simplified.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      db9c64cf
    • Johannes Berg's avatar
      nl80211/cfg80211: support VHT channel configuration · 3d9d1d66
      Johannes Berg authored
      Change nl80211 to support specifying a VHT (or HT)
      using the control channel frequency (as before) and
      new attributes for the channel width and first and
      second center frequency. The old channel type is of
      course still supported for HT.
      
      Also change the cfg80211 channel definition struct
      to support these by adding the relevant fields to
      it (and removing the _type field.)
      
      This also adds new helper functions:
       - cfg80211_chandef_create to create a channel def
         struct given the control channel and channel type,
       - cfg80211_chandef_identical to check if two channel
         definitions are identical
       - cfg80211_chandef_compatible to check if the given
         channel definitions are compatible, and return the
         wider of the two
      
      This isn't entirely complete, but that doesn't matter
      until we have a driver using it. In particular, it's
      missing
       - regulatory checks on the usable bandwidth (if that
         even makes sense)
       - regulatory TX power (database can't deal with it)
       - a proper channel compatibility calculation for the
         new channel types
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      3d9d1d66
    • Johannes Berg's avatar
      cfg80211: pass a channel definition struct · 683b6d3b
      Johannes Berg authored
      Instead of passing a channel pointer and channel type
      to all functions and driver methods, pass a new channel
      definition struct. Right now, this struct contains just
      the control channel and channel type, but for VHT this
      will change.
      
      Also, add a small inline cfg80211_get_chandef_type() so
      that drivers don't need to use the _type field of the
      new structure all the time, which will change.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      683b6d3b
    • Johannes Berg's avatar
      cfg80211: remove remain-on-channel channel type · 42d97a59
      Johannes Berg authored
      As mwifiex (and mac80211 in the software case) are the
      only drivers actually implementing remain-on-channel
      with channel type, userspace can't be relying on it.
      This is the case, as it's used only for P2P operations
      right now.
      
      Rather than adding a flag to tell userspace whether or
      not it can actually rely on it, simplify all the code
      by removing the ability to use different channel types.
      Leave only the validation of the attribute, so that if
      we extend it again later (with the needed capability
      flag), it can't break userspace sending invalid data.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      42d97a59
    • Arend van Spriel's avatar
      cfg80211: change function signature of cfg80211_get_p2p_attr() · c216e641
      Arend van Spriel authored
      The function cfg80211_get_p2p_attr() can fail and returns
      a negative error code. However, the return type is unsigned
      int. The largest positive number is determined by desired_len
      variable in the function, which is u16. So changing the return
      type to int to allow easy error checking. Also change the type
      for the attribute to enum for improved type checking.
      Signed-off-by: default avatarArend van Spriel <arend@broadcom.com>
      [fix indentation, don't use u8 attr variable]
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      c216e641
  5. 19 Nov, 2012 1 commit
    • Jouni Malinen's avatar
      cfg80211: Add TDLS event to allow drivers to request operations · 3475b094
      Jouni Malinen authored
      The NL80211_CMD_TDLS_OPER command was previously used only for userspace
      request for the kernel code to perform TDLS operations. However, there
      are also cases where the driver may need to request operations from
      userspace, e.g., when using security on the AP path. Add a new cfg80211
      function for generating a TDLS operation event for drivers to request a
      new link to be set up (NL80211_TDLS_SETUP) or an existing link to be
      torn down (NL80211_TDLS_TEARDOWN). Drivers can optionally use these
      events, e.g., based on noticing data traffic being sent to a peer
      station that is seen with good signal strength.
      Signed-off-by: default avatarJouni Malinen <jouni@qca.qualcomm.com>
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      3475b094
  6. 06 Nov, 2012 1 commit
    • Johannes Berg's avatar
      wireless: add utility function to get P2P attribute · 0ee45355
      Johannes Berg authored
      Parsing the P2P attributes can be tricky as their
      contents can be split across multiple (vendor) IEs.
      Thus, it's not possible to parse them like IEs (by
      returning a pointer to the data.) Instead, provide
      a function that copies the attribute data into a
      caller-provided buffer and returns the size needed
      (useful in case the buffer was too small.)
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      0ee45355
  7. 05 Nov, 2012 2 commits
  8. 30 Oct, 2012 1 commit
    • 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
  9. 26 Oct, 2012 1 commit
    • Johannes Berg's avatar
      mac80211: verify that skb data is present · 9b395bc3
      Johannes Berg authored
      A number of places in the mesh code don't check that
      the frame data is present and in the skb header when
      trying to access. Add those checks and the necessary
      pskb_may_pull() calls. This prevents accessing data
      that doesn't actually exist.
      
      To do this, export ieee80211_get_mesh_hdrlen() to be
      able to use it in mac80211.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      9b395bc3
  10. 18 Oct, 2012 2 commits
  11. 17 Oct, 2012 2 commits
  12. 15 Oct, 2012 1 commit
  13. 19 Sep, 2012 1 commit
  14. 18 Sep, 2012 2 commits
  15. 10 Sep, 2012 1 commit
  16. 05 Sep, 2012 1 commit
  17. 20 Aug, 2012 1 commit
    • Johannes Berg's avatar
      cfg80211: add P2P Device abstraction · 98104fde
      Johannes Berg authored
      In order to support using a different MAC address
      for the P2P Device address we must first have a
      P2P Device abstraction that can be assigned a MAC
      address.
      
      This abstraction will also be useful to support
      offloading P2P operations to the device, e.g.
      periodic listen for discoverability.
      
      Currently, the driver is responsible for assigning
      a MAC address to the P2P Device, but this could be
      changed by allowing a MAC address to be given to
      the NEW_INTERFACE command.
      
      As it has no associated netdev, a P2P Device can
      only be identified by its wdev identifier but the
      previous patches allowed using the wdev identifier
      in various APIs, e.g. remain-on-channel.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      98104fde
  18. 02 Aug, 2012 1 commit
  19. 17 Jul, 2012 1 commit
  20. 13 Jul, 2012 2 commits
    • Johannes Berg's avatar
      cfg80211: reduce monitor interface tracking · 4290cb4b
      Johannes Berg authored
      Revert commit b78e8cea
      ("cfg80211: track monitor channel") and remove the
      set_monitor_enabled() callback.
      
      Due to the tracking happening in NETDEV_PRE_UP, it had
      introduced bugs because the monitor interface callback
      would be called before the device was started. It looks
      like there's no way to fix this, and using NETDEV_PRE_UP
      is broken anyway (since there's no NETDEV_UP_FAIL), so
      remove all that code, track interfaces in NETDEV_UP and
      also stop tracking the monitor channel in cfg80211.
      
      This mostly reverts to before the tracking, except that
      we keep the interface count tracking so that setting the
      monitor channel can be rejected properly.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      4290cb4b
    • Johannes Berg's avatar
      cfg80211/mac80211: re-add get_channel operation · 5b7ccaf3
      Johannes Berg authored
      This essentially reverts commit 2e165b81 but
      introduces the get_channel operation with a new
      wireless_dev argument so that you can retrieve
      the channel per interface. This is necessary as
      even though we can track all interface channels
      (except monitor) we can't track the channel type
      used.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      5b7ccaf3
  21. 12 Jul, 2012 2 commits
  22. 09 Jul, 2012 2 commits
    • Johannes Berg's avatar
      cfg80211: use wdev in mgmt-tx/ROC APIs · 71bbc994
      Johannes Berg authored
      The management frame and remain-on-channel APIs will be
      needed in the P2P device abstraction, so move them over
      to the new wdev-based APIs. Userspace can still use both
      the interface index and wdev identifier for them so it's
      backward compatible, but for the P2P Device wdev it will
      be able to use the wdev identifier only.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      71bbc994
    • Johannes Berg's avatar
      nl80211: prepare for non-netdev wireless devs · 89a54e48
      Johannes Berg authored
      In order to support a P2P device abstraction and
      Bluetooth high-speed AMPs, we need to have a way
      to identify virtual interfaces that don't have a
      netdev associated.
      
      Do this by adding a NL80211_ATTR_WDEV attribute
      to identify a wdev which may or may not also be
      a netdev.
      
      To simplify things, use a 64-bit value with the
      high 32 bits being the wiphy index for this new
      wdev identifier in the nl80211 API.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      89a54e48
  23. 05 Jul, 2012 2 commits
  24. 02 Jul, 2012 1 commit
  25. 29 Jun, 2012 3 commits