1. 09 7月, 2008 1 次提交
  2. 28 6月, 2008 1 次提交
    • I
      rt2x00: Fix lock dependency errror · 980dfcb9
      Ivo van Doorn 提交于
      This fixes a circular locking dependency in the workqueue handling.
      The interface work task uses the mac80211 function
      ieee80211_iterate_active_interfaces() which grabs the RTNL lock.
      
      However when the interface is brough down, this happens under the RTNL
      lock as well, this causes problems because mac80211 will flush the workqueue
      during the ifdown event. This causes mac80211 to wait until the driver has
      completed all work which can't finish because it is waiting on the RTNL lock.
      
      This is fixed by moving rt2x00 workqueue tasks on a different workqueue,
      this workqueue can be flushed when the ieee80211_hw structure is removed
      by the driver (when the driver is unloaded) which does not happen under the
      RTNL lock.
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      980dfcb9
  3. 15 6月, 2008 4 次提交
  4. 29 5月, 2008 1 次提交
  5. 22 5月, 2008 3 次提交
  6. 08 5月, 2008 5 次提交
  7. 02 4月, 2008 3 次提交
  8. 26 3月, 2008 1 次提交
    • I
      rt2x00: Fix in_atomic() usage · 3a643d24
      Ivo van Doorn 提交于
      rt73usb and rt2500usb used in_atomic to determine
      if a configuration step should be rescheduled or not.
      Since in_atomic() is not a valid method to determine
      if sleeping is allowed we should fix the way this is handled
      by adding a new flag to rt2x00.
      
      In addition mark LED class support for the drivers broken
      since that also uses the broken in_atomic() method but
      so far no solution exists to have LED triggers work only
      in scheduled context.
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      3a643d24
  9. 14 3月, 2008 2 次提交
  10. 01 3月, 2008 8 次提交
    • I
      rt2x00: Don't report driver generated frames to tx_status() · baf26a7e
      Ivo van Doorn 提交于
      This adds a new flag for the skb_frame_desc structure which is used to tag
      rts/cts frames that are generated by the driver. Through the tag we can
      recognize frames we have generated ourselves, so we don't report their tx
      status to mac80211.
      
      This patch is based on the original patch by
      Mattias Nissler <mattias.nissler@gmx.de>.
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      baf26a7e
    • I
      rt2x00: Fix scheduling while atomic errors in usb drivers · e44df929
      Ivo van Doorn 提交于
      Call rt2x00_config_intf() outside of the spinlock context since
      the call will sleep for USB drivers. By using the ieee80211_if_conf
      values as arguments we make keep access tp rt2x00_intf thread safe
      even without the lock.
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      e44df929
    • I
      rt2x00: Move beacon and atim queue defines into rt2x00 · 5957da4c
      Ivo van Doorn 提交于
      As Johannes Berg indicated the BEACON and AFTER_BEACON
      queue indeces in mac80211 should be removed because they
      are too hardware specific. This patch adds the queue index
      defines into rt2x00queue.h and removes the dependency of
      the defines inside mac80211.h.
      
      Also move rt2x00pci_beacon_update() into rt2400pci and
      rt2500pci individually since it is no longer a generic
      function since rt61 and rt2800 no longer use that.
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      5957da4c
    • I
      rt2x00: Add per-interface structure · 6bb40dd1
      Ivo van Doorn 提交于
      Rework the interface handling. Delete the interface structure
      and replace it with a per-interface structure. This changes the
      way rt2x00 handles the active interface drastically.
      
      Copy ieee80211_bss_conf to the this rt2x00_intf structure during
      the bss_info_changed() callback function. This will allow us to
      reference it later, and removes the requirement for the device flag
      SHORT_PREAMBLE flag which is interface specific.
      
      Drivers receive the option to give the maximum number of virtual
      interfaces the device can handle. Virtual interface support:
      rt2400pci: 1 sta or 1 ap, * monitor interfaces
      rt2500pci: 1 sta or 1 ap, * monitor interfaces
      rt2500usb: 1 sta or 1 ap, * monitor interfaces
      rt61pci: 1 sta or 4 ap, * monitor interfaces
      rt73usb: 1 sta or 4 ap, * monitor interfaces
      
      At the moment none of the drivers support AP and STA interfaces
      simultaneously, this is a hardware limitation so future support
      will be very unlikely.
      
      Each interface structure receives its dedicated beacon entry,
      with this we can easily work with beaconing while multiple master
      mode interfaces are currently active.
      
      The configuration handlers for the MAC, BSSID and type are
      often called together since they all belong to the interface
      configuration. Merge the 3 configuration calls and cleanup
      the API between rt2x00lib and the drivers. While we are cleaning
      up the interface configuration anyway, we might as well clean up
      the configuration handler as well.
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      6bb40dd1
    • I
      rt2x00: Enable master and adhoc mode again · adfdbb79
      Ivo van Doorn 提交于
      This will enable the creation of master mode and adhoc
      interfaces again. This does not mean the issues surrounding
      beaconing have been resolved, but this will make testing
      easier and perhaps we can discover which cards are actually
      working and which ones not.
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      adfdbb79
    • I
      rt2x00: Fix tx parameter initialization · 3b3618ad
      Ivo van Doorn 提交于
      Check if the aifs, cw_min and cw_max are above 0
      when determining if the default should be used.
      Tor aifs a negative number is used to determine
      if the default should be used or not.
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      3b3618ad
    • I
      rt2x00: Queue handling overhaul · 181d6902
      Ivo van Doorn 提交于
      This introduces a big queue handling overhaul, this also
      renames "ring" to "queues".
      
      Move queue handling into rt2x00queue.c and the matching header,
      use Kerneldoc to improve rt2x00 library documentation.
      
      Access to the queues is now protected under a spinlock, this
      to prevent race conditions which could corrupt the indexing
      system of the queue.
      
      Each queue entry allocates x bytes for driver/device specific data,
      this cleans up the queue structure significantly and improves
      code readability.
      
      rt2500usb no longer needs 2 entries in the beacon queue to correctly
      send out the guardian byte. This is now handled in the entry specific
      structure.
      
      rt61 and rt73 now use the correct descriptor size for beacon frames,
      since this data is written into the registers not the entire TXD
      descriptor was used but instead of a subset of it named TXINFO.
      
      Finally this also fixes numerous other bugs related to incorrect
      beacon handling or beacon related code.
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      181d6902
    • I
      rt2x00: Update copyright notice · 811aa9ca
      Ivo van Doorn 提交于
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      811aa9ca
  11. 29 1月, 2008 6 次提交
  12. 10 11月, 2007 1 次提交
  13. 11 10月, 2007 4 次提交
    • I
      [PATCH] rt2x00: Reorganize configuration handler · 5c58ee51
      Ivo van Doorn 提交于
      Reorganize configuration handling by creating a extra
      structure which contains precalculated values based
      on the mac80211 values which are usefull for all
      individual drivers.
      
      This also fixes the preamble configuration problem,
      up untill now preamble was never configured since
      by default the rate->val value was used when changing
      the mode.
      Now rate->val will only be used to set the basic rate mask.
      The preamble configuration will now be done correctly
      through the erp_ie_changed callback function.
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      5c58ee51
    • I
      [PATCH] rt2x00: Pass dev_state to rt2x00lib_toggle_rx · 5cbf830e
      Ivo van Doorn 提交于
      Directly pass a value from the enum dev_state with rt2x00lib_toggle_rx,
      this will save us a ? : statement, and it is clearer then passing a 1 0
      argument.
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      5cbf830e
    • I
      [PATCH] rt2x00: Reorganize rt2x00dev->flags · 066cb637
      Ivo van Doorn 提交于
      The rt2x00dev->flags has become a chaos over time,
      this will reorganize the flags by renaming, deleting, adding
      and properly implement the flags.
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      066cb637
    • J
      [PATCH] mac80211: revamp interface and filter configuration · 4150c572
      Johannes Berg 提交于
      Drivers are currently supposed to keep track of monitor
      interfaces if they allow so-called "hard" monitor, and
      they are also supposed to keep track of multicast etc.
      
      This patch changes that, replaces the set_multicast_list()
      callback with a new configure_filter() callback that takes
      filter flags (FIF_*) instead of interface flags (IFF_*).
      For a driver, this means it should open the filter as much
      as necessary to get all frames requested by the filter flags.
      Accordingly, the filter flags are named "positively", e.g.
      FIF_ALLMULTI.
      
      Multicast filtering is a bit special in that drivers that
      have no multicast address filters need to allow multicast
      frames through when either the FIF_ALLMULTI flag is set or
      when the mc_count value is positive.
      
      At the same time, drivers are no longer notified about
      monitor interfaces at all, this means they now need to
      implement the start() and stop() callbacks and the new
      change_filter_flags() callback. Also, the start()/stop()
      ordering changed, start() is now called *before* any
      add_interface() as it really should be, and stop() after
      any remove_interface().
      
      The patch also changes the behaviour of setting the bssid
      to multicast for scanning when IEEE80211_HW_NO_PROBE_FILTERING
      is set; the IEEE80211_HW_NO_PROBE_FILTERING flag is removed
      and the filter flag FIF_BCN_PRBRESP_PROMISC introduced.
      This is a lot more efficient for hardware like b43 that
      supports it and other hardware can still set the BSSID
      to all-ones.
      
      Driver modifications by Johannes Berg (b43 & iwlwifi), Michael Wu
      (rtl8187, adm8211, and p54), Larry Finger (b43legacy), and
      Ivo van Doorn (rt2x00).
      Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NMichael Wu <flamingice@sourmilk.net>
      Signed-off-by: NLarry Finger <Larry.Finger@lwfinger.net>
      Signed-off-by: NIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      4150c572