1. 09 4月, 2014 3 次提交
    • L
      cfg80211/mac80211: refactor cfg80211_chandef_dfs_required() · 2beb6dab
      Luciano Coelho 提交于
      Some interface types don't require DFS (such as STATION, P2P_CLIENT
      etc).  In order to centralize these decisions, make
      cfg80211_chandef_dfs_required() take the iftype into consideration.
      Signed-off-by: NLuciano Coelho <luciano.coelho@intel.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      2beb6dab
    • I
      cfg80211: Enable GO operation on additional channels · 174e0cd2
      Ilan Peer 提交于
      Allow GO operation on a channel marked with IEEE80211_CHAN_GO_CONCURRENT
      iff there is an active station interface that is associated to
      an AP operating on the same channel in the 2 GHz band or the same UNII band
      (in the 5 GHz band). This relaxation is not allowed if the channel is
      marked with IEEE80211_CHAN_RADAR.
      
      Note that this is a permissive approach to the FCC definitions,
      that require a clear assessment that the device operating the AP is
      an authorized master, i.e., with radar detection and DFS capabilities.
      
      It is assumed that such restrictions are enforced by user space.
      Furthermore, it is assumed, that if the conditions that allowed for
      the operation of the GO on such a channel change, i.e., the station
      interface disconnected from the AP, it is the responsibility of user
      space to evacuate the GO from the channel.
      Signed-off-by: NIlan Peer <ilan.peer@intel.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      174e0cd2
    • M
      mac80211: use RCU_INIT_POINTER · 0c2bef46
      Monam Agarwal 提交于
      rcu_assign_pointer() ensures that the initialization of a structure is
      carried out before storing a pointer to that structure. However, in the
      case that NULL is assigned there's no structure to initialize so using
      RCU_INIT_POINTER instead is safe and more efficient.
      Signed-off-by: NMonam Agarwal <monamagarwal123@gmail.com>
      [squash eight tiny patches, rewrite commit log]
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      0c2bef46
  2. 20 3月, 2014 1 次提交
    • E
      cfg80211/mac80211: ignore signal if the frame was heard on wrong channel · 3afc2167
      Emmanuel Grumbach 提交于
      On 2.4Ghz band, the channels overlap since the delta
      between different channels is 5Mhz while the width of the
      receiver is 20Mhz (at least).
      
      This means that we can hear beacons or probe responses from
      adjacent channels. These frames will have a significant
      lower RSSI which will feed all kinds of logic with inaccurate
      data. An obvious example is the roaming algorithm that will
      think our AP is getting weak and will try to move to another
      AP.
      
      In order to avoid this, update the signal only if the frame
      has been heard on the same channel as the one advertised by
      the AP in its DS / HT IEs.
      We refrain from updating the values only if the AP is
      already in the BSS list so that we will still have a valid
      (but inaccurate) value if the AP was heard on an adjacent
      channel only.
      
      To achieve this, stop taking the channel from DS / HT IEs
      in mac80211. The DS / HT IEs is taken into account to
      discard the frame if it was received on a disabled channel.
      This can happen due to the same phenomenon: the frame is
      sent on channel 12, but heard on channel 11 while channel
      12 can be disabled on certain devices. Since this check
      is done in cfg80211, stop even checking this in mac80211.
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      [remove unused rx_freq variable]
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      3afc2167
  3. 21 2月, 2014 1 次提交
  4. 06 2月, 2014 1 次提交
    • S
      mac80211: Fix IBSS disconnect · d4c80d9d
      Sujith Manoharan 提交于
      Currently, when a station leaves an IBSS network, the
      corresponding BSS is not dropped from cfg80211 if there are
      other active stations in the network. But, the small
      window that is present when trying to determine a station's
      status based on IEEE80211_IBSS_MERGE_INTERVAL introduces
      a race.
      
      Instead of trying to keep the BSS, always remove it when
      leaving an IBSS network. There is not much benefit to retain
      the BSS entry since it will be added with a subsequent join
      operation.
      
      This fixes an issue where a dangling BSS entry causes ath9k
      to wait for a beacon indefinitely.
      
      Cc: <stable@vger.kernel.org>
      Reported-by: NSimon Wunderlich <sw@simonwunderlich.de>
      Signed-off-by: NSujith Manoharan <c_manoha@qca.qualcomm.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      d4c80d9d
  5. 05 2月, 2014 8 次提交
  6. 19 12月, 2013 1 次提交
    • J
      mac80211: fix iflist_mtx/mtx locking in radar detection · 34a3740d
      Johannes Berg 提交于
      The scan code creates an iflist_mtx -> mtx locking dependency,
      and a few other places, notably radar detection, were creating
      the opposite dependency, causing lockdep to complain. As scan
      and radar detection are mutually exclusive, the deadlock can't
      really happen in practice, but it's still bad form.
      
      A similar issue exists in the monitor mode code, but this is
      only used by channel-context drivers right now and those have
      to have hardware scan, so that also can't happen.
      
      Still, fix these issues by making some of the channel context
      code require the mtx to be held rather than acquiring it, thus
      allowing the monitor/radar callers to keep the iflist_mtx->mtx
      lock ordering.
      
      While at it, also fix access to the local->scanning variable
      in the radar code, and document that radar_detect_enabled is
      now properly protected by the mtx.
      
      All this would now introduce an ABBA deadlock between the DFS
      work cancelling and local->mtx, so change the locking there a
      bit to not need to use cancel_delayed_work_sync() but be able
      to just use cancel_delayed_work(). The work is also safely
      stopped/removed when the interface is stopped, so no extra
      changes are needed.
      Reported-by: NKalle Valo <kvalo@qca.qualcomm.com>
      Tested-by: NSimon Wunderlich <sw@simonwunderlich.de>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      34a3740d
  7. 16 12月, 2013 3 次提交
  8. 06 12月, 2013 1 次提交
  9. 02 12月, 2013 1 次提交
  10. 26 11月, 2013 1 次提交
  11. 28 10月, 2013 3 次提交
  12. 01 10月, 2013 1 次提交
  13. 26 9月, 2013 3 次提交
  14. 21 8月, 2013 2 次提交
  15. 16 8月, 2013 1 次提交
  16. 13 8月, 2013 1 次提交
  17. 01 8月, 2013 1 次提交
  18. 16 7月, 2013 7 次提交