1. 29 Feb, 2008 6 commits
    • Ivo van Doorn's avatar
      rt2x00: make csr_cache and csr_addr an union · 21795094
      Ivo van Doorn authored
      
      
      The csr_cache and csr_addr pointers are both the same size
      and they are never used both by the same driver. This makes
      them a nice candidate for an union.
      We could merge into 1 pointer, but that would either upset sparse,
      or require a lot of __force casts.
      Signed-off-by: default avatarIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      21795094
    • Ivo van Doorn's avatar
      rt2x00: Fix invalid DMA free · 9c9dd2c9
      Ivo van Doorn authored
      
      
      Be more strict when using the queue_entry_priv_pci_rx
      and queue_entry_priv_pci_tx structures. Only use a
      particular type that matches the queue type.
      
      When freeing the DMA the priv_tx->data and priv_tx->dma
      was used. This is incorrect since the start of the DMA
      was in fact the priv_tx->desc pointer. Instead of
      recalculating the dma_addr_t for the DMA start this
      patch will swap the data and descriptor part of the
      allocated memory.
      Signed-off-by: default avatarIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      9c9dd2c9
    • Ivo van Doorn's avatar
      rt2x00: Move beacon and atim queue defines into rt2x00 · 5957da4c
      Ivo van Doorn authored
      
      
      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: default avatarIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      5957da4c
    • Ivo van Doorn's avatar
      rt2x00: Add per-interface structure · 6bb40dd1
      Ivo van Doorn authored
      
      
      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: default avatarIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      6bb40dd1
    • Ivo van Doorn's avatar
      rt2x00: Queue handling overhaul · 181d6902
      Ivo van Doorn authored
      
      
      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: default avatarIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      181d6902
    • Ivo van Doorn's avatar
      rt2x00: Update copyright notice · 811aa9ca
      Ivo van Doorn authored
      
      Signed-off-by: default avatarIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      811aa9ca
  2. 28 Jan, 2008 6 commits
  3. 16 Jan, 2008 1 commit
    • Ivo van Doorn's avatar
      rt2x00: Fix ieee80211 payload alignment · d101f649
      Ivo van Doorn authored
      
      
      As Johannes Berg indicated, the NET_IP_ALIGN doesn't
      need to be used for ieee80211 frames. This means we
      can simplify the alignment calculation to just
      use the result of the header size modulus 4 as frame
      alignment.
      
      Furthermore we shouldn't use NET_IP_ALIGN in rt2x00usb
      because it could be 0 on some architectures and we absolutely
      need to have 2 bytes reserved for possible aligning.
      
      Signed-off-by: Ivo van Doorn<IvDoorn@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      d101f649
  4. 10 Jan, 2008 1 commit
  5. 10 Oct, 2007 2 commits
    • Johannes Berg's avatar
      [PATCH] mac80211: revamp interface and filter configuration · 4150c572
      Johannes Berg authored
      
      
      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: default avatarJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: default avatarMichael Wu <flamingice@sourmilk.net>
      Signed-off-by: default avatarLarry Finger <Larry.Finger@lwfinger.net>
      Signed-off-by: default avatarIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      4150c572
    • Ivo van Doorn's avatar