1. 29 11月, 2011 1 次提交
    • L
      wireless: Remove redundant spi driver bus initialization · 4e3309ba
      Lars-Peter Clausen 提交于
      In ancient times it was necessary to manually initialize the bus field of an
      spi_driver to spi_bus_type. These days this is done in spi_driver_register(),
      so we can drop the manual assignment.
      
      The patch was generated using the following coccinelle semantic patch:
      // <smpl>
      @@
      identifier _driver;
      @@
      struct spi_driver _driver = {
      	.driver = {
      -		.bus = &spi_bus_type,
      	},
      };
      // </smpl>
      Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
      Cc: Dan Williams <dcbw@redhat.com>
      Cc: "John W. Linville" <linville@tuxdriver.com>
      Cc: Christian Lamparter <chunkeey@googlemail.com>
      Cc: Luciano Coelho <coelho@ti.com>
      Cc: libertas-dev@lists.infradead.org
      Cc: linux-wireless@vger.kernel.org
      Acked-by: NLuciano Coelho <coelho@ti.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      4e3309ba
  2. 18 11月, 2011 1 次提交
  3. 15 11月, 2011 1 次提交
  4. 12 11月, 2011 1 次提交
    • J
      libertas: release bss references and avoid warning from cfg80211_inform_bss · 731f8e1c
      John W. Linville 提交于
        CC [M]  drivers/net/wireless/libertas/cfg.o
      drivers/net/wireless/libertas/cfg.c: In function ‘lbs_ret_scan’:
      drivers/net/wireless/libertas/cfg.c:636:24: warning: ignoring return value of ‘cfg80211_inform_bss’, declared with attribute warn_unused_result
      drivers/net/wireless/libertas/cfg.c: In function ‘lbs_join_post’:
      drivers/net/wireless/libertas/cfg.c:1766:21: warning: ignoring return value of ‘cfg80211_inform_bss’, declared with attribute warn_unused_result
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      731f8e1c
  5. 10 11月, 2011 1 次提交
  6. 03 11月, 2011 1 次提交
    • A
      libertas: ensure we clean up a scan request properly · 3209e061
      Andres Salomon 提交于
      Commit 2e30168b ("libertas: terminate scan when stopping interface")
      adds cleanup code to lbs_eth_stop to call cfg80211_scan_done if there's
      an outstanding cfg80211_scan_request.  However, it assumes that the
      scan request was allocated via the cfg80211 stack.  Libertas has
      its own internal allocation method, kept track of with
      priv->internal_scan.  This doesn't set scan_req->wiphy, amongst other
      things, which results in hitting a BUG() when we call cfg80211_scan_done
      on the request.
      
      This provides a function to take care of the low-level scan_req cleanup
      details.  We simply call that to deal with finishing up scan requests.
      
      The bug we were hitting was:
      
      [  964.321495] kernel BUG at net/wireless/core.h:87!
      [  964.329970] Unable to handle kernel NULL pointer dereference at virtual address 00000000
      [  964.341963] pgd = dcf80000
      ...
      [  964.849998] 9fe0: 00000000 beb417b8 4018e280 401e822c 60000010 00000004 00000000 00000000
      [  964.865007] [<c003104c>] (__bug+0x1c/0x28) from [<c0384ffc>] (cfg80211_scan_done+0x54/0x6c)
      [  964.895324] [<c0384ffc>] (cfg80211_scan_done+0x54/0x6c) from [<bf028bac>] (lbs_eth_stop+0x10c/0x188 [libertas])
      [  964.895324] [<bf028bac>] (lbs_eth_stop+0x10c/0x188 [libertas]) from [<c03002a0>] (__dev_close_many+0x94/0xc4)
      [  964.918995] [<c03002a0>] (__dev_close_many+0x94/0xc4) from [<c030037c>] (dev_close_many+0x78/0xe0)
      Signed-off-by: NAndres Salomon <dilinger@queued.net>
      Acked-by: NDan Williams <dcbw@redhat.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      3209e061
  7. 01 11月, 2011 2 次提交
  8. 15 10月, 2011 1 次提交
  9. 04 10月, 2011 1 次提交
    • D
      libertas: detect TX lockups and reset hardware · 8f641d93
      Daniel Drake 提交于
      Recent patches added support for resetting the SD8686 hardware when
      commands time out, which seems to happen quite frequently soon after
      resuming the system from a Wake-on-WLAN-triggered resume.
      
      At http://dev.laptop.org/ticket/10969 we see the same thing happen
      with transmits. In this case, the hardware will fail to respond to
      a frame passed for transmission, and libertas (correctly) will block
      all further commands and transmissions as the hardware can only
      deal with one thing at a time. This results in a lockup while the
      system waits indefinitely for the dead card to respond.
      
      Hook up a TX lockup timer to detect this and reset the hardware.
      Signed-off-by: NDaniel Drake <dsd@laptop.org>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      8f641d93
  10. 28 9月, 2011 1 次提交
    • D
      libertas: scan behaviour consistency improvements · b4c3f34a
      Daniel Drake 提交于
      When scanning for the broadcast SSID, there is no need to add the
      SSID TLV (restoring the behaviour of the driver behaviour in the wext
      days, confirmed in Marvell specifications).
      
      If bssid is unspecified, the current scan code will usually fire off an
      active scan probing for the specific requested SSID. However, if a scan
      is ongoing (or has just finished), those scan results will be used
      instead (even if that scan is totally different, e.g. a passive scan on
      channel 4 for a different SSID). Fix this inconsistency by always
      firing off a scan when associating without a bssid.
      Signed-off-by: NDaniel Drake <dsd@laptop.org>
      Acked-by: NDan Williams <dcbw@redhat.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      b4c3f34a
  11. 15 9月, 2011 1 次提交
  12. 25 8月, 2011 2 次提交
  13. 18 8月, 2011 1 次提交
  14. 10 8月, 2011 3 次提交
  15. 09 8月, 2011 3 次提交
  16. 21 7月, 2011 2 次提交
  17. 12 7月, 2011 2 次提交
    • D
      libertas: fix handling of command timeout, completion and interruption · df90d843
      Daniel Drake 提交于
      When commands time out, corruption ensues. As lbs_complete_command()
      is called without locking, the command node is mistakenly freed twice.
      Also fixed up locking here in a few other places.
      
      The nature of command timeout may be that the card didn't even
      acknowledge receipt of the request. Detect this case and reset dnld_sent
      so that other commands don't hang forever.
      
      When cmdnodes are moved between the free list and the pending list,
      their list heads should be reinitialized. Fixed this.
      
      Sometimes commands are completed without actually submitting them or
      removing them from cmdpendingq. We must remember to remove them from
      cmdpendingq in these cases, so handle this in lbs_complete_command().
      
      Harmless signals generated during suspend/resume were interrupting
      lbs_cmd. Convert to an uninterruptible sleep to avoid this.
      
      lbs_thread must be woken up every time there is some new work to do.
      I found that when 2 commands are queued, ther completion of the first
      command would not wake up lbs_thread to submit the second. Poke lbs_thread
      at the end of lbs_complete_command() to fix this.
      Signed-off-by: NDaniel Drake <dsd@laptop.org>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      df90d843
    • O
      libertas: fix errors in functions accessing module registers · edcc3604
      Olivier Sobrie 提交于
      Problems located in the two functions lbs_set_reg() and lbs_get_reg():
      - The offset field of struct cmd_ds_reg_access was not filled in
      - The test on the return code of lbs_cmd_with_response() in function
        lbs_get_reg() was inverted
      Signed-off-by: NOlivier Sobrie <olivier@sobrie.be>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      edcc3604
  18. 18 6月, 2011 1 次提交
  19. 11 6月, 2011 1 次提交
  20. 07 6月, 2011 1 次提交
  21. 04 6月, 2011 1 次提交
    • D
      libertas_sdio: handle spurious interrupts · d2ac49fe
      Daniel Drake 提交于
      Commit 06e8935f adds an IRQ handling
      optimization for single-function SDIO cards like this one, but at the
      same time exposes a small hardware bug.
      
      During hardware init, an interrupt is generated with (apparently) no
      source. Previously, mmc threw this interrupt away, but now (due to the
      optimization), the mmc layer passes this onto libertas, before it is ready
      (and before it has enabled interrupts), causing a crash.
      
      Work around this hardware bug by registering the IRQ handler later and
      making it capable of handling interrupts with no cause. The change that
      makes the IRQ handler registration happen later actually eliminates
      the spurious interrupt as well.
      Signed-off-by: NDaniel Drake <dsd@laptop.org>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      d2ac49fe
  22. 01 6月, 2011 1 次提交
  23. 12 5月, 2011 3 次提交
  24. 11 5月, 2011 1 次提交
  25. 06 5月, 2011 2 次提交
    • J
      pcmcia: Convert pcmcia_device_id declarations to const · 25f8f54f
      Joe Perches 提交于
      Saves about 50KB of data.
      
      Old/new size of all objects:
         text	   data	    bss	    dec	    hex	filename
       563015	  80096	 130684	 773795	  bcea3	(TOTALS)
       610916	  32256	 130632	 773804	  bceac	(TOTALS)
      Signed-off-by: NJoe Perches <joe@perches.com>
      Acked-by: Kurt Van Dijck <kurt.van.dijck@eia.be> (for drivers/net/can/softing/softing_cs.c)
      Signed-off-by: NDominik Brodowski <linux@dominikbrodowski.net>
      25f8f54f
    • D
      libertas: remove tx_timeout handler · 7e4b4eec
      Daniel Drake 提交于
      As described at http://marc.info/?l=linux-netdev&m=130428493104730&w=2
      libertas frequently generates spurious tx timeouts, because the tx
      queue is brought down for extended periods during scanning. The net
      layer takes a look and incorrectly assumes the queue has been down for
      several seconds, and generates a tx_timeout.
      
      One way to fix this is to bump the trans_start counter while scanning
      so that the network layer knows that the device is still alive, but
      I think the tx_timeout handler is implemented wrongly here and not of
      any real use, so I vote to remove it.
      
      As explained at http://marc.info/?l=linux-wireless&m=130430311115755&w=2
      the watchdog is primarily meant to deal with lockup on the hardware TX
      path (detected by the tx queue being stopped for an extended period of
      time), but this is unlikely to happen with libertas. In this case, the tx
      queue is stopped only while waiting for lbs_thread to send the queued frame
      to the driver, and lbs_thread wakes up the queue immediately after, even
      if the frame could not be sent correctly.
      
      So, the only hardware-related possibility that this catches is if
      hw_host_to_card hangs - this is something I have never seen. And if it
      were to happen, nothing done by lbs_tx_timeout would actually wake up
      lbs_thread any quicker than otherwise.
      
      Removing this oddly-behaving spuriously-firing tx_timeout handler should
      fix an occasional kernel crash during resume
      (http://dev.laptop.org/ticket/10748)
      Signed-off-by: NDaniel Drake <dsd@laptop.org>
      Acked-by: NDan Williams <dcbw@redhat.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      7e4b4eec
  26. 29 4月, 2011 1 次提交
  27. 31 3月, 2011 2 次提交
  28. 12 3月, 2011 1 次提交