Skip to content
Commits on Sep 27, 2012
  1. @ariknem

    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
       VIF.
    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 <arik@wizery.com>
    ariknem committed Sep 23, 2012
  2. @ariknem

    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 <arik@wizery.com>
    ariknem committed Sep 25, 2012
  3. @ariknem

    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 <arik@wizery.com>
    ariknem committed Sep 23, 2012
  4. @ariknem

    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
    links.
    
    Signed-off-by: Arik Nemtsov <arik@wizery.com>
    ariknem committed Sep 23, 2012
  5. @ariknem

    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 <arik@wizery.com>
    ariknem committed Sep 25, 2012
  6. @assafazulay @ariknem

    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 <victorg@ti.com>
    Signed-off-by: Assaf Azulay <assaf@ti.com>
    Signed-off-by: Arik Nemtsov <arik@wizery.com>
    assafazulay committed with ariknem Sep 26, 2012
Commits on Sep 25, 2012
  1. @ariknem

    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 <ido@wizery.com>
    Signed-off-by: Arik Nemtsov <arik@wizery.com>
    ariknem committed Sep 24, 2012
  2. @ariknem

    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 <ido@wizery.com>
    Signed-off-by: Arik Nemtsov <arik@wizery.com>
    ariknem committed Sep 24, 2012
  3. @victorgld @ariknem

    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 <victorg@ti.com>
    victorgld committed with ariknem Sep 23, 2012
