1. 08 5月, 2010 3 次提交
    • J
      mac80211: improve HT channel handling · 0aaffa9b
      Johannes Berg 提交于
      Currently, when one interface switches HT mode,
      all others will follow along. This is clearly
      undesirable, since the new one might switch to
      no-HT while another one is operating in HT.
      
      Address this issue by keeping track of the HT
      mode per interface, and allowing only changes
      that are compatible, i.e. switching into HT40+
      is not possible when another interface is in
      HT40-, in that case the second one needs to
      fall back to HT20.
      
      Also, to allow drivers to know what's going on,
      store the per-interface HT mode (channel type)
      in the virtual interface's bss_conf.
      Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      0aaffa9b
    • J
      cfg80211/mac80211: better channel handling · f444de05
      Johannes Berg 提交于
      Currently (all tested with hwsim) you can do stupid
      things like setting up an AP on a certain channel,
      then adding another virtual interface and making
      that associate on another channel -- this will make
      the beaconing to move channel but obviously without
      the necessary IEs data update.
      
      In order to improve this situation, first make the
      configuration APIs (cfg80211 and nl80211) aware of
      multi-channel operation -- we'll eventually need
      that in the future anyway. There's one userland API
      change and one API addition. The API change is that
      now SET_WIPHY must be called with virtual interface
      index rather than only wiphy index in order to take
      effect for that interface -- luckily all current
      users (hostapd) do that. For monitor interfaces, the
      old setting is preserved, but monitors are always
      slaved to other devices anyway so no guarantees.
      
      The second userland API change is the introduction
      of a per virtual interface SET_CHANNEL command, that
      hostapd should use going forward to make it easier
      to understand what's going on (it can automatically
      detect a kernel with this command).
      
      Other than mac80211, no existing cfg80211 drivers
      are affected by this change because they only allow
      a single virtual interface.
      
      mac80211, however, now needs to be aware that the
      channel settings are per interface now, and needs
      to disallow (for now) real multi-channel operation,
      which is another important part of this patch.
      
      One of the immediate benefits is that you can now
      start hostapd to operate on a hardware that already
      has a connection on another virtual interface, as
      long as you specify the same channel.
      
      Note that two things are left unhandled (this is an
      improvement -- not a complete fix):
      
       * different HT/no-HT modes
      
         currently you could start an HT AP and then
         connect to a non-HT network on the same channel
         which would configure the hardware for no HT;
         that can be fixed fairly easily
      
       * CSA
      
         An AP we're connected to on a virtual interface
         might indicate switching channels, and in that
         case we would follow it, regardless of how many
         other interfaces are operating; this requires
         more effort to fix but is pretty rare after all
      Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      f444de05
    • J
      mac80211: fix BSS info reconfiguration · ac8dd506
      Johannes Berg 提交于
      When reconfiguring an interface due to a previous
      hardware restart, mac80211 will currently include
      the new IBSS flag on non-IBSS interfaces which may
      confuse drivers.
      
      Instead of doing the ~0 trick, simply spell out
      which things are going to be reconfigured.
      Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      ac8dd506
  2. 06 5月, 2010 1 次提交
  3. 04 5月, 2010 3 次提交
  4. 01 5月, 2010 2 次提交
  5. 29 4月, 2010 3 次提交
  6. 28 4月, 2010 7 次提交
  7. 27 4月, 2010 1 次提交
    • J
      mac80211: Fix sta->last_tx_rate setting with no-op rate control devices · 0c869808
      Juuso Oikarinen 提交于
      The sta->last_tx_rate is traditionally updated just before transmitting a
      frame based on information from the rate control algorithm. However, for
      hardware drivers with IEEE80211_HW_HAS_RATE_CONTROL this is not performed,
      as the rate control algorithm is not executed, and because the used rate is
      not known before the frame has actually been transmitted.
      
      This causes atleast a fixed 1Mb/s to be reported to user space. A few other
      instances of code also rely on this information.
      
      Fix this by setting the sta->last_tx_rate in tx_status handling. There, look
      for last rates entry set by the driver, and use that as value for
      sta->last_tx_rate.
      Signed-off-by: NJuuso Oikarinen <juuso.oikarinen@nokia.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      0c869808
  8. 20 4月, 2010 8 次提交
  9. 17 4月, 2010 1 次提交
    • N
      cfg80211: Avoid sending IWEVASSOCREQIE and IWEVASSOCRESPIE events with NULL event body · 7834704b
      Nishant Sarmukadam 提交于
      In a scenario, where a cfg80211 driver (station mode) does not send assoc request
      and assoc response IEs in cfg80211_connect_result after a successful association
      to an AP, cfg80211 sends IWEVASSOCREQIE and IWEVASSOCRESPIE to the user space
      application with NULL data. This can cause an issue at the event recipient.
      
      An example of this is when cfg80211 sends IWEVASSOCREQIE and IWEVASSOCRESPIE
      events with NULL event body to wpa_supplicant. The wpa_supplicant overwrites
      the assoc request and assoc response IEs for this station with NULL data.
      If the association is WPA/WPA2, the wpa_supplicant is not able to generate
      EAPOL handshake messages, since the IEs are NULL.
      
      With the patch, req_ie and resp_ie will be NULL by avoiding the
      assignment if the driver has not sent the IEs to cfg80211. The event sending
      code sends the events only if resp_ie and req_ie are not NULL. This
      will ensure that the events are not sent with NULL event body.
      Signed-off-by: NNishant Sarmukadam <nishants@marvell.com>
      Reviewed-by: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      7834704b
  10. 10 4月, 2010 3 次提交
  11. 09 4月, 2010 2 次提交
  12. 08 4月, 2010 6 次提交