1. 09 4月, 2014 5 次提交
  2. 20 3月, 2014 4 次提交
  3. 05 3月, 2014 1 次提交
  4. 03 3月, 2014 2 次提交
  5. 26 2月, 2014 3 次提交
  6. 25 2月, 2014 3 次提交
  7. 21 2月, 2014 3 次提交
  8. 20 2月, 2014 1 次提交
    • S
      cfg80211: Pass TDLS peer capability information in tdls_mgmt · df942e7b
      Sunil Dutt Undekari 提交于
      While framing the TDLS Setup Confirmation frame, the driver needs to
      know if the TDLS peer is VHT/HT/WMM capable and thus shall construct
      the VHT/HT operation / WMM parameter elements accordingly. Supplicant
      determines if the TDLS peer is VHT/HT/WMM capable based on the
      presence of the respective IEs in the received TDLS Setup Response frame.
      
      The host driver should not need to parse the received TDLS Response
      frame and thus, should be able to rely on the supplicant to indicate
      the capability of the peer through additional flags while transmitting
      the TDLS Setup Confirmation frame through tdls_mgmt operations.
      Signed-off-by: NSunil Dutt Undekari <usdutt@qti.qualcomm.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      df942e7b
  9. 19 2月, 2014 1 次提交
  10. 14 2月, 2014 1 次提交
  11. 12 2月, 2014 2 次提交
  12. 06 2月, 2014 4 次提交
    • J
      cfg80211: send scan results from work queue · f9d15d16
      Johannes Berg 提交于
      Due to the previous commit, when a scan finishes, it is in theory
      possible to hit the following sequence:
       1. interface starts being removed
       2. scan is cancelled by driver and cfg80211 is notified
       3. scan done work is scheduled
       4. interface is removed completely, rdev->scan_req is freed,
          event sent to userspace but scan done work remains pending
       5. new scan is requested on another virtual interface
       6. scan done work runs, freeing the still-running scan
      
      To fix this situation, hang on to the scan done message and block
      new scans while that is the case, and only send the message from
      the work function, regardless of whether the scan_req is already
      freed from interface removal. This makes step 5 above impossible
      and changes step 6 to be
       5. scan done work runs, sending the scan done message
      
      As this can't work for wext, so we send the message immediately,
      but this shouldn't be an issue since we still return -EBUSY.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      f9d15d16
    • J
      cfg80211: fix scan done race · a617302c
      Johannes Berg 提交于
      When an interface/wdev is removed, any ongoing scan should be
      cancelled by the driver. This will make it call cfg80211, which
      only queues a work struct. If interface/wdev removal is quick
      enough, this can leave the scan request pending and processed
      only after the interface is gone, causing a use-after-free.
      
      Fix this by making sure the scan request is not pending after
      the interface is destroyed. We can't flush or cancel the work
      item due to locking concerns, but when it'll run it shouldn't
      find anything to do. This leaves a potential issue, if a new
      scan gets requested before the work runs, it prematurely stops
      the running scan, potentially causing another crash. I'll fix
      that in the next patch.
      
      This was particularly observed with P2P_DEVICE wdevs, likely
      because freeing them is quicker than freeing netdevs.
      Reported-by: NAndrei Otcheretianski <andrei.otcheretianski@intel.com>
      Fixes: 4a58e7c3 ("cfg80211: don't "leak" uncompleted scans")
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      a617302c
    • J
      cfg80211: re-enable 5/10 MHz support · 5a6aa705
      Johannes Berg 提交于
      Unfortunately I forgot this during the merge window, but the
      patch seems small enough to go in as a fix. The userspace API
      bug that was the reason for disabling it has long been fixed.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      5a6aa705
    • P
      nl80211: Reset split_start when netlink skb is exhausted · f12cb289
      Pontus Fuchs 提交于
      When the netlink skb is exhausted split_start is left set. In the
      subsequent retry, with a larger buffer, the dump is continued from the
      failing point instead of from the beginning.
      
      This was causing my rt28xx based USB dongle to now show up when
      running "iw list" with an old iw version without split dump support.
      
      Cc: stable@vger.kernel.org
      Fixes: 3713b4e3 ("nl80211: allow splitting wiphy information in dumps")
      Signed-off-by: NPontus Fuchs <pontus.fuchs@gmail.com>
      [avoid the entire workaround when state->split is set]
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      f12cb289
  13. 05 2月, 2014 10 次提交
    • J
      cfg80211: regulatory introduce maximum bandwidth calculation · 97524820
      Janusz Dziedzic 提交于
      In case we will get regulatory request with rule
      where max_bandwidth_khz is set to 0 handle this
      case as a special one.
      
      If max_bandwidth_khz == 0 we should calculate maximum
      available bandwidth base on all frequency contiguous rules.
      In case we need auto calculation we just have to set:
      
      country PL: DFS-ETSI
              (2402 - 2482 @ 40), (N/A, 20)
              (5170 - 5250 @ AUTO), (N/A, 20)
              (5250 - 5330 @ AUTO), (N/A, 20), DFS
              (5490 - 5710 @ 80), (N/A, 27), DFS
      
      This mean we will calculate maximum bw for rules where
      AUTO (N/A) were set, 160MHz (5330 - 5170) in example above.
      So we will get:
              (5170 - 5250 @ 160), (N/A, 20)
              (5250 - 5330 @ 160), (N/A, 20), DFS
      
      In other case:
      country FR: DFS-ETSI
              (2402 - 2482 @ 40), (N/A, 20)
              (5170 - 5250 @ AUTO), (N/A, 20)
              (5250 - 5330 @ 80), (N/A, 20), DFS
              (5490 - 5710 @ 80), (N/A, 27), DFS
      
      We will get 80MHz (5250 - 5170):
              (5170 - 5250 @ 80), (N/A, 20)
              (5250 - 5330 @ 80), (N/A, 20), DFS
      
      Base on this calculations we will set correct channel
      bandwidth flags (eg. IEEE80211_CHAN_NO_80MHZ).
      
      We don't need any changes in CRDA or internal regulatory.
      Signed-off-by: NJanusz Dziedzic <janusz.dziedzic@tieto.com>
      [extend nl80211 description a bit, fix typo]
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      97524820
    • M
      cfg80211: consider existing DFS interfaces · 9e0e2961
      Michal Kazior 提交于
      It was possible to break interface combinations in
      the following way:
      
       combo 1: iftype = AP, num_ifaces = 2, num_chans = 2,
       combo 2: iftype = AP, num_ifaces = 1, num_chans = 1, radar = HT20
      
      With the above interface combinations it was
      possible to:
      
       step 1. start AP on DFS channel by matching combo 2
       step 2. start AP on non-DFS channel by matching combo 1
      
      This was possible beacuse (step 2) did not consider
      if other interfaces require radar detection.
      
      The patch changes how cfg80211 tracks channels -
      instead of channel itself now a complete chandef
      is stored.
      Signed-off-by: NMichal Kazior <michal.kazior@tieto.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      9e0e2961
    • A
      cfg80211: fix channel configuration in IBSS join · fe94f3a4
      Antonio Quartulli 提交于
      When receiving an IBSS_JOINED event select the BSS object
      based on the {bssid, channel} couple rather than the bssid
      only.
      With the current approach if another cell having the same
      BSSID (but using a different channel) exists then cfg80211
      picks up the wrong BSS object.
      The result is a mismatching channel configuration between
      cfg80211 and the driver, that can lead to any sort of
      problem.
      
      The issue can be triggered by having an IBSS sitting on
      given channel and then asking the driver to create a new
      cell using the same BSSID but with a different frequency.
      By passing the channel to cfg80211_get_bss() we can solve
      this ambiguity and retrieve/create the correct BSS object.
      All the users of cfg80211_ibss_joined() have been changed
      accordingly.
      
      Moreover WARN when cfg80211_ibss_joined() gets a NULL
      channel as argument and remove a bogus call of the same
      function in ath6kl (it does not make sense to call
      cfg80211_ibss_joined() with a zero BSSID on ibss-leave).
      
      Cc: Kalle Valo <kvalo@qca.qualcomm.com>
      Cc: Arend van Spriel <arend@broadcom.com>
      Cc: Bing Zhao <bzhao@marvell.com>
      Cc: Jussi Kivilinna <jussi.kivilinna@iki.fi>
      Cc: libertas-dev@lists.infradead.org
      Acked-by: NKalle Valo <kvalo@qca.qualcomm.com>
      Signed-off-by: NAntonio Quartulli <antonio@open-mesh.com>
      [minor code cleanup in ath6kl]
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      fe94f3a4
    • S
      net: wireless: move regulatory timeout work to power efficient workqueue · 845f3351
      Shaibal Dutta 提交于
      For better use of CPU idle time, allow the scheduler to select the CPU
      on which the timeout work of regulatory settings would be executed.
      This extends CPU idle residency time and saves power.
      
      This functionality is enabled when CONFIG_WQ_POWER_EFFICIENT is selected.
      
      Cc: "John W. Linville" <linville@tuxdriver.com>
      Cc: "David S. Miller" <davem@davemloft.net>
      Signed-off-by: NShaibal Dutta <shaibal.dutta@broadcom.com>
      [zoran.markovic@linaro.org: Rebased to latest kernel. Added commit message.]
      Signed-off-by: NZoran Markovic <zoran.markovic@linaro.org>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      845f3351
    • J
      cfg80211: add helper reg_get_regdomain() function · e3961af1
      Janusz Dziedzic 提交于
      Add helper function that will return regdomain.
      Follow the driver's regulatory domain, if present,
      unless a country IE has been processed or a user
      wants to help compliance further.
      Signed-off-by: NJanusz Dziedzic <janusz.dziedzi@tieto.com>
      [remove useless reg variable]
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      e3961af1
    • J
      cfg80211: set preset_chandef after channel switch · 96f55f12
      Janusz Dziedzic 提交于
      Set preset_chandef in channel switch notification.
      In other case we will have old preset_chandef.
      Signed-off-by: NJanusz Dziedzic <janusz.dziedzic@tieto.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      96f55f12
    • J
      nl80211: fix scheduled scan RSSI matchset attribute confusion · ea73cbce
      Johannes Berg 提交于
      The scheduled scan matchsets were intended to be a list of filters,
      with the found BSS having to pass at least one of them to be passed
      to the host. When the RSSI attribute was added, however, this was
      broken and currently wpa_supplicant adds that attribute in its own
      matchset; however, it doesn't intend that to mean that anything
      that passes the RSSI filter should be passed to the host, instead
      it wants it to mean that everything needs to also have higher RSSI.
      
      This is semantically problematic because we have a list of filters
      like [ SSID1, SSID2, SSID3, RSSI ] with no real indication which
      one should be OR'ed and which one AND'ed.
      
      To fix this, move the RSSI filter attribute into each matchset. As
      we need to stay backward compatible, treat a matchset with only the
      RSSI attribute as a "default RSSI filter" for all other matchsets,
      but only if there are other matchsets (an RSSI-only matchset by
      itself is still desirable.)
      
      To make driver implementation easier, keep a global min_rssi_thold
      for the entire request as well. The only affected driver is ath6kl.
      
      I found this when I looked into the code after Raja Mani submitted
      a patch fixing the n_match_sets calculation to disregard the RSSI,
      but that patch didn't address the semantic issue.
      Reported-by: NRaja Mani <rmani@qti.qualcomm.com>
      Acked-by: NLuciano Coelho <luciano.coelho@intel.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      ea73cbce
    • J
      nl80211: send event when AP operation is stopped · 348baf0e
      Johannes Berg 提交于
      There are a few cases, e.g. suspend, where an AP interface is
      stopped by the kernel rather than by userspace request, most
      commonly when suspending. To let userspace know about this,
      send the NL80211_CMD_STOP_AP command as an event every time
      an AP interface is stopped. This also happens when userspace
      did in fact request the AP stop, but that's not a problem.
      
      For full-MAC drivers this may need to be extended to also
      cover cases where the device stopped the AP operation for
      some reason, this a bit more complicated because then all
      cfg80211 state also needs to be reset; such API is not part
      of this patch.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      348baf0e
    • J
      nl80211: check nla_parse() return values · ae811e21
      Johannes Berg 提交于
      If there's a policy, then nla_parse() return values must be
      checked, otherwise the policy is useless and there's nothing
      that ensures the attributes are actually what we expect them
      to be.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      ae811e21
    • J
      cfg80211: make device_type const · f1e3d556
      Johannes Berg 提交于
      Instances of struct device_type are never modified, make them const.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      f1e3d556