Commits on Sep 24, 2012
  1. wl18xx: FDSP Clock (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 <yair.shapira@ti.com>
    Signed-off-by: Ido Reis <idor@ti.com>
    Ido Reis committed Sep 24, 2012
  2. 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 <yair.shapira@ti.com>
    Signed-off-by: Ido Reis <idor@ti.com>
    Ido Reis committed Sep 24, 2012
Commits on Sep 20, 2012
  1. @ariknem

    mac80211: ignore global channel type when starting AP

    A bogus check was left in the code that failed the creation of an AP
    with a channel different from that configured to an already operating
    interface.
    
    Signed-off-by: Arik Nemtsov <arik@wizery.com>
    ariknem committed Sep 20, 2012
Commits on Sep 13, 2012
  1. @ariknem

    nl80211: update definitions from newest wpa_s

    added channel switch related commands
    
    Signed-off-by: Arik Nemtsov <arik@wizery.com>
    ariknem committed Sep 13, 2012
Commits on Sep 9, 2012
  1. @elp

    18xx: 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 <eliad@wizery.com>
    Signed-off-by: Ido Reis <idor@ti.com>
    elp committed with Ido Reis Aug 28, 2012
  2. @elp

    mac80211: use call_rcu() on sta deletion

    mac80211 calls synchronize_rcu() on sta deletion,
    which increase the roaming time significantly.
    
    Convert it into a call_rcu() mechanism, in order
    to avoid blocking. Since some of the cleanup
    functions might sleep, schedule from the call_rcu
    callback a new work that will do the actual cleanup.
    
    In order to make sure the cleanup occurs before
    the interface went down, flush local->workqueue
    on ieee80211_do_stop().
    
    Signed-off-by: Yoni Divinsky <yoni.divinsky@ti.com>
    Signed-off-by: Eliad Peller <eliad@wizery.com>
    elp committed Sep 3, 2012
  3. @elp

    mac80211: use synchronize_net() on key destroying

    __ieee80211_key_destroy() calls synchronize_rcu() in
    order to sync the tx path before destroying the key.
    
    However, synching the tx path can be done with
    synchronize_net() as well, which is usually faster
    (the timing might be important for roaming scenarios).
    
    Signed-off-by: Eliad Peller <eliad@wizery.com>
    elp committed Sep 3, 2012
  4. @elp

    mac80211: clear bssid on auth/assoc failure

    ifmgd->bssid wasn't cleared properly in some
    auth/assoc failure cases, causing mac80211 and
    the low-level driver to go out of sync.
    
    Clear ifmgd->bssid on failure, and notify the driver.
    
    Cc: stable@kernel.org # 3.4+
    Signed-off-by: Eliad Peller <eliad@wizery.com>
    elp committed Sep 3, 2012
  5. @elp
  6. @elp

    wlcore: check wl->state before setting default key

    wl1271_op_set_default_key_idx() lacks a check
    of wl->state, causing the driver to try writing
    to a powered-off device in some cases (e.g.
    during recovery)
    
    Signed-off-by: Eliad Peller <eliad@wizery.com>
    elp committed Sep 3, 2012
Commits on Sep 6, 2012
  1. @ariknem

    wlcore: update AP rates after band change

    The channel and band are updated after the basic rates have already
    been set. This causes us to choose wrong HW rate indices that are passed
    to FW. Fix this by updating basic rates when the channel is updated.
    
    Signed-off-by: Arik Nemtsov <arik@wizery.com>
    ariknem committed with Ido Reis Sep 6, 2012
Commits on Sep 5, 2012
  1. @ariknem

    Revert "mac80211: use legacy mode for all ACs"

    This reverts commit a5e6e2a.
    
    There are problems with BT voice if we don't use UAPSD mode for VO.
    ariknem committed Sep 5, 2012
  2. @ariknem

    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 <arik@wizery.com>
    ariknem committed Sep 5, 2012
Commits on Sep 4, 2012
  1. @yonid @ariknem

    mac80211: Delay sta deletion to make roaming faster (INTERNAL)

    In mac80211 STA all peers are deleted before auth
    to a new AP. Due to the rcu synchornization this
    process can take a long period.
    
    Move the sta object freeing of the old AP and
    the rcu synchronization to a later time after
    the roaming is completed.
    
    Signed-off-by: Yoni Divinsky <yoni.divinsky@ti.com>
    Signed-off-by: Eliad Peller <eliad@wizery.com>
    yonid committed with ariknem Sep 3, 2012
  2. @elp @ariknem

    wlcore: protect wlcore_op_set_key with mutex

    wlcore_op_set_key() calls wl18xx_set_key(),
    which in turn executes some of his function
    calls without acquiring wl->mutex and making
    sure the fw is awake.
    
    Adding mutex_lock()/ps_elp_wakeup() calls is
    not enough, as wl18xx_set_key() calls
    wl1271_tx_flush() which can't be called while
    the mutex is taken.
    
    Add the required calls to wlcore_op_set_key,
    but limit the queues_stop and flushing
    to the only encryption types in which
    a spare block might be needed (GEM and TKIP).
    
    [Arik - move state != ON check]
    
    Signed-off-by: Eliad Peller <eliad@wizery.com>
    Signed-off-by: Arik Nemtsov <arik@wizery.com>
    elp committed with ariknem Sep 3, 2012
Commits on Sep 3, 2012
  1. @elp

    wlcore: remove WLCORE_QUIRK_NO_ELP

    all the current firmwares support elp, so
    we can safely remove WLCORE_QUIRK_NO_ELP.
    
    Signed-off-by: Eliad Peller <eliad@wizery.com>
    elp committed Sep 3, 2012
  2. @elp
  3. @elp

    wlcore: decrease elp timeout

    The current elp timeout (the same as the dynamic
    ps timeout - 1500ms) is too high. Usually,
    wl1271_ps_elp_sleep() get called right after tx/rx,
    which is fine, but some command might get sent
    even when there is no traffic (e.g. ht changes
    triggered by beacon frames), and leaving the
    device awake for 1500ms in this case is redundant.
    
    Use a timeout of 10ms.
    The fw won't enter elp anyway before the dynamic-ps
    timeout was expired as well (and it entered ps
    successfully).
    
    Signed-off-by: Eliad Peller <eliad@wizery.com>
    elp committed Sep 2, 2012
  4. @elp

    Revert "wlcore: add extended elp timeout support"

    This reverts commit 1ffffe4.
    elp committed Sep 3, 2012
Commits on Sep 2, 2012
  1. @elp @ariknem

    wlcore: add extended elp timeout support

    The current elp timeout (the same as the dynamic
    ps timeout - 1500ms) is too high. Usually,
    wl1271_ps_elp_sleep() get called right after tx/rx,
    which is fine, but some command might get sent
    even when there is no traffic (e.g. ht changes
    triggered by beacon frames), and leaving the
    device awake for 1500ms is redundant.
    
    Revert the default elp timeout to 5ms, but add
    function to extend this period during rx/tx.
    
    Take care of previously configured extended elp
    timeout when calculating the timeout in
    wl1271_ps_elp_sleep().
    
    Signed-off-by: Eliad Peller <eliad@wizery.com>
    elp committed with ariknem Sep 2, 2012
Commits on Aug 30, 2012
  1. @yairs534

    wl18xx: update phy config and defaults

    Modify phy config params structure to latest phy version
    Default values and min FW version were updated accordingly.
    Default external_pa_dc2dc value set to 0 (internal dc2dc).
    New firmware baseline is 8.4.0.0.5.
    
    Signed-off-by: Yair Shapira <yair.shapira@ti.com>
    yairs534 committed with Ido Reis Aug 30, 2012
  2. @elp

    wlcore: allow ACX_BA_SESSION_RX_SETUP to fail

    Under some circumstances, that fw might be asked to
    remove a rx ba sessions it doesn't know about. In
    this case, instead of triggering a recovery, accept
    the error code (CMD_STATUS_NO_RX_BA_SESSION) and
    ignore it.
    
    Signed-off-by: Eliad Peller <eliad@wizery.com>
    elp committed Aug 27, 2012
  3. @elp

    wlcore: allow fw commands to fail

    Currently, each fw command/acx that return a status code
    different than CMD_STATUS_SUCCESS will trigger a recovery
    in the driver.
    
    However, it is a valid for some fw commands to fail (e.g.
    due to temporary lack of resources), so add new functions
    that allow passing bitmap of valid error return values.
    
    (make the current wl1271_cmd_send/wl1271_cmd_configure
    wrappers around the new functions, in order to avoid
    changing the whole driver)
    
    Signed-off-by: Eliad Peller <eliad@wizery.com>
    elp committed Aug 27, 2012
Commits on Aug 29, 2012
  1. Revert "18xx: declare support for greenfield ht_cap"

    FW not support this yet, will be committed again once its does.
    
    This reverts commit 1473b8c.
    Ido Reis committed Aug 29, 2012
  2. @elp

    wlcore: pass wmm configuration to the fw

    New fields were added to start_role(ap) and
    set_peer_state commands, so the fw will be
    able to know whether the sta/ap supports
    wmm (the fw uses it in order to choose the
    AC for some of its internally-generated frames)
    
    For sta, take this value right from bss_conf->qos.
    
    For ap, check for wmm support by looking for the
    WMM IE in the configured beacon.
    
    Signed-off-by: Eliad Peller <eliad@wizery.com>
    elp committed Aug 28, 2012
  3. @codido @ariknem

    wlcore: Allow memory access when the FW crashes

    When the no_recovery flag is used, the recovery work will not restart
    the FW and the state will not be set to 'on'. To enable post-mortem
    analysis, allow memory access in the 'restarting' state.
    
    Also, since the FW might not be operational, don't fail the read/write
    operations if elp_wakeup fails.
    
    Reported-by: Arkady Miasnikov <a-miasnikov@ti.com>
    Signed-off-by: Ido Yariv <ido@wizery.com>
    codido committed with ariknem Aug 21, 2012
Something went wrong with that request. Please try again.