1. 16 2月, 2008 4 次提交
  2. 06 2月, 2008 4 次提交
    • S
      b43legacy: fix DMA slot resource leakage · 8dd0100c
      Stefano Brivio 提交于
      This fixes four resource leakages.
      In any error path we must deallocate the DMA frame slots we
      previously allocated by request_slot().
      This is done by storing the ring pointers before doing any ring
      allocation and restoring the old pointers in case of an error.
      
      This patch by Michael Buesch has been ported to b43legacy.
      
      Cc: Michael Buesch <mb@bu3sch.de>
      Signed-off-by: NStefano Brivio <stefano.brivio@polimi.it>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      8dd0100c
    • S
      b43legacy: drop packets we are not able to encrypt · 9eca9a8e
      Stefano Brivio 提交于
      We must drop any packets we are not able to encrypt.
      We must not send them unencrypted or with an all-zero-key (which
      basically is the same as unencrypted, from a security point of view).
      
      This might only trigger shortly after resume before mac80211 reassociated
      and reconfigured the keys.
      
      It is safe to drop these packets, as the association they belong to
      is not guaranteed anymore anyway.
      This is a security fix in the sense that it prevents information leakage.
      
      This patch by Michael Buesch has been ported to b43legacy.
      
      Cc: Michael Buesch <mb@bu3sch.de>
      Signed-off-by: NStefano Brivio <stefano.brivio@polimi.it>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      9eca9a8e
    • S
      b43legacy: fix suspend/resume · ada50731
      Stefano Brivio 提交于
      This patch makes suspend/resume work with the b43legacy driver.
      We must not overwrite the MAC addresses in the init function, as this
      would also overwrite the MAC on resume. With an all-zero MAC the device
      firmware is not able to ACK any received packets anymore.
      Fix this by moving the initializion stuff that must be done on init but
      not on resume to the start function.
      Also zero out filter_flags to make sure we don't have some flags
      from a previous instance for a tiny timeframe until mac80211 reconfigures
      them.
      
      This patch by Michael Buesch has been ported to b43legacy.
      
      Cc: Michael Buesch <mb@bu3sch.de>
      Signed-off-by: NStefano Brivio <stefano.brivio@polimi.it>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      ada50731
    • S
      b43legacy: fix PIO crash · 0cd67d48
      Stefano Brivio 提交于
      Fix the crash reported below, which seems to happen on bcm4306 rev. 2 devices
      only while using PIO:
      
      Oops: 0000 [#1] PREEMPT
      Modules linked in: b43(F) rfkill(F) led_class(F) input_polldev(F) arc4 b43legacy mac80211 cfg80211 i915 drm snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device ohci1394 ieee1394 ssb pcmcia snd_intel8x0m ehci_hcd uhci_hcd evdev
      
      Pid: 0, comm: swapper Tainted: GF	(2.6.24st3 #2)
      EIP: 0060:[<f90f667b>] EFLAGS: 00010002 CPU: 0
      EIP is at b43legacy_pio_handle_txstatus+0xbb/0x210 [b43legacy]
      EAX: 0000049b EBX: f11f8044 ECX: 00000001 EDX: 00000000
      ESI: f1ff8000 EDI: 00000000 EBP: f11f8040 ESP: c04f4ef4
       DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068
      Process swapper (pid: 0, ti=c04f4000 task=c0488300 task.ti=c04b8000)
      Stack: f90f2788 c05009f0 c0500900 000010f7 f1053823 c04f4f24 dfb8e800 00000003
             f1368000 00000007 00000296 f90f1975 00001000 010c0800 01000000 00000007
             f90f6391 f11f8000 00000082 c04f4f4a 00000000 00004fd0 10f70000 8c061000
      Call Trace:
       [<f90f2788>] b43legacy_debugfs_log_txstat+0x48/0xb0 [b43legacy]
       [<f90f1975>] b43legacy_handle_hwtxstatus+0x75/0x80 [b43legacy]
       [<f90f6391>] b43legacy_pio_rx+0x201/0x280 [b43legacy]
       [<f90e4fa3>] b43legacy_interrupt_tasklet+0x2e3/0x870 [b43legacy]
       [<c0123567>] tasklet_action+0x27/0x60
       [<c01237b4>] __do_softirq+0x54/0xb0
       [<c010686b>] do_softirq+0x7b/0xe0
       [<c01457c0>] handle_level_irq+0x0/0x110
       [<c01457c0>] handle_level_irq+0x0/0x110
       [<c0123758>] irq_exit+0x38/0x40
       [<c0106953>] do_IRQ+0x83/0xd0
       [<c011812f>] __update_rq_clock+0x4f/0x180
       [<c0104b4f>] common_interrupt+0x23/0x28
       [<c011007b>] wakeup_code+0x7b/0xde
       [<c02b1039>] acpi_processor_idle+0x24a/0x3c9
       [<c01025c7>] cpu_idle+0x47/0x80
       [<c04b9ad5>] start_kernel+0x205/0x290
       [<c04b9360>] unknown_bootoption+0x0/0x1f0
       =======================
      Code: 0f 00 00 81 fb ff 00 00 00 0f 87 36 01 00 00 8d 04 db 85 ff 8d 6c c6 40 8d 5d 04 0f 85 ef 00 00 00 fe 4e 0e 0f b7 46 0c 8b 53 04 <8b> 4a 50 29 c8 83 e8 52 66 89 46 0c 8b 54 24 14 80 7a 0b 00 74
      EIP: [<f90f667b>] b43legacy_pio_handle_txstatus+0xbb/0x210 [b43legacy] SS:ESP 0068:c04f4ef4
      Kernel panic - not syncing: Fatal exception in interrupt
      Signed-off-by: NStefano Brivio <stefano.brivio@polimi.it>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      0cd67d48
  3. 01 2月, 2008 2 次提交
  4. 29 1月, 2008 22 次提交
  5. 30 11月, 2007 2 次提交
  6. 10 11月, 2007 3 次提交
  7. 26 10月, 2007 1 次提交
  8. 19 10月, 2007 1 次提交
  9. 11 10月, 2007 1 次提交
    • 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