1. 27 6月, 2011 1 次提交
    • I
      wl12xx: Support routing FW logs to the host · 95dac04f
      Ido Yariv 提交于
      A recently added feature to the firmware enables the driver to retrieve
      firmware logs via the host bus (SDIO or SPI).
      
      There are two modes of operation:
      1. On-demand: The FW collects its log in an internal ring buffer. This
         buffer can later be read, for example, upon recovery.
      2. Continuous: The FW pushes the FW logs as special packets in the RX
         path.
      
      Reading the internal ring buffer does not involve the FW. Thus, as long
      as the HW is not in ELP, it should be possible to read the logs, even if
      the FW crashes.
      
      A sysfs binary file named "fwlog" was added to support this feature,
      letting a monitor process read the FW messages. The log is transferred
      from the FW only when available, so the reading process might block.
      Signed-off-by: NIdo Yariv <ido@wizery.com>
      Signed-off-by: NLuciano Coelho <coelho@ti.com>
      95dac04f
  2. 19 4月, 2011 3 次提交
    • O
      wl12xx: fix roaming · c5745187
      Ohad Ben-Cohen 提交于
      The wl12xx device normally drops all frames coming from BSSID
      it is not joined with.
      
      This behavior is configured today by the wl12xx driver in response
      to a handful of ieee80211_bss_change and ieee80211_conf_changed
      notification flags, such as BSS_CHANGED_ASSOC, BSS_CHANGED_BSSID,
      IEEE80211_CONF_CHANGE_IDLE, etc..
      
      This breaks when we roam to a new BSSID, where authentication frames
      are sent before any BSS_CHANGED/CONF_CHANGED flags are received.
      When this happens the hardware silently drops the authentication
      responses, and the roaming fails.
      
      Ideally this aggressive filtering behavior of the device should be disabled
      upon a notification from mac80211. Such notification will take place
      after multi-channel support will be added: mac80211 will likely send a
      remain-on-channel notification to drivers when entering sensitive
      states (like authentication), otherwise the firmware might jump to
      different channels (to serve a different role).
      
      Until those notifications materialize, disable the hw BSSID filter
      when authentication requests are sent, so roaming would work.
      Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
      Reviewed-by: NLuciano Coelho <coelho@ti.com>
      Signed-off-by: NLuciano Coelho <coelho@ti.com>
      c5745187
    • S
      wl12xx: 1281/1283 support - Add dummy packet support · ae47c45f
      Shahar Levi 提交于
      Support sending dummy packet to wl128x FW as results of
      dummy packet event. That is part of dynamic TX mem blocks mechanism.
      
      Only send dummy packet when not in AP mode.
      
      [Even though the DUMMY_PACKET_EVENT_ID and the
      STA_REMOVE_COMPLETE_EVENT_ID events are defined to the same value, we
      need to treat them separately in the code.  Keep the check and enable
      STA_REMOVE_COMPLETE_EVENT_ID for AP mode and DUMMY_PACKET_EVENT_ID for
      STA.  Moved one warning to a cleaner place.  Use WL1271_TID_MGMT for
      dummy packets -- Luca]
      Signed-off-by: NShahar Levi <shahar_levi@ti.com>
      Reviewed-by: NLuciano Coelho <coelho@ti.com>
      Signed-off-by: NLuciano Coelho <coelho@ti.com>
      ae47c45f
    • S
      wl12xx: 1281/1283 support - Add acx commands · 48a61477
      Shahar Levi 提交于
      New acx command that sets: Rx fifo enable reduced bus transactions
      in RX path. Tx bus transactions padding to SDIO block size that
      improve preference in Tx and essential for working with SDIO HS (48Mhz).
      The max SDIO block size is 256 when working with Tx bus transactions
      padding to SDIO block.
      
      Add new ops to SDIO & SPI that handles the win size change in case of
      transactions padding (relevant only for SDIO).
      
      [Fix endianess issues; simplify sdio-specific block_size handling;
      minor changes in comments; use "aligned_len" in one calculation
      instead of "pad" to avoid confusion -- Luca]
      Signed-off-by: NShahar Levi <shahar_levi@ti.com>
      Reviewed-by: NLuciano Coelho <coelho@ti.com>
      Signed-off-by: NLuciano Coelho <coelho@ti.com>
      48a61477
  3. 31 3月, 2011 1 次提交
  4. 03 3月, 2011 1 次提交
    • I
      wl12xx: Switch to a threaded interrupt handler · a620865e
      Ido Yariv 提交于
      To achieve maximal throughput, it is very important to react to
      interrupts as soon as possible. Currently the interrupt handler wakes up
      a worker for handling interrupts in process context. A cleaner and more
      efficient design would be to request a threaded interrupt handler.  This
      handler's priority is very high, and can do blocking operations such as
      SDIO/SPI transactions.
      
      Some work can be deferred, mostly calls to mac80211 APIs
      (ieee80211_rx_ni and ieee80211_tx_status). By deferring such work to a
      different worker, we can keep the irq handler thread more I/O
      responsive. In addition, on multi-core systems the two threads can be
      scheduled on different cores, which will improve overall performance.
      
      The use of WL1271_FLAG_IRQ_PENDING & WL1271_FLAG_IRQ_RUNNING was
      changed. For simplicity, always query the FW for more pending
      interrupts. Since there are relatively long bursts of interrupts, the
      extra FW status read overhead is negligible. In addition, this enables
      registering the IRQ handler with the ONESHOT option.
      Signed-off-by: NIdo Yariv <ido@wizery.com>
      Reviewed-by: NLuciano Coelho <coelho@ti.com>
      Signed-off-by: NLuciano Coelho <coelho@ti.com>
      a620865e
  5. 22 11月, 2010 1 次提交
  6. 21 9月, 2010 1 次提交
  7. 08 5月, 2010 1 次提交
  8. 24 3月, 2010 2 次提交
  9. 10 3月, 2010 5 次提交
  10. 20 2月, 2010 4 次提交
  11. 29 11月, 2009 2 次提交
  12. 28 10月, 2009 2 次提交
    • L
      wl1271: fix endianess issues · d0f63b20
      Luciano Coelho 提交于
      We were not handling endianess correctly.  The wl1271 chip runs on
      little-endian values.  This patch makes sure that all the communication with
      the wl1271 firmware is done in little-endian by using cpu_to_le* and
      le*_to_cpu where appropriate.
      
      Also, all the struct definitions for data exchanged with the firmware has
      been changed to use __le16/32 types instead of u16/32.
      
      This fixes a few sparse warnings, such as these:
      
      drivers/net/wireless/wl12xx/wl1271_cmd.c:554:42: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/wl12xx/wl1271_cmd.c:555:42: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/wl12xx/wl1271_cmd.c:577:58: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/wl12xx/wl1271_cmd.c:579:58: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/wl12xx/wl1271_cmd.c:676:18: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/wl12xx/wl1271_cmd.c:787:22: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/wl12xx/wl1271_cmd.c:789:21: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/wl12xx/wl1271_tx.c:98:47: warning: incorrect type in argument 1 (different base types)
      drivers/net/wireless/wl12xx/wl1271_acx.c:932:32: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/wl12xx/wl1271_boot.c:191:32: warning: incorrect type in argument 1 (different base types)
      drivers/net/wireless/wl12xx/wl1271_boot.c:197:38: warning: incorrect type in argument 1 (different base types)
      drivers/net/wireless/wl12xx/wl1271_boot.c:199:37: warning: incorrect type in argument 1 (different base types)
      drivers/net/wireless/wl12xx/wl1271_init.c:255:40: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/wl12xx/wl1271_init.c:275:53: warning: incorrect type in assignment (different base types)
      Reported-by: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NLuciano Coelho <luciano.coelho@nokia.com>
      Reviewed-by: NJuuso Oikarinen <juuso.oikarinen@nokia.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      d0f63b20
    • J
      wl1271: Add config structure for FW init parameters · 47fab7d5
      Juuso Oikarinen 提交于
      Add a configuration structure for RX path parameters, and set default
      configuration values there.
      Signed-off-by: NJuuso Oikarinen <juuso.oikarinen@nokia.com>
      Reviewed-by: NLuciano Coelho <luciano.coelho@nokia.com>
      Signed-off-by: NLuciano Coelho <luciano.coelho@nokia.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      47fab7d5
  13. 14 8月, 2009 1 次提交