Switch branches/tags
wl18xx-r5-20120103 wl18xx-internal-2012-05-21 wl18xx-20120203 wl18xx-20120202 wl18xx-2012-07-08 wl18xx-2012-07-08-2 wl18xx-2012-04-04 wl18xx-2012-03-23 wl18xx-2012-03-22 wl18xx-2012-03-21 wl18xx-2012-03-20 wl18xx-2012-03-02 wl18xx-2012-02-28 wl18xx-2012-02-27 wl18xx-2012-02-22 wl18xx-2012-02-21 wl18xx-2012-02-15 wl18xx-2012-02-14 wl18xx-2012-02-09 wl18xx-2012-02-08 wl18xx-2012-02-07 wl18xx-2011-12-16 wl18xx-2011-12-15 wl18xx-2011-12-15-2 wl18xx-2011-12-14 wl18xx-2011-12-13 wl18xx-2011-12-08-pre-rebase wl18xx-2011-12-02 wl18xx-2011-12-02-3 wl18xx-2011-12-02-2 wl18xx-2011-12-01 wl18xx-2011-11-30 wl18xx-2011-11-29 wl18xx-2011-11-29-2 wl18xx-2011-11-22 wl18xx-2011-11-21 wl18xx-2011-11-19-blaze wl18xx-2011-11-17-blaze wl18xx-2011-11-14-blaze wl18xx-2011-11-14-2-blaze wl18xx-2011-11-04-blaze wl18xx-2011-10-11 wl18xx-02-20 upstreaming-2013-03-25 upstreaming-2013-03-07 upstreaming-2013-03-05 upstream-3.4 testing-2011-12-12 r8.a6.06_38 r8.a3.09-build_51 r8.a3.09-build_50 r8.a3.09-build_49 r8.a3.09-build_48 r8.a3.09-build_47 r8.a3.09-build_45 r8.a3.09-build_44 r8.a3.09-build_43 r8.a3.09-build_42 r8.a3.09-build_41 r8.a3.09-build_39 r8.a3.09-build_38 r8.a3.09-build_37 r8.a3.09-build_36 r8.a3.09-build_35 r8.a3.09-build_30 r8.a3.09-build_29 r8.a3.09-build_28 r8.a3.09-build_27 r8.a3.09-build_25 r8.a3.09-build_24 r8.a3.09-build_23 r8.a3.09-build_22 r8.a3.09-build_21 r8.a3.09-build_20 r8.a3.09-build_19 r8.a3.08-build_18 r8.a3.08-build_16 r8.a3.08-build_14 r8.a3.08-build_13 r8.a3.08-build_12 r8.a3.08-build_11 r8.a3.08-build_10 r8.a3.05-build_7 r8.a3.05-build_6 r8.a3.05-build_5 r8.a3.05-build_4 r8.a3.05-build_3 r8.a3.05-build_1 r8.a2.09 r8.a2.08 r8.a2.08-candidate r8.a2.07 r8.a2.07-build_146 r8.a2.07-build_141 r8.a2.07-build_140 r8.a2.07-build_139 r8.a2.07-build_136 r8.a2.06 r8.a2.05 r8.a2.04
Nothing to show
Commits on Nov 29, 2012
  1. wlcore/wl12xx: make sure session id is always zero for AP

    The 12xx FW doesn't support non-zero session ids for AP-mode. Introduce
    an appropriate quirk to make sure the session id is always zero when
    Signed-off-by: Arik Nemtsov <>
    ariknem committed Nov 29, 2012
  2. wlcore: Always pass DMA-able buffers to mmc functions

    Some of the mmc drivers initiate DMA transfers with buffers passed from
    higher layers. This means that the driver shouldn't ever pass non
    DMA-able buffers, such as ones that are unaligned, allocated on the
    stack or static.
    Fix a couple of calls to the mmc layer in which buffers which weren't
    necessarily DMA-able were passed.
    Signed-off-by: Ido Yariv <>
    Signed-off-by: Arik Nemtsov <>
    codido committed with ariknem Sep 5, 2012
  3. wl18xx: count HW block spare based correctly on keys

    We have no idea how many VIFs there are requiring a special spare, we
    know just about the number of keys set. Rename the counter appropriately
    and toggle it whenever a special key is added/removed.
    Previously this was only changed once, since it was toggled whenever
    the actual spare was changed.
    Signed-off-by: Arik Nemtsov <>
    ariknem committed Nov 14, 2012
  4. wlcore: support scan reports during periodic scan

    FW API changed and now PERIODIC_SCAN_REPORT_EVENT is sent
    in case results were found at the end of each sched scan
    cycle. Previous FW was missing that and broke sched scan.
    This API change is available from 18xx FW
    [Arik - move changes to 18xx specific files, align FW structures to
    latest for scan command]
    Signed-off-by: Eyal Shapira <>
    Signed-off-by: Arik Nemtsov <>
    eyalsh committed with ariknem Nov 13, 2012
  5. wl18xx: support MIMO only if HT mode is not forced to SISO

    Don't use MIMO rates when HT mode is forced to SISO, even if we have
    multiple antennas.
    Signed-off-by: Arik Nemtsov <>
    ariknem committed Nov 13, 2012
  6. wlcore: consolidate Rx BA bitmap management to links struct

    Remove the STA specific ba_rx_bitmap field and use the common links
    structure. This simplifies code setting/checking the BA bitmap.
    Signed-off-by: Arik Nemtsov <>
    ariknem committed Nov 4, 2012
  7. wlcore: don't take mutex before stopping queues

    Protect all functions touching queue_stop_reasons by spin-lock, since
    they are accessed by op_tx. Now there's no need to take the mutex
    before caling wlcore_queue_xxx functions.
    Signed-off-by: Arik Nemtsov <>
    ariknem committed Nov 12, 2012
  8. wlcore: use separate HW queue for each AC in each vif

    Start using the new hw_queue mechanism in mac80211 and give each AC in
    each vif its own hw_queue number. This allows us to stop an AC in a vif
    independently from other vifs.
    Change the Tx watermark handling functions to count packets per AC in
    vif. From now on fast links should not be able to hurt the throughput
    of slow links on the same AC but on different vifs.
    Change internal queue mgmt functions to operate per vif, to support the
    new Tx watermark granularity. Make the global versions of the queue
    stop/start functions to use the global mac80211 API for queue mgmt. This
    helps in situations where the driver currently doesn't know all the vifs
    that reside in mac80211. Recovery is a good example for such a case.
    Signed-off-by: Arik Nemtsov <>
    ariknem committed Nov 8, 2012
  9. wlcore: use link count for single-STA-PSM optimization

    Only allow a PSM STA to congest FW memory when it is the single active
    link. Being a single STA doesn't imply a single link - there might be
    other links on other roles.
    Signed-off-by: Arik Nemtsov <>
    ariknem committed Oct 22, 2012
  10. wl18xx: limit Tx for the AP single-STA-in-PSM case

    Treat a single connected STA in PSM as a slow link and regulate Tx speed
    according to slow link priority/stop thresholds.
    This allows us to avoid flooding the FW, while delivering decent
    throughput to a peer in forced-PSM.
    Signed-off-by: Arik Nemtsov <>
    ariknem committed Oct 21, 2012
  11. wlcore/wl18xx: change priority calculations for links

    Update the 18xx FW status private part to include Tx related link
    priorities. Introduce new HW ops to determine link priority per chip
    For 18xx the changes are:
    - Suspended links are at most low priority and Tx for them is stopped
      beyond the suspend threshold.
    - Active links now get their thresholds directly from FW
    - There's a new "stop" threshold for active links, at which point a link
      stops receiving new packets.
    Update the min 18xx FW version required to make sure suspended links
    bitmap is advertised by the FW.
    Signed-off-by: Arik Nemtsov <>
    ariknem committed Oct 21, 2012
  12. wl18xx: fix a bug in wl->num_rx_desc initialization

    wl->num_rx_desc was mistakenly initialized with WL18XX_NUM_TX_DESCRIPTORS
    but it should use WL18XX_NUM_RX_DESCRIPTORS instead.
    This bug was passed unnoticed because currently both RX and TX descriptors
    are initialized to the same value (32).
    Signed-off-by: Yair Shapira <>
    yairs534 committed with ariknem Oct 29, 2012
  13. wlcore: disable elp sleep while in plt mode

    We now disable elp sleep during plt mode to allow normal operation of
    plt tools such as calibrator.
    Having elp_sleep enabled during plt mode is actually not required and
    in fact it disrupt plt operations such as rx statistics etc...
    This is based on wl12xx (R5) commit 5cf0fe31ab
    Signed-off-by: Yair Shapira <>
    yairs534 committed with ariknem Oct 29, 2012
  14. wlcore: add new plt power-mode: CHIP_AWAKE

    Under this mode the chip is powered on including sdio
    but no FW is downloaded and run, interrupts are not enabled, etc...
    This mode is intended to allow RTTT to bridge sdio as a transport
    to the chip.
    Driver only provides sdio access using the dev_mem debugfs file.
    Some fixes done to the code that ensures that PLT mode and normal
    driver power mode (ifconfig/add_interface) are mutually excluded.
    Signed-off-by: Yair Shapira <>
    yairs534 committed with ariknem Oct 22, 2012
  15. wlcore: set 5Ghz probe-req template for DFS channels

    Even passive scans on DFS channels require us to send probe requests, so
    configure the probe-req in this case.
    Also use this opportunity to prevent the code from crashing in case no
    SSIDs are sent from above. This will likely happen in the DFS case
    introduced. Even a passive scan might need the probe request configured
    because of DFS channels.
    Signed-off-by: Arik Nemtsov <>
    ariknem committed Oct 22, 2012
  16. wlcore: improve handling for Rx errors

    Treat Rx error code as a bitmask. This allows sending MIC failures
    when other error bit are on.
    Align Rx descriptor status mask to the FW definition.
    Ease debugging in case FW reports failure to decrypt on packets.
    Discard corrupted packets early in Rx path to avoid reporting other
    abnormalities with corrupted packets that also have other failure bytes on.
    Namely - we don't want to get a MIC failure on a corrupted packet.
    This is mandated by the WiFi specification - see
    section in 802.11-2012.
    Signed-off-by: Eyal Shapira <>
    Signed-off-by: Arik Nemtsov <>
    ariknem committed Oct 21, 2012
  17. wlcore: increase scan dwell times if no activity

    There's a limit on scan dwell times of max 30ms in order
    to avoid degrading voip traffic which could be going on
    while scanning. However these dwell times increase the
    chance of missing out on nearby APs leading to partial
    scan results. Allow configuration of longer dwell times
    in case there no active interface (i.e. no STA associated
    or AP up).
    [Arik - count started vifs using an in-driver function]
    Signed-off-by: Eyal Shapira <>
    Signed-off-by: Arik Nemtsov <>
    eyalsh committed with ariknem Oct 16, 2012
  18. wlcore: remove support for injected Tx

    Require each incoming packet to have a valid vif. The injected Tx code
    path was buggy (and unused), so disallow it altogether.
    Cleanup a few places and add a warning so we can better discover
    anomalies (corrupted skbs?) masquerading as injected Tx.
    Signed-off-by: Arik Nemtsov <>
    ariknem committed Oct 11, 2012
  19. wlcore/wl18xx/wl12xx: FW log params per chip arch

    FW memory block size and FW log end marker parameters
    are added to wl structure and are initialized per
    chip architecture. convert_hwaddr hw operation is added
    to convert chip dependent FW internal address.
    Copy from FW log is also simplified to copy the entire
    memory block as FW logger utility is repsponsible
    for parsing of FW log content.
    Signed-off-by: Igal Chernobelsky <>
    igalc committed with ariknem Sep 30, 2012
  20. wlcore: add ACX_PEER_CAP command

    ACX_PEER_CAP command is just ACX_PEER_HT_CAP, but allows
    configuring the peer's support rates as well.
    this is needed because we start the station role when
    the remote rates are not known yet.
    the two commands should be unified in future fw versions,
    but for now add a new set_peer_cap per-hw op, that will
    use ACX_PEER_CAP for 18xx, and ACX_PEER_HT_CAP for 12xx.
    Signed-off-by: Eliad Peller <>
    elp committed with ariknem Sep 23, 2012
  21. wl12xx/wl18xx: update default fw logger's settings

    update the fw logger mode to continuous, and output to dbgpins (uart).
    Signed-off-by: Ido Reis <>
    Ido Reis committed with ariknem Oct 9, 2012
  22. wl18xx: set last Tx rate from FW status

    Obtain the last Tx rate from the FW status and translate it to
    the mac80211 rate+flag format before sending it up via the Tx status.
    Signed-off-by: Arik Nemtsov <>
    ariknem committed Sep 30, 2012
  23. wlcore: improved Tx scheduling algorithm

    Prioritize EDCA by choosing the AC before anything else. Use the
    fast/slow link bitmap in FW to improve the scheduling algorithm for
    the multi-link scenario.
    Set packet thresholds to determine if a given link is high or low
    priority according to its speed. A slow link will be given high priority
    if the amount of packets queued for it in the FW is lower than the
    slow-threshold. Similarly, a fast link will be given high priority if
    the number of its packets queued in FW is smaller than the high-threshold.
    The improved algorithm:
    1. Choose optimal AC according to FW utilization
    2. Traversing the VIFs in a round-robin fashion, try to choose a high
       priority link. Links are traversed in a round-robin fashion inside a
    3. If no high priority links are found, choose the first non-empty
       (low priority) link found in the round robin.
    Signed-off-by: Arik Nemtsov <>
    ariknem committed Sep 23, 2012
  24. wlcore: track FW-allocated packets per link

    Move FW-allocation tracking code to the fw_status function and track
    allocations made by all links. These will be incorporated in the
    improved Tx scheduling algorithm.
    Manually zero the system link counters on op_stop, as this link is not
    allocated the normal way.
    Signed-off-by: Arik Nemtsov <>
    ariknem committed Sep 25, 2012
  25. wlcore: count packets held per AC in each vif

    This accounting will help find a vif that has data in a specific AC.
    Otherwise we have to traverse all the links, which can be lengthy for
    the AP case.
    Signed-off-by: Arik Nemtsov <>
    ariknem committed Sep 23, 2012
  26. wlcore: track wlvif inside per-link structure

    This allows us to pass only the link as a parameter to various functions
    and deduce the wlvif. Note that this member will be NULL for global
    Signed-off-by: Arik Nemtsov <>
    ariknem committed Sep 23, 2012
  27. wlcore: initialize per-link FW freed blocks correctly

    When a link is allocated, sometimes the "freed packets" counter in FW
    is non zero, but we always assumed it is. This caused us to incorrectly
    account FW allocated blocks in some cases.
    When operating in AP mode, this bug caused some stations to never
    come back from PSM.
    Signed-off-by: Arik Nemtsov <>
    ariknem committed Sep 25, 2012
  28. wlcore: restore default channel configuration

    wlcore allocates two static structs wl1271_band_2ghz & wl1271_band_5ghz
    which are used/modified by Reg-Domain e.g. some channel might be marked
    as passive at some point. Make sure we don't keep stale settings around
    if the HW is unregistered/registered during operation.
    [Arik - use Tx-power constant and tweak commit message]
    Signed-off-by: Victor Goldenshtein <>
    Signed-off-by: Arik Nemtsov <>
    victorgld committed with ariknem Sep 26, 2012
  29. wlcore: consolidate free_link and always call it

    Make sure free_link is always called when removing an interface. This
    ensures all skbs belonging to this interface are returned to mac80211.
    Otherwise these dangling skbs might crash the system on the next
    call to wl1271_tx_reset_link_queues(). This happens on recovery/stop or
    an unsuccessful Tx flush.
    Signed-off-by: Ido Yariv <>
    Signed-off-by: Arik Nemtsov <>
    ariknem committed Sep 24, 2012
  30. wlcore: take the mutex before resetting Tx queues

    Otherwise we risk contention for private members of our global structure
    while op_stop_locked is running.
    Reported-by: Ido Yariv <>
    Signed-off-by: Arik Nemtsov <>
    ariknem committed Sep 24, 2012
  31. wlcore: remove unnecessary WARN_ON in wl12xx_tx_reset

    Sometimes the driver can perform a recovery while Tx is
    active, this will trigger unnecessary warning which might
    delay the recovery for more than 100 mS.
    Signed-off-by: Victor Goldenshtein <>
    victorgld committed with ariknem Sep 23, 2012
  32. wl18xx: FDSP Code RAM Corruption fix

    In PG2.0 there is an issue where PHY's FDSP Code RAM sometimes gets
    corrupted when exiting from ELP mode. This issue is related to FDSP
    Code RAM clock implementation.
    PG2.1 introduces a HW fix for this issue that requires the driver to
    change the FDSP Code Ram clock settings (mux it to ATGP clock instead
    of its own clock).
    This workaround uses PHY_FPGA_SPARE_1 register and is relevant to WL8
    PG2.1 devices.
    The fix is also backward compatible with older PG2.0 devices where the
    register PHY_FPGA_SPARE_1 is not used and not connected.
    The fix is done in the wl18xx_pre_upload function (must be performed
    before uploading the FW code) and includes the following steps:
    1. Disable FDSP clock
    2. Set ATPG clock toward FDSP Code RAM rather than its own clock.
    3. Re-enable FDSP clock
    Signed-off-by: Yair Shapira <>
    Signed-off-by: Ido Reis <>
    Ido Reis committed with ariknem Sep 24, 2012
  33. wlcore: fwlog dynamic mem_block control

    number of fwlog mem_blocks can be configured using module param.
    this is a fw debug feature: in case a large fw log data is busrted during
    a short period of time, the memory get filled and data is lost.
    this allows us to dynamicly set the fw log mem_block usage, although
    configuring more mem_block for logger comes at the expense of TP.
    Signed-off-by: Yair Shapira <>
    Signed-off-by: Ido Reis <>
    Ido Reis committed with ariknem Sep 24, 2012
  34. wl18xx: declare support for greenfield ht_cap

    The 18xx fw supports greenfield so add the
    IEEE80211_HT_CAP_GRN_FLD flag to the supported
    ht capabilities flags.
    Signed-off-by: Eliad Peller <>
    Signed-off-by: Ido Reis <>
    elp committed with ariknem Aug 28, 2012
  35. wlcore: clear roc_vif on iface removal

    When removing an interface currently performing a ROC operation, clear
    the current ROC state. This is useful especially during recovery and
    keeps mac80211 in sync to our state.
    Signed-off-by: Arik Nemtsov <>
    ariknem committed Sep 5, 2012