1. 16 3月, 2015 3 次提交
  2. 04 3月, 2015 10 次提交
  3. 03 3月, 2015 5 次提交
  4. 01 3月, 2015 4 次提交
    • J
      mac80211: remove TX latency measurement code · abfbc3af
      Johannes Berg 提交于
      Revert commit ad38bfc9 ("mac80211: Tx frame latency statistics")
      (along with some follow-up fixes).
      
      This code turned out not to be as useful in the current form as we
      thought, and we've internally hacked it up more, but that's not
      very suitable for upstream (for now), and we might just do that
      with tracing instead.
      
      Therefore, for now at least, remove this code. We might also need
      to use the skb->tstamp field for the TCP performance issue, which
      is more important than the debugging.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      abfbc3af
    • M
      nl/mac80211: allow zero plink timeout to disable STA expiration · 31f909a2
      Masashi Honma 提交于
      Both wpa_supplicant and mac80211 have and inactivity timer. By default
      wpa_supplicant will be timed out in 5 minutes and mac80211's it is 30
      minutes. If wpa_supplicant uses a longer timer than mac80211, it will
      get unexpected disconnection by mac80211.
      
      Using 0xffffffff instead as the configured value could solve this w/o
      changing the code, but due to integer overflow in the expression used
      this doesn't work. The expression is:
      
      (current jiffies) > (frame Rx jiffies + NL80211_MESHCONF_PLINK_TIMEOUT * 250)
      
      On 32bit system, the right side would overflow and be a very small
      value if NL80211_MESHCONF_PLINK_TIMEOUT is sufficiently large,
      causing unexpectedly early disconnections.
      
      Instead allow disabling the inactivity timer to avoid this situation,
      by passing the (previously invalid and useless) value 0.
      Signed-off-by: NMasashi Honma <masashi.honma@gmail.com>
      [reword/rewrap commit log]
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      31f909a2
    • J
      mac80211: iterate using station list in AP SMPS · 7d9bb2f0
      Johannes Berg 提交于
      When changing AP SMPS, we need to look up all the stations
      for this interface, so there's no reason to iterate over
      hash chains rather than doing the simpler iteration over
      the station list.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      7d9bb2f0
    • J
      mac80211: don't look up stations for multicast addresses · 9d6b106b
      Johannes Berg 提交于
      Since multicast addresses don't exist as stations, don't attempt
      to look them up in the hashtable on TX.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      9d6b106b
  5. 27 1月, 2015 5 次提交
  6. 23 1月, 2015 12 次提交
    • J
      mac80211: support beacon statistics · 225b8189
      Johannes Berg 提交于
      For drivers without beacon filtering, support beacon statistics
      entirely, i.e. report the number of beacons and average signal.
      
      For drivers with beacon filtering, give them the number of beacons
      received by mac80211 -- in case the device reports only the number
      of filtered beacons then driver doesn't have to count all beacons
      again as mac80211 already does.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      225b8189
    • J
      mac80211: fix per-TID RX-MSDU counter · 3d6dc343
      Johannes Berg 提交于
      In the case of non-QoS association, the counter was actually
      wrong. The right index isn't security_idx but seqno_idx, as
      security_idx will be 0 for data frames, while 16 is needed.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      3d6dc343
    • J
      mac80211: tdls: disentangle HT supported conditions · c5309ba7
      Johannes Berg 提交于
      These conditions are rather difficult to follow, for example
      because "!sta" only exists to not crash in the case that we
      don't have a station pointer (WLAN_TDLS_SETUP_REQUEST) in
      which the additional condition (peer supports HT) doesn't
      actually matter anyway.
      
      Cleaning this up only duplicates two lines of code but makes
      the rest far easier to read, so do that.
      
      As a side effect, smatch stops complaining about the lack of
      a sta pointer test after the !sta (since the !sta goes away)
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      c5309ba7
    • J
      mac80211: tdls: remove shadowing variable · d6f5cc09
      Johannes Berg 提交于
      There's no need to use another local 'sta' variable as the
      original (outer scope) one isn't needed any more and has
      become invalid anyway when exiting the RCU read section.
      
      Remove the inner scope one and along with it the useless NULL
      initialization.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      d6f5cc09
    • B
      Revert "mac80211: keep sending peer candidate events while in listen state" · 985e88b1
      Bob Copeland 提交于
      This reverts commit 2ae70efc.
      
      The new peer events that are generated by the change are causing problems
      with wpa_supplicant in userspace: wpa_s tries to restart SAE authentication
      with the peer when receiving the event, even though authentication may be in
      progress already, and it gets very confused.
      
      Revert back to the original operating mode, which is to only get events when
      there is no corresponding station entry.
      
      Cc: Nishikawa, Kenzoh <Kenzoh.Nishikawa@jp.sony.com>
      Cc: Masashi Honma <masashi.honma@gmail.com>
      Signed-off-by: NBob Copeland <me@bobcopeland.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      985e88b1
    • L
      mac80211: complete scan work immediately if quiesced or suspended · 332ff7fe
      Luciano Coelho 提交于
      It is possible that a deferred scan is queued after the queues are
      flushed in __ieee80211_suspend().  The deferred scan work may be
      scheduled by ROC or ieee80211_stop_poll().
      
      To make sure don't start a new scan while suspending, check whether
      we're quiescing or suspended and complete the scan immediately if
      that's the case.
      Signed-off-by: NLuciano Coelho <luciano.coelho@intel.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      332ff7fe
    • 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
    • M
      mac80211: properly set CCK flag in radiotap · 3a5c5e81
      Mathy Vanhoef 提交于
      Fix a regression introduced by commit a5e70697 ("mac80211: add radiotap flag
      and handling for 5/10 MHz") where the IEEE80211_CHAN_CCK channel type flag was
      incorrectly replaced by the IEEE80211_CHAN_OFDM flag. This commit fixes that by
      using the CCK flag again.
      
      Cc: stable@vger.kernel.org
      Fixes: a5e70697 ("mac80211: add radiotap flag and handling for 5/10 MHz")
      Signed-off-by: NMathy Vanhoef <vanhoefm@gmail.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      3a5c5e81
    • L
      mac80211: only roll back station states for WDS when suspending · 2af81d67
      Luciano Coelho 提交于
      In normal cases (i.e. when we are fully associated), cfg80211 takes
      care of removing all the stations before calling suspend in mac80211.
      
      But in the corner case when we suspend during authentication or
      association, mac80211 needs to roll back the station states.  But we
      shouldn't roll back the station states in the suspend function,
      because this is taken care of in other parts of the code, except for
      WDS interfaces.  For AP types of interfaces, cfg80211 takes care of
      disconnecting all stations before calling the driver's suspend code.
      For station interfaces, this is done in the quiesce code.
      
      For WDS interfaces we still need to do it here, so move the code into
      a new switch case for WDS.
      
      Cc: stable@kernel.org [3.15+]
      Signed-off-by: NLuciano Coelho <luciano.coelho@intel.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      2af81d67
    • 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
    • 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
  7. 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