1. 26 Apr, 2010 7 commits
    • Sujith's avatar
      ath9k_htc: Simplify TX URB management · c11d8f89
      Sujith authored
      This patch simplifies URB management for transmission,
      by removing the 'FLUSH' variable (which is not needed,
      since we can determine if the URB has been killed by
      looking at the URB status), and also handling the STOP
      case properly.
      Signed-off-by: default avatarSujith <Sujith.Manoharan@atheros.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      c11d8f89
    • Hans de Goede's avatar
      p54pci: fix regression from prevent stuck rx-ring on slow system · d4cde88c
      Hans de Goede authored
      This patch fixes a recently introduced use-after-free regression
      from "p54pci: prevent stuck rx-ring on slow system".
      
      Hans de Goede reported a use-after-free regression:
      >BUG: unable to handle kernel paging request at 6b6b6b6b
      >IP: [<e122284a>] p54p_check_tx_ring+0x84/0xb1 [p54pci]
      >*pde = 00000000
      >Oops: 0000 [#1] SMP
      >EIP: 0060:[<e122284a>] EFLAGS: 00010286 CPU: 0
      >EIP is at p54p_check_tx_ring+0x84/0xb1 [p54pci]
      >EAX: 6b6b6b6b EBX: df10b170 ECX: 00000003 EDX: 00000001
      >ESI: dc471500 EDI: d8acaeb0 EBP: c098be9c ESP: c098be84
      > DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
      >Process swapper (pid: 0, ti=c098a000 task=c09ccfe0 task.ti=c098a000)
      >Call Trace:
      > [<e1222b02>] ? p54p_tasklet+0xaa/0xb5 [p54pci]
      > [<c0440568>] ? tasklet_action+0x78/0xcb
      > [<c0440ed3>] ? __do_softirq+0xbc/0x173
      
      Quote from comment #17:
      "The problem is the innocent looking moving of the tx processing to
       after the rx processing in the tasklet. Quoting from the changelog:
        This patch does it the same way, except that it also prioritize
        rx data processing, simply because tx routines *can* wait.
      
       This is causing an issue with us referencing already freed memory,
       because some skb's we transmit, we immediately receive back, such
       as those for reading the eeprom (*) and getting stats.
      
       What can happen because of the moving of the tx processing to after
       the rx processing is that when the tasklet first runs after doing a
       special skb tx (such as eeprom) we've already received the answer
       to it.
      
       Then the rx processing ends up calling p54_find_and_unlink_skb to
       find the matching tx skb for the just received special rx skb and
       frees the tx skb.
      
       Then after the processing of the rx skb answer, and thus freeing
       the tx skb, we go process the completed tx ring entires, and then
       dereference the free-ed skb, to see if it should free free-ed by
       p54p_check_tx_ring()."
      
      Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=583623Bug-Identified-by: default avatarHans de Goede <hdegoede@redhat.com>
      Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
      Signed-off-by: default avatarChristian Lamparter <chunkeey@googlemail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      d4cde88c
    • Juuso Oikarinen's avatar
      mac80211: Fix sta->last_tx_rate setting with no-op rate control devices · 0c869808
      Juuso Oikarinen authored
      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: default avatarJuuso Oikarinen <juuso.oikarinen@nokia.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      0c869808
    • Rafał Miłecki's avatar
    • Rafał Miłecki's avatar
      0a182fd8
    • Rafał Miłecki's avatar
      ssb: Look for SPROM at different offset on higher rev CC · ea2db495
      Rafał Miłecki authored
      Our offset handling becomes even a little more hackish now. For some reason I
      do not understand all offsets as inrelative. It assumes base offset is 0x1000
      but it will work for now as we make offsets relative anyway by removing base
      0x1000. Should be cleaner however.
      Signed-off-by: default avatarRafał Miłecki <zajec5@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      ea2db495
    • John W. Linville's avatar
      ssb: do not read SPROM if it does not exist · d53cdbb9
      John W. Linville authored
      Attempting to read registers that don't exist on the SSB bus can cause
      hangs on some boxes.  At least some b43 devices are 'in the wild' that
      don't have SPROMs at all.  When the SSB bus support loads, it attempts
      to read these (non-existant) SPROMs and causes hard hangs on the box --
      no console output, etc.
      
      This patch adds some intelligence to determine whether or not the SPROM
      is present before attempting to read it.  This avoids those hard hangs
      on those devices with no SPROM attached to their SSB bus.  The
      SSB-attached devices (e.g. b43, et al.) won't work, but at least the box
      will survive to test further patches. :-)
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      Signed-off-by: default avatarRafał Miłecki <zajec5@gmail.com>
      Cc: Larry Finger <Larry.Finger@lwfinger.net>
      Cc: Michael Buesch <mb@bu3sch.de>
      d53cdbb9
  2. 21 Apr, 2010 3 commits
  3. 20 Apr, 2010 14 commits
  4. 19 Apr, 2010 9 commits
  5. 16 Apr, 2010 7 commits