1. 14 8月, 2009 4 次提交
  2. 05 8月, 2009 5 次提交
    • G
      b43: implement baseband init for LP-PHY <= rev1 · 738f0f43
      Gábor Stefanik 提交于
      Implement baseband init for rev.0 and rev.1 LP PHYs. Convert boardflags_hi values to defines.
      Implement b43_phy_copy for easier copying between registers, as needed by LP-PHY init.
      
      Signed-off-by: Gábor Stefanik<netrolller.3d@gmail.com>
      Cc: Michael Buesch<mb@bu3sch.de>
      Cc: Larry Finger<larry.finger@lwfinger.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      738f0f43
    • G
      b43: remove wrong probe_resp_plcp write · 92ca8d43
      gregor kowski 提交于
      The tkip hw support uncovered a bug in b43_write_probe_resp_template : it is
      writing at the wrong shm offset, it is in the B43_SHM_SH_TKIPTSCTTAK zone. This
      patch comments these writes.
      Signed-off-by: NGregor Kowski <gregor.kowski@gmail.com>
      Signed-off-by: NMichael Buesch <mb@bu3sch.de>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      92ca8d43
    • M
      b43: Fix unaligned 32bit SHM-shared access · f62ae6cd
      Michael Buesch 提交于
      This fixes unaligned 32bit SHM-shared read/write access.
      The low and high 16 bits were swapped.
      It also adds a testcase for this to the chipaccess validation.
      
      (Thanks to Albert Herranz for tracking down this bug.)
      Signed-off-by: NMichael Buesch <mb@bu3sch.de>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      f62ae6cd
    • L
      mac80211: redefine usage of the mac80211 workqueue · 42935eca
      Luis R. Rodriguez 提交于
      The mac80211 workqueue exists to enable mac80211 and drivers
      to queue their own work on a single threaded workqueue. mac80211
      takes care to flush the workqueue during suspend but we never
      really had requirements on drivers for how they should use
      the workqueue in consideration for suspend.
      
      We extend mac80211 to document how the mac80211 workqueue should
      be used, how it should not be used and finally move raw access to
      the workqueue to mac80211 only. Drivers and mac80211 use helpers
      to queue work onto the mac80211 workqueue:
      
        * ieee80211_queue_work()
        * ieee80211_queue_delayed_work()
      
      These helpers will now warn if mac80211 already completed its
      suspend cycle and someone is trying to queue work. mac80211
      flushes the mac80211 workqueue prior to suspend a few times,
      but we haven't taken the care to ensure drivers won't add more
      work after suspend. To help with this we add a warning when
      someone tries to add work and mac80211 already completed the
      suspend cycle.
      
      Drivers should ensure they cancel any work or delayed work
      in the mac80211 stop() callback.
      Signed-off-by: NLuis R. Rodriguez <lrodriguez@atheros.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      42935eca
    • L
      b43: Work around mac80211 race condition · 18c69510
      Larry Finger 提交于
      As shown in http://thread.gmane.org/gmane.linux.kernel.wireless.general/36497,
      mac80211 has a bug that allows a call to the TX routine after the queues have
      been stopped. This situation will only occur under extreme stress. Although
      b43 does not crash when this condition occurs, it does generate a WARN_ON and
      also logs a queue overrun message. This patch recognizes b43 is not at fault
      and logs a message only when the most verbose debugging mode is enabled. In
      the unlikely event that the queue is not stopped when the DMA queue becomes
      full, then a warning is issued.
      
      During testing of this patch with one output stream running repeated tcpperf
      writes and a second running a flood ping, this routine was entered with
      the DMA ring stopped about once per hour. The condition where the DMA queue is
      full but the ring has not been stopped has never been seen by me.
      Signed-off-by: NLarry Finger <Larry.Finger@lwfinger.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      18c69510
  3. 25 7月, 2009 1 次提交
  4. 11 7月, 2009 1 次提交
    • J
      mac80211: push rx status into skb->cb · f1d58c25
      Johannes Berg 提交于
      Within mac80211, we often need to copy the rx status into
      skb->cb. This is wasteful, as drivers could be building it
      in there to start with. This patch changes the API so that
      drivers are expected to pass the RX status in skb->cb, now
      accessible as IEEE80211_SKB_RXCB(skb). It also updates all
      drivers to pass the rx status in there, but only by making
      them memcpy() it into place before the call to the receive
      function (ieee80211_rx(_irqsafe)). Each driver can now be
      optimised on its own schedule.
      Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      f1d58c25
  5. 09 7月, 2009 1 次提交
  6. 08 7月, 2009 1 次提交
  7. 11 6月, 2009 3 次提交
  8. 04 6月, 2009 1 次提交
    • J
      rfkill: rewrite · 19d337df
      Johannes Berg 提交于
      This patch completely rewrites the rfkill core to address
      the following deficiencies:
      
       * all rfkill drivers need to implement polling where necessary
         rather than having one central implementation
      
       * updating the rfkill state cannot be done from arbitrary
         contexts, forcing drivers to use schedule_work and requiring
         lots of code
      
       * rfkill drivers need to keep track of soft/hard blocked
         internally -- the core should do this
      
       * the rfkill API has many unexpected quirks, for example being
         asymmetric wrt. alloc/free and register/unregister
      
       * rfkill can call back into a driver from within a function the
         driver called -- this is prone to deadlocks and generally
         should be avoided
      
       * rfkill-input pointlessly is a separate module
      
       * drivers need to #ifdef rfkill functions (unless they want to
         depend on or select RFKILL) -- rfkill should provide inlines
         that do nothing if it isn't compiled in
      
       * the rfkill structure is not opaque -- drivers need to initialise
         it correctly (lots of sanity checking code required) -- instead
         force drivers to pass the right variables to rfkill_alloc()
      
       * the documentation is hard to read because it always assumes the
         reader is completely clueless and contains way TOO MANY CAPS
      
       * the rfkill code needlessly uses a lot of locks and atomic
         operations in locked sections
      
       * fix LED trigger to actually change the LED when the radio state
         changes -- this wasn't done before
      Tested-by: NAlan Jenkins <alan-jenkins@tuffmail.co.uk>
      Signed-off-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br> [thinkpad]
      Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      19d337df
  9. 23 5月, 2009 1 次提交
  10. 21 5月, 2009 1 次提交
  11. 07 5月, 2009 2 次提交
  12. 23 4月, 2009 3 次提交
  13. 16 4月, 2009 3 次提交
    • M
      b43: Do radio lock assertion in software · 591f3dc2
      Michael Buesch 提交于
      The assertion of the lock-bit in the hardware register is unreliable,
      because there are devices with quirks that will randomly set the bit.
      
      Do the assertion in software, only.
      Signed-off-by: NMichael Buesch <mb@bu3sch.de>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      591f3dc2
    • M
      b43: Refresh RX poison on buffer recycling · cf68636a
      Michael Buesch 提交于
      The RX buffer poison needs to be refreshed, if we recycle an RX buffer,
      because it might be (partially) overwritten by some DMA operations.
      
      Cc: stable@kernel.org
      Cc: Francesco Gringoli <francesco.gringoli@ing.unibs.it>
      Signed-off-by: NMichael Buesch <mb@bu3sch.de>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      cf68636a
    • M
      b43: Poison RX buffers · ec9a1d8c
      Michael Buesch 提交于
      This patch adds poisoning and sanity checking to the RX DMA buffers.
      This is used for protection against buggy hardware/firmware that raises
      RX interrupts without doing an actual DMA transfer.
      
      This mechanism protects against rare "bad packets" (due to uninitialized skb data)
      and rare kernel crashes due to uninitialized RX headers.
      
      The poison is selected to not match on valid frames and to be cheap for checking.
      
      The poison check mechanism _might_ trigger incorrectly, if we are voluntarily
      receiving frames with bad PLCP headers. However, this is nonfatal, because the
      chance of such a match is basically zero and in case it happens it just results
      in dropping the packet.
      Bad-PLCP RX defaults to off, and you should leave it off unless you want to listen
      to the latest news broadcasted by your microwave oven.
      
      This patch also moves the initialization of the RX-header "length" field in front of
      the mapping of the DMA buffer. The CPU should not touch the buffer after we mapped it.
      
      Cc: stable@kernel.org
      Reported-by: NFrancesco Gringoli <francesco.gringoli@ing.unibs.it>
      Signed-off-by: NMichael Buesch <mb@bu3sch.de>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      ec9a1d8c
  14. 07 4月, 2009 3 次提交
  15. 28 3月, 2009 2 次提交
    • L
      b43: fix b43_plcp_get_bitrate_idx_ofdm return type · a3c0b87c
      Lorenzo Nava 提交于
      This patch fixes the return type of b43_plcp_get_bitrate_idx_ofdm. If
      the plcp contains an error, the function return value is 255 instead
      of -1, and the packet was not dropped. This causes a warning in
      __ieee80211_rx function because rate idx is out of range.
      
      Cc: stable@kernel.org
      Signed-off-by: NLorenzo Nava <navalorenx@gmail.com>
      Signed-off-by: NMichael Buesch <mb@bu3sch.de>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      a3c0b87c
    • M
      b43: Mask PHY TX error interrupt, if not debugging · 3e3ccb3d
      Michael Buesch 提交于
      This masks the PHY TX error interrupt, if debugging is disabled.
      
      Currently we have a bug somewhere which triggers this interrupt once
      in a while. (Depends on the network noise/quality). While this is nonfatal,
      it scares the hell out of users and we frequently receive bugreports
      that incorrectly identify this error message as the reason.
      
      There's another problem with this. The PHY TX error interrupt is protected
      with a watchdog that will restart the device if it keeps triggering very often.
      This is used to fix interrupt storms from completely broken devices.
      
      However, this watchdog might trigger in completely normal operation.
      If the TX capacity of the card is saturated, the likeliness of the watchdog
      triggering increases, as more TX errors occur. The current threshold
      for the watchdog is 1000 errors in 15 seconds.
      
      This patch adds a workaround for the issue by just enabling the interrupt
      if debugging is disabled (by Kconfig or by modparam).
      
      This has the downside that real fatal PHY TX errors are not caught anymore.
      But this is nonfatal due to the following reasons:
      * If the card is not able to transmit anymore, MLME will notice anyway.
      * I did _never_ see a real fatal PHY TX error in a mainline b43 driver.
      * It does _not_ result in interrupt storms or something like that.
        It will simply result in a stalled card. It can be debugged by enabling
        the debugging module parameter.
      Signed-off-by: NMichael Buesch <mb@bu3sch>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      3e3ccb3d
  16. 06 3月, 2009 2 次提交
  17. 28 2月, 2009 6 次提交