1. 18 Dec, 2018 16 commits
  2. 05 Dec, 2018 5 commits
    • Emmanuel Grumbach's avatar
      mac80211: fix deauth TX when we disconnect · f6c7f03f
      Emmanuel Grumbach authored
      The iTXQs stop/wake queue mechanism involves a whole bunch
      of locks and this is probably why the call to
      ieee80211_wake_txqs is deferred to a tasklet when called from
      __ieee80211_wake_queue.
      
      Another advantage of that is that ieee80211_wake_txqs might
      call the wake_tx_queue() callback and then the driver may
      call mac80211 which will call it back in the same context.
      
      The bug I saw is that when we send a deauth frame as a
      station we do:
      
      flush(drop=1)
      tx deauth
      flush(drop=0)
      
      While we flush we stop the queues and wake them up
      immediately after we finished flushing. The problem here is
      that the tasklet that de-facto enables the queue may not have
      run until we send the deauth. Then the deauth frame is sent
      to the driver (which is surprising by itself), but the driver
      won't get anything useful from ieee80211_tx_dequeue because
      the queue is stopped (or more precisely because
      vif->txqs_stopped[0] is true).
      Then the deauth is not sent. Later on, the tasklet will run,
      but that'll be too late. We'll already have removed all the
      vif etc...
      
      Fix this by calling ieee80211_wake_txqs synchronously if we
      are not waking up the queues from the driver (we check the
      reason to determine that). This makes the code really
      convoluted because we may call ieee80211_wake_txqs from
      __ieee80211_wake_queue. The latter assumes that
      queue_stop_reason_lock has been taken by the caller and
      ieee80211_wake_txqs may release the lock to send the frames.
      Signed-off-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      f6c7f03f
    • Bob Copeland's avatar
      mac80211: rewrite Kconfig text for mesh · c8d10cbd
      Bob Copeland authored
      Lubomir Rintel recently pointed out a dead link for o11s.org, and
      repointed it to a still live, but also stale website.  As far as I
      know, no one is updating the content at open80211s.org.
      
      Since this Kconfig text was originally written, though, the 802.11s
      mesh drafts were approved and ultimately rolled into 802.11 proper.
      Meanwhile, the implementation has converged on the final standard,
      so we can lose all of the text here and provide something that's a
      little more helpful and accurate.
      Signed-off-by: default avatarBob Copeland <bobcopeland@fb.com>
      Reviewed-by: default avatarLubomir Rintel <lkundrak@v3.sk>
      Reviewed-by: default avatarSteve deRosier <derosier@cal-sierra.com>
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      c8d10cbd
    • Cody Schuffelen's avatar
      mac80211-next: rtnetlink wifi simulation device · c7cdba31
      Cody Schuffelen authored
      This device takes over an existing network device and produces a
      new one that appears like a wireless connection, returning enough canned
      responses to nl80211 to satisfy a standard connection manager. If
      necessary, it can also be set up one step removed from an existing
      network device, such as through a vlan/80211Q or macvlan connection to
      not disrupt the existing network interface.
      
      To use it to wrap a bare ethernet connection:
      
      ip link add link eth0 name wlan0 type virt_wifi
      
      You may have to rename or otherwise hide the eth0 from your connection
      manager, as the original network link will become unusuable and only
      the wireless wrapper will be functional. This can also be combined with
      vlan or macvlan links on top of eth0 to share the network between
      distinct links, but that requires support outside the machine for
      accepting vlan-tagged packets or packets from multiple MAC addresses.
      
      This is being used for Google's Remote Android Virtual Device project,
      which runs Android devices in virtual machines. The standard network
      interfaces provided inside the virtual machines are all ethernet.
      However, Android is not interested in ethernet devices and would rather
      connect to a wireless interface. This patch allows the virtual machine
      guest to treat one of its network connections as wireless rather than
      ethernet, satisfying Android's network connection requirements.
      
      We believe this is a generally useful driver for simulating wireless
      network connections in other environments where a wireless connection is
      desired by some userspace process but is not available.
      
      This is distinct from other testing efforts such as mac80211_hwsim by
      being a cfg80211 device instead of mac80211 device, allowing straight
      pass-through on the data plane instead of forcing packaging of ethernet
      data into mac80211 frames.
      Signed-off-by: default avatarA. Cody Schuffelen <schuffelen@google.com>
      Acked-by: default avatarAlistair Strachan <astrachan@google.com>
      Acked-by: default avatarGreg Hartman <ghartman@google.com>
      Acked-by: default avatarTristan Muntsinger <muntsinger@google.com>
      [make it a tristate]
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      c7cdba31
    • Stephen Hemminger's avatar
      uapi/nl80211: fix spelling errors · cc1068eb
      Stephen Hemminger authored
      Spelling errors found by codespell
      Signed-off-by: default avatarStephen Hemminger <stephen@networkplumber.org>
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      cc1068eb
    • James Prestwood's avatar
      mac80211_hwsim: fixes kernel crash during mac80211_hwsim init · 082b12d4
      James Prestwood authored
      Creating radios during startup follows a different code path than
      HWSIM_CMD_NEW_RADIO. The problem was that param.iftypes was not
      being set to the deafult before calling mac80211_hwsim_new_radio
      Signed-off-by: default avatarJames Prestwood <james.prestwood@linux.intel.com>
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      082b12d4
  3. 09 Nov, 2018 19 commits