1. 23 1月, 2015 6 次提交
    • E
      mac80211: avoid races related to suspend flow · 4afaff17
      Emmanuel Grumbach 提交于
      When we go to suspend, there is complex set of states that
      avoids races. The quiescing variable is set whlie
      __ieee80211_suspend is running. Then suspended is set.
      The code makes sure there is no window without any of these
      flags.
      
      The problem is that workers can still be enqueued while we
      are quiescing. This leads to situations where the driver is
      already suspending and other flows like disassociation are
      handled by a worker.
      
      To fix this, we need to check quiescing and suspended flags
      in the worker itself and not only before enqueueing it.
      I also add here extensive documentation to ease the
      understanding of these complex issues.
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      4afaff17
    • E
      mac80211: synchronize_net() before flushing the queues · 14f2ae83
      Emmanuel Grumbach 提交于
      When mac80211 disconnects, it drops all the packets on the
      queues. This happens after the net stack has been notified
      that we have no link anymore (netif_carrier_off).
      netif_carrier_off ensures that no new packets are sent to
      xmit() callback, but we might have older packets in the
      middle of the Tx path. These packets will land in the
      driver's queues after the latter have been flushed.
      Synchronize_net() between netif_carrier_off and drv_flush()
      will fix this.
      
      Note that we can't call synchronize_net inside
      ieee80211_flush_queues since there are flows that call
      ieee80211_flush_queues and don't need synchronize_net()
      which is an expensive operation.
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      [reword comment to be more accurate]
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      14f2ae83
    • L
      nl80211: add an attribute to allow delaying the first scheduled scan cycle · 9c748934
      Luciano Coelho 提交于
      The userspace may want to delay the the first scheduled scan or
      net-detect cycle.  Add an optional attribute to the scheduled scan
      configuration to pass the delay to be (optionally) used by the driver.
      Signed-off-by: NLuciano Coelho <luciano.coelho@intel.com>
      [add the attribute to the policy to validate it]
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      9c748934
    • L
      mac80211: enable TPC through mac80211 stack · db82d8a9
      Lorenzo Bianconi 提交于
      Control per packet Transmit Power Control (TPC) in lower drivers
      according to TX power settings configured by the user. In particular TPC is
      enabled if value passed in enum nl80211_tx_power_setting is
      NL80211_TX_POWER_LIMITED (allow using less than specified from userspace),
      whereas TPC is disabled if nl80211_tx_power_setting is set to
      NL80211_TX_POWER_FIXED (use value configured from userspace)
      Signed-off-by: NLorenzo Bianconi <lorenzo.bianconi83@gmail.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      db82d8a9
    • V
      nl80211: Allow set network namespace by fd · 4b681c82
      Vadim Kochan 提交于
      Added new NL80211_ATTR_NETNS_FD which allows to
      set namespace via nl80211 by fd.
      Signed-off-by: NVadim Kochan <vadim4j@gmail.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      4b681c82
    • J
      mac80211: allow drivers to control software crypto · fa7e1fbc
      Johannes Berg 提交于
      Some drivers unfortunately cannot support software crypto, but
      mac80211 currently assumes that they do.
      
      This has the issue that if the hardware enabling fails for some
      reason, the software fallback is used, which won't work. This
      clearly isn't desirable, the error should be reported and the
      key setting refused.
      
      Support this in mac80211 by allowing drivers to set a new HW
      flag IEEE80211_HW_SW_CRYPTO_CONTROL, in which case mac80211 will
      only allow software fallback if the set_key() method returns 1.
      The driver will also need to advertise supported cipher suites
      so that mac80211 doesn't advertise any (future) software ciphers
      that the driver can't actually do.
      
      While at it, to make it easier to support this, refactor the
      ieee80211_init_cipher_suites() code.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      fa7e1fbc
  2. 22 1月, 2015 1 次提交
    • J
      mac80211: fix HW registration error paths · 54330bf6
      Johannes Berg 提交于
      Station info state is started in allocation, so should be
      destroyed on free (it's just a timer); rate control must
      be freed if anything afterwards fails to initialize.
      
      LED exit should be later, no need for locking there, but
      it needs to be done also when rate init failed.
      
      Also clean up the code by moving a label so the locking
      doesn't have to be done separately.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      54330bf6
  3. 20 1月, 2015 2 次提交
    • E
      mac80211: delete the assoc/auth timer upon suspend · c1e140bf
      Emmanuel Grumbach 提交于
      While suspending, we destroy the authentication /
      association that might be taking place. While doing so, we
      forgot to delete the timer which can be firing after
      local->suspended is already set, producing the warning below.
      
      Fix that by deleting the timer.
      
      [66722.825487] WARNING: CPU: 2 PID: 5612 at net/mac80211/util.c:755 ieee80211_can_queue_work.isra.18+0x32/0x40 [mac80211]()
      [66722.825487] queueing ieee80211 work while going to suspend
      [66722.825529] CPU: 2 PID: 5612 Comm: kworker/u16:69 Tainted: G        W  O  3.16.1+ #24
      [66722.825537] Workqueue: events_unbound async_run_entry_fn
      [66722.825545] Call Trace:
      [66722.825552]  <IRQ>  [<ffffffff817edbb2>] dump_stack+0x4d/0x66
      [66722.825556]  [<ffffffff81075cad>] warn_slowpath_common+0x7d/0xa0
      [66722.825572]  [<ffffffffa06b5b90>] ? ieee80211_sta_bcn_mon_timer+0x50/0x50 [mac80211]
      [66722.825573]  [<ffffffff81075d1c>] warn_slowpath_fmt+0x4c/0x50
      [66722.825586]  [<ffffffffa06977a2>] ieee80211_can_queue_work.isra.18+0x32/0x40 [mac80211]
      [66722.825598]  [<ffffffffa06977d5>] ieee80211_queue_work+0x25/0x50 [mac80211]
      [66722.825611]  [<ffffffffa06b5bac>] ieee80211_sta_timer+0x1c/0x20 [mac80211]
      [66722.825614]  [<ffffffff8108655a>] call_timer_fn+0x8a/0x300
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      c1e140bf
    • J
      Revert "wireless: Support of IFLA_INFO_KIND rtnl attribute" · 6e9f3fa4
      Johannes Berg 提交于
      This reverts commit ba1debdf.
      
      Oliver reported that it breaks network-manager, for some reason with
      this patch NM decides that the device isn't wireless but "generic"
      (ethernet), sees no carrier (as expected with wifi) and fails to do
      anything else with it.
      
      Revert this to unbreak userspace.
      Reported-by: NOliver Hartkopp <socketcan@hartkopp.net>
      Tested-by: NOliver Hartkopp <socketcan@hartkopp.net>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      6e9f3fa4
  4. 17 1月, 2015 1 次提交
  5. 16 1月, 2015 2 次提交
  6. 15 1月, 2015 2 次提交
  7. 14 1月, 2015 9 次提交
  8. 10 1月, 2015 1 次提交
  9. 09 1月, 2015 2 次提交
    • J
      mac80211: fix handling TIM IE when stations disconnect · 9b7a86f3
      Johannes Berg 提交于
      When a station disconnects with frames still pending, we clear
      the TIM bit, but too late - it's only cleared when the station
      is already removed from the driver, and thus the driver can get
      confused (and hwsim will loudly complain.)
      
      Fix this by clearing the TIM bit earlier, when the station has
      been unlinked but not removed from the driver yet. To do this,
      refactor the TIM recalculation to in that case ignore traffic
      and simply assume no pending traffic - this is correct for the
      disconnected station even though the frames haven't been freed
      yet at that point.
      
      This patch isn't needed for current drivers though as they don't
      check the station argument to the set_tim() operation and thus
      don't really run into the possible confusion.
      Reported-by: NJouni Malinen <j@w1.fi>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      9b7a86f3
    • J
      mac80211_hwsim: fix PS debugfs file locking · a809ca5e
      Johannes Berg 提交于
      The functions called within the iterators must be called with
      tasklets disabled, so use atomic iteration like the rest of
      the code and disable tasklets around the whole operation.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      a809ca5e
  10. 08 1月, 2015 11 次提交
  11. 07 1月, 2015 2 次提交
    • I
      mac80211: Re-fix accounting of the tailroom-needed counter · db12847c
      Ido Yariv 提交于
      When hw acceleration is enabled, the GENERATE_IV or PUT_IV_SPACE flags
      only require headroom space. Therefore, the tailroom-needed counter can
      safely be decremented for most drivers.
      
      The older incarnation of this patch (ca34e3b5) assumed that the above
      holds true for all drivers. As reported by Christopher Chavez and
      researched by Christian Lamparter and Larry Finger, this isn't a valid
      assumption for p54 and cw1200.
      
      Drivers that still require tailroom for ICV/MIC even when HW encryption
      is enabled can use IEEE80211_KEY_FLAG_RESERVE_TAILROOM to indicate it.
      Signed-off-by: NIdo Yariv <idox.yariv@intel.com>
      Cc: Christopher Chavez <chrischavez@gmx.us>
      Cc: Christian Lamparter <chunkeey@googlemail.com>
      Cc: Larry Finger <Larry.Finger@lwfinger.net>
      Cc: Solomon Peachy <pizza@shaftnet.org>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      db12847c
    • J
      Merge branch 'mac80211' into mac80211-next · 3a4b0c94
      Johannes Berg 提交于
      Merge mac80211.git to get some changes that would otherwise
      cause conflicts with new changes coming here.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      3a4b0c94
  12. 06 1月, 2015 1 次提交