1. 12 2月, 2014 2 次提交
  2. 05 2月, 2014 17 次提交
    • 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
    • J
      nl80211: make netlink attribute policies const · 94e860f1
      Johannes Berg 提交于
      There's no reason for netlink attribute policies to be
      __read_mostly, they can just be const.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      94e860f1
    • J
      nl80211: check channel switch validity better · 1ff79dfa
      Johannes Berg 提交于
      Before allowing userspace to initiate a channel switch, check
      that it's actually connected in some sense. Also use a more
      appropriate error code for the not connected case.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      1ff79dfa
    • I
      cfg80211: fix few minor issues in reg_process_hint() · 772f0389
      Ilan Peer 提交于
      Fix the following issues in reg_process_hint():
      
      1. Add verification that wiphy is valid before processing
         NL80211_REGDOMAIN_SET_BY_COUNTRY_IE.
      2. Free the request in case of invalid initiator.
      3. Remove WARN_ON check on reg_request->alpha2 as it is not a
         pointer.
      Signed-off-by: NIlan Peer <ilan.peer@intel.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      772f0389
    • J
      nl80211: add Guard Interval support for set_bitrate_mask · 0b9323f6
      Janusz Dziedzic 提交于
      Allow to force SGI, LGI.
      Mainly for test purpose.
      Signed-off-by: NJanusz Dziedzic <janusz.dziedzic@tieto.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      0b9323f6
    • J
      cfg80211: Clean up connect params and channel fetching · 664834de
      Jouni Malinen 提交于
      Addition of the frequency hints showed up couple of places in cfg80211
      where pointers could be marked const and a shared function could be used
      to fetch a valid channel.
      Signed-off-by: NJouni Malinen <j@w1.fi>
      [fix mwifiex]
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      664834de
    • J
      cfg80211: Advertise maximum associated STAs in AP mode · b43504cf
      Jouni Malinen 提交于
      This allows drivers to advertise the maximum number of associated
      stations they support in AP mode (including P2P GO). User space
      applications can use this for cleaner way of handling the limit (e.g.,
      hostapd rejecting IEEE 802.11 authentication without manual
      configuration of the limit) or to figure out what type of use cases can
      be executed with multiple devices before trying and failing.
      Signed-off-by: NJouni Malinen <j@w1.fi>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      b43504cf
    • J
      cfg80211: Allow BSS hint to be provided for connect · 1df4a510
      Jouni Malinen 提交于
      This clarifies the expected driver behavior on the older
      NL80211_ATTR_MAC and NL80211_ATTR_WIPHY_FREQ attributes and adds a new
      set of similar attributes with _HINT postfix to enable use of a
      recommendation of the initial BSS to choose. This can be helpful for
      some drivers that can avoid an additional full scan on connection
      request if the information is provided to them (user space tools like
      wpa_supplicant already has that information available based on earlier
      scans).
      
      In addition, this can be used to get more expected behavior for cases
      where a specific BSS should be picked first based on operations like
      Interworking network selection or WPS. These cases were already easily
      addressed with drivers that leave BSS selection to user space, but there
      was no convenient way to do this with drivers that take care of BSS
      selection internally without using the NL80211_ATTR_MAC which is not
      really desired since it is needed for other purposes to force the
      association to remain with the same BSS.
      Signed-off-by: NJouni Malinen <j@w1.fi>
      [add const, fix policy]
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      1df4a510
  3. 15 1月, 2014 1 次提交
  4. 14 1月, 2014 1 次提交
  5. 10 1月, 2014 1 次提交
  6. 09 1月, 2014 1 次提交
  7. 07 1月, 2014 1 次提交
  8. 06 1月, 2014 1 次提交
  9. 31 12月, 2013 1 次提交
  10. 19 12月, 2013 2 次提交
  11. 16 12月, 2013 2 次提交
  12. 06 12月, 2013 2 次提交
    • E
      cfg80211: don't "leak" uncompleted scans · 4a58e7c3
      Eliad Peller 提交于
      ___cfg80211_scan_done() can be called in some cases
      (e.g. on NETDEV_DOWN) before the low level driver
      notified scan completion (which is indicated by
      passing leak=true).
      
      Clearing rdev->scan_req in this case is buggy, as
      scan_done_wk might have already being queued/running
      (and can't be flushed as it takes rtnl()).
      
      If a new scan will be requested at this stage, the
      scan_done_wk will try freeing it (instead of the
      previous scan), and this will later result in
      a use after free.
      
      Simply remove the "leak" option, and replace it with
      a standard WARN_ON.
      
      An example backtrace after such crash:
      Unable to handle kernel paging request at virtual address fffffee5
      pgd = c0004000
      [fffffee5] *pgd=9fdf6821, *pte=00000000, *ppte=00000000
      Internal error: Oops: 17 [#1] SMP ARM
      PC is at cfg80211_scan_done+0x28/0xc4 [cfg80211]
      LR is at __ieee80211_scan_completed+0xe4/0x2dc [mac80211]
      [<bf0077b0>] (cfg80211_scan_done+0x28/0xc4 [cfg80211])
      [<bf0973d4>] (__ieee80211_scan_completed+0xe4/0x2dc [mac80211])
      [<bf0982cc>] (ieee80211_scan_work+0x94/0x4f0 [mac80211])
      [<c005fd10>] (process_one_work+0x1b0/0x4a8)
      [<c0060404>] (worker_thread+0x138/0x37c)
      [<c0066d70>] (kthread+0xa4/0xb0)
      Signed-off-by: NEliad Peller <eliad@wizery.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      4a58e7c3
    • B
      cfg80211: stop sched scan only when needed · 24d584d7
      Barak Bercovitz 提交于
      cfg80211_leave stops sched scan when any station vif
      is leaving. Add an explicit check and call it only
      when the relevant vif (the one we scan on) is leaving.
      Signed-off-by: NBarak Bercovitz <barak@wizery.com>
      [Eliad - changed the commit message a bit]
      Signed-off-by: NEliad Peller <eliad@wizery.com>
      [Johannes - add ASSERT_RTNL since that protects the pointer]
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      24d584d7
  13. 05 12月, 2013 3 次提交
    • J
      cfg80211: in bitrate_mask, rename mcs to ht_mcs · d1e33e65
      Janusz Dziedzic 提交于
      Rename NL80211_TXRATE_MCS to NL80211_TXRATE_HT and also
      rename mcs to ht_mcs in struct cfg80211_bitrate_mask.
      Signed-off-by: NJanusz Dziedzic <janusz.dziedzic@tieto.com>
      [reword commit message]
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      d1e33e65
    • J
      nl80211: allow setting bitrate mask back to default · b9243ab0
      Janusz Dziedzic 提交于
      Allow setting the bitrate masks back to default by
      omitting the NL80211_ATTR_TX_RATES attribute.
      Signed-off-by: NJanusz Dziedzic <janusz.dziedzic@tieto.com>
      [rephrase commit message]
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      b9243ab0
    • U
      cfg80211: fix WARN_ON for re-association to the expired BSS · 4c4d684a
      Ujjal Roy 提交于
      cfg80211 allows re-association in managed mode and if a user
      wants to re-associate to the same AP network after the time
      period of IEEE80211_SCAN_RESULT_EXPIRE, cfg80211 warns with
      the following message on receiving the connect result event.
      
      ------------[ cut here ]------------
      WARNING: CPU: 0 PID: 13984 at net/wireless/sme.c:658
               __cfg80211_connect_result+0x3a6/0x3e0 [cfg80211]()
      Call Trace:
       [<ffffffff81747a41>] dump_stack+0x46/0x58
       [<ffffffff81045847>] warn_slowpath_common+0x87/0xb0
       [<ffffffff81045885>] warn_slowpath_null+0x15/0x20
       [<ffffffffa05345f6>] __cfg80211_connect_result+0x3a6/0x3e0 [cfg80211]
       [<ffffffff8107168b>] ? update_rq_clock+0x2b/0x50
       [<ffffffff81078c01>] ? update_curr+0x1/0x160
       [<ffffffffa05133d2>] cfg80211_process_wdev_events+0xb2/0x1c0 [cfg80211]
       [<ffffffff81079303>] ? pick_next_task_fair+0x63/0x170
       [<ffffffffa0513518>] cfg80211_process_rdev_events+0x38/0x90 [cfg80211]
       [<ffffffffa050f03d>] cfg80211_event_work+0x1d/0x30 [cfg80211]
       [<ffffffff8105f21f>] process_one_work+0x17f/0x420
       [<ffffffff8105f90a>] worker_thread+0x11a/0x370
       [<ffffffff8105f7f0>] ? rescuer_thread+0x2f0/0x2f0
       [<ffffffff8106638b>] kthread+0xbb/0xc0
       [<ffffffff810662d0>] ? kthread_create_on_node+0x120/0x120
       [<ffffffff817574bc>] ret_from_fork+0x7c/0xb0
       [<ffffffff810662d0>] ? kthread_create_on_node+0x120/0x120
      ---[ end trace 61f3bddc9c4981f7 ]---
      
      The reason is that, in connect result event cfg80211 unholds
      the BSS to which the device is associated (and was held so
      far). So, for the event with status successful, when cfg80211
      wants to get that BSS from the device's BSS list it gets a
      NULL BSS because the BSS has been expired and unheld already.
      
      Fix it by reshuffling the code.
      Signed-off-by: NUjjal Roy <royujjal@gmail.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      4c4d684a
  14. 04 12月, 2013 1 次提交
  15. 03 12月, 2013 4 次提交